[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