From 69cde915e923d04de91a42bd901b062baad1cbc3 Mon Sep 17 00:00:00 2001 From: Nico Weber Date: Wed, 23 Mar 2022 09:32:49 -0400 Subject: [PATCH] [gn build] add llvm_install_cctools_symlinks arg It behaves (mostly) like the LLVM_INSTALL_CCTOOLS_SYMLINKS option in cmake. The minor difference is that the llvm-objcopy symlinks bitcode_strip and install_name_tool symlink to llvm-objcopy directly in the GN build, while it's a bitcode_strip -> llvm-bitcode-strip -> objcopy chain in the CMake build (and analogous for install_name_tool). The implementation is very similar to the implementation of the existing llvm_install_binutils_symlinks arg. Differential Revision: https://reviews.llvm.org/D122312 --- llvm/utils/gn/secondary/BUILD.gn | 6 ++++++ llvm/utils/gn/secondary/lld/test/BUILD.gn | 2 +- llvm/utils/gn/secondary/llvm/test/BUILD.gn | 4 ++-- .../gn/secondary/llvm/tools/cctools_symlinks.gni | 5 +++++ .../secondary/llvm/tools/llvm-libtool-darwin/BUILD.gn | 19 +++++++++++++++++++ llvm/utils/gn/secondary/llvm/tools/llvm-lipo/BUILD.gn | 17 +++++++++++++++++ .../gn/secondary/llvm/tools/llvm-objcopy/BUILD.gn | 7 +++++++ 7 files changed, 57 insertions(+), 3 deletions(-) create mode 100644 llvm/utils/gn/secondary/llvm/tools/cctools_symlinks.gni diff --git a/llvm/utils/gn/secondary/BUILD.gn b/llvm/utils/gn/secondary/BUILD.gn index ce1a029..21bb95d9 100644 --- a/llvm/utils/gn/secondary/BUILD.gn +++ b/llvm/utils/gn/secondary/BUILD.gn @@ -78,6 +78,12 @@ group("llvm-cxxfilt") { group("llvm-debuginfod-find") { deps = [ "//llvm/tools/llvm-debuginfod-find:symlinks" ] } +group("llvm-libtool-darwin") { + deps = [ "//llvm/tools/llvm-libtool-darwin:symlinks" ] +} +group("llvm-lipo") { + deps = [ "//llvm/tools/llvm-lipo:symlinks" ] +} group("llvm-objcopy") { deps = [ "//llvm/tools/llvm-objcopy:symlinks" ] } diff --git a/llvm/utils/gn/secondary/lld/test/BUILD.gn b/llvm/utils/gn/secondary/lld/test/BUILD.gn index 447e747..adb958d 100644 --- a/llvm/utils/gn/secondary/lld/test/BUILD.gn +++ b/llvm/utils/gn/secondary/lld/test/BUILD.gn @@ -101,7 +101,7 @@ group("test") { "//llvm/tools/llvm-cvtres", "//llvm/tools/llvm-dis", "//llvm/tools/llvm-dwarfdump", - "//llvm/tools/llvm-lipo", + "//llvm/tools/llvm-lipo:symlinks", "//llvm/tools/llvm-mc", "//llvm/tools/llvm-nm:symlinks", "//llvm/tools/llvm-objcopy:symlinks", diff --git a/llvm/utils/gn/secondary/llvm/test/BUILD.gn b/llvm/utils/gn/secondary/llvm/test/BUILD.gn index d37f561..56c81f4 100644 --- a/llvm/utils/gn/secondary/llvm/test/BUILD.gn +++ b/llvm/utils/gn/secondary/llvm/test/BUILD.gn @@ -265,9 +265,9 @@ group("test") { "//llvm/tools/llvm-isel-fuzzer", "//llvm/tools/llvm-jitlink", "//llvm/tools/llvm-jitlink/llvm-jitlink-executor", - "//llvm/tools/llvm-libtool-darwin", + "//llvm/tools/llvm-libtool-darwin:symlinks", "//llvm/tools/llvm-link", - "//llvm/tools/llvm-lipo", + "//llvm/tools/llvm-lipo:symlinks", "//llvm/tools/llvm-lto", "//llvm/tools/llvm-lto2", "//llvm/tools/llvm-mc", diff --git a/llvm/utils/gn/secondary/llvm/tools/cctools_symlinks.gni b/llvm/utils/gn/secondary/llvm/tools/cctools_symlinks.gni new file mode 100644 index 0000000..1eb6ab6 --- /dev/null +++ b/llvm/utils/gn/secondary/llvm/tools/cctools_symlinks.gni @@ -0,0 +1,5 @@ +declare_args() { + # If set, creates symlinks for cctools like libtool or lipo in the build + # directory. + llvm_install_cctools_symlinks = false +} diff --git a/llvm/utils/gn/secondary/llvm/tools/llvm-libtool-darwin/BUILD.gn b/llvm/utils/gn/secondary/llvm/tools/llvm-libtool-darwin/BUILD.gn index 28e97dd..5303bbc 100644 --- a/llvm/utils/gn/secondary/llvm/tools/llvm-libtool-darwin/BUILD.gn +++ b/llvm/utils/gn/secondary/llvm/tools/llvm-libtool-darwin/BUILD.gn @@ -1,3 +1,22 @@ +import("//llvm/tools/cctools_symlinks.gni") +import("//llvm/utils/gn/build/symlink_or_copy.gni") + +if (llvm_install_cctools_symlinks) { + symlink_or_copy("libtool") { + deps = [ ":llvm-libtool-darwin" ] + source = "llvm-libtool-darwin" + output = "$root_out_dir/bin/libtool" + } +} + +# //:llvm-libtool-darwin depends on this symlink target, see comment in +# //BUILD.gn. +group("symlinks") { + if (llvm_install_cctools_symlinks) { + deps = [ ":libtool" ] + } +} + executable("llvm-libtool-darwin") { deps = [ "//llvm/lib/Object", diff --git a/llvm/utils/gn/secondary/llvm/tools/llvm-lipo/BUILD.gn b/llvm/utils/gn/secondary/llvm/tools/llvm-lipo/BUILD.gn index 3132d2c..124231b 100644 --- a/llvm/utils/gn/secondary/llvm/tools/llvm-lipo/BUILD.gn +++ b/llvm/utils/gn/secondary/llvm/tools/llvm-lipo/BUILD.gn @@ -1,10 +1,27 @@ +import("//llvm/tools/cctools_symlinks.gni") import("//llvm/utils/TableGen/tablegen.gni") +import("//llvm/utils/gn/build/symlink_or_copy.gni") tablegen("LipoOpts") { visibility = [ ":llvm-lipo" ] args = [ "-gen-opt-parser-defs" ] } +if (llvm_install_cctools_symlinks) { + symlink_or_copy("lipo") { + deps = [ ":llvm-lipo" ] + source = "llvm-lipo" + output = "$root_out_dir/bin/lipo" + } +} + +# //:llvm-lipo depends on this symlink target, see comment in //BUILD.gn. +group("symlinks") { + if (llvm_install_cctools_symlinks) { + deps = [ ":lipo" ] + } +} + executable("llvm-lipo") { deps = [ ":LipoOpts", diff --git a/llvm/utils/gn/secondary/llvm/tools/llvm-objcopy/BUILD.gn b/llvm/utils/gn/secondary/llvm/tools/llvm-objcopy/BUILD.gn index 23ee027..da4739e 100644 --- a/llvm/utils/gn/secondary/llvm/tools/llvm-objcopy/BUILD.gn +++ b/llvm/utils/gn/secondary/llvm/tools/llvm-objcopy/BUILD.gn @@ -1,4 +1,5 @@ import("//llvm/tools/binutils_symlinks.gni") +import("//llvm/tools/cctools_symlinks.gni") import("//llvm/utils/TableGen/tablegen.gni") import("//llvm/utils/gn/build/symlink_or_copy.gni") @@ -33,6 +34,12 @@ if (llvm_install_binutils_symlinks) { "strip", ] } +if (llvm_install_cctools_symlinks) { + symlinks += [ + "bitcode_strip", + "install_name_tool", + ] +} foreach(target, symlinks) { symlink_or_copy(target) { deps = [ ":llvm-objcopy" ] -- 2.7.4