Add initial support for macos_arm64 host
This commit is contained in:
committed by
TeamCityServer
parent
4222fb9629
commit
7e18b69e7d
@@ -38,7 +38,8 @@ reducedLlvmAppendix = compact
|
||||
predefinedLlvmDistributions = \
|
||||
clang-llvm-8.0.0-linux-x86-64 \
|
||||
msys2-mingw-w64-x86_64-clang-llvm-lld-compiler_rt-8.0.1 \
|
||||
clang-llvm-apple-8.0.0-darwin-macos
|
||||
clang-llvm-apple-8.0.0-darwin-macos \
|
||||
clang-llvm-apple-8.0.0-darwin-macos-aarch64
|
||||
|
||||
llvm.linux_x64.dev = clang-llvm-8.0.0-linux-x86-64
|
||||
llvm.linux_x64.user = clang-llvm-8.0.0-linux-x86-64
|
||||
@@ -49,6 +50,9 @@ llvm.mingw_x64.user = msys2-mingw-w64-x86_64-clang-llvm-lld-compiler_rt-8.0.1
|
||||
llvm.macos_x64.dev = clang-llvm-apple-8.0.0-darwin-macos
|
||||
llvm.macos_x64.user = clang-llvm-apple-8.0.0-darwin-macos
|
||||
|
||||
llvm.macos_arm64.dev = clang-llvm-apple-8.0.0-darwin-macos-aarch64
|
||||
llvm.macos_arm64.user = clang-llvm-apple-8.0.0-darwin-macos-aarch64
|
||||
|
||||
# By default LLVM uses 250 for -03 builds.
|
||||
# We use a smaller value since default value leads to
|
||||
# unreasonably bloated runtime code without any measurable
|
||||
@@ -62,6 +66,7 @@ linkerGccFlags = -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed
|
||||
llvmVersion.linux_x64 = 8.0.0
|
||||
llvmVersion.mingw_x64 = 8.0.1
|
||||
llvmVersion.macos_x64 = 8.0.0
|
||||
llvmVersion.macos_arm64 = 8.0.0
|
||||
|
||||
cacheableTargets.macos_x64 = \
|
||||
macos_x64 \
|
||||
@@ -73,6 +78,8 @@ cacheableTargets.linux_x64 = \
|
||||
|
||||
cacheableTargets.mingw_x64 =
|
||||
|
||||
cacheableTargets.macos_arm64 =
|
||||
|
||||
# Mac OS X.
|
||||
# Can be an absolute path instead of predefined value.
|
||||
llvmHome.macos_x64 = $llvm.macos_x64.dev
|
||||
@@ -113,6 +120,11 @@ xcode-addon-xcode_12_2-macos_x64.default = \
|
||||
remote:internal
|
||||
|
||||
# macOS Apple Silicon
|
||||
llvmHome.macos_arm64 = $llvm.macos_arm64.dev
|
||||
targetToolchain.macos_arm64 = target-toolchain-xcode_12_2-macos_x64
|
||||
libffiDir.macos_arm64 = libffi-3.3-1-macos-arm64
|
||||
additionalToolsDir.macos_arm64 = xcode-addon-xcode_12_2-macos_x64
|
||||
|
||||
targetToolchain.macos_x64-macos_arm64 = target-toolchain-xcode_12_2-macos_x64
|
||||
arch.macos_arm64 = arm64
|
||||
targetSysRoot.macos_arm64 = target-sysroot-xcode_12_2-macos_x64
|
||||
@@ -136,12 +148,21 @@ 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
|
||||
|
||||
target-toolchain-xcode_12_2-macos_arm64.default = \
|
||||
remote:internal
|
||||
|
||||
xcode-addon-xcode_12_2-macos_arm64.default = \
|
||||
remote:internal
|
||||
|
||||
# Apple's 32-bit iOS.
|
||||
targetToolchain.macos_x64-ios_arm32 = target-toolchain-xcode_12_2-macos_x64
|
||||
dependencies.macos_x64-ios_arm32 = \
|
||||
@@ -180,6 +201,10 @@ 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
|
||||
|
||||
|
||||
@@ -43,7 +43,8 @@ class ClangArgs(private val configurables: Configurables) : Configurables by con
|
||||
private val binDir = when (HostManager.host) {
|
||||
KonanTarget.LINUX_X64 -> "$absoluteTargetToolchain/bin"
|
||||
KonanTarget.MINGW_X64 -> "$absoluteTargetToolchain/bin"
|
||||
KonanTarget.MACOS_X64 -> "$absoluteTargetToolchain/usr/bin"
|
||||
KonanTarget.MACOS_X64,
|
||||
KonanTarget.MACOS_ARM64 -> "$absoluteTargetToolchain/usr/bin"
|
||||
else -> throw TargetSupportException("Unexpected host platform")
|
||||
}
|
||||
// TODO: Use buildList
|
||||
|
||||
+3
-2
@@ -88,8 +88,9 @@ abstract class KonanPropertiesLoader(override val target: KonanTarget,
|
||||
}
|
||||
|
||||
private fun defaultArchiveTypeByHost(host: KonanTarget): ArchiveType = when (host) {
|
||||
KonanTarget.LINUX_X64 -> ArchiveType.TAR_GZ
|
||||
KonanTarget.MACOS_X64 -> ArchiveType.TAR_GZ
|
||||
KonanTarget.LINUX_X64,
|
||||
KonanTarget.MACOS_X64,
|
||||
KonanTarget.MACOS_ARM64 -> ArchiveType.TAR_GZ
|
||||
KonanTarget.MINGW_X64 -> ArchiveType.ZIP
|
||||
else -> error("$host can't be a host platform!")
|
||||
}
|
||||
@@ -91,13 +91,19 @@ open class HostManager(
|
||||
ANDROID_ARM32,
|
||||
ANDROID_ARM64,
|
||||
WASM32
|
||||
),
|
||||
MACOS_ARM64 to setOf(
|
||||
// TODO: More targets will be added later after additional testing.
|
||||
MACOS_ARM64,
|
||||
IOS_ARM64
|
||||
)
|
||||
)
|
||||
|
||||
private val enabledExperimentalByHost: Map<KonanTarget, Set<KonanTarget>> = mapOf(
|
||||
LINUX_X64 to setOf(MINGW_X86, MINGW_X64) + zephyrSubtargets,
|
||||
MACOS_X64 to setOf(MINGW_X86, MINGW_X64) + zephyrSubtargets,
|
||||
MINGW_X64 to setOf<KonanTarget>() + zephyrSubtargets
|
||||
MINGW_X64 to setOf<KonanTarget>() + zephyrSubtargets,
|
||||
MACOS_ARM64 to emptySet()
|
||||
)
|
||||
|
||||
val enabledByHost: Map<KonanTarget, Set<KonanTarget>> by lazy {
|
||||
@@ -146,7 +152,8 @@ open class HostManager(
|
||||
|
||||
val jniHostPlatformIncludeDir: String
|
||||
get() = when (host) {
|
||||
MACOS_X64 -> "darwin"
|
||||
MACOS_X64,
|
||||
MACOS_ARM64 -> "darwin"
|
||||
LINUX_X64 -> "linux"
|
||||
MINGW_X64 -> "win32"
|
||||
else -> throw TargetSupportException("Unknown host: $host.")
|
||||
@@ -160,13 +167,15 @@ open class HostManager(
|
||||
return when (val javaArch = System.getProperty("os.arch")) {
|
||||
"x86_64" -> "x86_64"
|
||||
"amd64" -> "x86_64"
|
||||
"arm64" -> "arm64"
|
||||
"arm64" -> "aarch64"
|
||||
"aarch64" -> "aarch64"
|
||||
else -> throw TargetSupportException("Unknown hardware platform: $javaArch")
|
||||
}
|
||||
}
|
||||
|
||||
private val hostMapping: Map<Pair<String, String>, KonanTarget> = mapOf(
|
||||
Pair("osx", "x86_64") to MACOS_X64,
|
||||
Pair("osx", "aarch64") to MACOS_ARM64,
|
||||
Pair("linux", "x86_64") to LINUX_X64,
|
||||
Pair("windows", "x86_64") to MINGW_X64
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user