[llvm] 5416fc0 - [gn build] make building on an arm mac work
Nico Weber via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 2 11:23:31 PDT 2020
Author: Nico Weber
Date: 2020-07-02T14:22:33-04:00
New Revision: 5416fc014ae5590fdef89630f3777d3216879fbb
URL: https://github.com/llvm/llvm-project/commit/5416fc014ae5590fdef89630f3777d3216879fbb
DIFF: https://github.com/llvm/llvm-project/commit/5416fc014ae5590fdef89630f3777d3216879fbb.diff
LOG: [gn build] make building on an arm mac work
Currently requires `llvm_targets_to_build = [ "X86", "AArch64" ]`:
building just the host arch (i.e. aarch64) causes some linker errors.
Added:
Modified:
llvm/utils/gn/get.py
llvm/utils/gn/gn.py
llvm/utils/gn/secondary/clang/test/BUILD.gn
llvm/utils/gn/secondary/llvm/test/BUILD.gn
llvm/utils/gn/secondary/llvm/triples.gni
Removed:
################################################################################
diff --git a/llvm/utils/gn/get.py b/llvm/utils/gn/get.py
index adb8eb7d5715..f778ab931bba 100755
--- a/llvm/utils/gn/get.py
+++ b/llvm/utils/gn/get.py
@@ -32,12 +32,12 @@ def set_executable_bit(path):
def get_platform():
import platform
+ if sys.platform == 'darwin':
+ return 'mac-amd64' if platform.machine() != 'arm64' else 'mac-arm64'
if platform.machine() not in ('AMD64', 'x86_64'):
return None
if sys.platform.startswith('linux'):
return 'linux-amd64'
- if sys.platform == 'darwin':
- return 'mac-amd64'
if sys.platform == 'win32':
return 'windows-amd64'
@@ -47,6 +47,14 @@ def main():
if not platform:
print('no prebuilt binary for', sys.platform)
return 1
+ if platform == 'mac-arm64':
+ print('no prebuilt mac-arm64 binaries yet. build it yourself with:')
+ print(' rm -rf /tmp/gn &&')
+ print(' pushd /tmp && git clone https://gn.googlesource.com/gn &&')
+ print(' cd gn && build/gen.py && ninja -C out gn && popd &&')
+ print(' mkdir -p llvm/utils/gn/bin/mac-arm64 &&')
+ print(' cp /tmp/gn/out/gn llvm/utils/gn/bin/mac-arm64')
+ return 1
dirname = os.path.join(os.path.dirname(__file__), 'bin', platform)
if not os.path.exists(dirname):
diff --git a/llvm/utils/gn/gn.py b/llvm/utils/gn/gn.py
index a6408ec065a3..4708d4c3b602 100755
--- a/llvm/utils/gn/gn.py
+++ b/llvm/utils/gn/gn.py
@@ -17,12 +17,12 @@
def get_platform():
import platform
+ if sys.platform == 'darwin':
+ return 'mac-amd64' if platform.machine() != 'arm64' else 'mac-arm64'
if platform.machine() not in ('AMD64', 'x86_64'):
return None
if sys.platform.startswith('linux'):
return 'linux-amd64'
- if sys.platform == 'darwin':
- return 'mac-amd64'
if sys.platform == 'win32':
return 'windows-amd64'
diff --git a/llvm/utils/gn/secondary/clang/test/BUILD.gn b/llvm/utils/gn/secondary/clang/test/BUILD.gn
index 4c7300147fa5..56feaae9a149 100644
--- a/llvm/utils/gn/secondary/clang/test/BUILD.gn
+++ b/llvm/utils/gn/secondary/clang/test/BUILD.gn
@@ -86,6 +86,8 @@ write_lit_config("lit_site_cfg") {
if (host_cpu == "x64") {
extra_values += [ "HOST_ARCH=x86_64" ]
+ } else if (host_cpu == "arm64") {
+ extra_values += [ "HOST_ARCH=arm64" ]
} else if (host_cpu == "ppc64") {
extra_values += [ "HOST_ARCH=powerpc64le" ]
} else {
diff --git a/llvm/utils/gn/secondary/llvm/test/BUILD.gn b/llvm/utils/gn/secondary/llvm/test/BUILD.gn
index 3ff257aa29ff..d433385dccad 100644
--- a/llvm/utils/gn/secondary/llvm/test/BUILD.gn
+++ b/llvm/utils/gn/secondary/llvm/test/BUILD.gn
@@ -88,6 +88,8 @@ write_lit_config("lit_site_cfg") {
if (host_cpu == "x64") {
extra_values += [ "HOST_ARCH=x86_64" ]
+ } else if (host_cpu == "arm64") {
+ extra_values += [ "HOST_ARCH=arm64" ]
} else if (host_cpu == "ppc64") {
extra_values += [ "HOST_ARCH=powerpc64le" ]
} else {
diff --git a/llvm/utils/gn/secondary/llvm/triples.gni b/llvm/utils/gn/secondary/llvm/triples.gni
index c6bef4bbd819..c72910f02f99 100644
--- a/llvm/utils/gn/secondary/llvm/triples.gni
+++ b/llvm/utils/gn/secondary/llvm/triples.gni
@@ -19,6 +19,8 @@ if (current_cpu == "x86") {
} else if (current_cpu == "arm64") {
if (current_os == "android") {
llvm_current_triple = "aarch64-linux-android29"
+ } else if (current_os == "mac") {
+ llvm_current_triple = "arm64-apple-darwin"
}
} else if (current_cpu == "ppc64") {
if (current_os == "linux") {
More information about the llvm-commits
mailing list