diff --git a/recipes/dev/clang/native.cmake b/recipes/dev/clang/native.cmake deleted file mode 100644 index 4b0abbfa3..000000000 --- a/recipes/dev/clang/native.cmake +++ /dev/null @@ -1,2 +0,0 @@ -set(CMAKE_C_COMPILER cc) -set(CMAKE_CXX_COMPILER c++) diff --git a/recipes/dev/clang/recipe.toml b/recipes/dev/clang/recipe.toml deleted file mode 100644 index ed315c422..000000000 --- a/recipes/dev/clang/recipe.toml +++ /dev/null @@ -1,81 +0,0 @@ -[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/clang21/recipe.toml b/recipes/dev/clang21/recipe.toml new file mode 100644 index 000000000..9977abfa3 --- /dev/null +++ b/recipes/dev/clang21/recipe.toml @@ -0,0 +1,109 @@ +[source] +same_as = "../llvm21" + +[build] +template = "custom" +dependencies = [ + "llvm21", +] +dev-dependencies = [ + "host:clang21", # for clang-tblgen + "host:llvm21", + "host:llvm21.dev", + "host:llvm21.runtime", + "host:xz", + "host:libarchive", # workaround for cmake error +] +script = """ +DYNAMIC_INIT +ARCH="$(echo "${TARGET}" | cut -d - -f1)" + +generate_cookbook_cmake_file $COOKBOOK_HOST_TARGET "" "$COOKBOOK_TOOLCHAIN" native.cmake + +COOKBOOK_CMAKE_FLAGS+=( + -DLLVM_ROOT="${COOKBOOK_SYSROOT}" + -DCLANG_LINK_CLANG_DYLIB=ON + -DLLVM_TABLEGEN_EXE=${COOKBOOK_TOOLCHAIN}/bin/llvm-tblgen + -DLIBCLANG_BUILD_STATIC=1 + -DLLVM_BUILD_UTILS=On + +# the shared options from llvm + -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_TARGETS_TO_BUILD="X86" + -DLLVM_TOOLS_INSTALL_DIR=bin + -DLLVM_UTILS_INSTALL_DIR=bin + -DUNIX=1 +) + +COOKBOOK_SOURCE="$COOKBOOK_SOURCE/clang" + +if [ "$TARGET" = "$COOKBOOK_HOST_TARGET" ]; then + + "${COOKBOOK_CMAKE}" "${COOKBOOK_SOURCE}" \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_INCLUDEDIR=include \ + -DCMAKE_INSTALL_LIBDIR=lib \ + -DCMAKE_INSTALL_OLDINCLUDEDIR=/include \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_INSTALL_SBINDIR=bin \ + -DCMAKE_TOOLCHAIN_FILE=native.cmake \ + -GNinja \ + -Wno-dev \ + "${COOKBOOK_CMAKE_FLAGS[@]}" \ + "$@" + + # All distros use clever tricks to this problem. I have no idea how I came up with this + export PATH="$PATH:$COOKBOOK_STAGE/usr/bin" + DESTDIR="${COOKBOOK_STAGE}" "${COOKBOOK_NINJA}" install-clang-tblgen + "${COOKBOOK_NINJA}" -j"${COOKBOOK_MAKE_JOBS}" + DESTDIR="${COOKBOOK_STAGE}" "${COOKBOOK_NINJA}" install -j"${COOKBOOK_MAKE_JOBS}" + +else + + COOKBOOK_CMAKE_FLAGS+=( + -DCROSS_TOOLCHAIN_FLAGS_NATIVE="-DCMAKE_TOOLCHAIN_FILE=$(realpath native.cmake)" + -DCLANG_TABLEGEN_EXE=${COOKBOOK_TOOLCHAIN}/bin/clang-tblgen + ) + cookbook_cmake + +fi + +""" + +# 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 21261c821..f9dfcebff 100644 --- a/recipes/dev/llvm21/recipe.toml +++ b/recipes/dev/llvm21/recipe.toml @@ -11,24 +11,28 @@ dependencies = [ "libxml2", ] dev-dependencies = [ - "libstdcxx", "host:xz", "host:libarchive", # workaround for cmake error ] script = """ DYNAMIC_INIT +ARCH="$(echo "${TARGET}" | cut -d - -f1)" + +# This just build the LLVM library and tools just enough for Rust, to build the rest of LLVM see +# https://github.com/llvm/llvm-zorg/blob/main/zorg/buildbot/builders/annotated/standalone-build.sh COOKBOOK_CMAKE_FLAGS+=( - -DLLVM_BUILD_UTILS=On + -DLLVM_BUILD_LLVM_DYLIB=On + -DLLVM_LINK_LLVM_DYLIB=On + -DLLVM_INCLUDE_UTILS=On + -DLLVM_INSTALL_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 + -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 - -DCROSS_TOOLCHAIN_FLAGS_NATIVE="-DCMAKE_TOOLCHAIN_FILE=$(realpath "${COOKBOOK_RECIPE}/native.cmake")" -DLLVM_BUILD_EXAMPLES=Off -DLLVM_BUILD_TESTS=Off -DLLVM_DEFAULT_TARGET_TRIPLE="${TARGET}" @@ -38,7 +42,7 @@ COOKBOOK_CMAKE_FLAGS+=( -DLLVM_INCLUDE_EXAMPLES=Off -DLLVM_INCLUDE_TESTS=Off -DLLVM_OPTIMIZED_TABLEGEN=On - -DLLVM_TARGET_ARCH="$(echo "${TARGET}" | cut -d - -f1)" + -DLLVM_TARGET_ARCH=$ARCH -DLLVM_TARGETS_TO_BUILD="X86" -DLLVM_TOOLS_INSTALL_DIR=bin -DLLVM_UTILS_INSTALL_DIR=bin diff --git a/recipes/wip/dev/lang/zig/recipe.toml b/recipes/wip/dev/lang/zig/recipe.toml index 4b74a3044..879e8505d 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", - "clang", - "clang.dev", - "clang.lld-dev", - "clang.lld", + "clang21", + "clang21.dev", + "clang21.lld-dev", + "clang21.lld", "host:libarchive", "host:zig", ] diff --git a/recipes/wip/web/firefox-esr/recipe.toml b/recipes/wip/web/firefox-esr/recipe.toml index 336228f3c..31dc6f26d 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 - "clang" + "clang21" # "sqlite3", # "nss-nspr", # "startup-notification", @@ -41,7 +41,7 @@ dev-dependencies = [ "host:llvm21", "host:llvm21.dev", "host:llvm21.runtime", - "host:clang", + "host:clang21", ] script = """ DYNAMIC_INIT diff --git a/src/cook/script.rs b/src/cook/script.rs index 1b42341c5..e9e7209f0 100644 --- a/src/cook/script.rs +++ b/src/cook/script.rs @@ -198,33 +198,47 @@ COOKBOOK_CMAKE_FLAGS=( -DENABLE_SHARED=False -DENABLE_STATIC=True ) -function cookbook_cmake { -if [ "$(echo "${TARGET}" | cut -d - -f3)" = "linux" ]; then - SYSTEM_NAME="Linux" -else - SYSTEM_NAME="UnixPaths" -fi - cat > cross_file.cmake < $file <> cross_file.cmake - echo "set(CMAKE_CXX_COMPILER_LAUNCHER ${CC_WRAPPER})" >> cross_file.cmake + echo "set(CMAKE_C_COMPILER_LAUNCHER ${CC_WRAPPER})" >> $file + echo "set(CMAKE_CXX_COMPILER_LAUNCHER ${CC_WRAPPER})" >> $file fi +} + +function cookbook_cmake { + + generate_cookbook_cmake_file $TARGET $GNU_TARGET- "$COOKBOOK_SYSROOT" cross_file.cmake "${COOKBOOK_CMAKE}" "${COOKBOOK_SOURCE}" \ -DCMAKE_BUILD_TYPE=Release \