Skip to content
Snippets Groups Projects
  • Vassil Vassilev's avatar
    4dd1729c
    Enable ROOT to be built with prebuilt clang and llvm. · 4dd1729c
    Vassil Vassilev authored
    To do so one needs to pass -Dbuiltin_llvm=Off -Dbuiltin_clang=Off and the
    PATH should contain the path to llvm-config.
    
    Note this is not enabling ROOT to work with vanilla clang!
    
    This patch allows ROOT to be built against a prebuilt clang and llvm from
    https://root.cern.ch/git/{llvm.git,clang.git}. It allows to reduce ROOT's
    build times (in cases when cmake decides to rebuild the in-tree llvm for
    no good reason). It moves the common denominator of different ROOT builds
    in one place to save space. It also allows easy switch between LLVM in
    debug and release mode.
    
    To build the external clang and llvm exactly in the same way as the
    in-tree builds use:
    
    CMAKE_FLAGS="\
                -DLLVM_ENABLE_WARNINGS=OFF                   \
                -DLLVM_INCLUDE_TESTS=OFF                     \
                -DCLANG_INCLUDE_TESTS=OFF                    \
                -DLLVM_INCLUDE_EXAMPLES=OFF                  \
                -DCLANG_BUILD_TOOLS=OFF                      \
                -DCLANG_TOOL_ARCMT_TEST_BUILD=OFF            \
                -DCLANG_TOOL_CLANG_CHECK_BUILD=OFF           \
                -DCLANG_TOOL_CLANG_FORMAT_BUILD=OFF          \
                -DCLANG_TOOL_CLANG_FORMAT_VS_BUILD=OFF       \
                -DCLANG_TOOL_CLANG_FUZZER_BUILD=OFF          \
                -DCLANG_TOOL_CLANG_IMPORT_TEST_BUILD=OFF     \
                -DCLANG_TOOL_CLANG_OFFLOAD_BUNDLER_BUILD=OFF \
                -DCLANG_TOOL_CLANG_RENAME_BUILD=OFF          \
                -DCLANG_TOOL_C_ARCMT_TEST_BUILD=OFF          \
                -DCLANG_TOOL_C_INDEX_TEST_BUILD=OFF          \
                -DCLANG_TOOL_DIAGTOOL_BUILD=OFF              \
                -DCLANG_TOOL_LIBCLANG_BUILD=OFF              \
                -DCLANG_TOOL_SCAN_BUILD_BUILD=OFF            \
                -DCLANG_TOOL_SCAN_VIEW_BUILD=OFF             \
                -DLLVM_BUILD_TOOLS=OFF                       \
                -DLLVM_TOOL_LLVM_AR_BUILD=OFF                \
                -DCLANG_TOOL_CLANG_OFFLOAD_BUNDLER_BUILD=OFF \
                -DLLVM_FORCE_USE_OLD_TOOLCHAIN=ON            \
                -DCLANG_ENABLE_STATIC_ANALYZER=OFF           \
                -DCLANG_ENABLE_ARCMT=OFF                     \
                -DCLANG_ENABLE_FORMAT=OFF                    \
                -DLLVM_TARGETS_TO_BUILD=host                 \
                -DLLVM_ABI_BREAKING_CHECKS=FORCE_OFF         \
                -DLLVM_ENABLE_ABI_BREAKING_CHECKS=OFF        \
                -DCMAKE_INSTALL_PREFIX=..                    \
                -DCMAKE_BUILD_TYPE=Debug"
    
    cmake "$CMAKE_FLAGS"   ../../../sources/root-llvm/
    4dd1729c
    History
    Enable ROOT to be built with prebuilt clang and llvm.
    Vassil Vassilev authored
    To do so one needs to pass -Dbuiltin_llvm=Off -Dbuiltin_clang=Off and the
    PATH should contain the path to llvm-config.
    
    Note this is not enabling ROOT to work with vanilla clang!
    
    This patch allows ROOT to be built against a prebuilt clang and llvm from
    https://root.cern.ch/git/{llvm.git,clang.git}. It allows to reduce ROOT's
    build times (in cases when cmake decides to rebuild the in-tree llvm for
    no good reason). It moves the common denominator of different ROOT builds
    in one place to save space. It also allows easy switch between LLVM in
    debug and release mode.
    
    To build the external clang and llvm exactly in the same way as the
    in-tree builds use:
    
    CMAKE_FLAGS="\
                -DLLVM_ENABLE_WARNINGS=OFF                   \
                -DLLVM_INCLUDE_TESTS=OFF                     \
                -DCLANG_INCLUDE_TESTS=OFF                    \
                -DLLVM_INCLUDE_EXAMPLES=OFF                  \
                -DCLANG_BUILD_TOOLS=OFF                      \
                -DCLANG_TOOL_ARCMT_TEST_BUILD=OFF            \
                -DCLANG_TOOL_CLANG_CHECK_BUILD=OFF           \
                -DCLANG_TOOL_CLANG_FORMAT_BUILD=OFF          \
                -DCLANG_TOOL_CLANG_FORMAT_VS_BUILD=OFF       \
                -DCLANG_TOOL_CLANG_FUZZER_BUILD=OFF          \
                -DCLANG_TOOL_CLANG_IMPORT_TEST_BUILD=OFF     \
                -DCLANG_TOOL_CLANG_OFFLOAD_BUNDLER_BUILD=OFF \
                -DCLANG_TOOL_CLANG_RENAME_BUILD=OFF          \
                -DCLANG_TOOL_C_ARCMT_TEST_BUILD=OFF          \
                -DCLANG_TOOL_C_INDEX_TEST_BUILD=OFF          \
                -DCLANG_TOOL_DIAGTOOL_BUILD=OFF              \
                -DCLANG_TOOL_LIBCLANG_BUILD=OFF              \
                -DCLANG_TOOL_SCAN_BUILD_BUILD=OFF            \
                -DCLANG_TOOL_SCAN_VIEW_BUILD=OFF             \
                -DLLVM_BUILD_TOOLS=OFF                       \
                -DLLVM_TOOL_LLVM_AR_BUILD=OFF                \
                -DCLANG_TOOL_CLANG_OFFLOAD_BUNDLER_BUILD=OFF \
                -DLLVM_FORCE_USE_OLD_TOOLCHAIN=ON            \
                -DCLANG_ENABLE_STATIC_ANALYZER=OFF           \
                -DCLANG_ENABLE_ARCMT=OFF                     \
                -DCLANG_ENABLE_FORMAT=OFF                    \
                -DLLVM_TARGETS_TO_BUILD=host                 \
                -DLLVM_ABI_BREAKING_CHECKS=FORCE_OFF         \
                -DLLVM_ENABLE_ABI_BREAKING_CHECKS=OFF        \
                -DCMAKE_INSTALL_PREFIX=..                    \
                -DCMAKE_BUILD_TYPE=Debug"
    
    cmake "$CMAKE_FLAGS"   ../../../sources/root-llvm/