-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathbuild.gradle.kts
64 lines (55 loc) · 1.78 KB
/
build.gradle.kts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
buildscript {
dependencies {
classpath("com.linkedin.pygradle:pygradle-plugin:0.12.10")
}
}
plugins {
id("org.jetbrains.kotlin.multiplatform") version("1.3.72")
}
repositories {
jcenter()
maven(url = "https://dl.bintray.com/kotlin/kotlin-dev" )
}
val mingw64Path = File(System.getenv("MINGW64_DIR") ?: "C:/msys64/mingw64")
kotlin {
mingwX64("libmyext") {
binaries {
sharedLib {
baseName= "libmyext"
}
}
}
mingwX64("example") {
binaries {
executable {
entryPoint = "example.main"
val taskName = linkTaskName.replaceFirst("link", "dlltool")
val defFile = File("${project.rootDir}/build/bin/libmyext/debugShared/libmyext.def")
val aFile = File("${project.rootDir}/build/bin/libmyext/debugShared/libmyext.dll.a")
val dllFile = File("${project.rootDir}/build/bin/libmyext/debugShared/libmyext.dll")
val dlltoolTask = tasks.register<Exec>(taskName) {
commandLine("$mingw64Path/bin/dlltool", "-d", defFile, "-l", aFile, "-D", dllFile)
}
linkTask.dependsOn(dlltoolTask, "copyDlls")
linkerOpts("-L${project.rootDir}/build/bin/libmyext/debugShared")
}
}
compilations["main"].cinterops {
val extlib by creating {
includeDirs {
allHeaders("${project.rootDir}/build/bin/libmyext/debugShared")
}
}
}
}
}
tasks {
register("copyDlls", Copy::class) {
from("${project.rootDir}/build/bin/libmyext/debugShared") {
include("libmyext.dll")
include("libmyext.dll.a")
include("libmyext_api.h")
}
into("${project.rootDir}")
}
}