diff --git a/llvm/utils/gn/build/driver_executable.gni b/llvm/utils/gn/build/driver_executable.gni new file mode 100644 index 0000000000000..f838cb8e5ad22 --- /dev/null +++ b/llvm/utils/gn/build/driver_executable.gni @@ -0,0 +1,23 @@ +import("//llvm/utils/gn/build/write_cmake_config.gni") + +# Corresponds to GENERATE_DRIVER in cmake (see add_llvm_executable in +# llvm/cmake/modules/AddLLVM.cmake). +template("driver_executable") { + tool_name = string_replace(target_name, "-", "_") + + write_cmake_config("${tool_name}-driver") { + input = "//llvm/cmake/driver-template.cpp.in" + output = "$target_gen_dir/${tool_name}-driver.cpp" + values = [ "TOOL_NAME=$tool_name" ] + } + + executable(target_name) { + forward_variables_from(invoker, "*") + deps += [ ":${tool_name}-driver" ] + sources += [ "$target_gen_dir/${tool_name}-driver.cpp" ] + } +} + +set_defaults("driver_executable") { + configs = shared_binary_target_configs +} diff --git a/llvm/utils/gn/secondary/clang/tools/driver/BUILD.gn b/llvm/utils/gn/secondary/clang/tools/driver/BUILD.gn index f09d87c056136..8f7432161b4bb 100644 --- a/llvm/utils/gn/secondary/clang/tools/driver/BUILD.gn +++ b/llvm/utils/gn/secondary/clang/tools/driver/BUILD.gn @@ -1,3 +1,4 @@ +import("//llvm/utils/gn/build/driver_executable.gni") import("//llvm/utils/gn/build/symlink_or_copy.gni") import("//llvm/utils/gn/build/write_cmake_config.gni") import("//llvm/version.gni") @@ -46,7 +47,7 @@ if (host_os == "mac") { } } -executable("clang") { +driver_executable("clang") { configs += [ "//llvm/utils/gn/build:clang_code" ] deps = [ "//clang/include/clang/Config", diff --git a/llvm/utils/gn/secondary/llvm/tools/dsymutil/BUILD.gn b/llvm/utils/gn/secondary/llvm/tools/dsymutil/BUILD.gn index 8e8902d47cbb4..9a94179c7d032 100644 --- a/llvm/utils/gn/secondary/llvm/tools/dsymutil/BUILD.gn +++ b/llvm/utils/gn/secondary/llvm/tools/dsymutil/BUILD.gn @@ -1,11 +1,12 @@ import("//llvm/utils/TableGen/tablegen.gni") +import("//llvm/utils/gn/build/driver_executable.gni") tablegen("Options") { visibility = [ ":dsymutil" ] args = [ "-gen-opt-parser-defs" ] } -executable("dsymutil") { +driver_executable("dsymutil") { deps = [ ":Options", "//llvm/lib/CodeGen/AsmPrinter", diff --git a/llvm/utils/gn/secondary/llvm/tools/llvm-ar/BUILD.gn b/llvm/utils/gn/secondary/llvm/tools/llvm-ar/BUILD.gn index 9d4ae2cbf8a1d..61e57f6858b4b 100644 --- a/llvm/utils/gn/secondary/llvm/tools/llvm-ar/BUILD.gn +++ b/llvm/utils/gn/secondary/llvm/tools/llvm-ar/BUILD.gn @@ -1,4 +1,5 @@ import("//llvm/tools/binutils_symlinks.gni") +import("//llvm/utils/gn/build/driver_executable.gni") import("//llvm/utils/gn/build/symlink_or_copy.gni") symlinks = [ @@ -29,7 +30,7 @@ group("symlinks") { } } -executable("llvm-ar") { +driver_executable("llvm-ar") { deps = [ "//llvm/lib/IR", "//llvm/lib/Object", diff --git a/llvm/utils/gn/secondary/llvm/tools/llvm-cxxfilt/BUILD.gn b/llvm/utils/gn/secondary/llvm/tools/llvm-cxxfilt/BUILD.gn index 081f77d29dfac..77cf73e0704e2 100644 --- a/llvm/utils/gn/secondary/llvm/tools/llvm-cxxfilt/BUILD.gn +++ b/llvm/utils/gn/secondary/llvm/tools/llvm-cxxfilt/BUILD.gn @@ -1,5 +1,6 @@ import("//llvm/tools/binutils_symlinks.gni") import("//llvm/utils/TableGen/tablegen.gni") +import("//llvm/utils/gn/build/driver_executable.gni") import("//llvm/utils/gn/build/symlink_or_copy.gni") tablegen("Opts") { @@ -23,7 +24,7 @@ group("symlinks") { } } -executable("llvm-cxxfilt") { +driver_executable("llvm-cxxfilt") { deps = [ ":Opts", "//llvm/lib/Demangle", 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 01df0df335ab9..8f6353bd8bb04 100644 --- a/llvm/utils/gn/secondary/llvm/tools/llvm-objcopy/BUILD.gn +++ b/llvm/utils/gn/secondary/llvm/tools/llvm-objcopy/BUILD.gn @@ -1,6 +1,7 @@ import("//llvm/tools/binutils_symlinks.gni") import("//llvm/tools/cctools_symlinks.gni") import("//llvm/utils/TableGen/tablegen.gni") +import("//llvm/utils/gn/build/driver_executable.gni") import("//llvm/utils/gn/build/symlink_or_copy.gni") tablegen("BitcodeStripOpts") { @@ -56,7 +57,7 @@ group("symlinks") { } } -executable("llvm-objcopy") { +driver_executable("llvm-objcopy") { deps = [ ":BitcodeStripOpts", ":InstallNameToolOpts",