serenity/Ports/llvm/package.sh
Ali Mohammad Pur 167b54d03d Ports: Make the LLVM port install its ocaml bindings somewhere else
By default the bindings go to /usr/local on the host, which is a very
big no-no; this path is not affected by CMAKE_INSTALL_PREFIX, so this
commit sets the LLVM_OCAML_INSTALL_PATH variable instead.
It should be noted that disabling the ocaml bindings doesn't make all
the users of this variable go away, so this commit doesn't do so.

This also sorts the -DFOO options passed to cmake, because...sorting.
2023-12-03 14:11:23 +01:00

67 lines
2.1 KiB
Bash
Executable file

#!/usr/bin/env -S bash ../.port_include.sh
port='llvm'
useconfigure='true'
version='16.0.6'
workdir="llvm-project-${version}.src"
configopts=(
"-DCMAKE_TOOLCHAIN_FILE=${SERENITY_BUILD_DIR}/CMakeToolchain.txt"
)
files=(
"https://github.com/llvm/llvm-project/releases/download/llvmorg-${version}/llvm-project-${version}.src.tar.xz#ce5e71081d17ce9e86d7cbcfa28c4b04b9300f8fb7e78422b1feb6bc52c3028e"
)
depends=(
"ncurses"
"zlib"
"zstd"
)
configure() {
# The cross compilers will be picked up from the CMake toolchain file.
# CC/CXX must point to the host compiler to let it build host tools (tblgen).
host_env
if [ "$SERENITY_TOOLCHAIN" = "Clang" ]; then
stdlib=""
unwindlib=""
exclude_atomic_builtin="OFF"
else
stdlib="libstdc++"
unwindlib="libgcc"
# Atomic builtins can't be cross-compiled with GCC. Use the libatomic port
# if the program you're building has references to symbols like __atomic_load.
exclude_atomic_builtin="ON"
fi
mkdir -p llvm-build
cmake ${workdir}/llvm \
-G Ninja \
-B llvm-build "${configopts[@]}" \
-DCLANG_DEFAULT_CXX_STDLIB=$stdlib \
-DCLANG_DEFAULT_UNWINDLIB=$unwindlib \
-DCMAKE_BUILD_TYPE=MinSizeRel \
-DCMAKE_FIND_ROOT_PATH="$SERENITY_BUILD_DIR"/Root \
-DCOMPILER_RT_BUILD_CRT=ON \
-DCOMPILER_RT_BUILD_ORC=OFF \
-DCOMPILER_RT_EXCLUDE_ATOMIC_BUILTIN=$exclude_atomic_builtin \
-DCOMPILER_RT_OS_DIR=serenity \
-DCROSS_TOOLCHAIN_FLAGS_NATIVE="-DCMAKE_C_COMPILER=$CC;-DCMAKE_CXX_COMPILER=$CXX" \
-DHAVE_LIBRT=OFF \
-DLLVM_DEFAULT_TARGET_TRIPLE=$SERENITY_ARCH-pc-serenity \
-DLLVM_ENABLE_PROJECTS="clang;lld;compiler-rt" \
-DLLVM_HAVE_LIBXAR=OFF \
-DLLVM_INCLUDE_BENCHMARKS=OFF \
-DLLVM_INCLUDE_TESTS=OFF \
-DLLVM_INSTALL_TOOLCHAIN_ONLY=ON \
-DLLVM_OCAML_INSTALL_PATH="${SERENITY_INSTALL_ROOT}/usr/local/ocaml" \
-DLLVM_PTHREAD_LIB=pthread \
-DLLVM_TARGETS_TO_BUILD=X86
}
build() {
ninja -j${MAKEJOBS} -C llvm-build
}
install() {
ninja -C llvm-build install
}