Skip to content

CMake files do not respect the LLVM config files from the custom installation #689

Description

@flipreverse
  • [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/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.

/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:

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions