Closed flipreverse closed 5 months ago
Hi @flipreverse,
PhASAR currently requires LLVM 14. We are in the process of supporting newer LLVM versions, but there are two major problems that have to be solved first (#533 and #687).
In our build configuration, we use find_package(LLVM 14 REQUIRED CONFIG)
to find the required LLVM version. Even if there is a newer version installed, this command will prefer LLVM 14.
Please note, that this LLVM version is independent from the clang version that you use for compilation -- you just cannot compile the unittests with clang>14.
Your invocation
CC=/fs/scratch/al/llvm-14/bin/clang CXX=/fs/scratch/al/llvm-14/bin/clang++ cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DPHASAR_BUILD_UNITTESTS=true /fs/scratch/al/phasar/src
only changes the compiler, but has no influence on the LLVM version that phasar links against.
In order to use a different LLVM version, you would need to modify the corresponding line in our top-level CMakeLists.txt.
Bug description
CMake does not use the include directory of the self-built LLVM/clang.
Steps to reproduce
bootstrap.sh
CC=/fs/scratch/al/llvm-14/bin/clang CXX=/fs/scratch/al/llvm-14/bin/clang++ cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DPHASAR_BUILD_UNITTESTS=true /fs/scratch/al/phasar/src
cmake --build . -j 1
Actual result: Due to the newer LLVM, the build process aborts. This in turn shows the wrong include dir:
-I/usr/lib/llvm-14/include
.Expected result: The CMake files should honor the custom LLVM installation. The parameter
-I/usr/lib/llvm-14/include
should be replaced by-I/fs/scratch/al/llvm-14//include
.(Important
/fs/scratch/al/llvm-14/
does contain a built of LLVM 17.0.6. The directory name is misleading.)Context (Environment)
Operating System:
Build Type:
Possible solution
The CMake variable
LLVM_INCLUDE_DIRS
, used incmake/phasar_macros.cmake:209
shall point to the aforementioned directory. That variable is set in/fs/scratch/al/llvm-14/lib/cmake/llvm/LLVMConfig.cmake
. I assume CMake must use the CMake files for LLVM from/fs/scratch/al/llvm-14/lib/cmake
.Example files
Files: