1import("//llvm/tools/binutils_symlinks.gni") 2import("//llvm/utils/TableGen/tablegen.gni") 3import("//llvm/utils/gn/build/symlink_or_copy.gni") 4 5tablegen("InstallNameToolOpts") { 6 visibility = [ ":llvm-objcopy" ] 7 args = [ "-gen-opt-parser-defs" ] 8} 9 10tablegen("ObjcopyOpts") { 11 visibility = [ ":llvm-objcopy" ] 12 args = [ "-gen-opt-parser-defs" ] 13} 14 15tablegen("StripOpts") { 16 visibility = [ ":llvm-objcopy" ] 17 args = [ "-gen-opt-parser-defs" ] 18} 19 20symlinks = [ 21 "llvm-install-name-tool", 22 "llvm-strip", 23] 24if (llvm_install_binutils_symlinks) { 25 symlinks += [ 26 "objcopy", 27 "strip", 28 ] 29} 30foreach(target, symlinks) { 31 symlink_or_copy(target) { 32 deps = [ ":llvm-objcopy" ] 33 source = "llvm-objcopy" 34 output = "$root_out_dir/bin/$target" 35 } 36} 37 38# //:llvm-objcopy depends on this symlink target, see comment in //BUILD.gn. 39group("symlinks") { 40 deps = [] 41 foreach(target, symlinks) { 42 deps += [ ":$target" ] 43 } 44} 45 46executable("llvm-objcopy") { 47 deps = [ 48 ":InstallNameToolOpts", 49 ":ObjcopyOpts", 50 ":StripOpts", 51 "//llvm/lib/MC", 52 "//llvm/lib/Object", 53 "//llvm/lib/Option", 54 "//llvm/lib/Support", 55 ] 56 include_dirs = [ "." ] 57 sources = [ 58 "Buffer.cpp", 59 "COFF/COFFObjcopy.cpp", 60 "COFF/Object.cpp", 61 "COFF/Reader.cpp", 62 "COFF/Writer.cpp", 63 "CopyConfig.cpp", 64 "ELF/ELFConfig.cpp", 65 "ELF/ELFObjcopy.cpp", 66 "ELF/Object.cpp", 67 "MachO/MachOLayoutBuilder.cpp", 68 "MachO/MachOObjcopy.cpp", 69 "MachO/MachOReader.cpp", 70 "MachO/MachOWriter.cpp", 71 "MachO/Object.cpp", 72 "llvm-objcopy.cpp", 73 "wasm/Object.cpp", 74 "wasm/Reader.cpp", 75 "wasm/WasmObjcopy.cpp", 76 "wasm/Writer.cpp", 77 ] 78} 79