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 libsodiumPath = project.file("src/nativeInterop/libsodium")
|
||||
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).
|
||||
val libsodiumDefFileGeneration =
|
||||
tasks.register("GenerateSodiumCinteropFile") {
|
||||
outputs.file(libsodiumDefFile)
|
||||
outputs.files(libsodiumDeviceDefFile, libsodiumSimulatorDefFile)
|
||||
doLast {
|
||||
if (!libsodiumDefFile.exists()) {
|
||||
libsodiumDefFile.parentFile.mkdirs()
|
||||
libsodiumDefFile.writeText("package = Clibsodium\n")
|
||||
libsodiumDefFile.appendText("staticLibraries = libsodium.a libsodium-simulator.a\n")
|
||||
libsodiumDefFile.appendText("libraryPaths = ${libsodiumPath.absolutePath}/ios/lib ${libsodiumPath.absolutePath}/ios-simulators/lib\n")
|
||||
}
|
||||
libsodiumDeviceDefFile.parentFile.mkdirs()
|
||||
libsodiumDeviceDefFile.writeText(
|
||||
"package = Clibsodium\n" +
|
||||
"staticLibraries = libsodium.a\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(),
|
||||
iosSimulatorArm64(),
|
||||
).forEach { target ->
|
||||
val isSimulator = target.name != "iosArm64"
|
||||
val defFile = if (isSimulator) libsodiumSimulatorDefFile else libsodiumDeviceDefFile
|
||||
|
||||
target.compilations.getByName("main") {
|
||||
val clibsodium by cinterops.creating {
|
||||
definitionFile = libsodiumDefFile
|
||||
definitionFile = defFile
|
||||
packageName = "Clibsodium"
|
||||
|
||||
headers(
|
||||
@@ -120,6 +139,9 @@ kotlin {
|
||||
}
|
||||
|
||||
iosArm64 {
|
||||
binaries.all {
|
||||
linkerOpts("-L${libsodiumPath.absolutePath}/ios/lib", "-lsodium")
|
||||
}
|
||||
binaries.framework {
|
||||
baseName = xcfName
|
||||
binaryOption("bundleId", "com.vitorpamplona.quartz")
|
||||
@@ -127,6 +149,9 @@ kotlin {
|
||||
}
|
||||
|
||||
iosSimulatorArm64 {
|
||||
binaries.all {
|
||||
linkerOpts("-L${libsodiumPath.absolutePath}/ios-simulators/lib", "-lsodium-simulator")
|
||||
}
|
||||
binaries.framework {
|
||||
baseName = xcfName
|
||||
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