From 065abe1daba21ef2064202b74532f7e3388d315d Mon Sep 17 00:00:00 2001 From: Ugljesa Jovanovic Date: Sun, 18 Oct 2020 23:29:21 +0200 Subject: [PATCH] Update libsodium build to latest upstream with tvos modification --- .gitignore | 3 + .gitmodules | 2 +- macBuild.sh | 7 +- .../build.gradle.kts | 58 ++++++++++++---- .../build.gradle.kts | 68 +++++++++++++------ sodiumWrapper/libsodium | 2 +- sodiumWrapper/makeIos.sh | 5 -- sodiumWrapper/makeIosWatchosTvos.sh | 24 +++++++ 8 files changed, 125 insertions(+), 44 deletions(-) delete mode 100755 sodiumWrapper/makeIos.sh create mode 100755 sodiumWrapper/makeIosWatchosTvos.sh diff --git a/.gitignore b/.gitignore index 3d16a63..459283c 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,6 @@ build/ /sodiumWrapper/static-tvos/ /sodiumWrapper/static-watchos/ /kotlin-multiplatform-libsodium-generator/out/ +/sodiumWrapper/static-ios-simulators/ +/sodiumWrapper/static-tvos-simulators/ +/sodiumWrapper/static-watchos-simulators/ diff --git a/.gitmodules b/.gitmodules index 07b8c1c..efa2409 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ [submodule "sodiumWrapper/libsodium"] path = sodiumWrapper/libsodium - url = https://github.com/ionspin/libsodium.git + url = git@github.com:ionspin/libsodium.git diff --git a/macBuild.sh b/macBuild.sh index 9fb86c2..a2c6d85 100755 --- a/macBuild.sh +++ b/macBuild.sh @@ -5,12 +5,11 @@ set -e #now let's build linux deps cd sodiumWrapper ./makeMacosX86-64.sh -./makeIos.sh -./makeTvos.sh -./makeWatchos.sh +./makeIosWatchosTvos.sh #now we can do the delegated build cd .. ./gradlew multiplatform-crypto-delegated:build -#and finally pure build +#pure build ./gradlew multiplatform-crypto:build +#libsodium bindings set +e \ No newline at end of file diff --git a/multiplatform-crypto-delegated/build.gradle.kts b/multiplatform-crypto-delegated/build.gradle.kts index e0ea1c3..77b5912 100644 --- a/multiplatform-crypto-delegated/build.gradle.kts +++ b/multiplatform-crypto-delegated/build.gradle.kts @@ -297,22 +297,28 @@ kotlin { val macos64Bit = setOf( "macosX64" ) - val ios64Bit = setOf( - "iosArm64", "iosX64" + val iosArm = setOf( + "iosArm64", "iosArm32" ) - val ios32Bit = setOf( - "iosArm32" + val iosSimulator = setOf( + "iosX64" ) val mingw64Bit = setOf( "mingwX64" ) - val tvos64Bit = setOf( - "tvosArm64", "tvosX64" + val tvosArm = setOf( + "tvosArm64" + ) + val tvosSimulator = setOf( + "tvosX64" ) - val watchos32Bit = setOf( - "watchosX86", "watchosArm32", "watchosArm64" + val watchosArm = setOf( + "watchosArm32", "watchosArm64" + ) + val watchosSimulator = setOf( + "watchosX86" ) targets.withType { @@ -347,7 +353,7 @@ kotlin { defaultSourceSet.dependsOn(createWorkaroundNativeMainSourceSet(this@withType.name, nativeDependencies)) } //All ioses share the same static library - if (ios64Bit.contains(this@withType.name)) { + if (iosArm.contains(this@withType.name)) { defaultSourceSet.dependsOn(createWorkaroundNativeMainSourceSet(this@withType.name, nativeDependencies)) println("Setting ios cinterop for $this") val libsodiumCinterop by cinterops.creating { @@ -359,19 +365,19 @@ kotlin { ) } - if (ios32Bit.contains(this@withType.name)) { + if (iosSimulator.contains(this@withType.name)) { defaultSourceSet.dependsOn(createWorkaroundNativeMainSourceSet(this@withType.name, nativeDependencies)) println("Setting ios cinterop for $this") val libsodiumCinterop by cinterops.creating { defFile(project.file("src/nativeInterop/cinterop/libsodium.def")) - compilerOpts.add("-I${project.rootDir}/sodiumWrapper/static-ios/include") + compilerOpts.add("-I${project.rootDir}/sodiumWrapper/static-ios-simulators/include") } kotlinOptions.freeCompilerArgs = listOf( - "-include-binary", "${project.rootDir}/sodiumWrapper/static-ios/lib/libsodium.a" + "-include-binary", "${project.rootDir}/sodiumWrapper/static-ios-simulators/lib/libsodium.a" ) } - if (tvos64Bit.contains(this@withType.name)) { + if (tvosArm.contains(this@withType.name)) { defaultSourceSet.dependsOn(createWorkaroundNativeMainSourceSet(this@withType.name, nativeDependencies)) println("Setting ios cinterop for $this") val libsodiumCinterop by cinterops.creating { @@ -383,7 +389,19 @@ kotlin { ) } - if (watchos32Bit.contains(this@withType.name)) { + if (tvosSimulator.contains(this@withType.name)) { + defaultSourceSet.dependsOn(createWorkaroundNativeMainSourceSet(this@withType.name, nativeDependencies)) + println("Setting ios cinterop for $this") + val libsodiumCinterop by cinterops.creating { + defFile(project.file("src/nativeInterop/cinterop/libsodium.def")) + compilerOpts.add("-I${project.rootDir}/sodiumWrapper/static-tvos-simulators/include") + } + kotlinOptions.freeCompilerArgs = listOf( + "-include-binary", "${project.rootDir}/sodiumWrapper/static-tvos-simulators/lib/libsodium.a" + ) + } + + if (watchosArm.contains(this@withType.name)) { defaultSourceSet.dependsOn(createWorkaroundNativeMainSourceSet(this@withType.name, nativeDependencies)) println("Setting ios cinterop for $this") val libsodiumCinterop by cinterops.creating { @@ -395,6 +413,18 @@ kotlin { ) } + if (watchosSimulator.contains(this@withType.name)) { + defaultSourceSet.dependsOn(createWorkaroundNativeMainSourceSet(this@withType.name, nativeDependencies)) + println("Setting ios cinterop for $this") + val libsodiumCinterop by cinterops.creating { + defFile(project.file("src/nativeInterop/cinterop/libsodium.def")) + compilerOpts.add("-I${project.rootDir}/sodiumWrapper/static-watchos-simulators/include") + } + kotlinOptions.freeCompilerArgs = listOf( + "-include-binary", "${project.rootDir}/sodiumWrapper/static-watchos-simulators/lib/libsodium.a" + ) + } + } diff --git a/multiplatform-crypto-libsodium-bindings/build.gradle.kts b/multiplatform-crypto-libsodium-bindings/build.gradle.kts index d38fad7..77feb1a 100644 --- a/multiplatform-crypto-libsodium-bindings/build.gradle.kts +++ b/multiplatform-crypto-libsodium-bindings/build.gradle.kts @@ -301,22 +301,28 @@ kotlin { val macos64Bit = setOf( "macosX64" ) - val ios64Bit = setOf( - "iosArm64", "iosX64" + val iosArm = setOf( + "iosArm64", "iosArm32" ) - val ios32Bit = setOf( - "iosArm32" + val iosSimulator = setOf( + "iosX64" ) val mingw64Bit = setOf( "mingwX64" ) - val tvos64Bit = setOf( - "tvosArm64", "tvosX64" + val tvosArm = setOf( + "tvosArm64" + ) + val tvosSimulator = setOf( + "tvosX64" ) - val watchos32Bit = setOf( - "watchosX86", "watchosArm32", "watchosArm64" + val watchosArm = setOf( + "watchosArm32", "watchosArm64" + ) + val watchosSimulator = setOf( + "watchosX86" ) targets.withType { @@ -327,12 +333,12 @@ kotlin { defaultSourceSet.dependsOn(nativeMain) } if (linuxArm64Bit.contains(this@withType.name)) { - defaultSourceSet.dependsOn( - createWorkaroundNativeMainSourceSet( - this@withType.name, - nativeDependencies - ) + defaultSourceSet.dependsOn( + createWorkaroundNativeMainSourceSet( + this@withType.name, + nativeDependencies ) + ) compilations.getByName("main") { val libsodiumCinterop by cinterops.creating { @@ -351,7 +357,7 @@ kotlin { defaultSourceSet.dependsOn(createWorkaroundNativeMainSourceSet(this@withType.name, nativeDependencies)) } //All ioses share the same static library - if (ios64Bit.contains(this@withType.name)) { + if (iosArm.contains(this@withType.name)) { defaultSourceSet.dependsOn(createWorkaroundNativeMainSourceSet(this@withType.name, nativeDependencies)) println("Setting ios cinterop for $this") val libsodiumCinterop by cinterops.creating { @@ -363,19 +369,19 @@ kotlin { ) } - if (ios32Bit.contains(this@withType.name)) { + if (iosSimulator.contains(this@withType.name)) { defaultSourceSet.dependsOn(createWorkaroundNativeMainSourceSet(this@withType.name, nativeDependencies)) println("Setting ios cinterop for $this") val libsodiumCinterop by cinterops.creating { defFile(project.file("src/nativeInterop/cinterop/libsodium.def")) - compilerOpts.add("-I${project.rootDir}/sodiumWrapper/static-ios/include") + compilerOpts.add("-I${project.rootDir}/sodiumWrapper/static-ios-simulators/include") } kotlinOptions.freeCompilerArgs = listOf( - "-include-binary", "${project.rootDir}/sodiumWrapper/static-ios/lib/libsodium.a" + "-include-binary", "${project.rootDir}/sodiumWrapper/static-ios-simulators/lib/libsodium.a" ) } - if (tvos64Bit.contains(this@withType.name)) { + if (tvosArm.contains(this@withType.name)) { defaultSourceSet.dependsOn(createWorkaroundNativeMainSourceSet(this@withType.name, nativeDependencies)) println("Setting ios cinterop for $this") val libsodiumCinterop by cinterops.creating { @@ -387,7 +393,19 @@ kotlin { ) } - if (watchos32Bit.contains(this@withType.name)) { + if (tvosSimulator.contains(this@withType.name)) { + defaultSourceSet.dependsOn(createWorkaroundNativeMainSourceSet(this@withType.name, nativeDependencies)) + println("Setting ios cinterop for $this") + val libsodiumCinterop by cinterops.creating { + defFile(project.file("src/nativeInterop/cinterop/libsodium.def")) + compilerOpts.add("-I${project.rootDir}/sodiumWrapper/static-tvos-simulators/include") + } + kotlinOptions.freeCompilerArgs = listOf( + "-include-binary", "${project.rootDir}/sodiumWrapper/static-tvos-simulators/lib/libsodium.a" + ) + } + + if (watchosArm.contains(this@withType.name)) { defaultSourceSet.dependsOn(createWorkaroundNativeMainSourceSet(this@withType.name, nativeDependencies)) println("Setting ios cinterop for $this") val libsodiumCinterop by cinterops.creating { @@ -399,6 +417,18 @@ kotlin { ) } + if (watchosSimulator.contains(this@withType.name)) { + defaultSourceSet.dependsOn(createWorkaroundNativeMainSourceSet(this@withType.name, nativeDependencies)) + println("Setting ios cinterop for $this") + val libsodiumCinterop by cinterops.creating { + defFile(project.file("src/nativeInterop/cinterop/libsodium.def")) + compilerOpts.add("-I${project.rootDir}/sodiumWrapper/static-watchos-simulators/include") + } + kotlinOptions.freeCompilerArgs = listOf( + "-include-binary", "${project.rootDir}/sodiumWrapper/static-watchos-simulators/lib/libsodium.a" + ) + } + } diff --git a/sodiumWrapper/libsodium b/sodiumWrapper/libsodium index b5402ae..1a9ef3d 160000 --- a/sodiumWrapper/libsodium +++ b/sodiumWrapper/libsodium @@ -1 +1 @@ -Subproject commit b5402aed53a36dc8bd4b5feb5d954088a85e375a +Subproject commit 1a9ef3db870ba0d98d04a469bdb9b0cd2379a9e3 diff --git a/sodiumWrapper/makeIos.sh b/sodiumWrapper/makeIos.sh deleted file mode 100755 index 317fd70..0000000 --- a/sodiumWrapper/makeIos.sh +++ /dev/null @@ -1,5 +0,0 @@ -cd libsodium -./dist-build/ios.sh -mkdir ../static-ios -cp -R ./libsodium-ios/lib ../static-ios/lib -cp -R ./libsodium-ios/include ../static-ios/include diff --git a/sodiumWrapper/makeIosWatchosTvos.sh b/sodiumWrapper/makeIosWatchosTvos.sh new file mode 100755 index 0000000..0741fa3 --- /dev/null +++ b/sodiumWrapper/makeIosWatchosTvos.sh @@ -0,0 +1,24 @@ +cd libsodium +./dist-build/apple-xcframework.sh + +mkdir ../static-ios +mkdir ../static-ios-simulators +mkdir ../static-watchos +mkdir ../static-watchos-simulators +mkdir ../static-tvos +mkdir ../static-tvos-simulators + +cp -R ./libsodium-apple/ios/lib ../static-ios/lib +cp -R ./libsodium-apple/ios/include ../static-ios +cp -R ./libsodium-apple/ios-simulators/lib ../static-ios-simulators/lib +cp -R ./libsodium-apple/ios-simulators/include ../static-ios-simulators + +cp -R ./libsodium-apple/watchos/lib ../static-watchos/lib +cp -R ./libsodium-apple/watchos/include ../static-watchos +cp -R ./libsodium-apple/watchos-simulators/lib ../static-watchos-simulators/lib +cp -R ./libsodium-apple/watchos-simulators/include ../static-watchos-simulators + +cp -R ./libsodium-apple/tvos/lib ../static-tvos/lib +cp -R ./libsodium-apple/tvos/include ../static-tvos +cp -R ./libsodium-apple/tvos-simulators/lib ../static-tvos-simulators/lib +cp -R ./libsodium-apple/tvos-simulators/include ../static-tvos-simulators \ No newline at end of file