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 = \
|
predefinedLlvmDistributions = \
|
||||||
clang-llvm-8.0.0-linux-x86-64 \
|
clang-llvm-8.0.0-linux-x86-64 \
|
||||||
msys2-mingw-w64-x86_64-clang-llvm-lld-compiler_rt-8.0.1 \
|
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.dev = clang-llvm-8.0.0-linux-x86-64
|
||||||
llvm.linux_x64.user = 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.dev = clang-llvm-apple-8.0.0-darwin-macos
|
||||||
llvm.macos_x64.user = 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.
|
# By default LLVM uses 250 for -03 builds.
|
||||||
# We use a smaller value since default value leads to
|
# We use a smaller value since default value leads to
|
||||||
# unreasonably bloated runtime code without any measurable
|
# 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.linux_x64 = 8.0.0
|
||||||
llvmVersion.mingw_x64 = 8.0.1
|
llvmVersion.mingw_x64 = 8.0.1
|
||||||
llvmVersion.macos_x64 = 8.0.0
|
llvmVersion.macos_x64 = 8.0.0
|
||||||
|
llvmVersion.macos_arm64 = 8.0.0
|
||||||
|
|
||||||
cacheableTargets.macos_x64 = \
|
cacheableTargets.macos_x64 = \
|
||||||
macos_x64 \
|
macos_x64 \
|
||||||
@@ -73,6 +78,8 @@ cacheableTargets.linux_x64 = \
|
|||||||
|
|
||||||
cacheableTargets.mingw_x64 =
|
cacheableTargets.mingw_x64 =
|
||||||
|
|
||||||
|
cacheableTargets.macos_arm64 =
|
||||||
|
|
||||||
# Mac OS X.
|
# Mac OS X.
|
||||||
# Can be an absolute path instead of predefined value.
|
# Can be an absolute path instead of predefined value.
|
||||||
llvmHome.macos_x64 = $llvm.macos_x64.dev
|
llvmHome.macos_x64 = $llvm.macos_x64.dev
|
||||||
@@ -113,6 +120,11 @@ xcode-addon-xcode_12_2-macos_x64.default = \
|
|||||||
remote:internal
|
remote:internal
|
||||||
|
|
||||||
# macOS Apple Silicon
|
# 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
|
targetToolchain.macos_x64-macos_arm64 = target-toolchain-xcode_12_2-macos_x64
|
||||||
arch.macos_arm64 = arm64
|
arch.macos_arm64 = arm64
|
||||||
targetSysRoot.macos_arm64 = target-sysroot-xcode_12_2-macos_x64
|
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
|
osVersionMin.macos_arm64 = 11.0
|
||||||
runtimeDefinitions.macos_arm64 = KONAN_OSX=1 KONAN_MACOSX=1 KONAN_ARM64=1 KONAN_OBJC_INTEROP=1 \
|
runtimeDefinitions.macos_arm64 = KONAN_OSX=1 KONAN_MACOSX=1 KONAN_ARM64=1 KONAN_OBJC_INTEROP=1 \
|
||||||
KONAN_CORE_SYMBOLICATION=1
|
KONAN_CORE_SYMBOLICATION=1
|
||||||
|
dependencies.macos_arm64 = \
|
||||||
|
libffi-3.3-1-macos-arm64
|
||||||
|
|
||||||
dependencies.macos_x64-macos_arm64 = \
|
dependencies.macos_x64-macos_arm64 = \
|
||||||
libffi-3.2.1-3-darwin-macos
|
libffi-3.2.1-3-darwin-macos
|
||||||
|
|
||||||
target-sysroot-xcode_12_2-macos_arm64.default = \
|
target-sysroot-xcode_12_2-macos_arm64.default = \
|
||||||
remote:internal
|
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.
|
# Apple's 32-bit iOS.
|
||||||
targetToolchain.macos_x64-ios_arm32 = target-toolchain-xcode_12_2-macos_x64
|
targetToolchain.macos_x64-ios_arm32 = target-toolchain-xcode_12_2-macos_x64
|
||||||
dependencies.macos_x64-ios_arm32 = \
|
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 = \
|
dependencies.macos_x64-ios_arm64 = \
|
||||||
libffi-3.2.1-3-darwin-macos
|
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 = \
|
target-sysroot-xcode_12_2-ios_arm64.default = \
|
||||||
remote:internal
|
remote:internal
|
||||||
|
|
||||||
|
|||||||
@@ -43,7 +43,8 @@ class ClangArgs(private val configurables: Configurables) : Configurables by con
|
|||||||
private val binDir = when (HostManager.host) {
|
private val binDir = when (HostManager.host) {
|
||||||
KonanTarget.LINUX_X64 -> "$absoluteTargetToolchain/bin"
|
KonanTarget.LINUX_X64 -> "$absoluteTargetToolchain/bin"
|
||||||
KonanTarget.MINGW_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")
|
else -> throw TargetSupportException("Unexpected host platform")
|
||||||
}
|
}
|
||||||
// TODO: Use buildList
|
// TODO: Use buildList
|
||||||
|
|||||||
+3
-2
@@ -88,8 +88,9 @@ abstract class KonanPropertiesLoader(override val target: KonanTarget,
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun defaultArchiveTypeByHost(host: KonanTarget): ArchiveType = when (host) {
|
private fun defaultArchiveTypeByHost(host: KonanTarget): ArchiveType = when (host) {
|
||||||
KonanTarget.LINUX_X64 -> ArchiveType.TAR_GZ
|
KonanTarget.LINUX_X64,
|
||||||
KonanTarget.MACOS_X64 -> ArchiveType.TAR_GZ
|
KonanTarget.MACOS_X64,
|
||||||
|
KonanTarget.MACOS_ARM64 -> ArchiveType.TAR_GZ
|
||||||
KonanTarget.MINGW_X64 -> ArchiveType.ZIP
|
KonanTarget.MINGW_X64 -> ArchiveType.ZIP
|
||||||
else -> error("$host can't be a host platform!")
|
else -> error("$host can't be a host platform!")
|
||||||
}
|
}
|
||||||
@@ -91,13 +91,19 @@ open class HostManager(
|
|||||||
ANDROID_ARM32,
|
ANDROID_ARM32,
|
||||||
ANDROID_ARM64,
|
ANDROID_ARM64,
|
||||||
WASM32
|
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(
|
private val enabledExperimentalByHost: Map<KonanTarget, Set<KonanTarget>> = mapOf(
|
||||||
LINUX_X64 to setOf(MINGW_X86, MINGW_X64) + zephyrSubtargets,
|
LINUX_X64 to setOf(MINGW_X86, MINGW_X64) + zephyrSubtargets,
|
||||||
MACOS_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 {
|
val enabledByHost: Map<KonanTarget, Set<KonanTarget>> by lazy {
|
||||||
@@ -146,7 +152,8 @@ open class HostManager(
|
|||||||
|
|
||||||
val jniHostPlatformIncludeDir: String
|
val jniHostPlatformIncludeDir: String
|
||||||
get() = when (host) {
|
get() = when (host) {
|
||||||
MACOS_X64 -> "darwin"
|
MACOS_X64,
|
||||||
|
MACOS_ARM64 -> "darwin"
|
||||||
LINUX_X64 -> "linux"
|
LINUX_X64 -> "linux"
|
||||||
MINGW_X64 -> "win32"
|
MINGW_X64 -> "win32"
|
||||||
else -> throw TargetSupportException("Unknown host: $host.")
|
else -> throw TargetSupportException("Unknown host: $host.")
|
||||||
@@ -160,13 +167,15 @@ open class HostManager(
|
|||||||
return when (val javaArch = System.getProperty("os.arch")) {
|
return when (val javaArch = System.getProperty("os.arch")) {
|
||||||
"x86_64" -> "x86_64"
|
"x86_64" -> "x86_64"
|
||||||
"amd64" -> "x86_64"
|
"amd64" -> "x86_64"
|
||||||
"arm64" -> "arm64"
|
"arm64" -> "aarch64"
|
||||||
|
"aarch64" -> "aarch64"
|
||||||
else -> throw TargetSupportException("Unknown hardware platform: $javaArch")
|
else -> throw TargetSupportException("Unknown hardware platform: $javaArch")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private val hostMapping: Map<Pair<String, String>, KonanTarget> = mapOf(
|
private val hostMapping: Map<Pair<String, String>, KonanTarget> = mapOf(
|
||||||
Pair("osx", "x86_64") to MACOS_X64,
|
Pair("osx", "x86_64") to MACOS_X64,
|
||||||
|
Pair("osx", "aarch64") to MACOS_ARM64,
|
||||||
Pair("linux", "x86_64") to LINUX_X64,
|
Pair("linux", "x86_64") to LINUX_X64,
|
||||||
Pair("windows", "x86_64") to MINGW_X64
|
Pair("windows", "x86_64") to MINGW_X64
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user