-
Notifications
You must be signed in to change notification settings - Fork 156
Description
- [X ] I have searched open and closed issues for duplicates
- [ X] I made sure that I am not using an old project version (DO: pull PhASAR, update git submodules, rebuild the project and check if the bug is still there)
Bug description
CMake does not use the include directory of the self-built LLVM/clang.
Steps to reproduce
- Use an LLVM version greater than 14 due a bug when building it on Debian 12
- Build steps
- Run
bootstrap.sh - Manually
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/srccmake --build . -j 1
- Run
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.
/fs/scratch/al/llvm-14/bin/clang++ -DBOOST_ALL_NO_LIB -DBOOST_GRAPH_DYN_LINK -DBOOST_REGEX_DYN_LINK -DPHASAR_BUILD_DIR=\"/fs/scratch/al/phasar/src/build\" -DPHASAR_SRC_DIR=\"/fs/scratch/al/phasar/src\" -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/usr/lib/llvm-14/include -I/fs/scratch/al/phasar/src/include -I/fs/scratch/al/phasar/src/build/include -I/fs/scratch/al/phasar/src/external/json/include -I/fs/scratch/al/phasar/src/external/json-schema-validator/src -MP -fstack-protector-strong -ffunction-sections -fdata-sections -pipe -Wall -Wextra -Wno-unused-parameter -O3 -DNDEBUG -march=native -fPIC -fvisibility-inlines-hidden -std=c++17 -MD -MT lib/CMakeFiles/phasar.dir/LibPhasar.cpp.o -MF lib/CMakeFiles/phasar.dir/LibPhasar.cpp.o.d -o lib/CMakeFiles/phasar.dir/LibPhasar.cpp.o -c /fs/scratch/al/phasar/src/lib/LibPhasar.cpp
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)
- phasar: [b796f7d44681514f58a683a3a71ff17c94edb0c1]
- googletest: [b07f56a]
- json: [bc889afb4c5bf1c0d8ee29ef35eaaf4c8bef8a5d]
- json-schema-validator [491ac44026e08f31790f5cacffa62e168bb35e32]
Operating System:
- [X ] Linux
- Windows
- macOS
Build Type:
- [ X] cmake
- [ X] bootstrap.sh
- custom build
Possible solution
The CMake variable LLVM_INCLUDE_DIRS, used in cmake/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: