From 9b197d2c4edcd85b80081b0e06f4bef54be35d8a Mon Sep 17 00:00:00 2001 From: Nico Weber Date: Wed, 31 Jul 2019 17:12:33 +0000 Subject: [PATCH] gn build: Make builtin library build on macOS For now, it only builds the x86_64 slice. Differential Revision: https://reviews.llvm.org/D65513 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@367449 91177308-0d34-0410-b5e6-96231b3b80d8 --- utils/gn/build/toolchain/BUILD.gn | 2 ++ utils/gn/secondary/BUILD.gn | 4 +++- utils/gn/secondary/compiler-rt/BUILD.gn | 3 +++ utils/gn/secondary/compiler-rt/lib/builtins/BUILD.gn | 6 +++++- utils/gn/secondary/compiler-rt/target.gni | 2 ++ 5 files changed, 15 insertions(+), 2 deletions(-) diff --git a/utils/gn/build/toolchain/BUILD.gn b/utils/gn/build/toolchain/BUILD.gn index 33cde237380..70e259e116f 100644 --- a/utils/gn/build/toolchain/BUILD.gn +++ b/utils/gn/build/toolchain/BUILD.gn @@ -166,6 +166,8 @@ unix_toolchain("unix") { } } +# This template defines a toolchain that uses just-built clang and lld +# as compiler and linker. template("stage2_unix_toolchain") { unix_toolchain(target_name) { forward_variables_from(invoker, "*") diff --git a/utils/gn/secondary/BUILD.gn b/utils/gn/secondary/BUILD.gn index aa0c6b82c4c..4e5016445ec 100644 --- a/utils/gn/secondary/BUILD.gn +++ b/utils/gn/secondary/BUILD.gn @@ -10,9 +10,11 @@ group("default") { "//lld/test", "//llvm/test", ] + if (current_os == "linux" || current_os == "mac") { + deps += [ "//compiler-rt" ] + } if (current_os == "linux") { deps += [ - "//compiler-rt", "//libcxx", "//libcxxabi", "//libunwind", diff --git a/utils/gn/secondary/compiler-rt/BUILD.gn b/utils/gn/secondary/compiler-rt/BUILD.gn index d2bfd1c07b3..1da710d5ac9 100644 --- a/utils/gn/secondary/compiler-rt/BUILD.gn +++ b/utils/gn/secondary/compiler-rt/BUILD.gn @@ -1,4 +1,7 @@ group("compiler-rt") { + # In the GN build, compiler-rt is always built by just-built clang and lld. + # FIXME: For macOS and iOS builds, depend on lib in all needed target arch + # toolchains and then lipo them together for the final output. deps = [ "//compiler-rt/lib(//llvm/utils/gn/build/toolchain:stage2_unix)", ] diff --git a/utils/gn/secondary/compiler-rt/lib/builtins/BUILD.gn b/utils/gn/secondary/compiler-rt/lib/builtins/BUILD.gn index 9af7d6b3845..c1fbf08834f 100644 --- a/utils/gn/secondary/compiler-rt/lib/builtins/BUILD.gn +++ b/utils/gn/secondary/compiler-rt/lib/builtins/BUILD.gn @@ -11,7 +11,11 @@ declare_args() { static_library("builtins") { output_dir = crt_current_out_dir - output_name = "clang_rt.builtins$crt_current_target_suffix" + if (current_os == "mac") { + output_name = "clang_rt.osx" + } else { + output_name = "clang_rt.builtins$crt_current_target_suffix" + } complete_static_lib = true cflags = [ "-fPIC", diff --git a/utils/gn/secondary/compiler-rt/target.gni b/utils/gn/secondary/compiler-rt/target.gni index 0d55e0da0f6..c739acc656f 100644 --- a/utils/gn/secondary/compiler-rt/target.gni +++ b/utils/gn/secondary/compiler-rt/target.gni @@ -24,6 +24,8 @@ if (clang_enable_per_target_runtime_dir) { if (current_os == "android") { crt_current_target_suffix += "-android" } +} else if (current_os == "mac") { + crt_current_out_dir = "$clang_resource_dir/lib/darwin" } else { assert(false, "unimplemented current_os " + current_os) } -- 2.40.0