Index: llvm/utils/gn/TODO.txt =================================================================== --- llvm/utils/gn/TODO.txt +++ llvm/utils/gn/TODO.txt @@ -17,8 +17,6 @@ - one-build-dir bootstrap builds using GN's toolchain feature - move clang_tablegen into lib/ for private files -- add write_cmake_config() template, use it throughout where - write_cmake_config.py is called - add dead code stripping - move run_tablegen.py from build to tablegen folder - figure out why -Iclang/Support gets added so often Index: llvm/utils/gn/build/write_cmake_config.gni =================================================================== --- /dev/null +++ llvm/utils/gn/build/write_cmake_config.gni @@ -0,0 +1,54 @@ +# This file introduces a templates for calling write_cmake_config.py. +# +# write_cmake_config behaves like CMake's configure_file(), but runs at build +# time, not at generator time. See write_cmake_config.py for details. +# +# Parameters: +# +# input (required) [string] +# +# output (required) [string] +# +# values (required) [list of strings] +# Each entry is a '='-separated key-value pair used for substitution. +# +# Example use: +# +# write_cmake_config("attributes_compat_func_gen") { +# input = "Version.inc.in" +# output = "$root_gen_dir/clang/include/clang/Basic/Version.inc", +# values = [ +# "CLANG_VERSION=$llvm_version", +# ] +# } + +template("write_cmake_config") { + assert(defined(invoker.input), "must set 'input' in $target_name") + assert(defined(invoker.output), "must set 'output' in $target_name") + assert(defined(invoker.values), "must set 'values' in $target_name") + + action(target_name) { + script = "//llvm/utils/gn/build/write_cmake_config.py" + + sources = [ + invoker.input, + ] + outputs = [ + invoker.output, + ] + args = [ + "-o", + rebase_path(outputs[0], root_out_dir), + rebase_path(sources[0], root_out_dir), + ] + invoker.values + + forward_variables_from(invoker, + [ + "configs", + "deps", + "public_configs", + "public_deps", + "visibility", + ]) + } +} Index: llvm/utils/gn/secondary/clang/include/clang/Basic/BUILD.gn =================================================================== --- llvm/utils/gn/secondary/clang/include/clang/Basic/BUILD.gn +++ llvm/utils/gn/secondary/clang/include/clang/Basic/BUILD.gn @@ -1,22 +1,13 @@ import("//clang/utils/TableGen/clang_tablegen.gni") +import("//llvm/utils/gn/build/write_cmake_config.gni") import("//llvm/version.gni") # Version header. -action("version") { - script = "//llvm/utils/gn/build/write_cmake_config.py" - - sources = [ - "Version.inc.in", - ] - outputs = [ - "$root_gen_dir/clang/include/clang/Basic/Version.inc", - ] - args = [ - "-o", - rebase_path(outputs[0], root_out_dir), - rebase_path(sources[0], root_out_dir), - +write_cmake_config("version") { + input = "Version.inc.in" + output = "$target_gen_dir/Version.inc" + values = [ "CLANG_VERSION=$llvm_version", "CLANG_VERSION_MAJOR=$llvm_version_major", "CLANG_VERSION_MINOR=$llvm_version_minor", Index: llvm/utils/gn/secondary/clang/include/clang/Config/BUILD.gn =================================================================== --- llvm/utils/gn/secondary/clang/include/clang/Config/BUILD.gn +++ llvm/utils/gn/secondary/clang/include/clang/Config/BUILD.gn @@ -1,6 +1,7 @@ import("//clang/lib/ARCMigrate/enable.gni") import("//clang/lib/StaticAnalyzer/Frontend/enable.gni") import("//llvm/utils/gn/build/libs/xml/enable.gni") +import("//llvm/utils/gn/build/write_cmake_config.gni") import("//llvm/version.gni") config("Config_config") { @@ -8,20 +9,10 @@ include_dirs = [ "$target_gen_dir/clang/include" ] } -action("Config") { - script = "//llvm/utils/gn/build/write_cmake_config.py" - - sources = [ - "config.h.cmake", - ] - outputs = [ - "$target_gen_dir/config.h", - ] - args = [ - "-o", - rebase_path(outputs[0], root_out_dir), - rebase_path(sources[0], root_out_dir), - +write_cmake_config("Config") { + input = "config.h.cmake" + output = "$target_gen_dir/config.h" + values = [ "BUG_REPORT_URL=https://bugs.llvm.org/", "CLANG_DEFAULT_LINKER=", "CLANG_DEFAULT_STD_C=", @@ -47,36 +38,36 @@ ] if (clang_enable_arcmt) { - args += [ "CLANG_ENABLE_ARCMT=1" ] + values += [ "CLANG_ENABLE_ARCMT=1" ] } else { - args += [ "CLANG_ENABLE_ARCMT=" ] + values += [ "CLANG_ENABLE_ARCMT=" ] } if (clang_enable_static_analyzer) { - args += [ "CLANG_ENABLE_STATIC_ANALYZER=1" ] + values += [ "CLANG_ENABLE_STATIC_ANALYZER=1" ] } else { - args += [ "CLANG_ENABLE_STATIC_ANALYZER=" ] + values += [ "CLANG_ENABLE_STATIC_ANALYZER=" ] } if (host_os != "win") { - args += [ "CLANG_HAVE_RLIMITS=1" ] + values += [ "CLANG_HAVE_RLIMITS=1" ] } else { - args += [ "CLANG_HAVE_RLIMITS=" ] + values += [ "CLANG_HAVE_RLIMITS=" ] } if (llvm_enable_libxml2) { - args += [ "CLANG_HAVE_LIBXML=1" ] + values += [ "CLANG_HAVE_LIBXML=1" ] } else { - args += [ "CLANG_HAVE_LIBXML=" ] + values += [ "CLANG_HAVE_LIBXML=" ] } if (host_os == "mac") { # FIXME: Hardcoding this isn't great, but assuming that the host ld version # has anything to do with the ld version where the built clang will run # isn't either. Probably want to make this a declare_args. - args += [ "HOST_LINK_VERSION=305" ] + values += [ "HOST_LINK_VERSION=305" ] } else { - args += [ "HOST_LINK_VERSION=" ] + values += [ "HOST_LINK_VERSION=" ] } # Let targets depending on this find the generated file. Index: llvm/utils/gn/secondary/clang/test/BUILD.gn =================================================================== --- llvm/utils/gn/secondary/clang/test/BUILD.gn +++ llvm/utils/gn/secondary/clang/test/BUILD.gn @@ -3,24 +3,15 @@ import("//llvm/lib/Target/targets.gni") import("//llvm/triples.gni") import("//llvm/utils/gn/build/libs/zlib/enable.gni") +import("//llvm/utils/gn/build/write_cmake_config.gni") import("clang_lit_site_cfg_files.gni") template("write_lit_config") { - action(target_name) { - script = "//llvm/utils/gn/build/write_cmake_config.py" - - sources = [ - invoker.input, - ] - outputs = [ - invoker.output, - ] - args = [ - "-o", - rebase_path(outputs[0], root_out_dir), - rebase_path(sources[0], root_out_dir), - - "LIT_SITE_CFG_IN_HEADER=## Autogenerated from ${sources[0]}, do not edit", + write_cmake_config(target_name) { + input = invoker.input + output = invoker.output + values = [ + "LIT_SITE_CFG_IN_HEADER=## Autogenerated from $input, do not edit", "CLANG_BINARY_DIR=" + rebase_path(get_label_info("//clang", "target_out_dir")), "CLANG_SOURCE_DIR=" + rebase_path("//clang"), @@ -34,11 +25,11 @@ ] if (host_os == "win") { # See comment for Windows solink in llvm/utils/gn/build/toolchain/BUILD.gn - args += [ "SHLIBDIR=" + rebase_path("$root_out_dir/bin") ] + values += [ "SHLIBDIR=" + rebase_path("$root_out_dir/bin") ] } else { - args += [ "SHLIBDIR=" + rebase_path("$root_out_dir/lib") ] + values += [ "SHLIBDIR=" + rebase_path("$root_out_dir/lib") ] } - args += invoker.extra_args + values += invoker.extra_values } } @@ -47,7 +38,7 @@ input = "//clang/test/lit.site.cfg.py.in" output = clang_lit_site_cfg_file - extra_args = [ + extra_values = [ "CLANG_ANALYZER_WITH_Z3=", # Must be empty, not 0. "CLANG_BUILD_EXAMPLES=0", "CLANG_DEFAULT_CXX_STDLIB=", # Empty string means "default value" here. @@ -69,35 +60,35 @@ ] if (clang_enable_arcmt) { - extra_args += [ "CLANG_ENABLE_ARCMT=1" ] + extra_values += [ "CLANG_ENABLE_ARCMT=1" ] } else { - extra_args += [ "CLANG_ENABLE_ARCMT=0" ] + extra_values += [ "CLANG_ENABLE_ARCMT=0" ] } if (clang_enable_static_analyzer) { - extra_args += [ "CLANG_ENABLE_STATIC_ANALYZER=1" ] + extra_values += [ "CLANG_ENABLE_STATIC_ANALYZER=1" ] } else { - extra_args += [ "CLANG_ENABLE_STATIC_ANALYZER=0" ] + extra_values += [ "CLANG_ENABLE_STATIC_ANALYZER=0" ] } if (llvm_enable_zlib) { - extra_args += [ "HAVE_LIBZ=1" ] + extra_values += [ "HAVE_LIBZ=1" ] } else { - extra_args += [ "HAVE_LIBZ=0" ] # Must be 0. + extra_values += [ "HAVE_LIBZ=0" ] # Must be 0. } if (host_cpu == "x64") { - extra_args += [ "HOST_ARCH=x86_64" ] + extra_values += [ "HOST_ARCH=x86_64" ] } else { assert(false, "unimplemented host_cpu " + host_cpu) } if (host_os == "mac") { - extra_args += [ "LLVM_PLUGIN_EXT=.dylib" ] + extra_values += [ "LLVM_PLUGIN_EXT=.dylib" ] } else if (host_os == "win") { - extra_args += [ "LLVM_PLUGIN_EXT=.dll" ] + extra_values += [ "LLVM_PLUGIN_EXT=.dll" ] } else { - extra_args += [ "LLVM_PLUGIN_EXT=.so" ] + extra_values += [ "LLVM_PLUGIN_EXT=.so" ] } } @@ -105,7 +96,7 @@ # Fully-qualified instead of relative for LIT_SITE_CFG_IN_HEADER. input = "//clang/test/Unit/lit.site.cfg.py.in" output = clang_lit_unit_site_cfg_file - extra_args = [ "LLVM_BUILD_MODE=." ] + extra_values = [ "LLVM_BUILD_MODE=." ] } # This target should contain all dependencies of check-clang. Index: llvm/utils/gn/secondary/clang/tools/driver/BUILD.gn =================================================================== --- llvm/utils/gn/secondary/clang/tools/driver/BUILD.gn +++ llvm/utils/gn/secondary/clang/tools/driver/BUILD.gn @@ -1,4 +1,5 @@ import("//llvm/utils/gn/build/symlink_or_copy.gni") +import("//llvm/utils/gn/build/write_cmake_config.gni") import("//llvm/version.gni") symlinks = [ @@ -35,20 +36,10 @@ } if (host_os == "mac") { - action("write_info_plist") { - script = "//llvm/utils/gn/build/write_cmake_config.py" - sources = [ - "Info.plist.in", - ] - outputs = [ - "$target_gen_dir/Info.plist", - ] - - args = [ - "-o", - rebase_path(outputs[0], root_out_dir), - rebase_path(sources[0], root_out_dir), - + write_cmake_config("write_info_plist") { + input = "Info.plist.in" + output = "$target_gen_dir/Info.plist" + values = [ "TOOL_INFO_BUILD_VERSION=$llvm_version_major.$llvm_version_minor", "TOOL_INFO_NAME=clang", "TOOL_INFO_UTI=org.llvm.clang", Index: llvm/utils/gn/secondary/lld/include/lld/Common/BUILD.gn =================================================================== --- llvm/utils/gn/secondary/lld/include/lld/Common/BUILD.gn +++ llvm/utils/gn/secondary/lld/include/lld/Common/BUILD.gn @@ -1,19 +1,10 @@ +import("//llvm/utils/gn/build/write_cmake_config.gni") import("//llvm/version.gni") -action("version") { - script = "//llvm/utils/gn/build/write_cmake_config.py" - - sources = [ - "Version.inc.in", - ] - outputs = [ - "$target_gen_dir/Version.inc", - ] - args = [ - "-o", - rebase_path(outputs[0], root_out_dir), - rebase_path(sources[0], root_out_dir), - +write_cmake_config("version") { + input = "Version.inc.in" + output = "$target_gen_dir/Version.inc" + values = [ "LLD_VERSION=$llvm_version", "LLD_VERSION_MAJOR=$llvm_version_major", "LLD_VERSION_MINOR=$llvm_version_minor", Index: llvm/utils/gn/secondary/lld/test/BUILD.gn =================================================================== --- llvm/utils/gn/secondary/lld/test/BUILD.gn +++ llvm/utils/gn/secondary/lld/test/BUILD.gn @@ -2,26 +2,16 @@ import("//llvm/triples.gni") import("//llvm/utils/gn/build/libs/xml/enable.gni") import("//llvm/utils/gn/build/libs/zlib/enable.gni") +import("//llvm/utils/gn/build/write_cmake_config.gni") import("lld_lit_site_cfg_files.gni") # The bits common to writing lit.site.cfg.py.in and Unit/lit.site.cfg.py.in. template("write_lit_cfg") { - action(target_name) { - script = "//llvm/utils/gn/build/write_cmake_config.py" - - sources = [ - invoker.input, - ] - outputs = [ - invoker.output, - ] - - args = [ - "-o", - rebase_path(outputs[0], root_out_dir), - rebase_path(sources[0], root_out_dir), - - "LIT_SITE_CFG_IN_HEADER=## Autogenerated from ${sources[0]}, do not edit", + write_cmake_config(target_name) { + input = invoker.input + output = invoker.output + values = [ + "LIT_SITE_CFG_IN_HEADER=## Autogenerated from $input, do not edit", "LLD_BINARY_DIR=" + rebase_path(get_label_info("//lld", "target_out_dir")), "LLD_SOURCE_DIR=" + rebase_path("//lld"), @@ -36,7 +26,7 @@ "PYTHON_EXECUTABLE=$python_path", "TARGET_TRIPLE=$llvm_target_triple", ] - args += invoker.extra_args + values += invoker.extra_values } } @@ -45,23 +35,23 @@ input = "//lld/test/lit.site.cfg.py.in" output = lld_lit_site_cfg_file - extra_args = [] + extra_values = [] if (llvm_enable_dia_sdk) { - extra_args += [ "LLVM_ENABLE_DIA_SDK=1" ] + extra_values += [ "LLVM_ENABLE_DIA_SDK=1" ] } else { - extra_args += [ "LLVM_ENABLE_DIA_SDK=0" ] # Must be 0. + extra_values += [ "LLVM_ENABLE_DIA_SDK=0" ] # Must be 0. } if (llvm_enable_libxml2) { - extra_args += [ "LLVM_LIBXML2_ENABLED=1" ] + extra_values += [ "LLVM_LIBXML2_ENABLED=1" ] } else { - extra_args += [ "LLVM_LIBXML2_ENABLED=" ] # Must be empty. + extra_values += [ "LLVM_LIBXML2_ENABLED=" ] # Must be empty. } if (llvm_enable_zlib) { - extra_args += [ "HAVE_LIBZ=1" ] + extra_values += [ "HAVE_LIBZ=1" ] } else { - extra_args += [ "HAVE_LIBZ=0" ] # Must be 0. + extra_values += [ "HAVE_LIBZ=0" ] # Must be 0. } } @@ -69,7 +59,7 @@ # Fully-qualified instead of relative for LIT_SITE_CFG_IN_HEADER. input = "//lld/test/Unit/lit.site.cfg.py.in" output = lld_lit_unit_site_cfg_file - extra_args = [ "LLVM_BUILD_MODE=." ] + extra_values = [ "LLVM_BUILD_MODE=." ] } # This target should contain all dependencies of check-lld. Index: llvm/utils/gn/secondary/llvm/include/llvm/Config/BUILD.gn =================================================================== --- llvm/utils/gn/secondary/llvm/include/llvm/Config/BUILD.gn +++ llvm/utils/gn/secondary/llvm/include/llvm/Config/BUILD.gn @@ -7,6 +7,7 @@ import("//llvm/utils/gn/build/libs/xar/enable.gni") import("//llvm/utils/gn/build/libs/xml/enable.gni") import("//llvm/utils/gn/build/libs/zlib/enable.gni") +import("//llvm/utils/gn/build/write_cmake_config.gni") import("//llvm/version.gni") # Contains actions to create config.h, llvm-config.h, abi-breaking.h, @@ -43,53 +44,32 @@ llvm_enable_reverse_iteration = false } -action("abi-breaking") { - script = "//llvm/utils/gn/build/write_cmake_config.py" - - sources = [ - "abi-breaking.h.cmake", - ] - outputs = [ - "$target_gen_dir/abi-breaking.h", - ] - args = [ - "-o", - rebase_path(outputs[0], root_out_dir), - - rebase_path(sources[0], root_out_dir), - ] +write_cmake_config("abi-breaking") { + input = "abi-breaking.h.cmake" + output = "$target_gen_dir/abi-breaking.h" + values = [] if (llvm_enable_abi_breaking_checks) { - args += [ "LLVM_ENABLE_ABI_BREAKING_CHECKS=1" ] + values += [ "LLVM_ENABLE_ABI_BREAKING_CHECKS=1" ] } else { - args += [ "LLVM_ENABLE_ABI_BREAKING_CHECKS=" ] + values += [ "LLVM_ENABLE_ABI_BREAKING_CHECKS=" ] } if (llvm_enable_reverse_iteration) { - args += [ "LLVM_ENABLE_REVERSE_ITERATION=1" ] + values += [ "LLVM_ENABLE_REVERSE_ITERATION=1" ] } else { - args += [ "LLVM_ENABLE_REVERSE_ITERATION=" ] + values += [ "LLVM_ENABLE_REVERSE_ITERATION=" ] } } -action("config") { - script = "//llvm/utils/gn/build/write_cmake_config.py" - +write_cmake_config("config") { public_deps = [ ":llvm-config", ] - sources = [ - "config.h.cmake", - ] - outputs = [ - "$target_gen_dir/config.h", - ] - args = [ - "-o", - rebase_path(outputs[0], root_out_dir), - rebase_path(sources[0], root_out_dir), - + input = "config.h.cmake" + output = "$target_gen_dir/config.h" + values = [ "BUG_REPORT_URL=https://bugs.llvm.org/", "ENABLE_BACKTRACES=1", "ENABLE_CRASH_OVERRIDES=1", @@ -149,7 +129,7 @@ ] if (host_os == "linux") { - args += [ + values += [ "HAVE_FUTIMENS=1", "HAVE_LINK_H=1", "HAVE_LSEEK64=1", @@ -161,7 +141,7 @@ "HAVE_VALGRIND_VALGRIND_H=1", ] } else { - args += [ + values += [ "HAVE_FUTIMENS=", "HAVE_LINK_H=", "HAVE_LSEEK64=", @@ -175,7 +155,7 @@ } if (host_os == "mac") { - args += [ + values += [ "HAVE_CRASHREPORTER_INFO=1", "HAVE_DECL_ARC4RANDOM=1", "HAVE_DLADDR=1", @@ -186,7 +166,7 @@ "HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC=1", ] } else { - args += [ + values += [ "HAVE_CRASHREPORTER_INFO=", "HAVE_DECL_ARC4RANDOM=", "HAVE_DLADDR=", @@ -199,7 +179,7 @@ } if (host_os == "win") { - args += [ + values += [ "HAVE_BACKTRACE=", "HAVE_DECL_STRERROR_S=1", "HAVE_DLFCN_H=", @@ -241,7 +221,7 @@ ] } else { # POSIX-y system defaults. - args += [ + values += [ "HAVE_BACKTRACE=1", "HAVE_DECL_STRERROR_S=", "HAVE_DLFCN_H=1", @@ -284,58 +264,48 @@ } if (host_os == "linux") { - args += [ "LTDL_SHLIB_EXT=.so" ] + values += [ "LTDL_SHLIB_EXT=.so" ] } else if (host_os == "mac") { - args += [ "LTDL_SHLIB_EXT=.dylib" ] + values += [ "LTDL_SHLIB_EXT=.dylib" ] } else if (host_os == "win") { - args += [ "LTDL_SHLIB_EXT=.dll" ] + values += [ "LTDL_SHLIB_EXT=.dll" ] } if (llvm_enable_libedit) { - args += [ "HAVE_LIBEDIT=1" ] + values += [ "HAVE_LIBEDIT=1" ] } else { - args += [ "HAVE_LIBEDIT=" ] + values += [ "HAVE_LIBEDIT=" ] } if (llvm_enable_libxar) { - args += [ "HAVE_LIBXAR=1" ] + values += [ "HAVE_LIBXAR=1" ] } else { - args += [ "HAVE_LIBXAR=" ] + values += [ "HAVE_LIBXAR=" ] } if (llvm_enable_terminfo) { - args += [ "HAVE_TERMINFO=1" ] + values += [ "HAVE_TERMINFO=1" ] } else { - args += [ "HAVE_TERMINFO=" ] + values += [ "HAVE_TERMINFO=" ] } if (llvm_enable_zlib) { - args += [ "LLVM_ENABLE_ZLIB=1" ] + values += [ "LLVM_ENABLE_ZLIB=1" ] } else { - args += [ "LLVM_ENABLE_ZLIB=" ] + values += [ "LLVM_ENABLE_ZLIB=" ] } if (llvm_enable_libxml2) { - args += [ "LLVM_LIBXML2_ENABLED=1" ] + values += [ "LLVM_LIBXML2_ENABLED=1" ] } else { - args += [ "LLVM_LIBXML2_ENABLED=" ] + values += [ "LLVM_LIBXML2_ENABLED=" ] } } -action("llvm-config") { - script = "//llvm/utils/gn/build/write_cmake_config.py" - - sources = [ - "llvm-config.h.cmake", - ] - outputs = [ - "$target_gen_dir/llvm-config.h", - ] - args = [ - "-o", - rebase_path(outputs[0], root_out_dir), - rebase_path(sources[0], root_out_dir), - +write_cmake_config("llvm-config") { + input = "llvm-config.h.cmake" + output = "$target_gen_dir/llvm-config.h" + values = [ "LLVM_ENABLE_DUMP=", "LINK_POLLY_INTO_TOOLS=", "LLVM_DEFAULT_TARGET_TRIPLE=$llvm_target_triple", @@ -359,15 +329,15 @@ ] if (host_os == "win") { - args += [ "LLVM_ON_UNIX=" ] + values += [ "LLVM_ON_UNIX=" ] } else { - args += [ "LLVM_ON_UNIX=1" ] + values += [ "LLVM_ON_UNIX=1" ] } if (llvm_enable_threads) { - args += [ "LLVM_ENABLE_THREADS=1" ] + values += [ "LLVM_ENABLE_THREADS=1" ] } else { - args += [ "LLVM_ENABLE_THREADS=" ] + values += [ "LLVM_ENABLE_THREADS=" ] } } @@ -378,16 +348,10 @@ assert(defined(invoker.key), "must set 'key' in $target_name") assert(defined(invoker.value), "must set 'value' in $target_name") - action(target_name) { + write_cmake_config(target_name) { visibility = [ ":write_target_def_files" ] - script = "//llvm/utils/gn/build/write_cmake_config.py" - - sources = [ - "$target_name.in", - ] - outputs = [ - "$target_gen_dir/$target_name", - ] + input = "$target_name.in" + output = "$target_gen_dir/$target_name" # Build something like # `LLVM_ENUM_ASM_PARSERS=LLVM_ASM_PARSER(ARM)\nLLVM_ASM_PARSER(X86)\n`. Note @@ -397,10 +361,7 @@ foreach(target, llvm_targets_to_build) { value = "$value${invoker.value}($target)\n" } - args = [ - "-o", - rebase_path(outputs[0], root_out_dir), - rebase_path(sources[0], root_out_dir), + values = [ "${invoker.key}=$value", ] } Index: llvm/utils/gn/secondary/llvm/lib/Target/WebAssembly/BUILD.gn =================================================================== --- llvm/utils/gn/secondary/llvm/lib/Target/WebAssembly/BUILD.gn +++ llvm/utils/gn/secondary/llvm/lib/Target/WebAssembly/BUILD.gn @@ -81,8 +81,8 @@ "WebAssemblyLowerEmscriptenEHSjLj.cpp", "WebAssemblyLowerGlobalDtors.cpp", "WebAssemblyMCInstLower.cpp", - "WebAssemblyMemIntrinsicResults.cpp", "WebAssemblyMachineFunctionInfo.cpp", + "WebAssemblyMemIntrinsicResults.cpp", "WebAssemblyOptimizeLiveIntervals.cpp", "WebAssemblyOptimizeReturned.cpp", "WebAssemblyPeephole.cpp", Index: llvm/utils/gn/secondary/llvm/test/BUILD.gn =================================================================== --- llvm/utils/gn/secondary/llvm/test/BUILD.gn +++ llvm/utils/gn/secondary/llvm/test/BUILD.gn @@ -6,24 +6,15 @@ import("//llvm/utils/gn/build/libs/xar/enable.gni") import("//llvm/utils/gn/build/libs/xml/enable.gni") import("//llvm/utils/gn/build/libs/zlib/enable.gni") +import("//llvm/utils/gn/build/write_cmake_config.gni") import("llvm_lit_site_cfg_files.gni") template("write_lit_config") { - action(target_name) { - script = "//llvm/utils/gn/build/write_cmake_config.py" - - sources = [ - invoker.input, - ] - outputs = [ - invoker.output, - ] - args = [ - "-o", - rebase_path(outputs[0], root_out_dir), - rebase_path(sources[0], root_out_dir), - - "LIT_SITE_CFG_IN_HEADER=## Autogenerated from ${sources[0]}, do not edit", + write_cmake_config(target_name) { + input = invoker.input + output = invoker.output + values = [ + "LIT_SITE_CFG_IN_HEADER=## Autogenerated from $input, do not edit", "ENABLE_SHARED=0", "LLVM_BINARY_DIR=" + rebase_path(get_label_info("//llvm", "target_out_dir")), @@ -32,18 +23,18 @@ ] if (host_os == "win") { # See comment for Windows solink in llvm/utils/gn/build/toolchain/BUILD.gn - args += [ "SHLIBDIR=" + rebase_path("$root_out_dir/bin") ] + values += [ "SHLIBDIR=" + rebase_path("$root_out_dir/bin") ] } else { - args += [ "SHLIBDIR=" + rebase_path("$root_out_dir/lib") ] + values += [ "SHLIBDIR=" + rebase_path("$root_out_dir/lib") ] } - args += invoker.extra_args + values += invoker.extra_values } } write_lit_config("lit_site_cfg") { input = "//llvm/test/lit.site.cfg.py.in" output = llvm_lit_site_cfg_file - extra_args = [ + extra_values = [ "BUILD_SHARED_LIBS=0", # Only used by the Go bindings tests, or if LLVM_USE_SANITIZER includes @@ -88,25 +79,25 @@ ] if (host_cpu == "x64") { - extra_args += [ "HOST_ARCH=x86_64" ] + extra_values += [ "HOST_ARCH=x86_64" ] } else { assert(false, "unimplemented host_cpu " + host_cpu) } if (host_os == "mac") { - extra_args += [ + extra_values += [ "EXEEXT=", "HOST_OS=Darwin", "SHLIBEXT=.dylib", ] } else if (host_os == "linux") { - extra_args += [ + extra_values += [ "EXEEXT=", "HOST_OS=Linux", "SHLIBEXT=.so", ] } else if (host_os == "win") { - extra_args += [ + extra_values += [ "EXEEXT=.exe", "HOST_OS=Windows", "SHLIBEXT=.dll", @@ -119,57 +110,57 @@ # so just claim that ld is gold on Linux. The function also checks if # LLVMgold.so exists, but since that target isn't hooked up yet in the GN # build the LLVMgold.so tests currently don't run anywhere in the GN build. - extra_args += [ "GOLD_EXECUTABLE=ld" ] + extra_values += [ "GOLD_EXECUTABLE=ld" ] } else { - extra_args += [ "GOLD_EXECUTABLE=" ] + extra_values += [ "GOLD_EXECUTABLE=" ] } if (host_os == "mac") { - extra_args += [ "LD64_EXECUTABLE=ld" ] + extra_values += [ "LD64_EXECUTABLE=ld" ] } else { - extra_args += [ "LD64_EXECUTABLE=" ] + extra_values += [ "LD64_EXECUTABLE=" ] } if (llvm_enable_assertions) { - extra_args += [ "ENABLE_ASSERTIONS=1" ] + extra_values += [ "ENABLE_ASSERTIONS=1" ] } else { - extra_args += [ "ENABLE_ASSERTIONS=0" ] # Must be 0. + extra_values += [ "ENABLE_ASSERTIONS=0" ] # Must be 0. } if (llvm_enable_libxar) { - extra_args += [ "HAVE_LIBXAR=1" ] + extra_values += [ "HAVE_LIBXAR=1" ] } else { - extra_args += [ "HAVE_LIBXAR=0" ] # Must be 0. + extra_values += [ "HAVE_LIBXAR=0" ] # Must be 0. } if (llvm_enable_dia_sdk) { - extra_args += [ "LLVM_ENABLE_DIA_SDK=1" ] + extra_values += [ "LLVM_ENABLE_DIA_SDK=1" ] } else { - extra_args += [ "LLVM_ENABLE_DIA_SDK=0" ] # Must be 0. + extra_values += [ "LLVM_ENABLE_DIA_SDK=0" ] # Must be 0. } if (llvm_enable_libxml2) { - extra_args += [ "LLVM_LIBXML2_ENABLED=1" ] + extra_values += [ "LLVM_LIBXML2_ENABLED=1" ] } else { - extra_args += [ "LLVM_LIBXML2_ENABLED=" ] # Must be empty. + extra_values += [ "LLVM_LIBXML2_ENABLED=" ] # Must be empty. } if (llvm_enable_threads) { - extra_args += [ "LLVM_ENABLE_THREADS=1" ] + extra_values += [ "LLVM_ENABLE_THREADS=1" ] } else { - extra_args += [ "LLVM_ENABLE_THREADS=0" ] # Must be 0. + extra_values += [ "LLVM_ENABLE_THREADS=0" ] # Must be 0. } if (llvm_enable_zlib) { - extra_args += [ "HAVE_LIBZ=1" ] + extra_values += [ "HAVE_LIBZ=1" ] } else { - extra_args += [ "HAVE_LIBZ=0" ] # Must be 0. + extra_values += [ "HAVE_LIBZ=0" ] # Must be 0. } } write_lit_config("lit_unit_site_cfg") { input = "//llvm/test/Unit/lit.site.cfg.py.in" output = llvm_lit_unit_site_cfg_file - extra_args = [ "LLVM_BUILD_MODE=." ] + extra_values = [ "LLVM_BUILD_MODE=." ] } # This target should contain all dependencies of check-llvm. Index: llvm/utils/gn/secondary/llvm/tools/llvm-config/BUILD.gn =================================================================== --- llvm/utils/gn/secondary/llvm/tools/llvm-config/BUILD.gn +++ llvm/utils/gn/secondary/llvm/tools/llvm-config/BUILD.gn @@ -4,17 +4,12 @@ import("//llvm/utils/gn/build/libs/terminfo/enable.gni") import("//llvm/utils/gn/build/libs/xml/enable.gni") import("//llvm/utils/gn/build/libs/zlib/enable.gni") +import("//llvm/utils/gn/build/write_cmake_config.gni") import("//llvm/version.gni") -action("BuildVariables.inc") { - script = "//llvm/utils/gn/build/write_cmake_config.py" - - sources = [ - "BuildVariables.inc.in", - ] - outputs = [ - "$target_gen_dir/BuildVariables.inc", - ] +write_cmake_config("BuildVariables.inc") { + input = "BuildVariables.inc.in" + output = "$target_gen_dir/BuildVariables.inc" if (is_debug) { build_mode = "debug" @@ -68,11 +63,7 @@ system_libs += " ${l}z${lib}" } - args = [ - "-o", - rebase_path(outputs[0], root_out_dir), - rebase_path(sources[0], root_out_dir), - + values = [ "LLVM_SRC_ROOT=" + rebase_path("//llvm"), "LLVM_OBJ_ROOT=" + rebase_path(root_out_dir), Index: llvm/utils/gn/secondary/llvm/utils/llvm-lit/BUILD.gn =================================================================== --- llvm/utils/gn/secondary/llvm/utils/llvm-lit/BUILD.gn +++ llvm/utils/gn/secondary/llvm/utils/llvm-lit/BUILD.gn @@ -1,20 +1,15 @@ import("//clang/test/clang_lit_site_cfg_files.gni") import("//lld/test/lld_lit_site_cfg_files.gni") import("//llvm/test/llvm_lit_site_cfg_files.gni") +import("//llvm/utils/gn/build/write_cmake_config.gni") -action("llvm-lit") { - script = "//llvm/utils/gn/build/write_cmake_config.py" - - sources = [ - "llvm-lit.in", - ] - outputs = [ - "$root_out_dir/bin/llvm-lit", - ] +write_cmake_config("llvm-lit") { + input = "llvm-lit.in" + output = "$root_out_dir/bin/llvm-lit" if (host_os == "win") { # llvm-lit needs suffix.py for multiprocess to find a main module. - outputs[0] = "${outputs[0]}.py" + output = "${output}.py" } # lit's lit/llvm/config.py shells out to llvm-config. @@ -51,11 +46,7 @@ config_map += "map_config('" + rebase_path("//llvm/test/Unit/lit.cfg.py") + "', '" + rebase_path(llvm_lit_unit_site_cfg_file) + "')\n" - args = [ - "-o", - rebase_path(outputs[0], root_out_dir), - rebase_path(sources[0], root_out_dir), - + values = [ "LLVM_SOURCE_DIR=" + rebase_path("//llvm"), "LLVM_BINARY_DIR=" + rebase_path(get_label_info("//llvm", "target_out_dir")),