[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
This commit is contained in:
		
							parent
							
								
									f9889dd28a
								
							
						
					
					
						commit
						69cde915e9
					
				| 
						 | 
				
			
			@ -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" ]
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -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",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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" ]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue