[source] same_as = "../../../../recipes/dev/llvm21" [build] template = "custom" dependencies = [ "llvm21", "llvm21.runtime", "llvm21.dev", "clang21", "lld21", "zstd", ] script = """ DYNAMIC_INIT ARCH="$(echo "${TARGET}" | cut -d - -f1)" generate_cookbook_cmake_file "$COOKBOOK_HOST_TARGET" "" "$COOKBOOK_TOOLCHAIN" native.cmake case "${ARCH}" in x86 | x86_64) LLVM_TARGETS_TO_BUILD="X86";; aarch64) LLVM_TARGETS_TO_BUILD="AArch64";; riscv64gc) LLVM_TARGETS_TO_BUILD="RISCV";; esac COOKBOOK_CMAKE_FLAGS+=( -DLLVM_ENABLE_PROJECTS="clang;lld" -DLLVM_BUILD_LLVM_DYLIB=On -DLLVM_LINK_LLVM_DYLIB=On -DLLVM_INCLUDE_UTILS=On -DLLVM_INSTALL_UTILS=On -DLLVM_TARGETS_TO_BUILD="$LLVM_TARGETS_TO_BUILD" -DLLVM_ENABLE_ZLIB=Off -DLLVM_USE_STATIC_ZSTD=On -DLLVM_ENABLE_LIBXML2=Off -DCLANG_LINK_CLANG_DYLIB=ON -DLIBCLANG_BUILD_STATIC=1 -DCROSS_TOOLCHAIN_FLAGS_NATIVE="-DCMAKE_TOOLCHAIN_FILE=$(realpath native.cmake)" -DCMAKE_CXX_FLAGS="--std=gnu++11" -DBUILD_SHARED_LIBS=False -DLLVM_BUILD_EXAMPLES=Off -DLLVM_BUILD_TESTS=Off -DLLVM_DEFAULT_TARGET_TRIPLE="${TARGET}" -DLLVM_ENABLE_LTO=Off -DLLVM_ENABLE_RTTI=On -DLLVM_ENABLE_THREADS=On -DLLVM_INCLUDE_EXAMPLES=Off -DLLVM_INCLUDE_TESTS=Off -DLLVM_OPTIMIZED_TABLEGEN=On -DLLVM_TARGET_ARCH=$ARCH -DLLVM_TOOLS_INSTALL_DIR=bin -DLLVM_UTILS_INSTALL_DIR=bin -DUNIX=1 -DLLVM_TABLEGEN_EXE=${COOKBOOK_HOST_SYSROOT}/bin/llvm-tblgen -DCLANG_TABLEGEN_EXE=${COOKBOOK_HOST_SYSROOT}/bin/clang-tblgen ) COOKBOOK_SOURCE="$COOKBOOK_SOURCE/llvm" cookbook_cmake # Create unprefixed symlinks for native use for tool in clang clang++ clang-cpp clang-cl clang-check clang-format clang-tidy \ lld ld.lld ld64.lld wasm-ld \ llvm-ar llvm-ranlib llvm-nm llvm-objdump llvm-objcopy llvm-strip \ llvm-readelf llvm-size llvm-strings llvm-symbolizer llvm-addr2line \ llvm-config llvm-link llvm-profdata llvm-cov \ llvm-as llvm-dis llc opt; do if [ -f "${COOKBOOK_STAGE}/usr/bin/${tool}" ]; then : # already has unprefixed name elif [ -f "${COOKBOOK_STAGE}/usr/bin/${GNU_TARGET}-${tool}" ]; then ln -sf "${GNU_TARGET}-${tool}" "${COOKBOOK_STAGE}/usr/bin/${tool}" fi done # Provide cc/c++ symlinks if [ -f "${COOKBOOK_STAGE}/usr/bin/clang" ]; then ln -sf clang "${COOKBOOK_STAGE}/usr/bin/cc" ln -sf clang++ "${COOKBOOK_STAGE}/usr/bin/c++" elif [ -f "${COOKBOOK_STAGE}/usr/bin/${GNU_TARGET}-clang" ]; then ln -sf "${GNU_TARGET}-clang" "${COOKBOOK_STAGE}/usr/bin/cc" ln -sf "${GNU_TARGET}-clang++" "${COOKBOOK_STAGE}/usr/bin/c++" fi # Remove libtool archives rm -f "${COOKBOOK_STAGE}"/usr/lib/*.la """ [package] description = "Native LLVM/Clang/LLD 21 toolchain for Red Bear OS" dependencies = ["llvm21.runtime"] [[optional-packages]] name = "dev" dependencies = [".runtime"] files = [ "usr/include/llvm*/**", "usr/include/clang*/**", "usr/include/lld*/**", "usr/lib/libLLVM*.a", "usr/lib/libclang*.a", "usr/lib/liblld*.a", "usr/lib/cmake/llvm/**", "usr/lib/cmake/clang/**", "usr/lib/cmake/lld/**", ] [[optional-packages]] name = "runtime" files = [ "usr/bin/clang*", "usr/bin/lld*", "usr/bin/llvm-*", "usr/bin/llc", "usr/bin/opt", "usr/lib/libLLVM*.so*", "usr/lib/libclang*.so*", ]