From 9e092e0f159ceee8b7ecd5e8e7d03de69a6b41c1 Mon Sep 17 00:00:00 2001 From: termux-pacman-bot Date: Mon, 8 Dec 2025 08:45:39 +0000 Subject: [PATCH] bump(main/libllvm): 21.1.7 Co-authored-by: Finagolfin --- packages/libllvm/build.sh | 113 ++++++++++-------- packages/libllvm/libcompiler-rt.subpackage.sh | 4 +- packages/libllvm/llvmgold.subpackage.sh | 5 - 3 files changed, 62 insertions(+), 60 deletions(-) delete mode 100644 packages/libllvm/llvmgold.subpackage.sh diff --git a/packages/libllvm/build.sh b/packages/libllvm/build.sh index f16c83076c..82ee1ef78a 100644 --- a/packages/libllvm/build.sh +++ b/packages/libllvm/build.sh @@ -4,11 +4,10 @@ TERMUX_PKG_LICENSE="Apache-2.0, NCSA" TERMUX_PKG_LICENSE_FILE="llvm/LICENSE.TXT" TERMUX_PKG_MAINTAINER="@finagolfin" # Keep flang version and revision in sync when updating (enforced by check in termux_step_pre_configure). -LLVM_MAJOR_VERSION=21 -TERMUX_PKG_VERSION=${LLVM_MAJOR_VERSION}.1.6 -TERMUX_PKG_SHA256=ae67086eb04bed7ca11ab880349b5f1ab6f50e1b88cda376eaf8a845b935762b +TERMUX_PKG_VERSION=21.1.7 +TERMUX_PKG_SHA256=e5b65fd79c95c343bb584127114cb2d252306c1ada1e057899b6aacdd445899e TERMUX_PKG_AUTO_UPDATE=false -TERMUX_PKG_SRCURL=https://github.com/llvm/llvm-project/releases/download/llvmorg-$TERMUX_PKG_VERSION/llvm-project-${TERMUX_PKG_VERSION}.src.tar.xz +TERMUX_PKG_SRCURL=https://github.com/llvm/llvm-project/releases/download/llvmorg-${TERMUX_PKG_VERSION}/llvm-project-${TERMUX_PKG_VERSION}.src.tar.xz TERMUX_PKG_HOSTBUILD=true TERMUX_PKG_RM_AFTER_INSTALL=" bin/ld64.lld.darwin* @@ -17,27 +16,18 @@ lib/libiomp5.a share/man/man1/lit.1 " TERMUX_PKG_DEPENDS="libc++, libffi, libxml2, ncurses, zlib, zstd" -TERMUX_PKG_BUILD_DEPENDS="binutils-libs" # Replace gcc since gcc is deprecated by google on android and is not maintained upstream. # Conflict with clang versions earlier than 3.9.1-3 since they bundled llvm. TERMUX_PKG_CONFLICTS="gcc, clang (<< 3.9.1-3)" TERMUX_PKG_BREAKS="libclang, libclang-dev, libllvm-dev" TERMUX_PKG_REPLACES="gcc, libclang, libclang-dev, libllvm-dev" TERMUX_PKG_GROUPS="base-devel" -LLVM_PROJECTS="clang;clang-tools-extra;compiler-rt;lld;lldb;mlir;openmp;polly" -if [ "$TERMUX__PREFIX" = "$TERMUX__ROOTFS" ]; then - DEFAULT_SYSROOT=".." -else - DEFAULT_SYSROOT="../.." -fi - -# See http://llvm.org/docs/CMake.html: +# See https://llvm.org/docs/CMake.html: TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" -DANDROID_PLATFORM_LEVEL=$TERMUX_PKG_API_LEVEL --DPYTHON_EXECUTABLE=$(command -v python${TERMUX_PYTHON_VERSION}) +-DPYTHON_EXECUTABLE=$(command -v "python${TERMUX_PYTHON_VERSION}") -DLLVM_ENABLE_PIC=ON --DLLVM_ENABLE_PROJECTS=$LLVM_PROJECTS -DLLVM_ENABLE_LIBEDIT=OFF -DLLVM_INCLUDE_TESTS=OFF -DCLANG_DEFAULT_CXX_STDLIB=libc++ @@ -45,7 +35,6 @@ TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" -DCLANG_INCLUDE_TESTS=OFF -DCLANG_TOOL_C_INDEX_TEST_BUILD=OFF -DCOMPILER_RT_USE_BUILTINS_LIBRARY=ON --DDEFAULT_SYSROOT=$DEFAULT_SYSROOT -DLLVM_LINK_LLVM_DYLIB=ON -DLLDB_ENABLE_PYTHON=ON -DLLDB_PYTHON_RELATIVE_PATH=lib/python${TERMUX_PYTHON_VERSION}/site-packages @@ -64,11 +53,10 @@ TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" -DLLVM_ENABLE_FFI=ON -DLLVM_ENABLE_RTTI=ON -DLLVM_INSTALL_UTILS=ON --DLLVM_BINUTILS_INCDIR=$TERMUX_PREFIX/include -DMLIR_INSTALL_AGGREGATE_OBJECTS=OFF " -if [ x$TERMUX_ARCH_BITS = x32 ]; then +if (( TERMUX_ARCH_BITS == 32 )); then # Do not set _FILE_OFFSET_BITS=64 TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" -DLLVM_FORCE_SMALLFILE_FOR_ANDROID=on" fi @@ -79,65 +67,83 @@ TERMUX_PKG_HAS_DEBUG=false # cp: cannot stat '../src/projects/openmp/runtime/exports/common.min.50.ompt.optional/include/omp.h': No such file or directory # common.min.50.ompt.optional should be common.deb.50.ompt.optional when doing debug build +# shellcheck disable=SC2030,2031 +termux_step_post_get_source() { + # Version guard to keep flang in sync + local flang_version flang_revision + flang_version="$(. "$TERMUX_SCRIPTDIR/packages/flang/build.sh"; echo "${TERMUX_PKG_VERSION}")" + flang_revision="$(TERMUX_PKG_REVISION=0; . "$TERMUX_SCRIPTDIR/packages/flang/build.sh"; echo "${TERMUX_PKG_REVISION}")" + if [[ "${flang_version}-${flang_revision}" != "${TERMUX_PKG_VERSION}-${TERMUX_PKG_REVISION:-0}" ]]; then + termux_error_exit "Version mismatch between libllvm and flang. libllvm=$TERMUX_PKG_VERSION-$TERMUX_PKG_REVISION, flang=$flang_version-$flang_revision" + fi +} + +# shellcheck disable=SC2031 termux_step_host_build() { termux_setup_cmake termux_setup_ninja cmake -G Ninja -DCMAKE_BUILD_TYPE=Release \ - -DLLVM_ENABLE_PROJECTS='clang;clang-tools-extra;lldb;mlir' $TERMUX_PKG_SRCDIR/llvm - ninja -j $TERMUX_PKG_MAKE_PROCESSES clang-tblgen clang-tidy-confusable-chars-gen \ + -DLLVM_ENABLE_PROJECTS='clang;clang-tools-extra;lldb;mlir' "$TERMUX_PKG_SRCDIR/llvm" + ninja -j "$TERMUX_PKG_MAKE_PROCESSES" clang-tblgen clang-tidy-confusable-chars-gen \ lldb-tblgen llvm-tblgen mlir-tblgen mlir-linalg-ods-yaml-gen } +# shellcheck disable=SC2031 termux_step_pre_configure() { - # Version guard to keep flang in sync - local flang_version=$(. $TERMUX_SCRIPTDIR/packages/flang/build.sh; echo ${TERMUX_PKG_VERSION}) - local flang_revision=$(TERMUX_PKG_REVISION=0; . $TERMUX_SCRIPTDIR/packages/flang/build.sh; echo ${TERMUX_PKG_REVISION}) - if [ "${flang_version}" != "${TERMUX_PKG_VERSION}" ] || [ "${flang_revision}" != "${TERMUX_PKG_REVISION}" ]; then - termux_error_exit "Version mismatch between libllvm and flang. libllvm=$TERMUX_PKG_VERSION:$TERMUX_PKG_REVISION, flang=$flang_version:$flang_revision" - fi - # Add unknown vendor, otherwise it screws with the default LLVM triple # detection. - export LLVM_DEFAULT_TARGET_TRIPLE=${CCTERMUX_HOST_PLATFORM/-/-unknown-} - export LLVM_TARGET_ARCH - if [ $TERMUX_ARCH = "arm" ]; then - LLVM_TARGET_ARCH=ARM - elif [ $TERMUX_ARCH = "aarch64" ]; then - LLVM_TARGET_ARCH=AArch64 - elif [ $TERMUX_ARCH = "i686" ] || [ $TERMUX_ARCH = "x86_64" ]; then - LLVM_TARGET_ARCH=X86 + local llvm_default_target_triple="${CCTERMUX_HOST_PLATFORM/-/-unknown-}" + local llvm_target_arch + case "$TERMUX_ARCH" in + "aarch64") llvm_target_arch="AArch64";; + "arm") llvm_target_arch="ARM";; + "i686"|"x86_64") llvm_target_arch="X86";; + *) termux_error_exit "Invalid arch: $TERMUX_ARCH";; + esac + + local default_sysroot + if [[ "$TERMUX__PREFIX" == "$TERMUX__ROOTFS" ]]; then + default_sysroot=".." else - termux_error_exit "Invalid arch: $TERMUX_ARCH" + default_sysroot="../.." fi + TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" -DDEFAULT_SYSROOT=$default_sysroot" + + local llvm_projects="clang;clang-tools-extra;compiler-rt;lld;lldb;mlir;openmp;polly" + TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" -DLLVM_ENABLE_PROJECTS=$llvm_projects" + # see CMakeLists.txt and tools/clang/CMakeLists.txt - TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" -DLLVM_TARGET_ARCH=$LLVM_TARGET_ARCH" - TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" -DLLVM_HOST_TRIPLE=$LLVM_DEFAULT_TARGET_TRIPLE" - export TERMUX_SRCDIR_SAVE=$TERMUX_PKG_SRCDIR - TERMUX_PKG_SRCDIR=$TERMUX_PKG_SRCDIR/llvm + TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" -DLLVM_TARGET_ARCH=$llvm_target_arch" + TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" -DLLVM_HOST_TRIPLE=$llvm_default_target_triple" + export TERMUX_SRCDIR_SAVE="$TERMUX_PKG_SRCDIR" + TERMUX_PKG_SRCDIR="$TERMUX_PKG_SRCDIR/llvm" } termux_step_post_configure() { - TERMUX_PKG_SRCDIR=$TERMUX_SRCDIR_SAVE + TERMUX_PKG_SRCDIR="$TERMUX_SRCDIR_SAVE" + unset TERMUX_SRCDIR_SAVE } +# shellcheck disable=SC2031 termux_step_post_make_install() { - if [ "$TERMUX_CMAKE_BUILD" = Ninja ]; then - ninja -j $TERMUX_PKG_MAKE_PROCESSES docs-{llvm,clang}-man + if [[ "$TERMUX_CMAKE_BUILD" == "Ninja" ]]; then + ninja -j "$TERMUX_PKG_MAKE_PROCESSES" docs-{llvm,clang}-man else - make -j $TERMUX_PKG_MAKE_PROCESSES docs-{llvm,clang}-man + make -j "$TERMUX_PKG_MAKE_PROCESSES" docs-{llvm,clang}-man fi - cp docs/man/* $TERMUX_PREFIX/share/man/man1 - cp tools/clang/docs/man/{clang,diagtool}.1 $TERMUX_PREFIX/share/man/man1 - cd $TERMUX_PREFIX/bin + cp docs/man/* "$TERMUX_PREFIX/share/man/man1" + cp tools/clang/docs/man/{clang,diagtool}.1 "$TERMUX_PREFIX/share/man/man1" + cd "$TERMUX_PREFIX/bin" || termux_error_exit "failed to change into 'bin' directory" + for tool in clang clang++ cc c++ cpp gcc g++; do - ln -f -s clang-${LLVM_MAJOR_VERSION} $tool + ln -f -s "clang-${TERMUX_PKG_VERSION%%.*}" "$tool" done - ln -f -s clang++ clang++-${LLVM_MAJOR_VERSION} - ln -f -s ${LLVM_MAJOR_VERSION} $TERMUX_PREFIX/lib/clang/latest + ln -f -s clang++ "clang++-${TERMUX_PKG_VERSION%%.*}" + ln -f -s "${TERMUX_PKG_VERSION%%.*}" "$TERMUX_PREFIX/lib/clang/latest" # Instead of symlinks, for executables named after target triplets, create the same type of # wrapper that the cross-compiling NDK uses to choose the correct target, including the API level @@ -152,17 +158,18 @@ termux_step_post_make_install() { cat <<- EOF > "$wrapper" #!$TERMUX_PREFIX/bin/bash if [ "\$1" != "-cc1" ]; then - \`dirname \$0\`/$tool --target=$target "\$@" + "\$(dirname \$0)/$tool" --target="$target" "\$@" else # Target is already an argument. - \`dirname \$0\`/$tool "\$@" + "\$(dirname \$0)/$tool" "\$@" fi EOF chmod u+x "$wrapper" done } +# shellcheck disable=SC2031 termux_step_pre_massage() { [[ "$TERMUX_PACKAGE_FORMAT" != "pacman" ]] && return - sed -i "s|@LLVM_MAJOR_VERSION@|${LLVM_MAJOR_VERSION}|g" ./share/libalpm/scripts/update-libcompiler-rt + sed -i "s|@LLVM_MAJOR_VERSION@|${TERMUX_PKG_VERSION%%.*}|g" ./share/libalpm/scripts/update-libcompiler-rt } diff --git a/packages/libllvm/libcompiler-rt.subpackage.sh b/packages/libllvm/libcompiler-rt.subpackage.sh index 8347e43f67..2c3f4cc0e2 100644 --- a/packages/libllvm/libcompiler-rt.subpackage.sh +++ b/packages/libllvm/libcompiler-rt.subpackage.sh @@ -20,8 +20,8 @@ TERMUX_SUBPKG_DEPENDS=libc++ TERMUX_SUBPKG_CONFLICTS="libllvm (<< 21.1.3), ndk-multilib (<< 23b-6)" termux_step_create_subpkg_debscripts() { - local RT_OPT_DIR=$TERMUX_PREFIX/opt/ndk-multilib/cross-compiler-rt - local RT_PATH=$TERMUX_PREFIX/lib/clang/$LLVM_MAJOR_VERSION/lib/linux + local RT_OPT_DIR="$TERMUX_PREFIX/opt/ndk-multilib/cross-compiler-rt" + local RT_PATH="$TERMUX_PREFIX/lib/clang/${TERMUX_PKG_VERSION%%.*}/lib/linux" cat <<- EOF > ./triggers interest-noawait $RT_OPT_DIR diff --git a/packages/libllvm/llvmgold.subpackage.sh b/packages/libllvm/llvmgold.subpackage.sh deleted file mode 100644 index 7e0b02dbe8..0000000000 --- a/packages/libllvm/llvmgold.subpackage.sh +++ /dev/null @@ -1,5 +0,0 @@ -TERMUX_SUBPKG_INCLUDE=" -lib/LLVMgold.so -" -TERMUX_SUBPKG_DESCRIPTION="LLVM gold plugin" -TERMUX_SUBPKG_DEPENDS="binutils-gold"