Remove libffi from target dependencies

Technically, it is a dependency of a compiler itself.
Thus, we can simplify konan.properties a little bit
by applying the same approach as we did for LLVM.
This commit is contained in:
Sergey Bogolepov
2021-03-22 18:58:37 +07:00
committed by TeamCityServer
parent e1c80ac75c
commit 579c1eb7db
2 changed files with 48 additions and 90 deletions
+29 -83
View File
@@ -41,6 +41,12 @@ predefinedLlvmDistributions = \
clang-llvm-apple-8.0.0-darwin-macos \
clang-llvm-apple-8.0.0-darwin-macos-aarch64
predefinedLibffiVersions = \
libffi-3.2.1-3-darwin-macos \
libffi-3.3-1-macos-arm64 \
libffi-3.2.1-2-linux-x86-64 \
libffi-3.2.1-mingw-w64-x86-64
llvm.linux_x64.dev = clang-llvm-8.0.0-linux-x86-64
llvm.linux_x64.user = clang-llvm-8.0.0-linux-x86-64
@@ -107,7 +113,6 @@ osVersionMin.macos_x64 = 10.11
runtimeDefinitions.macos_x64 = KONAN_OSX=1 KONAN_MACOSX=1 KONAN_X64=1 KONAN_OBJC_INTEROP=1 \
KONAN_CORE_SYMBOLICATION=1
dependencies.macos_x64 = \
libffi-3.2.1-3-darwin-macos \
lldb-3-macos
target-sysroot-xcode_12_2-macos_x64.default = \
@@ -148,11 +153,7 @@ osVersionMinFlagClang.macos_arm64 = -mmacosx-version-min
osVersionMin.macos_arm64 = 11.0
runtimeDefinitions.macos_arm64 = KONAN_OSX=1 KONAN_MACOSX=1 KONAN_ARM64=1 KONAN_OBJC_INTEROP=1 \
KONAN_CORE_SYMBOLICATION=1
dependencies.macos_arm64 = \
libffi-3.3-1-macos-arm64
dependencies.macos_x64-macos_arm64 = \
libffi-3.2.1-3-darwin-macos
target-sysroot-xcode_12_2-macos_arm64.default = \
remote:internal
@@ -165,8 +166,6 @@ xcode-addon-xcode_12_2-macos_arm64.default = \
# Apple's 32-bit iOS.
targetToolchain.macos_x64-ios_arm32 = target-toolchain-xcode_12_2-macos_x64
dependencies.macos_x64-ios_arm32 = \
libffi-3.2.1-3-darwin-macos
target-sysroot-xcode_12_2-ios_arm32.default = \
remote:internal
@@ -198,12 +197,8 @@ runtimeDefinitions.ios_arm32 = KONAN_OBJC_INTEROP=1 KONAN_IOS KONAN_ARM32=1 \
# Apple's 64-bit iOS.
targetToolchain.macos_x64-ios_arm64 = target-toolchain-xcode_12_2-macos_x64
dependencies.macos_x64-ios_arm64 = \
libffi-3.2.1-3-darwin-macos
targetToolchain.macos_arm64-ios_arm64 = target-toolchain-xcode_12_2-macos_x64
dependencies.macos_arm64-ios_arm64 = \
libffi-3.3-1-macos-arm64
target-sysroot-xcode_12_2-ios_arm64.default = \
remote:internal
@@ -233,8 +228,6 @@ additionalCacheFlags.ios_arm64 = -Xembed-bitcode-marker
# Apple's iOS simulator.
targetToolchain.macos_x64-ios_x64 = target-toolchain-xcode_12_2-macos_x64
dependencies.macos_x64-ios_x64 = \
libffi-3.2.1-3-darwin-macos
target-sysroot-xcode_12_2-ios_x64.default = \
remote:internal
@@ -260,8 +253,6 @@ runtimeDefinitions.ios_x64 = KONAN_OBJC_INTEROP=1 KONAN_IOS=1 KONAN_X64=1 \
# Apple's tvOS simulator.
targetToolchain.macos_x64-tvos_x64 = target-toolchain-xcode_12_2-macos_x64
dependencies.macos_x64-tvos_x64 = \
libffi-3.2.1-3-darwin-macos
target-sysroot-xcode_12_2-tvos_x64.default = \
remote:internal
@@ -287,8 +278,6 @@ runtimeDefinitions.tvos_x64 = KONAN_OBJC_INTEROP=1 KONAN_TVOS=1 KONAN_X64=1 \
# Apple's 64-bit tvOS.
targetToolchain.macos_x64-tvos_arm64 = target-toolchain-xcode_12_2-macos_x64
dependencies.macos_x64-tvos_arm64 = \
libffi-3.2.1-3-darwin-macos
target-sysroot-xcode_12_2-tvos_arm64.default = \
remote:internal
@@ -314,8 +303,6 @@ runtimeDefinitions.tvos_arm64 = KONAN_OBJC_INTEROP=1 KONAN_TVOS=1 KONAN_ARM64=1
# watchOS armv7k
targetToolchain.macos_x64-watchos_arm32 = target-toolchain-xcode_12_2-macos_x64
dependencies.macos_x64-watchos_arm32 = \
libffi-3.2.1-3-darwin-macos
target-sysroot-xcode_12_2-watchos_arm32.default = \
remote:internal
@@ -343,8 +330,6 @@ runtimeDefinitions.watchos_arm32 = KONAN_OBJC_INTEROP=1 KONAN_WATCHOS KONAN_ARM3
# watchOS arm64_32
targetToolchain.macos_x64-watchos_arm64 = target-toolchain-xcode_12_2-macos_x64
dependencies.macos_x64-watchos_arm64 = \
libffi-3.2.1-3-darwin-macos
target-sysroot-xcode_12_2-watchos_arm64.default = \
remote:internal
@@ -373,8 +358,6 @@ runtimeDefinitions.watchos_arm64 = KONAN_OBJC_INTEROP=1 KONAN_WATCHOS KONAN_ARM3
# Apple's watchOS i386 simulator.
targetToolchain.macos_x64-watchos_x86 = target-toolchain-xcode_12_2-macos_x64
dependencies.macos_x64-watchos_x86 = \
libffi-3.2.1-3-darwin-macos
target-sysroot-xcode_12_2-watchos_x86.default = \
remote:internal
@@ -404,8 +387,6 @@ runtimeDefinitions.watchos_x86 = KONAN_OBJC_INTEROP=1 KONAN_WATCHOS=1 KONAN_NO_6
# watchOS x86_64 simulator.
targetToolchain.macos_x64-watchos_x64 = target-toolchain-xcode_12_2-macos_x64
dependencies.macos_x64-watchos_x64 = \
libffi-3.2.1-3-darwin-macos
target-sysroot-xcode_12_2-watchos_x64.default = \
remote:internal
@@ -437,22 +418,18 @@ gccToolchain.linux_x64 = x86_64-unknown-linux-gnu-gcc-8.3.0-glibc-2.19-kernel-4.
targetToolchain.linux_x64 = $gccToolchain.linux_x64/x86_64-unknown-linux-gnu
dependencies.linux_x64 = \
x86_64-unknown-linux-gnu-gcc-8.3.0-glibc-2.19-kernel-4.9-2 \
libffi-3.2.1-2-linux-x86-64 \
lldb-3-linux
targetToolchain.mingw_x64-linux_x64 = msys2-mingw-w64-x86_64-clang-llvm-lld-compiler_rt-8.0.1
dependencies.mingw_x64-linux_x64 = \
libffi-3.2.1-mingw-w64-x86-64 \
x86_64-unknown-linux-gnu-gcc-8.3.0-glibc-2.19-kernel-4.9-2
targetToolchain.macos_x64-linux_x64 = $llvmHome.macos_x64
dependencies.macos_x64-linux_x64 = \
libffi-3.2.1-3-darwin-macos \
x86_64-unknown-linux-gnu-gcc-8.3.0-glibc-2.19-kernel-4.9-2
targetToolchain.macos_arm64-linux_x64 = $llvmHome.macos_arm64
dependencies.macos_arm64-linux_x64 = \
libffi-3.3-1-macos-arm64 \
x86_64-unknown-linux-gnu-gcc-8.3.0-glibc-2.19-kernel-4.9-2
quadruple.linux_x64 = x86_64-unknown-linux-gnu
@@ -500,14 +477,11 @@ emulatorDependency.linux_x64-linux_arm32_hfp = qemu-arm-static-5.1.0-linux-2
emulatorExecutable.linux_x64-linux_arm32_hfp = qemu-arm-static-5.1.0-linux-2/qemu-arm
dependencies.linux_x64-linux_arm32_hfp = \
arm-unknown-linux-gnueabihf-gcc-8.3.0-glibc-2.19-kernel-4.9-2 \
libffi-3.2.1-2-linux-x86-64
arm-unknown-linux-gnueabihf-gcc-8.3.0-glibc-2.19-kernel-4.9-2
dependencies.mingw_x64-linux_arm32_hfp = \
arm-unknown-linux-gnueabihf-gcc-8.3.0-glibc-2.19-kernel-4.9-2 \
libffi-3.2.1-mingw-w64-x86-64
arm-unknown-linux-gnueabihf-gcc-8.3.0-glibc-2.19-kernel-4.9-2
dependencies.macos_x64-linux_arm32_hfp = \
arm-unknown-linux-gnueabihf-gcc-8.3.0-glibc-2.19-kernel-4.9-2 \
libffi-3.2.1-3-darwin-macos
arm-unknown-linux-gnueabihf-gcc-8.3.0-glibc-2.19-kernel-4.9-2
quadruple.linux_arm32_hfp = arm-unknown-linux-gnueabihf
linkerNoDebugFlags.linux_arm32_hfp = -S
@@ -553,14 +527,11 @@ emulatorDependency.linux_x64-linux_arm64 = qemu-aarch64-static-5.1.0-linux-2
emulatorExecutable.linux_x64-linux_arm64 = qemu-aarch64-static-5.1.0-linux-2/qemu-aarch64
dependencies.linux_x64-linux_arm64 = \
aarch64-unknown-linux-gnu-gcc-8.3.0-glibc-2.25-kernel-4.9-2 \
libffi-3.2.1-2-linux-x86-64
aarch64-unknown-linux-gnu-gcc-8.3.0-glibc-2.25-kernel-4.9-2
dependencies.mingw_x64-linux_arm64 = \
aarch64-unknown-linux-gnu-gcc-8.3.0-glibc-2.25-kernel-4.9-2 \
libffi-3.2.1-mingw-w64-x86-64
aarch64-unknown-linux-gnu-gcc-8.3.0-glibc-2.25-kernel-4.9-2
dependencies.macos_x64-linux_arm64 = \
aarch64-unknown-linux-gnu-gcc-8.3.0-glibc-2.25-kernel-4.9-2 \
libffi-3.2.1-3-darwin-macos
aarch64-unknown-linux-gnu-gcc-8.3.0-glibc-2.25-kernel-4.9-2
quadruple.linux_arm64 = aarch64-unknown-linux-gnu
linkerNoDebugFlags.linux_arm64 = -S
@@ -602,8 +573,7 @@ targetToolchain.linux_x64-linux_mips32 = $gccToolchain.linux_mips32/mips-unknown
emulatorDependency.linux_x64-linux_mips32 = qemu-mips-static-5.1.0-linux-2
emulatorExecutable.linux_x64-linux_mips32 = qemu-mips-static-5.1.0-linux-2/qemu-mips
dependencies.linux_x64-linux_mips32 = \
mips-unknown-linux-gnu-gcc-8.3.0-glibc-2.19-kernel-4.9-2 \
libffi-3.2.1-2-linux-x86-64
mips-unknown-linux-gnu-gcc-8.3.0-glibc-2.19-kernel-4.9-2
quadruple.linux_mips32 = mips-unknown-linux-gnu
linkerOptimizationFlags.linux_mips32 = --gc-sections
@@ -644,8 +614,7 @@ targetToolchain.linux_x64-linux_mipsel32 = $gccToolchain.linux_mipsel32/mipsel-u
emulatorDependency.linux_x64-linux_mipsel32 = qemu-mipsel-static-5.1.0-linux-2
emulatorExecutable.linux_x64-linux_mipsel32 = qemu-mipsel-static-5.1.0-linux-2/qemu-mipsel
dependencies.linux_x64-linux_mipsel32 = \
mipsel-unknown-linux-gnu-gcc-8.3.0-glibc-2.19-kernel-4.9-2 \
libffi-3.2.1-2-linux-x86-64
mipsel-unknown-linux-gnu-gcc-8.3.0-glibc-2.19-kernel-4.9-2
quadruple.linux_mipsel32 = mipsel-unknown-linux-gnu
linkerOptimizationFlags.linux_mipsel32 = --gc-sections
@@ -679,18 +648,15 @@ runtimeDefinitions.linux_mipsel32 = USE_GCC_UNWIND=1 KONAN_LINUX=1 \
targetToolchain.macos_x64-android_arm32 = target-toolchain-2-osx-android_ndk
dependencies.macos_x64-android_arm32 = \
target-sysroot-1-android_ndk \
target-toolchain-2-osx-android_ndk \
libffi-3.2.1-3-darwin-macos
target-toolchain-2-osx-android_ndk
targetToolchain.linux_x64-android_arm32 = target-toolchain-2-linux-android_ndk
dependencies.linux_x64-android_arm32 = \
target-sysroot-1-android_ndk \
target-toolchain-2-linux-android_ndk \
libffi-3.2.1-2-linux-x86-64
target-toolchain-2-linux-android_ndk
targetToolchain.mingw_x64-android_arm32 = target-toolchain-2-windows-android_ndk
dependencies.mingw_x64-android_arm32 = \
target-sysroot-1-android_ndk \
target-toolchain-2-windows-android_ndk \
libffi-3.2.1-mingw-w64-x86-64
target-toolchain-2-windows-android_ndk
quadruple.android_arm32 = arm-linux-androideabi
targetCpu.android_arm32 = arm7tdmi
@@ -708,18 +674,15 @@ runtimeDefinitions.android_arm32 = __ANDROID__ USE_GCC_UNWIND=1 USE_ELF_SYMBOLS=
targetToolchain.macos_x64-android_arm64 = target-toolchain-2-osx-android_ndk
dependencies.macos_x64-android_arm64 = \
target-sysroot-1-android_ndk \
target-toolchain-2-osx-android_ndk \
libffi-3.2.1-3-darwin-macos
target-toolchain-2-osx-android_ndk
targetToolchain.linux_x64-android_arm64 = target-toolchain-2-linux-android_ndk
dependencies.linux_x64-android_arm64 = \
target-sysroot-1-android_ndk \
target-toolchain-2-linux-android_ndk \
libffi-3.2.1-2-linux-x86-64
target-toolchain-2-linux-android_ndk
targetToolchain.mingw_x64-android_arm64 = target-toolchain-2-windows-android_ndk
dependencies.mingw_x64-android_arm64 = \
target-sysroot-1-android_ndk \
target-toolchain-2-windows-android_ndk \
libffi-3.2.1-mingw-w64-x86-64
target-toolchain-2-windows-android_ndk
quadruple.android_arm64 = aarch64-linux-android
targetCpu.android_arm64 = cortex-a57
@@ -736,18 +699,15 @@ runtimeDefinitions.android_arm64 = __ANDROID__ USE_GCC_UNWIND=1 USE_ELF_SYMBOLS=
targetToolchain.macos_x64-android_x86 = target-toolchain-2-osx-android_ndk
dependencies.macos_x64-android_x86 = \
target-sysroot-1-android_ndk \
target-toolchain-2-osx-android_ndk \
libffi-3.2.1-3-darwin-macos
target-toolchain-2-osx-android_ndk
targetToolchain.linux_x64-android_x86 = target-toolchain-2-linux-android_ndk
dependencies.linux_x64-android_x86 = \
target-sysroot-1-android_ndk \
target-toolchain-2-linux-android_ndk \
libffi-3.2.1-2-linux-x86-64
target-toolchain-2-linux-android_ndk
targetToolchain.mingw_x64-android_x86 = target-toolchain-2-windows-android_ndk
dependencies.mingw_x64-android_x86 = \
target-sysroot-1-android_ndk \
target-toolchain-2-windows-android_ndk \
libffi-3.2.1-mingw-w64-x86-64
target-toolchain-2-windows-android_ndk
quadruple.android_x86 = i686-linux-android
# -target-cpu pentium4 makes sure that cogenerator knows which CPU flavour to emit code for.
@@ -768,18 +728,15 @@ runtimeDefinitions.android_x86 = __ANDROID__ USE_GCC_UNWIND=1 USE_ELF_SYMBOLS=1
targetToolchain.macos_x64-android_x64 = target-toolchain-2-osx-android_ndk
dependencies.macos_x64-android_x64 = \
target-sysroot-1-android_ndk \
target-toolchain-2-osx-android_ndk \
libffi-3.2.1-3-darwin-macos
target-toolchain-2-osx-android_ndk
targetToolchain.linux_x64-android_x64 = target-toolchain-2-linux-android_ndk
dependencies.linux_x64-android_x64 = \
target-sysroot-1-android_ndk \
target-toolchain-2-linux-android_ndk \
libffi-3.2.1-2-linux-x86-64
target-toolchain-2-linux-android_ndk
targetToolchain.mingw_x64-android_x64 = target-toolchain-2-windows-android_ndk
dependencies.mingw_x64-android_x64 = \
target-sysroot-1-android_ndk \
target-toolchain-2-windows-android_ndk \
libffi-3.2.1-mingw-w64-x86-64
target-toolchain-2-windows-android_ndk
quadruple.android_x64 = x86_64-linux-android
targetCpu.android_x64 = x86-64
@@ -801,12 +758,7 @@ targetToolchain.linux_x64-mingw_x64 = msys2-mingw-w64-x86_64-clang-llvm-lld-comp
targetToolchain.macos_x64-mingw_x64 = msys2-mingw-w64-x86_64-clang-llvm-lld-compiler_rt-8.0.1
# for Windows we are currently using LLDB 9
dependencies.mingw_x64 = \
libffi-3.2.1-mingw-w64-x86-64 \
lldb-2-windows
dependencies.linux_x64-mingw_x64 = \
libffi-3.2.1-2-linux-x86-64
dependencies.macos_x64-mingw_x64 = \
libffi-3.2.1-3-darwin-macos
quadruple.mingw_x64 = x86_64-w64-mingw32
targetSysRoot.mingw_x64 = msys2-mingw-w64-x86_64-clang-llvm-lld-compiler_rt-8.0.1
@@ -831,16 +783,13 @@ runtimeDefinitions.mingw_x64 = USE_GCC_UNWIND=1 USE_PE_COFF_SYMBOLS=1 KONAN_WIND
# Windows i686, based on mingw-w64.
targetToolchain.mingw_x64-mingw_x86 = msys2-mingw-w64-i686-clang-llvm-lld-compiler_rt-8.0.1
dependencies.mingw_x64-mingw_x86 = \
msys2-mingw-w64-i686-clang-llvm-lld-compiler_rt-8.0.1 \
libffi-3.2.1-mingw-w64-x86-64
msys2-mingw-w64-i686-clang-llvm-lld-compiler_rt-8.0.1
targetToolchain.linux_x64-mingw_x86 = msys2-mingw-w64-i686-clang-llvm-lld-compiler_rt-8.0.1
targetToolchain.macos_x64-mingw_x86 = msys2-mingw-w64-i686-clang-llvm-lld-compiler_rt-8.0.1
dependencies.linux_x64-mingw_x86 = \
msys2-mingw-w64-i686-clang-llvm-lld-compiler_rt-8.0.1 \
libffi-3.2.1-2-linux-x86-64
msys2-mingw-w64-i686-clang-llvm-lld-compiler_rt-8.0.1
dependencies.macos_x64-mingw_x86 = \
msys2-mingw-w64-i686-clang-llvm-lld-compiler_rt-8.0.1 \
libffi-3.2.1-3-darwin-macos
msys2-mingw-w64-i686-clang-llvm-lld-compiler_rt-8.0.1
quadruple.mingw_x86 = i686-w64-mingw32
targetSysRoot.mingw_x86 = msys2-mingw-w64-i686-clang-llvm-lld-compiler_rt-8.0.1
@@ -869,19 +818,16 @@ runtimeDefinitions.mingw_x86 = USE_GCC_UNWIND=1 USE_PE_COFF_SYMBOLS=1 KONAN_WIND
# WebAssembly 32-bit.
targetToolchain.macos_x64-wasm32 = target-toolchain-3-macos-wasm
dependencies.macos_x64-wasm32 = \
libffi-3.2.1-3-darwin-macos \
target-sysroot-4-embedded \
target-toolchain-3-macos-wasm
targetToolchain.linux_x64-wasm32 = target-toolchain-2-linux-wasm
dependencies.linux_x64-wasm32 = \
libffi-3.2.1-2-linux-x86-64 \
target-sysroot-4-embedded \
target-toolchain-2-linux-wasm
targetToolchain.mingw_x64-wasm32 = target-toolchain-2-mingw-wasm
dependencies.mingw_x64-wasm32 = \
libffi-3.2.1-mingw-w64-x86-64 \
target-sysroot-4-embedded \
target-toolchain-2-mingw-wasm
@@ -41,18 +41,30 @@ abstract class KonanPropertiesLoader(override val target: KonanTarget,
private val predefinedLlvmDistributions: Set<String> =
properties.propertyList("predefinedLlvmDistributions").toSet()
private fun llvmDependencies(): List<String> {
private val predefinedLibffiVersions: Set<String> =
properties.propertyList("predefinedLibffiVersions").toSet()
private fun getPredefinedDependencyOrNull(
dependencyName: String,
dependencyAccessor: () -> String?,
predefinedDependencies: Set<String>
): String? {
// Store into variable to avoid repeated resolve.
val llvmHome = llvmHome
?: error("Undefined LLVM home!")
return when (llvmHome) {
in predefinedLlvmDistributions -> llvmHome
val dependency = dependencyAccessor()
?: error("Undefined $dependencyName!")
return when (dependency) {
in predefinedDependencies -> dependency
else -> null
}.let(::listOfNotNull)
}
}
private fun compilerDependencies(): List<String> = listOfNotNull(
getPredefinedDependencyOrNull("LLVM home", this::llvmHome, predefinedLlvmDistributions),
getPredefinedDependencyOrNull("libffi version", this::libffiDir, predefinedLibffiVersions)
)
open val dependencies: List<String>
get() = hostTargetList("dependencies") + llvmDependencies()
get() = hostTargetList("dependencies") + compilerDependencies()
override fun downloadDependencies() {
dependencyProcessor!!.run()