[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