Specify which .def file is used between simulators and ios Devices
This commit is contained in:
+34
-9
@@ -65,19 +65,36 @@ kotlin {
|
|||||||
val xcfName = "quartz-kmpKit"
|
val xcfName = "quartz-kmpKit"
|
||||||
val libsodiumPath = project.file("src/nativeInterop/libsodium")
|
val libsodiumPath = project.file("src/nativeInterop/libsodium")
|
||||||
val libsodiumHeaderFilesPath = project.file("$libsodiumPath/include/sodium")
|
val libsodiumHeaderFilesPath = project.file("$libsodiumPath/include/sodium")
|
||||||
val libsodiumDefFile = project.file("src/nativeInterop/cinterop/Clibsodium.def")
|
|
||||||
|
// Generate target-specific Libsodium definition files for creating native bindings.
|
||||||
|
// Device (iosArm64) uses libsodium.a, simulator targets use libsodium-simulator.a.
|
||||||
|
val libsodiumDeviceDefFile =
|
||||||
|
project.layout.buildDirectory
|
||||||
|
.file("cinterop/Clibsodium-device.def")
|
||||||
|
.get()
|
||||||
|
.asFile
|
||||||
|
val libsodiumSimulatorDefFile =
|
||||||
|
project.layout.buildDirectory
|
||||||
|
.file("cinterop/Clibsodium-simulator.def")
|
||||||
|
.get()
|
||||||
|
.asFile
|
||||||
|
|
||||||
// This generates the Libsodium definition file, necessary for creating native bindings(a Kotlin API) for libsodium(for iOS).
|
// This generates the Libsodium definition file, necessary for creating native bindings(a Kotlin API) for libsodium(for iOS).
|
||||||
val libsodiumDefFileGeneration =
|
val libsodiumDefFileGeneration =
|
||||||
tasks.register("GenerateSodiumCinteropFile") {
|
tasks.register("GenerateSodiumCinteropFile") {
|
||||||
outputs.file(libsodiumDefFile)
|
outputs.files(libsodiumDeviceDefFile, libsodiumSimulatorDefFile)
|
||||||
doLast {
|
doLast {
|
||||||
if (!libsodiumDefFile.exists()) {
|
libsodiumDeviceDefFile.parentFile.mkdirs()
|
||||||
libsodiumDefFile.parentFile.mkdirs()
|
libsodiumDeviceDefFile.writeText(
|
||||||
libsodiumDefFile.writeText("package = Clibsodium\n")
|
"package = Clibsodium\n" +
|
||||||
libsodiumDefFile.appendText("staticLibraries = libsodium.a libsodium-simulator.a\n")
|
"staticLibraries = libsodium.a\n" +
|
||||||
libsodiumDefFile.appendText("libraryPaths = ${libsodiumPath.absolutePath}/ios/lib ${libsodiumPath.absolutePath}/ios-simulators/lib\n")
|
"libraryPaths = ${libsodiumPath.absolutePath}/ios/lib\n",
|
||||||
}
|
)
|
||||||
|
libsodiumSimulatorDefFile.writeText(
|
||||||
|
"package = Clibsodium\n" +
|
||||||
|
"staticLibraries = libsodium-simulator.a\n" +
|
||||||
|
"libraryPaths = ${libsodiumPath.absolutePath}/ios-simulators/lib\n",
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -85,10 +102,12 @@ kotlin {
|
|||||||
iosArm64(),
|
iosArm64(),
|
||||||
iosSimulatorArm64(),
|
iosSimulatorArm64(),
|
||||||
).forEach { target ->
|
).forEach { target ->
|
||||||
|
val isSimulator = target.name != "iosArm64"
|
||||||
|
val defFile = if (isSimulator) libsodiumSimulatorDefFile else libsodiumDeviceDefFile
|
||||||
|
|
||||||
target.compilations.getByName("main") {
|
target.compilations.getByName("main") {
|
||||||
val clibsodium by cinterops.creating {
|
val clibsodium by cinterops.creating {
|
||||||
definitionFile = libsodiumDefFile
|
definitionFile = defFile
|
||||||
packageName = "Clibsodium"
|
packageName = "Clibsodium"
|
||||||
|
|
||||||
headers(
|
headers(
|
||||||
@@ -120,6 +139,9 @@ kotlin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
iosArm64 {
|
iosArm64 {
|
||||||
|
binaries.all {
|
||||||
|
linkerOpts("-L${libsodiumPath.absolutePath}/ios/lib", "-lsodium")
|
||||||
|
}
|
||||||
binaries.framework {
|
binaries.framework {
|
||||||
baseName = xcfName
|
baseName = xcfName
|
||||||
binaryOption("bundleId", "com.vitorpamplona.quartz")
|
binaryOption("bundleId", "com.vitorpamplona.quartz")
|
||||||
@@ -127,6 +149,9 @@ kotlin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
iosSimulatorArm64 {
|
iosSimulatorArm64 {
|
||||||
|
binaries.all {
|
||||||
|
linkerOpts("-L${libsodiumPath.absolutePath}/ios-simulators/lib", "-lsodium-simulator")
|
||||||
|
}
|
||||||
binaries.framework {
|
binaries.framework {
|
||||||
baseName = xcfName
|
baseName = xcfName
|
||||||
binaryOption("bundleId", "com.vitorpamplona.quartz")
|
binaryOption("bundleId", "com.vitorpamplona.quartz")
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
package = Clibsodium
|
|
||||||
staticLibraries = libsodium.a libsodium-simulator.a
|
|
||||||
libraryPaths = src/nativeInterop/libsodium/ios/lib src/nativeInterop/libsodium/ios-simulators/lib
|
|
||||||
Reference in New Issue
Block a user