-
Notifications
You must be signed in to change notification settings - Fork 10
How to use a custom LLVM build with omniscidb
Guilherme Leobas edited this page Sep 17, 2020
·
1 revision
In some cases, it might be worth to build LLVM from source to use with OmniSciDB. This quick guide will show how one can achieve this.
- Create a new omniscidb environment without any LLVM tools
- Activate the environment
- Clone LLVM. Be careful to clone the correct version of LLVM. One can check the available versions here
git clone --depth 1 --branch llvmorg-9.0.1 --single-branch https://github.com/llvm/llvm-project
mkdir llvm-project/build && cd llvm-project/build
- Create a script called
build.sh
insidellvm-project/build
with the following content:
PREFIX=${CONDA_PREFIX}
CPU_COUNT=20
CC=$(which gcc)
CXX=$(which g++)
if [[ "$target_platform" == "linux-64" ]]; then
CMAKE_ARGS="${CMAKE_ARGS} -DLLVM_USE_INTEL_JITEVENTS=ON"
fi
if [[ "$CC_FOR_BUILD" != "" && "$CC_FOR_BUILD" != "$CC" ]]; then
CMAKE_ARGS="${CMAKE_ARGS} -DCROSS_TOOLCHAIN_FLAGS_NATIVE=-DCMAKE_C_COMPILER=$CC_FOR_BUILD;-DCMAKE_CXX_COMPILER=$CXX_FOR_BUILD;-DCMAKE_C_FLAGS=-O2;-DCMAKE_CXX_FLAGS=-O2"
CMAKE_ARGS="${CMAKE_ARGS} -DLLVM_HOST_TRIPLE=$(echo $HOST | sed s/conda/unknown/g)"
fi
# To build omniscidb, one needs to build LLVM, clang, clang-tools-extra and compiler-rt
cmake ../llvm/ \
-DCMAKE_INSTALL_PREFIX="${PREFIX}" \
-DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;compiler-rt" \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_ENABLE_RTTI=ON \
-DLLVM_INCLUDE_TESTS=ON \
-DLLVM_INCLUDE_GO_TESTS=OFF \
-DLLVM_INCLUDE_UTILS=ON \
-DLLVM_INSTALL_UTILS=ON \
-DLLVM_UTILS_INSTALL_DIR=libexec/llvm \
-DLLVM_INCLUDE_DOCS=OFF \
-DLLVM_INCLUDE_EXAMPLES=OFF \
-DLLVM_ENABLE_TERMINFO=OFF \
-DLLVM_ENABLE_LIBXML2=OFF \
-DLLVM_ENABLE_ZLIB=ON \
-DHAVE_LIBEDIT=OFF \
-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly \
-DLLVM_BUILD_LLVM_DYLIB=yes \
-DLLVM_LINK_LLVM_DYLIB=yes \
${CMAKE_ARGS} ..
make -j${CPU_COUNT}
- After the build, run
make install
to install llvm in the OmniSciDB conda environment. - Compile OmniSciDB.