[llvm] 69cde91 - [gn build] add llvm_install_cctools_symlinks arg

Nico Weber via llvm-commits llvm-commits at lists.llvm.org
Wed Mar 23 13:20:26 PDT 2022


Author: Nico Weber
Date: 2022-03-23T16:19:54-04:00
New Revision: 69cde915e923d04de91a42bd901b062baad1cbc3

URL: https://github.com/llvm/llvm-project/commit/69cde915e923d04de91a42bd901b062baad1cbc3
DIFF: https://github.com/llvm/llvm-project/commit/69cde915e923d04de91a42bd901b062baad1cbc3.diff

LOG: [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

Added: 
    llvm/utils/gn/secondary/llvm/tools/cctools_symlinks.gni

Modified: 
    llvm/utils/gn/secondary/BUILD.gn
    llvm/utils/gn/secondary/lld/test/BUILD.gn
    llvm/utils/gn/secondary/llvm/test/BUILD.gn
    llvm/utils/gn/secondary/llvm/tools/llvm-libtool-darwin/BUILD.gn
    llvm/utils/gn/secondary/llvm/tools/llvm-lipo/BUILD.gn
    llvm/utils/gn/secondary/llvm/tools/llvm-objcopy/BUILD.gn

Removed: 
    


################################################################################
diff  --git a/llvm/utils/gn/secondary/BUILD.gn b/llvm/utils/gn/secondary/BUILD.gn
index ce1a02967c2f3..21bb95d903411 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 447e747c31dca..adb958de4c22a 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 d37f5616acdcf..56c81f49bf6b6 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 0000000000000..1eb6ab6b0a93a
--- /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 28e97dd0e0b9a..5303bbc275ad6 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 3132d2c6d9121..124231b1fb564 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 23ee0273c3a63..da4739e13dc40 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" ]


        


More information about the llvm-commits mailing list