From: Nico Weber Date: Tue, 12 May 2020 00:57:46 +0000 (-0400) Subject: [gn build] Use relative paths in generated lit.site.cfg.py files for llvm and clang. X-Git-Tag: llvmorg-12-init~6334 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=91259bf9c68ef72cbc0ce9230665808d10dec416;p=platform%2Fupstream%2Fllvm.git [gn build] Use relative paths in generated lit.site.cfg.py files for llvm and clang. This ports a16ba6fea2e554f to the GN build. No intended behavior change. --- diff --git a/llvm/utils/gn/secondary/clang/test/BUILD.gn b/llvm/utils/gn/secondary/clang/test/BUILD.gn index 12648f8..b1541de 100644 --- a/llvm/utils/gn/secondary/clang/test/BUILD.gn +++ b/llvm/utils/gn/secondary/clang/test/BUILD.gn @@ -5,33 +5,33 @@ import("//llvm/triples.gni") import("//llvm/utils/gn/build/libs/pthread/enable.gni") import("//llvm/utils/gn/build/libs/zlib/enable.gni") import("//llvm/utils/gn/build/write_cmake_config.gni") +import("//llvm/utils/llvm-lit/lit_path_function.gni") import("clang_lit_site_cfg_files.gni") template("write_lit_config") { write_cmake_config(target_name) { input = invoker.input output = invoker.output + dir = get_path_info(output, "dir") values = [ - # FIXME: Write relative paths for path()s. "LIT_SITE_CFG_IN_HEADER=" + - "## Autogenerated from $input, do not edit\n\n" + - "def path(p): return p if p else \"\"", + "## Autogenerated from $input, do not edit\n\n" + lit_path_function, "CLANG_BINARY_DIR=" + - rebase_path(get_label_info("//clang", "target_out_dir")), - "CLANG_SOURCE_DIR=" + rebase_path("//clang"), + rebase_path(get_label_info("//clang", "target_out_dir"), dir), + "CLANG_SOURCE_DIR=" + rebase_path("//clang", dir), "ENABLE_SHARED=0", "LLVM_BINARY_DIR=" + - rebase_path(get_label_info("//llvm", "target_out_dir")), + rebase_path(get_label_info("//llvm", "target_out_dir"), dir), "LLVM_LIBS_DIR=", # needed only for shared builds - "LLVM_SOURCE_DIR=" + rebase_path("//llvm"), - "LLVM_TOOLS_DIR=" + rebase_path("$root_out_dir/bin"), + "LLVM_SOURCE_DIR=" + rebase_path("//llvm", dir), + "LLVM_TOOLS_DIR=" + rebase_path("$root_out_dir/bin", dir), "TARGET_TRIPLE=$llvm_target_triple", ] if (host_os == "win") { # See comment for Windows solink in llvm/utils/gn/build/toolchain/BUILD.gn - values += [ "SHLIBDIR=" + rebase_path("$root_out_dir/bin") ] + values += [ "SHLIBDIR=" + rebase_path("$root_out_dir/bin", dir) ] } else { - values += [ "SHLIBDIR=" + rebase_path("$root_out_dir/lib") ] + values += [ "SHLIBDIR=" + rebase_path("$root_out_dir/lib", dir) ] } values += invoker.extra_values } @@ -41,13 +41,13 @@ write_lit_config("lit_site_cfg") { # Fully-qualified instead of relative for LIT_SITE_CFG_IN_HEADER. input = "//clang/test/lit.site.cfg.py.in" output = clang_lit_site_cfg_file - + dir = get_path_info(output, "dir") extra_values = [ "LLVM_WITH_Z3=", # Must be empty, not 0. "CLANG_BUILD_EXAMPLES=0", "CLANG_DEFAULT_CXX_STDLIB=", # Empty string means "default value" here. "CLANG_DEFAULT_LINKER=", - "CLANG_TOOLS_DIR=" + rebase_path("$root_out_dir/bin"), + "CLANG_TOOLS_DIR=" + rebase_path("$root_out_dir/bin", dir), # This is only used if LLVM_USE_SANITIZER includes lsan and the host # OS is macOS. Since the GN build currently never uses LLVM_USE_SANITIZER, diff --git a/llvm/utils/gn/secondary/llvm/test/BUILD.gn b/llvm/utils/gn/secondary/llvm/test/BUILD.gn index 27c96d2..6d68a4b 100644 --- a/llvm/utils/gn/secondary/llvm/test/BUILD.gn +++ b/llvm/utils/gn/secondary/llvm/test/BUILD.gn @@ -7,28 +7,28 @@ 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/utils/llvm-lit/lit_path_function.gni") import("llvm_lit_site_cfg_files.gni") template("write_lit_config") { write_cmake_config(target_name) { input = invoker.input output = invoker.output + dir = get_path_info(output, "dir") values = [ - # FIXME: Write relative paths for path()s. "LIT_SITE_CFG_IN_HEADER=" + - "## Autogenerated from $input, do not edit\n\n" + - "def path(p): return p if p else \"\"", + "## Autogenerated from $input, do not edit\n\n" + lit_path_function, "ENABLE_SHARED=0", "LLVM_BINARY_DIR=" + - rebase_path(get_label_info("//llvm", "target_out_dir")), - "LLVM_SOURCE_DIR=" + rebase_path("//llvm"), - "LLVM_TOOLS_DIR=" + rebase_path("$root_out_dir/bin"), + rebase_path(get_label_info("//llvm", "target_out_dir"), dir), + "LLVM_SOURCE_DIR=" + rebase_path("//llvm", dir), + "LLVM_TOOLS_DIR=" + rebase_path("$root_out_dir/bin", dir), ] if (host_os == "win") { # See comment for Windows solink in llvm/utils/gn/build/toolchain/BUILD.gn - values += [ "SHLIBDIR=" + rebase_path("$root_out_dir/bin") ] + values += [ "SHLIBDIR=" + rebase_path("$root_out_dir/bin", dir) ] } else { - values += [ "SHLIBDIR=" + rebase_path("$root_out_dir/lib") ] + values += [ "SHLIBDIR=" + rebase_path("$root_out_dir/lib", dir) ] } values += invoker.extra_values } @@ -37,6 +37,7 @@ template("write_lit_config") { write_lit_config("lit_site_cfg") { input = "//llvm/test/lit.site.cfg.py.in" output = llvm_lit_site_cfg_file + dir = get_path_info(output, "dir") extra_values = [ "BUILD_SHARED_LIBS=0", @@ -58,7 +59,7 @@ write_lit_config("lit_site_cfg") { "LLVM_ENABLE_FFI=0", "LLVM_HAVE_OPT_VIEWER_MODULES=0", "LLVM_HOST_TRIPLE=$llvm_current_triple", - "LLVM_LIBRARY_DIR=" + rebase_path("$root_out_dir/lib"), + "LLVM_LIBRARY_DIR=" + rebase_path("$root_out_dir/lib", dir), "LLVM_LINK_LLVM_DYLIB=0", "LLVM_LIT_TOOLS_DIR=", # Intentionally empty, matches cmake build. "LLVM_NATIVE_ARCH=$native_target", diff --git a/llvm/utils/gn/secondary/llvm/utils/llvm-lit/BUILD.gn b/llvm/utils/gn/secondary/llvm/utils/llvm-lit/BUILD.gn index 0dd17f3..526b93b 100644 --- a/llvm/utils/gn/secondary/llvm/utils/llvm-lit/BUILD.gn +++ b/llvm/utils/gn/secondary/llvm/utils/llvm-lit/BUILD.gn @@ -4,11 +4,10 @@ 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") +import("//llvm/utils/llvm-lit/lit_path_function.gni") write_cmake_config("llvm-lit") { input = "llvm-lit.in" - - # The rebase_path() calls below assume that this is in $root_out_dir/bin. output = "$root_out_dir/bin/llvm-lit" if (host_os == "win") { @@ -78,18 +77,15 @@ write_cmake_config("llvm-lit") { # generated llvm.site.cfg.py file, so llvm-lit depends on all the targets to # generate the site.cfg.py file. # Note: \n is converted to a newline by write_cmake_config.py, not by gn. - config_map = - "def path(p):\n" + " if not p: return ''\n" + - " return os.path.abspath(os.path.join(__file__, '..', '..', p))\n" - + config_map = lit_path_function + "\n" + dir = get_path_info(output, "dir") foreach(entry, entries) { - config_map += - "\nmap_config(\n path(r'" + rebase_path(entry[0], root_out_dir) + - "'),\n path(r'" + rebase_path(entry[1], root_out_dir) + "'))" + config_map += "\nmap_config(\n path(r'" + rebase_path(entry[0], dir) + + "'),\n path(r'" + rebase_path(entry[1], dir) + "'))" } values = [ - "LLVM_SOURCE_DIR=" + rebase_path("//llvm", root_out_dir), + "LLVM_SOURCE_DIR=" + rebase_path("//llvm", dir), "BUILD_MODE=.", "LLVM_LIT_CONFIG_MAP=" + config_map, ] diff --git a/llvm/utils/gn/secondary/llvm/utils/llvm-lit/lit_path_function.gni b/llvm/utils/gn/secondary/llvm/utils/llvm-lit/lit_path_function.gni new file mode 100644 index 0000000..f877dc1 --- /dev/null +++ b/llvm/utils/gn/secondary/llvm/utils/llvm-lit/lit_path_function.gni @@ -0,0 +1,4 @@ +lit_path_function = + "# Takes a path that's relative to __file__ and makes it absolute.\n" + + "def path(p):\n" + + " return os.path.abspath(os.path.join(__file__, '..', p)) if p else ''"