[llvm-branch-commits] [compiler-rt] Allow running tests without installing first (PR #83088)
Dan Liew via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Tue Feb 27 00:43:56 PST 2024
================
@@ -172,6 +172,20 @@ def push_dynamic_library_lookup_path(config, new_path):
# doesn't match config.compiler_rt_libdir then it means we might be testing the
# compiler's own runtime libraries rather than the ones we just built.
# Warn about about this and handle appropriately.
+if config.test_standalone_build_libs:
+ if config.compiler_id == "Clang":
+ # Ensure that we use the just-built libraries when linking by overriding
+ # the Clang resource directory. However, this also means that we can no
+ # longer find the builtin headers from that path, so we explicitly add
+ # the builtin headers as an include path.
+ resource_dir, _ = get_path_from_clang(
+ shlex.split(config.target_cflags) + ["-print-resource-dir"], allow_failure=False
+ )
+ config.target_cflags += f" -nobuiltininc"
+ config.target_cflags += f" -I{config.compiler_rt_src_root}/include"
+ config.target_cflags += f" -idirafter {resource_dir}/include"
+ config.target_cflags += f" -resource-dir={config.compiler_rt_obj_root}"
+ config.target_cflags += f" -Wl,--rpath={config.compiler_rt_libdir}"
----------------
delcypher wrote:
The flags below create kind of a odd mix
* Some external clang that has its own independent resource directory.
* The external clang is being forced to use a different resource directory than what it was shipped with
* The external clang is being forced to use a different set of headers than what it was shipped with
I'm not sure that combination is guaranteed to work given that compiler-rt can be tightly coupled with clang.
If I've read this code correctly the change you've made is on the common path (because `COMPILER_RT_TEST_STANDALONE_BUILD_LIBS` is `ON` by default) but AFAIK your change was never needed before because normally you would build compiler-rt with a just built clang which I think should mean there's no difference between what `-print-resource-dir` reports and `config.compiler_rt_obj_root`. Or have I misunderstood something?
https://github.com/llvm/llvm-project/pull/83088
More information about the llvm-branch-commits
mailing list