Add Darwin+Arm64 toolchain support am: 8528f4ec5e
am: e44a424acc
am: 648df28c38
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1863969 Change-Id: Ie496ee502ca3d0f554c240b848d1338938a13543
This commit is contained in:
@@ -921,6 +921,11 @@ func shouldSkipAndroidMkProcessing(module *ModuleBase) bool {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Only expose the primary Darwin target, as Make does not understand Darwin+Arm64
|
||||||
|
if module.Os() == Darwin && module.Target().HostCross {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
return !module.Enabled() ||
|
return !module.Enabled() ||
|
||||||
module.commonProperties.HideFromMake ||
|
module.commonProperties.HideFromMake ||
|
||||||
// Make does not understand LinuxBionic
|
// Make does not understand LinuxBionic
|
||||||
|
@@ -308,7 +308,7 @@ var (
|
|||||||
// LinuxMusl is the OS for the Linux kernel plus the musl runtime.
|
// LinuxMusl is the OS for the Linux kernel plus the musl runtime.
|
||||||
LinuxMusl = newOsType("linux_musl", Host, false, X86, X86_64)
|
LinuxMusl = newOsType("linux_musl", Host, false, X86, X86_64)
|
||||||
// Darwin is the OS for MacOS/Darwin host machines.
|
// Darwin is the OS for MacOS/Darwin host machines.
|
||||||
Darwin = newOsType("darwin", Host, false, X86_64)
|
Darwin = newOsType("darwin", Host, false, Arm64, X86_64)
|
||||||
// LinuxBionic is the OS for the Linux kernel plus the Bionic libc runtime, but without the
|
// LinuxBionic is the OS for the Linux kernel plus the Bionic libc runtime, but without the
|
||||||
// rest of Android.
|
// rest of Android.
|
||||||
LinuxBionic = newOsType("linux_bionic", Host, false, Arm64, X86_64)
|
LinuxBionic = newOsType("linux_bionic", Host, false, Arm64, X86_64)
|
||||||
@@ -696,6 +696,11 @@ func archMutator(bpctx blueprint.BottomUpMutatorContext) {
|
|||||||
for i, m := range modules {
|
for i, m := range modules {
|
||||||
addTargetProperties(m, targets[i], multiTargets, i == 0)
|
addTargetProperties(m, targets[i], multiTargets, i == 0)
|
||||||
m.base().setArchProperties(mctx)
|
m.base().setArchProperties(mctx)
|
||||||
|
|
||||||
|
// Install support doesn't understand Darwin+Arm64
|
||||||
|
if os == Darwin && targets[i].HostCross {
|
||||||
|
m.base().commonProperties.SkipInstall = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -39,6 +39,7 @@ const (
|
|||||||
osArchAndroidArm64 = "android_arm64"
|
osArchAndroidArm64 = "android_arm64"
|
||||||
osArchAndroidX86 = "android_x86"
|
osArchAndroidX86 = "android_x86"
|
||||||
osArchAndroidX86_64 = "android_x86_64"
|
osArchAndroidX86_64 = "android_x86_64"
|
||||||
|
osArchDarwinArm64 = "darwin_arm64"
|
||||||
osArchDarwinX86_64 = "darwin_x86_64"
|
osArchDarwinX86_64 = "darwin_x86_64"
|
||||||
osArchLinuxX86 = "linux_glibc_x86"
|
osArchLinuxX86 = "linux_glibc_x86"
|
||||||
osArchLinuxX86_64 = "linux_glibc_x86_64"
|
osArchLinuxX86_64 = "linux_glibc_x86_64"
|
||||||
@@ -96,6 +97,7 @@ var (
|
|||||||
osArchAndroidArm64: "//build/bazel/platforms/os_arch:android_arm64",
|
osArchAndroidArm64: "//build/bazel/platforms/os_arch:android_arm64",
|
||||||
osArchAndroidX86: "//build/bazel/platforms/os_arch:android_x86",
|
osArchAndroidX86: "//build/bazel/platforms/os_arch:android_x86",
|
||||||
osArchAndroidX86_64: "//build/bazel/platforms/os_arch:android_x86_64",
|
osArchAndroidX86_64: "//build/bazel/platforms/os_arch:android_x86_64",
|
||||||
|
osArchDarwinArm64: "//build/bazel/platforms/os_arch:darwin_arm64",
|
||||||
osArchDarwinX86_64: "//build/bazel/platforms/os_arch:darwin_x86_64",
|
osArchDarwinX86_64: "//build/bazel/platforms/os_arch:darwin_x86_64",
|
||||||
osArchLinuxX86: "//build/bazel/platforms/os_arch:linux_glibc_x86",
|
osArchLinuxX86: "//build/bazel/platforms/os_arch:linux_glibc_x86",
|
||||||
osArchLinuxX86_64: "//build/bazel/platforms/os_arch:linux_glibc_x86_64",
|
osArchLinuxX86_64: "//build/bazel/platforms/os_arch:linux_glibc_x86_64",
|
||||||
|
@@ -24,7 +24,7 @@ bootstrap_go_package {
|
|||||||
"x86_device.go",
|
"x86_device.go",
|
||||||
"x86_64_device.go",
|
"x86_64_device.go",
|
||||||
|
|
||||||
"x86_darwin_host.go",
|
"darwin_host.go",
|
||||||
"x86_linux_host.go",
|
"x86_linux_host.go",
|
||||||
"x86_linux_bionic_host.go",
|
"x86_linux_bionic_host.go",
|
||||||
"x86_windows_host.go",
|
"x86_windows_host.go",
|
||||||
|
@@ -174,19 +174,43 @@ type toolchainDarwin struct {
|
|||||||
toolchain64Bit
|
toolchain64Bit
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *toolchainDarwin) Name() string {
|
type toolchainDarwinX86 struct {
|
||||||
|
toolchainDarwin
|
||||||
|
}
|
||||||
|
|
||||||
|
type toolchainDarwinArm struct {
|
||||||
|
toolchainDarwin
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *toolchainDarwinArm) Name() string {
|
||||||
|
return "arm64"
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *toolchainDarwinX86) Name() string {
|
||||||
return "x86_64"
|
return "x86_64"
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *toolchainDarwin) GccRoot() string {
|
func (t *toolchainDarwinArm) GccRoot() string {
|
||||||
|
panic("unimplemented")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *toolchainDarwinArm) GccTriple() string {
|
||||||
|
panic("unimplemented")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *toolchainDarwinArm) GccVersion() string {
|
||||||
|
panic("unimplemented")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *toolchainDarwinX86) GccRoot() string {
|
||||||
return "${config.DarwinGccRoot}"
|
return "${config.DarwinGccRoot}"
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *toolchainDarwin) GccTriple() string {
|
func (t *toolchainDarwinX86) GccTriple() string {
|
||||||
return "${config.DarwinGccTriple}"
|
return "${config.DarwinGccTriple}"
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *toolchainDarwin) GccVersion() string {
|
func (t *toolchainDarwinX86) GccVersion() string {
|
||||||
return darwinGccVersion
|
return darwinGccVersion
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -194,7 +218,11 @@ func (t *toolchainDarwin) IncludeFlags() string {
|
|||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *toolchainDarwin) ClangTriple() string {
|
func (t *toolchainDarwinArm) ClangTriple() string {
|
||||||
|
return "aarch64-apple-darwin"
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *toolchainDarwinX86) ClangTriple() string {
|
||||||
return "x86_64-apple-darwin"
|
return "x86_64-apple-darwin"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -230,12 +258,18 @@ func (t *toolchainDarwin) ToolPath() string {
|
|||||||
return "${config.MacToolPath}"
|
return "${config.MacToolPath}"
|
||||||
}
|
}
|
||||||
|
|
||||||
var toolchainDarwinSingleton Toolchain = &toolchainDarwin{}
|
var toolchainDarwinArmSingleton Toolchain = &toolchainDarwinArm{}
|
||||||
|
var toolchainDarwinX86Singleton Toolchain = &toolchainDarwinX86{}
|
||||||
|
|
||||||
func darwinToolchainFactory(arch android.Arch) Toolchain {
|
func darwinArmToolchainFactory(arch android.Arch) Toolchain {
|
||||||
return toolchainDarwinSingleton
|
return toolchainDarwinArmSingleton
|
||||||
|
}
|
||||||
|
|
||||||
|
func darwinX86ToolchainFactory(arch android.Arch) Toolchain {
|
||||||
|
return toolchainDarwinX86Singleton
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
registerToolchainFactory(android.Darwin, android.X86_64, darwinToolchainFactory)
|
registerToolchainFactory(android.Darwin, android.Arm64, darwinArmToolchainFactory)
|
||||||
|
registerToolchainFactory(android.Darwin, android.X86_64, darwinX86ToolchainFactory)
|
||||||
}
|
}
|
@@ -16,7 +16,7 @@ bootstrap_go_package {
|
|||||||
"lints.go",
|
"lints.go",
|
||||||
"toolchain.go",
|
"toolchain.go",
|
||||||
"allowed_list.go",
|
"allowed_list.go",
|
||||||
"x86_darwin_host.go",
|
"darwin_host.go",
|
||||||
"x86_linux_bionic_host.go",
|
"x86_linux_bionic_host.go",
|
||||||
"x86_linux_host.go",
|
"x86_linux_host.go",
|
||||||
"x86_device.go",
|
"x86_device.go",
|
||||||
|
@@ -25,41 +25,64 @@ var (
|
|||||||
DarwinRustLinkFlags = []string{
|
DarwinRustLinkFlags = []string{
|
||||||
"-B${cc_config.MacToolPath}",
|
"-B${cc_config.MacToolPath}",
|
||||||
}
|
}
|
||||||
|
darwinArm64Rustflags = []string{}
|
||||||
|
darwinArm64Linkflags = []string{}
|
||||||
darwinX8664Rustflags = []string{}
|
darwinX8664Rustflags = []string{}
|
||||||
darwinX8664Linkflags = []string{}
|
darwinX8664Linkflags = []string{}
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
registerToolchainFactory(android.Darwin, android.Arm64, darwinArm64ToolchainFactory)
|
||||||
registerToolchainFactory(android.Darwin, android.X86_64, darwinX8664ToolchainFactory)
|
registerToolchainFactory(android.Darwin, android.X86_64, darwinX8664ToolchainFactory)
|
||||||
|
|
||||||
pctx.StaticVariable("DarwinToolchainRustFlags", strings.Join(DarwinRustFlags, " "))
|
pctx.StaticVariable("DarwinToolchainRustFlags", strings.Join(DarwinRustFlags, " "))
|
||||||
pctx.StaticVariable("DarwinToolchainLinkFlags", strings.Join(DarwinRustLinkFlags, " "))
|
pctx.StaticVariable("DarwinToolchainLinkFlags", strings.Join(DarwinRustLinkFlags, " "))
|
||||||
|
|
||||||
|
pctx.StaticVariable("DarwinToolchainArm64RustFlags", strings.Join(darwinArm64Rustflags, " "))
|
||||||
|
pctx.StaticVariable("DarwinToolchainArm64LinkFlags", strings.Join(darwinArm64Linkflags, " "))
|
||||||
pctx.StaticVariable("DarwinToolchainX8664RustFlags", strings.Join(darwinX8664Rustflags, " "))
|
pctx.StaticVariable("DarwinToolchainX8664RustFlags", strings.Join(darwinX8664Rustflags, " "))
|
||||||
pctx.StaticVariable("DarwinToolchainX8664LinkFlags", strings.Join(darwinX8664Linkflags, " "))
|
pctx.StaticVariable("DarwinToolchainX8664LinkFlags", strings.Join(darwinX8664Linkflags, " "))
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type toolchainDarwin struct {
|
type toolchainDarwin struct {
|
||||||
|
toolchain64Bit
|
||||||
toolchainRustFlags string
|
toolchainRustFlags string
|
||||||
toolchainLinkFlags string
|
toolchainLinkFlags string
|
||||||
}
|
}
|
||||||
|
|
||||||
type toolchainDarwinX8664 struct {
|
type toolchainDarwinArm64 struct {
|
||||||
toolchain64Bit
|
|
||||||
toolchainDarwin
|
toolchainDarwin
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type toolchainDarwinX8664 struct {
|
||||||
|
toolchainDarwin
|
||||||
|
}
|
||||||
|
|
||||||
|
func (toolchainDarwinArm64) Supported() bool {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
func (toolchainDarwinX8664) Supported() bool {
|
func (toolchainDarwinX8664) Supported() bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
func (toolchainDarwinX8664) Bionic() bool {
|
func (toolchainDarwin) Bionic() bool {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (t *toolchainDarwinArm64) Name() string {
|
||||||
|
return "arm64"
|
||||||
|
}
|
||||||
|
|
||||||
func (t *toolchainDarwinX8664) Name() string {
|
func (t *toolchainDarwinX8664) Name() string {
|
||||||
return "x86_64"
|
return "x86_64"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (t *toolchainDarwinArm64) RustTriple() string {
|
||||||
|
return "aarch64-apple-darwin"
|
||||||
|
}
|
||||||
|
|
||||||
func (t *toolchainDarwinX8664) RustTriple() string {
|
func (t *toolchainDarwinX8664) RustTriple() string {
|
||||||
return "x86_64-apple-darwin"
|
return "x86_64-apple-darwin"
|
||||||
}
|
}
|
||||||
@@ -76,6 +99,15 @@ func (t *toolchainDarwin) ProcMacroSuffix() string {
|
|||||||
return ".dylib"
|
return ".dylib"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (t *toolchainDarwinArm64) ToolchainLinkFlags() string {
|
||||||
|
// Prepend the lld flags from cc_config so we stay in sync with cc
|
||||||
|
return "${cc_config.DarwinLldflags} ${config.DarwinToolchainLinkFlags} ${config.DarwinToolchainArm64LinkFlags}"
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *toolchainDarwinArm64) ToolchainRustFlags() string {
|
||||||
|
return "${config.DarwinToolchainRustFlags} ${config.DarwinToolchainArm64RustFlags}"
|
||||||
|
}
|
||||||
|
|
||||||
func (t *toolchainDarwinX8664) ToolchainLinkFlags() string {
|
func (t *toolchainDarwinX8664) ToolchainLinkFlags() string {
|
||||||
// Prepend the lld flags from cc_config so we stay in sync with cc
|
// Prepend the lld flags from cc_config so we stay in sync with cc
|
||||||
return "${cc_config.DarwinLldflags} ${config.DarwinToolchainLinkFlags} ${config.DarwinToolchainX8664LinkFlags}"
|
return "${cc_config.DarwinLldflags} ${config.DarwinToolchainLinkFlags} ${config.DarwinToolchainX8664LinkFlags}"
|
||||||
@@ -85,8 +117,13 @@ func (t *toolchainDarwinX8664) ToolchainRustFlags() string {
|
|||||||
return "${config.DarwinToolchainRustFlags} ${config.DarwinToolchainX8664RustFlags}"
|
return "${config.DarwinToolchainRustFlags} ${config.DarwinToolchainX8664RustFlags}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func darwinArm64ToolchainFactory(arch android.Arch) Toolchain {
|
||||||
|
return toolchainDarwinArm64Singleton
|
||||||
|
}
|
||||||
|
|
||||||
func darwinX8664ToolchainFactory(arch android.Arch) Toolchain {
|
func darwinX8664ToolchainFactory(arch android.Arch) Toolchain {
|
||||||
return toolchainDarwinX8664Singleton
|
return toolchainDarwinX8664Singleton
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var toolchainDarwinArm64Singleton Toolchain = &toolchainDarwinArm64{}
|
||||||
var toolchainDarwinX8664Singleton Toolchain = &toolchainDarwinX8664{}
|
var toolchainDarwinX8664Singleton Toolchain = &toolchainDarwinX8664{}
|
Reference in New Issue
Block a user