Skip to content

Commit

Permalink
[llvm] [lit] Fix use_lld() to respect llvm_shlib_dir
Browse files Browse the repository at this point in the history
Fix the use_lld() to use llvm_shlib_dir similarly to how use_clang()
does it.  This fixes use_lld() wrongly prepending llvm_libs_dir,
i.e. the directory with system-installed LLVM libraries before
the build directory of standalone build.  As a result, the shared
libraries from an earlier version of clang end up being used instead of
the newly built version when running the test suite prior to installing.

To reproduce the problem, build and install LLVM with dylibs first,
e.g.:

    cmake ../llvm -G Ninja -DCMAKE_BUILD_TYPE=MinSizeRel \
      -DCMAKE_INSTALL_PREFIX="${HOME}"/llvm-test \
      -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON \
      -DLLVM_INSTALL_UTILS=ON
    ninja install

Then build clang against that installation and run tests:

    export LD_LIBRARY_PATH=~/llvm-test/lib
    export PATh=~/llvm-test/bin:"${PATH}"
    cmake ../clang -G Ninja -DCMAKE_BUILD_TYPE=MinSizeRel \
      -DCMAKE_INSTALL_PREFIX="${HOME}"/llvm-test \
      -DCLANG_LINK_CLANG_DYLIB=ON -DLLVM_BUILD_TESTS=ON \
      -DLLVM_EXTERNAL_LIT="${PWD}"/bin/llvm-lit
    ninja check-clang

The tests will be run with LD_LIBRARY_PATH of:

    /home/${USER}/llvm-test/lib:/home/${USER}/llvm-project/build-clang/lib

As a result, installed libclang-cpp will take precedence over the one
from build dir.  With the patch, the correct path is used, i.e.:

    /home/${USER}/llvm-project/build-clang/lib:/home/${USER}/llvm-test/lib

Differential Revision: https://reviews.llvm.org/D135368
  • Loading branch information
mgorny committed Oct 7, 2022
1 parent 74ec467 commit a64ea17
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion llvm/utils/lit/lit/llvm/config.py
Expand Up @@ -644,7 +644,7 @@ def use_lld(self, additional_tool_dirs=[], required=True,
self.with_environment('PATH', paths, append_path=True)

lib_dir_props = [self.config.name.lower() + '_libs_dir',
'lld_libs_dir', 'llvm_libs_dir']
'lld_libs_dir', 'llvm_shlib_dir', 'llvm_libs_dir']
lib_paths = [getattr(self.config, pp) for pp in lib_dir_props
if getattr(self.config, pp, None)]

Expand Down

0 comments on commit a64ea17

Please sign in to comment.