From 776eed07f3adfed460800a4eeecbd4080a6db310 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sat, 31 Jan 2026 10:46:41 +0700 Subject: [PATCH] Split clang out of LLVM --- recipes/dev/clang/native.cmake | 2 + recipes/dev/clang/recipe.toml | 81 +++++++++++++++++++++++++ recipes/dev/llvm21/recipe.toml | 57 +++-------------- recipes/wip/dev/lang/zig/recipe.toml | 8 +-- recipes/wip/web/firefox-esr/recipe.toml | 4 +- 5 files changed, 96 insertions(+), 56 deletions(-) create mode 100644 recipes/dev/clang/native.cmake create mode 100644 recipes/dev/clang/recipe.toml diff --git a/recipes/dev/clang/native.cmake b/recipes/dev/clang/native.cmake new file mode 100644 index 00000000..4b0abbfa --- /dev/null +++ b/recipes/dev/clang/native.cmake @@ -0,0 +1,2 @@ +set(CMAKE_C_COMPILER cc) +set(CMAKE_CXX_COMPILER c++) diff --git a/recipes/dev/clang/recipe.toml b/recipes/dev/clang/recipe.toml new file mode 100644 index 00000000..ed315c42 --- /dev/null +++ b/recipes/dev/clang/recipe.toml @@ -0,0 +1,81 @@ +[source] +same_as = "../llvm21" + +[build] +template = "custom" +dependencies = [ +] +dev-dependencies = [ + "host:xz", + "host:libarchive", # workaround for cmake error +] +script = """ +DYNAMIC_INIT + +COOKBOOK_CMAKE_FLAGS+=( + -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;lld" + -DLIBCLANG_BUILD_STATIC=On + -DLLVM_INCLUDE_BENCHMARKS=Off + -DLLVM_INCLUDE_DOCS=Off + +# the rest of options should be exact with llvm21 + -DCROSS_TOOLCHAIN_FLAGS_NATIVE="-DCMAKE_TOOLCHAIN_FILE=$(realpath "${COOKBOOK_RECIPE}/native.cmake")" + -DCMAKE_CXX_FLAGS="--std=gnu++11" + -DBUILD_SHARED_LIBS=False + -DLLVM_LINK_LLVM_DYLIB=On + -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="$(echo "${TARGET}" | cut -d - -f1)" + -DLLVM_TARGETS_TO_BUILD="X86" + -DLLVM_TOOL_LLVM_COV_BUILD=Off + -DLLVM_TOOL_LLVM_PROFDATA_BUILD=Off + -DLLVM_TOOLS_INSTALL_DIR=bin + -DLLVM_UTILS_INSTALL_DIR=bin + -DUNIX=1 +) + +# Native tablegen build fails with too many jobs, limit to 16 +COOKBOOK_MAKE_JOBS="$(( ${COOKBOOK_MAKE_JOBS} > 16 ? 16 : ${COOKBOOK_MAKE_JOBS} ))" +COOKBOOK_SOURCE="$COOKBOOK_SOURCE/llvm" +cookbook_cmake + +# Redundant LLVM packages +rm -rf ${COOKBOOK_STAGE}/usr/include/llvm* \ + ${COOKBOOK_STAGE}/usr/lib/libLLVM*.a \ + ${COOKBOOK_STAGE}/usr/lib/cmake/llvm \ + ${COOKBOOK_STAGE}/usr/bin/llvm-* \ +""" + +# lld runtime (no library) +[[optional-packages]] +name = "lld" +dependencies = [ ".runtime" ] +files = [ + "usr/bin/*.lld", + "usr/bin/*-ld", + "usr/bin/lld*", +] + +[[optional-packages]] +name = "dev" +files = [ + "usr/include/clang*/**", + "usr/lib/libclang*.a", + "usr/lib/cmake/clang/**", +] + +[[optional-packages]] +name = "lld-dev" +dependencies = [ ".lld" ] +files = [ + "usr/include/lld*/**", + "usr/lib/liblld*.a", + "usr/lib/cmake/lld/**", +] diff --git a/recipes/dev/llvm21/recipe.toml b/recipes/dev/llvm21/recipe.toml index ddd1b793..21261c82 100644 --- a/recipes/dev/llvm21/recipe.toml +++ b/recipes/dev/llvm21/recipe.toml @@ -19,30 +19,30 @@ script = """ DYNAMIC_INIT COOKBOOK_CMAKE_FLAGS+=( + -DLLVM_BUILD_UTILS=On + -DLLVM_TOOL_LLVM_COV_BUILD=On + -DLLVM_TOOL_LLVM_PROFDATA_BUILD=On + -DLLVM_INSTALL_UTILS=On + +# the rest of options that shared to clang -DCMAKE_CXX_FLAGS="--std=gnu++11" -DBUILD_SHARED_LIBS=False -DLLVM_LINK_LLVM_DYLIB=On -DCROSS_TOOLCHAIN_FLAGS_NATIVE="-DCMAKE_TOOLCHAIN_FILE=$(realpath "${COOKBOOK_RECIPE}/native.cmake")" -DLLVM_BUILD_EXAMPLES=Off -DLLVM_BUILD_TESTS=Off - -DLLVM_BUILD_UTILS=On -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_INSTALL_UTILS=On -DLLVM_OPTIMIZED_TABLEGEN=On -DLLVM_TARGET_ARCH="$(echo "${TARGET}" | cut -d - -f1)" - -DLLVM_TARGETS_TO_BUILD="X86;AArch64" - -DLLVM_TOOL_LLVM_COV_BUILD=On - -DLLVM_TOOL_LLVM_PROFDATA_BUILD=On + -DLLVM_TARGETS_TO_BUILD="X86" -DLLVM_TOOLS_INSTALL_DIR=bin -DLLVM_UTILS_INSTALL_DIR=bin - -DLIBCLANG_BUILD_STATIC=On -DUNIX=1 - -DLLVM_ENABLE_PROJECTS="llvm;clang;clang-tools-extra;lld" ) # Native tablegen build fails with too many jobs, limit to 16 @@ -51,31 +51,6 @@ COOKBOOK_SOURCE="$COOKBOOK_SOURCE/llvm" cookbook_cmake """ -# clang library and runtime -[[optional-packages]] -name = "clang" -dependencies = [ ".runtime" ] -files = [ - "usr/bin/clang*", - "usr/libexec/**", - "usr/lib/libclang-cpp.so*", - "usr/lib/libclang.so*", - "usr/lib/clang/**", - "usr/lib/libear/**", - "usr/lib/libscanbuild/**", - "usr/share/clang*/**", -] - -# lld runtime (no library) -[[optional-packages]] -name = "lld" -dependencies = [ ".runtime" ] -files = [ - "usr/bin/*.lld", - "usr/bin/*-ld", - "usr/bin/lld*", -] - # llvm runtime [[optional-packages]] name = "runtime" @@ -83,24 +58,6 @@ files = [ "usr/bin/**", ] -[[optional-packages]] -name = "clang-dev" -dependencies = [ ".clang" ] -files = [ - "usr/include/clang*/**", - "usr/lib/libclang*.a", - "usr/lib/cmake/clang/**", -] - -[[optional-packages]] -name = "lld-dev" -dependencies = [ ".lld" ] -files = [ - "usr/include/lld*/**", - "usr/lib/liblld*.a", - "usr/lib/cmake/lld/**", -] - [[optional-packages]] name = "dev" dependencies = [ ".runtime" ] diff --git a/recipes/wip/dev/lang/zig/recipe.toml b/recipes/wip/dev/lang/zig/recipe.toml index da18502d..4b74a304 100644 --- a/recipes/wip/dev/lang/zig/recipe.toml +++ b/recipes/wip/dev/lang/zig/recipe.toml @@ -13,10 +13,10 @@ dependencies = [ dev-dependencies = [ "llvm21.dev", "llvm21.runtime", - "llvm21.clang", - "llvm21.clang-dev", - "llvm21.lld-dev", - "llvm21.lld", + "clang", + "clang.dev", + "clang.lld-dev", + "clang.lld", "host:libarchive", "host:zig", ] diff --git a/recipes/wip/web/firefox-esr/recipe.toml b/recipes/wip/web/firefox-esr/recipe.toml index 84e98394..336228f3 100644 --- a/recipes/wip/web/firefox-esr/recipe.toml +++ b/recipes/wip/web/firefox-esr/recipe.toml @@ -27,7 +27,7 @@ dependencies = [ "libxrandr", "libsm", # TODO: Should separate clang library and runtime - "llvm21.clang" + "clang" # "sqlite3", # "nss-nspr", # "startup-notification", @@ -41,7 +41,7 @@ dev-dependencies = [ "host:llvm21", "host:llvm21.dev", "host:llvm21.runtime", - "host:llvm21.clang", + "host:clang", ] script = """ DYNAMIC_INIT