# Template file for 'llvm19' pkgname=llvm19 version=19.1.4 revision=1 build_wrksrc=llvm build_style=cmake _llvm_prefix=lib/llvm/19 _llvm_mandir=usr/${_llvm_prefix}/share/man _llvm_bindir=usr/${_llvm_prefix}/bin _llvm_datadir=usr/${_llvm_prefix}/share _llvm_incdir=usr/${_llvm_prefix}/include _llvm_libdir=usr/${_llvm_prefix}/lib _llvm_libexecdir=usr/${_llvm_prefix}/libexec _ext_suffix=".cpython-${py3_ver/./}-linux-${XBPS_TARGET_LIBC/glibc/gnu}.so" configure_args=" -DCMAKE_BUILD_TYPE=Release -Wno-dev -DCMAKE_INSTALL_PREFIX=/usr/${_llvm_prefix} -DENABLE_LINKER_BUILD_ID=YES -DLIBCXXABI_ENABLE_STATIC_UNWINDER=YES -DLIBCXXABI_USE_COMPILER_RT=YES -DLIBCXXABI_USE_LLVM_UNWINDER=YES -DLIBCXX_CXX_ABI=libcxxabi -DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=YES -DLIBCXX_USE_COMPILER_RT=YES -DLIBOMP_ENABLE_SHARED=YES -DLIBOMP_INSTALL_ALIASES=NO -DOPENMP_INSTALL_LIBDIR=lib -DOFFLOAD_INSTALL_LIBDIR=lib -DLLVM_BUILD_DOCS=YES -DLLVM_INCLUDE_DOCS=YES -DLLVM_ENABLE_SPHINX=YES -DLLVM_ENABLE_Z3_SOLVER=YES -DSPHINX_WARNINGS_AS_ERRORS=NO -DLLVM_INSTALL_UTILS=YES -DLLVM_BUILD_LLVM_DYLIB=YES -DLLVM_LINK_LLVM_DYLIB=YES -DCLANG_LINK_CLANG_DYLIB=YES -DCLANG_CONFIG_FILE_SYSTEM_DIR=/etc/clang19 -DLLVM_ENABLE_RTTI=YES -DLLVM_ENABLE_FFI=YES -DLLVM_BINUTILS_INCDIR=/usr/include -DLLDB_PYTHON_RELATIVE_PATH=lib/python${py3_ver}/site-packages -DLLDB_PYTHON_EXE_RELATIVE_PATH=bin/python${py3_ver} -DLLDB_PYTHON_EXT_SUFFIX=$_ext_suffix -DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=NO -DLLVM_SPIRV=/usr/bin/llvm-spirv " hostmakedepends="perl python3 zlib-devel libffi-devel swig python3-Sphinx python3-recommonmark python3-sphinx-automodapi git python3-sphinx-markdown-tables python3-yaml pkg-config python3-mdit-py-plugins python3-MyST-Parser python3-markdown-it patchelf $(vopt_if graphviz graphviz)" makedepends="python3-devel zlib-devel elfutils-devel libffi-devel libedit-devel libxml2-devel binutils-devel z3-devel" short_desc="LLVM Compiler Infrastructure Project - Version 19" maintainer="Daniel Martinez " license="Apache-2.0 AND NCSA AND custom:Apache-2.0-with-llvm-exception" homepage="https://www.llvm.org" distfiles="https://github.com/llvm/llvm-project/archive/refs/tags/llvmorg-${version}.tar.gz" checksum=010e1fd3cabee8799bd2f8a6fbc68f28207494f315cf9da7057a2820f79fd531 conflicts="llvm18>=0 llvm17>=0 llvm15>=0" lib32disabled=yes python_version=3 build_options="clang clang_tools_extra lld mlir libclc polly lldb flang bolt openmp libc libcxx libunwind offload lto graphviz full_debug" build_options_default="clang clang_tools_extra lld libclc polly lldb libcxx libunwind mlir" # fails to build with libquadmth on musl case "$XBPS_TARGET_MACHINE" in x86_64|i686) makedepends+=" libquadmath-devel" ;; esac case "$XBPS_TARGET_MACHINE" in x86_64*|aarch64*|riscv64*) build_options_default+=" bolt flang" if [ -z "$CROSS_BUILD" ]; then build_options_default+=" offload" fi ;; armv*) nopie=yes configure_args+=" -DLLVM_ENABLE_PIE=NO" configure_args+=" -DLLDB_INCLUDE_TESTS=NO" ;; esac if [ -z "$CROSS_BUILD" ]; then hostmakedepends+=" llvm19-bootstrap" # Needs lld on the target machine configure_args+=" -DLLVM_USE_LINKER=lld" fi # build fails because compiler_rt generates armv7 instructions when target is armv6 case "$XBPS_TARGET_MACHINE" in armv6*) # Don't enable openmp on armv6* #/builddir/llvm19-19.1.0/openmp/runtime/src/kmp_platform.h:263:2: #error Unknown or unsupported architecture ;; *) build_options_default+=" openmp " configure_args+=" -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON" ;; esac if [ "$XBPS_TARGET_LIBC" = "musl" ]; then _is_musl="YES" configure_args+=" -DLIBCXX_HAS_MUSL_LIBC=YES -DCOMPILER_RT_BUILD_GWP_ASAN=OFF" else _is_musl="NO" fi if [ "$build_option_lto" ]; then configure_args+=" -DLLVM_ENABLE_LTO=On" fi subpackages=" libllvm19 llvm19-doc llvm19-devel compiler-rt19 $( vopt_if clang 'clang19 clang19-headers clang19-devel libclang19 libclang-cpp19 clang-analyzer19' ) $( vopt_if clang_tools_extra 'clang-tools-extra19' ) $( vopt_if bolt 'llvm-bolt19' ) $( vopt_if lldb 'lldb19 lldb19-devel liblldb19' ) $( vopt_if lld 'lld19 lld19-devel' ) $( vopt_if libclc 'libclc19' ) $( vopt_if mlir 'mlir19 mlir19-devel' ) $( vopt_if flang 'flang19 flang19-devel' ) $( vopt_if openmp 'libomp19 libomp19-devel' ) $( vopt_if libunwind 'llvm-libunwind llvm-libunwind-devel' ) $( vopt_if libcxx 'libcxx libcxxabi libcxxabi-devel libcxx-devel' ) " _enabled_projects="$(vopt_if clang 'clang;')\ $(vopt_if clang_tools_extra 'clang-tools-extra;')\ $(vopt_if bolt 'bolt;')\ $(vopt_if polly 'polly;')\ $(vopt_if lldb 'lldb;')\ $(vopt_if lld 'lld;')\ $(vopt_if libclc 'libclc;')\ $(vopt_if mlir 'mlir;')\ $(vopt_if flang 'flang;')" _enabled_runtimes="compiler-rt\ $(vopt_if openmp ';openmp')\ $(vopt_if offload ';offload')\ $(vopt_if libc ';libc')\ $(vopt_if libunwind ';libunwind')\ $(vopt_if libcxx ';libcxxabi;libcxx')" configure_args+=" -DLLVM_ENABLE_RUNTIMES=${_enabled_runtimes}" configure_args+=" -DLLVM_ENABLE_PROJECTS=${_enabled_projects}" if [ "$CROSS_BUILD" ]; then hostmakedepends+=" llvm19-cross-tools SPIRV-LLVM-Translator19" configure_args+=" -DLLVM_TOOLS_BINAIRY_DIR=/${_llvm_bindir}" configure_args+=" -DLLVM_NATIVE_TOOL_DIR=/${_llvm_bindir}" configure_args+=" -DLLVM_TABLEGEN=/${_llvm_bindir}/llvm-tblgen" configure_args+=" -DCLANG_TABLEGEN=/${_llvm_bindir}/clang-tblgen" configure_args+=" -DMLIR_TABLEGEN=/${_llvm_bindir}/mlir-tblgen" configure_args+=" -DMLIR_PDLL_TABLEGEN=/${_llvm_bindir}/mlir-pdll" configure_args+=" -DMLIR_LINALG_ODS_YAML_GEN=/${_llvm_bindir}/mlir-linalg-ods-yaml-gen" configure_args+=" -DMLIR_CONFIG_SRC_SHARDER_TABLEGEN_EXE=/${_llvm_bindir}/mlir-src-sharder" configure_args+=" -DCLANG_TIDY_CONFUSABLE_CHARS_GEN=/${_llvm_bindir}/clang-tidy-confusable-chars-gen" configure_args+=" -DCLANG_PSEUDO_GEN=/${_llvm_bindir}/clang-pseudo-gen" configure_args+=" -DLLVM_CONFIG_PATH=/${_llvm_bindir}/llvm-config" configure_args+=" -DLLDB_TABLEGEN_EXE=/${_llvm_bindir}/lldb-tblgen" configure_args+=" -DLIBOMP_OMPD_GDB_SUPPORT=NO" if [ "$build_option_flang" ]; then configure_args+=" -DLIBOMP_FORTRAN_MODULES_COMPILER=/${_llvm_bindir}/flang-new" fi fi # For OCaml bindings and lldb lua scripting if [ -z "$CROSS_BUILD" ]; then subpackages="llvm19-cross-tools ${subpackages}" # OCaml cross build is broken hostmakedepends+=" ocaml ocaml-findlib" # lldb cross build fails with lua makedepends+=" lua53-devel " fi case "$XBPS_TARGET_MACHINE" in arm*-musl|i686-musl) # sanitizer code is broken since it duplicates some libc bits configure_args+=" -DCOMPILER_RT_BUILD_SANITIZERS=OFF" configure_args+=" -DCOMPILER_RT_BUILD_XRAY=OFF" configure_args+=" -DCOMPILER_RT_BUILD_MEMPROF=OFF" ;; esac case "$XBPS_TARGET_MACHINE" in i686*) _arch="X86";; x86_64*) _arch="X86";; armv5*) _arch="Armv5te";; armv6*) _arch="Armv6";; armv7*) _arch="Armv7";; aarch64*) _arch="AArch64";; mips*) _arch="Mips";; ppc*) _arch="PowerPC";; riscv64*) _arch="RISCV64";; esac _triplet=${XBPS_CROSS_TRIPLET:-$XBPS_TRIPLET} configure_args+=" -DLLVM_TARGET_ARCH=${_arch}" configure_args+=" -DLLVM_HOST_TRIPLE=${_triplet}" configure_args+=" -DLLVM_DEFAULT_TARGET_TRIPLE=${_triplet}" _vlink_libs() { local _files="$1" local _f for _f in $DESTDIR/$_files; do local _base=$(basename "${_f}") ln -s llvm/19/lib/${_base} ${DESTDIR}/usr/lib vmove ${_llvm_libdir}/${_base} vmove usr/lib/${_base} done } post_patch() { # need libssp_nonshared on some musl platforms (because of nodefaultlibs) case "$XBPS_TARGET_MACHINE" in ppc64*) ;; ppc*-musl|i686-musl|mips*-musl) vsed -i 's,^# Setup flags.$,add_library_flags(ssp_nonshared),' \ ${wrksrc}/libunwind/src/CMakeLists.txt vsed -i 's,^# Setup flags.$,add_library_flags(ssp_nonshared),' \ ${wrksrc}/libcxxabi/src/CMakeLists.txt vsed -i 's,#ssp,,' ${wrksrc}/libcxx/CMakeLists.txt ;; esac } _setup_cross_cflags() { CC="clang" CXX="clang++" CFLAGS+=" -Wno-gnu-include-next -Wno-unused-command-line-argument" CXXFLAGS+=" -Wno-gnu-include-next -Wno-unused-command-line-argument" local gcc_version=$(gcc -dumpversion) CFLAGS+=" --target=${XBPS_CROSS_TRIPLET} --sysroot=${XBPS_CROSS_BASE}" CFLAGS+=" --gcc-toolchain=/usr" CFLAGS+=" -isystem ${XBPS_CROSS_BASE}/usr/include" CXXFLAGS+=" --target=${XBPS_CROSS_TRIPLET} --sysroot=${XBPS_CROSS_BASE}" CXXFLAGS+=" --gcc-toolchain=/usr" CXXFLAGS+=" -isystem ${XBPS_CROSS_BASE}/usr/include/c++/${gcc_version%.*}" CXXFLAGS+=" -isystem ${XBPS_CROSS_BASE}/usr/include/c++/${gcc_version%.*}/${XBPS_CROSS_TRIPLET}" CXXFLAGS+=" -isystem ${XBPS_CROSS_BASE}/usr/include/c++/${gcc_version%.*}/backward" CXXFLAGS+=" -isystem ${XBPS_CROSS_BASE}/usr/include" } _setup_debug() { if [ ! "$build_option_full_debug" ]; then # Vastly reduce size of debugging symbols: CFLAGS=${CFLAGS/ -g/ -gline-tables-only} CXXFLAGS=${CXXFLAGS/ -g/ -gline-tables-only} fi } pre_configure() { CC="clang" CXX="clang++" if [ "$CROSS_BUILD" ]; then _setup_cross_cflags fi _setup_debug } pre_build() { _setup_debug } post_build() { if [ "$CROSS_BUILD" ]; then CC="clang" CXX="clang++" CFLAGS+=" --target=${XBPS_CROSS_TRIPLET} --sysroot=${XBPS_CROSS_BASE} " CFLAGS+=" --gcc-toolchain=/usr" CFLAGS+=" -L/${_llvm_libdir}/${XBPS_CROSS_TRIPLET} " CXXFLAGS+=" --target=${XBPS_CROSS_TRIPLET} --sysroot=${XBPS_CROSS_BASE} " CXXFLAGS+=" --gcc-toolchain=/usr" CXXFLAGS+=" -L/${_llvm_libdir}/${XBPS_CROSS_TRIPLET} " else export CC=${wrksrc}/llvm/build/bin/clang export CXX=${wrksrc}/llvm/build/bin/clang++ fi mkdir -p ${wrksrc}/${build_wrksrc}/builddir_runtimes cmake -G Ninja ${wrksrc}/runtimes -B ${wrksrc}/${build_wrksrc}/builddir_runtimes \ -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_ASM_COMPILER_TARGET=${_triplet} \ -DCMAKE_C_COMPILER=$CC \ -DCMAKE_C_COMPILER_TARGET=${_triplet} \ -DCMAKE_CXX_COMPILER=$CXX \ -DCMAKE_CXX_COMPILER_TARGET=${_triplet} \ -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind" \ -DLIBCXXABI_ENABLE_STATIC_UNWINDER=YES \ -DLIBCXXABI_USE_COMPILER_RT=YES \ -DLIBCXXABI_USE_LLVM_UNWINDER=YES \ -DLIBCXX_CXX_ABI=libcxxabi \ -DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=YES \ -DLIBCXX_USE_COMPILER_RT=YES \ -DLLVM_ENABLE_SPHINX=ON \ -DLLVM_TARGET_ARCH=${_arch} \ -DLLVM_HOST_TRIPLE=${_triplet} \ -DLLVM_DEFAULT_TARGET_TRIPLE=${_triplet} \ -DLIBCXX_HAS_MUSL_LIBC=${_is_musl} \ -DSPHINX_WARNINGS_AS_ERRORS=OFF ninja ${makejobs} -C ${wrksrc}/${build_wrksrc}/builddir_runtimes ninja ${makejobs} -C ${wrksrc}/${build_wrksrc}/builddir_runtimes docs-libcxx-html docs-libunwind-html } post_install() { # Required for multilib. if [ "$XBPS_TARGET_MACHINE" = "x86_64" ]; then for _header in llvm-config; do mv ${DESTDIR}/${_llvm_incdir}/llvm/Config/${_header}{,-64}.h vinstall ${FILESDIR}/llvm-Config-${_header}.h 644 \ ${_llvm_incdir}/llvm/Config ${_header}.h done fi # Remove llvm-config-host in cross builds. if [ "$CROSS_BUILD" ]; then rm -f ${DESTDIR}/${_llvm_bindir}/llvm-config-host fi rm -rf ${DESTDIR}/usr/share/gdb if [ "$build_option_libcxx" ]; then cmake -DCMAKE_INSTALL_PREFIX=${DESTDIR}/usr \ -P ${wrksrc}/${build_wrksrc}/builddir_runtimes/libcxx/docs/cmake_install.cmake LIBCXX_DOCS=${_llvm_datadir}/doc/LLVM/libcxx vmkdir ${LIBCXX_DOCS} vcopy ${wrksrc}/${build_wrksrc}/builddir_runtimes/libcxx/docs/html ${LIBCXX_DOCS} fi if [ "$build_option_libunwind" ]; then cmake -DCMAKE_INSTALL_PREFIX=${DESTDIR}/usr \ -P ${wrksrc}/${build_wrksrc}/builddir_runtimes/libunwind/docs/cmake_install.cmake LIBUNWIND_DOCS=${_llvm_datadir}/doc/LLVM/libunwind vmkdir ${LIBUNWIND_DOCS} vcopy ${wrksrc}/${build_wrksrc}/builddir_runtimes/libunwind/docs/html ${LIBUNWIND_DOCS} fi cmake -DCMAKE_INSTALL_PREFIX=${DESTDIR}/usr \ -P ${wrksrc}/${build_wrksrc}/builddir_runtimes/cmake_install.cmake # Can this be disabled some other way? rm -f ${DESTDIR}/usr/lib64 vmkdir usr/lib/clang ln -s ../llvm/19/lib/clang/19 ${DESTDIR}/usr/lib/clang/19 } _llvm_alts=( bin/FileCheck share/man/man1/FileCheck.1 bin/UnicodeNameMappingGenerator bin/bugpoint share/man/man1/bugpoint.1 bin/clang-installapi bin/clang-nvlink-wrapper bin/count bin/dsymutil share/man/man1/dsymutil.1 bin/intercept-build bin/llc bin/lli bin/lli-child-target bin/llvm-PerfectShuffle bin/llvm-addr2line bin/llvm-ar bin/llvm-as bin/llvm-bcanalyzer bin/llvm-bitcode-strip bin/llvm-c-test bin/llvm-cat bin/llvm-cfi-verify bin/llvm-cgdata bin/llvm-config bin/llvm-cov bin/llvm-cvtres bin/llvm-cxxdump bin/llvm-cxxfilt bin/llvm-cxxmap bin/llvm-debuginfo-analyzer bin/llvm-debuginfod bin/llvm-debuginfod-find bin/llvm-diff bin/llvm-dis bin/llvm-dlltool bin/llvm-dwarfdump bin/llvm-dwarfutil bin/llvm-dwp bin/llvm-exegesis bin/llvm-extract bin/llvm-gsymutil bin/llvm-ifs bin/llvm-install-name-tool bin/llvm-jitlink bin/llvm-jitlink-executor bin/llvm-lib bin/llvm-libtool-darwin bin/llvm-link bin/llvm-lipo bin/llvm-lto bin/llvm-lto2 bin/llvm-mc bin/llvm-mca bin/llvm-ml bin/llvm-modextract bin/llvm-mt bin/llvm-nm bin/llvm-objcopy bin/llvm-objdump bin/llvm-opt-report share/man/man1/llvm-opt-report.1 bin/llvm-otool bin/llvm-pdbutil bin/llvm-profdata share/man/man1/llvm-profdata.1 bin/llvm-profgen share/man/man1/llvm-profgen.1 bin/llvm-ranlib share/man/man1/llvm-ranlib.1 bin/llvm-rc bin/llvm-readelf share/man/man1/llvm-readelf.1 bin/llvm-readobj share/man/man1/llvm-readobj.1 bin/llvm-readtapi bin/llvm-reduce share/man/man1/llvm-reduce.1 bin/llvm-remarkutil share/man/man1/llvm-remarkutil.1 bin/llvm-rtdyld bin/llvm-sim bin/llvm-size share/man/man1/llvm-size.1 bin/llvm-split bin/llvm-stress share/man/man1/llvm-stress.1 bin/llvm-strings share/man/man1/llvm-strings.1 bin/llvm-strip share/man/man1/llvm-strip.1 bin/llvm-symbolizer share/man/man1/llvm-symbolizer.1 bin/llvm-tblgen share/man/man1/llvm-tblgen.1 bin/llvm-tli-checker share/man/man1/llvm-tli-checker.1 bin/llvm-undname bin/llvm-windres bin/llvm-xray bin/not bin/obj2yaml bin/opt share/man/man1/opt.1 bin/prepare_builtins bin/reduce-chunk-list bin/sancov bin/sanstats bin/split-file bin/tblgen-to-irdl bin/verify-uselistorder bin/yaml-bench bin/yaml2obj share/man/man1/lit.1 share/man/man1/llc.1 share/man/man1/lldb-tblgen.1 share/man/man1/lli.1 share/man/man1/llvm-addr2line.1 share/man/man1/llvm-ar.1 share/man/man1/llvm-as.1 share/man/man1/llvm-bcanalyzer.1 share/man/man1/llvm-config.1 share/man/man1/llvm-cov.1 share/man/man1/llvm-cxxfilt.1 share/man/man1/llvm-cxxmap.1 share/man/man1/llvm-debuginfo-analyzer.1 share/man/man1/llvm-diff.1 share/man/man1/llvm-dis.1 share/man/man1/llvm-dwarfdump.1 share/man/man1/llvm-dwarfutil.1 share/man/man1/llvm-exegesis.1 share/man/man1/llvm-extract.1 share/man/man1/llvm-ifs.1 share/man/man1/llvm-install-name-tool.1 share/man/man1/llvm-lib.1 share/man/man1/llvm-libtool-darwin.1 share/man/man1/llvm-link.1 share/man/man1/llvm-lipo.1 share/man/man1/llvm-locstats.1 share/man/man1/llvm-mc.1 share/man/man1/llvm-mca.1 share/man/man1/llvm-nm.1 share/man/man1/llvm-objcopy.1 share/man/man1/llvm-objdump.1 share/man/man1/llvm-otool.1 share/man/man1/llvm-pdbutil.1 share/man/man1/tblgen.1 ) alternatives=$(:) for _alt in "${_llvm_alts[@]}"; do alternatives+=" llvm:/usr/${_alt}:/usr/${_llvm_prefix}/${_alt}" done clang19_package() { lib32disabled=yes depends="libstdc++-devel libgcc-devel binutils ${XBPS_TARGET_LIBC}-devel compiler-rt19>=${version}_${revision}" conflicts="clang18>=0 clang17>=0 clang15>=0" short_desc+=" - C language family frontend" homepage="https://clang.llvm.org/" _clang19_files=( bin/clang-19 bin/clang bin/clang++ bin/clang-cl bin/clang-cpp bin/clang-check bin/clang-extdef-mapping bin/clang-format bin/git-clang-format bin/clang-linker-wrapper bin/clang-offload-bundler bin/clang-offload-packager bin/clang-refactor bin/clang-rename bin/clang-repl bin/clang-scan-deps bin/clang-tblgen bin/c-index-test bin/diagtool bin/amdgpu-arch bin/nvptx-arch bin/hmaptool lib/LLVMgold.so share/man/man1/clang.1 share/man/man1/diagtool.1 share/man/man1/clang-tblgen.1 ) for _alt in "${_clang19_files[@]}"; do alternatives+=" clang:/usr/${_alt}:/usr/${_llvm_prefix}/${_alt}" done if [ "$build_option_polly" ]; then alternatives+=" clang:/usr/lib/LLVMPolly.so:/${_llvm_libdir}/LLVMPolly.so clang:/usr/share/man/man1/polly.1:/${_llvm_mandir}/man1/polly1.1 " fi pkg_install() { vlicense ${wrksrc}/clang/LICENSE.TXT for _bin in "${_clang19_files[@]}"; do vmove usr/${_llvm_prefix}/${_bin} done if [ "$build_option_polly" ]; then vmove ${_llvm_libdir}/LLVMPolly.so vmove ${_llvm_mandir}/man1/polly.1 fi } } clang19-headers_package() { lib32disabled=yes short_desc+=" - C language family frontend - Headers" homepage="https://clang.llvm.org/" pkg_install() { vmove ${_llvm_libdir}/clang/19/include vmove ${_llvm_incdir}/c++ vmove ${_llvm_datadir}/libc++ vmove usr/lib/clang } } clang19-devel_package() { lib32disabled=yes depends="libstdc++-devel libgcc-devel binutils ${XBPS_TARGET_LIBC}-devel clang19>=${version}_${revision} clang-analyzer19>=${version}_${revision} llvm19>=${version}_${revision}" conflicts="clang18-devel clang17-devel clang15-devel" if [ "$build_option_clang_tools_extra" ]; then depends+=" clang-tools-extra19>=${version}_${revision}" fi short_desc+=" - C language family frontend - development Files" homepage="https://clang.llvm.org/" pkg_install() { vmove ${_llvm_incdir}/clang vmove ${_llvm_incdir}/clang-c vmove ${_llvm_libdir}/libear vmove ${_llvm_libdir}/cmake/clang vmove "${_llvm_libdir}/libclang*.a" vmove "${_llvm_libdir}/libclang*.so" vmove ${_llvm_datadir}/clang if [ "$build_option_clang_tools_extra" ]; then vmove ${_llvm_incdir}/clang-tidy vmove ${_llvm_libdir}/libfindAllSymbols.a fi if [ "$build_option_polly" ]; then vmove ${_llvm_incdir}/polly vmove ${_llvm_libdir}/cmake/polly vmove "${_llvm_libdir}/libPolly*.a" fi } } libclang19_package() { depends="clang19-headers>=${version}_${revision}" short_desc+=" - C frontend library" pkg_install() { _vlink_libs "${_llvm_libdir}/libclang.so.*" } } libclang-cpp19_package() { depends="clang19-headers>=${version}_${revision}" short_desc+=" - C frontend library (C++ interface)" pkg_install() { _vlink_libs "${_llvm_libdir}/libclang-cpp.so.*" } } clang-analyzer19_package() { depends="clang19>=${version}_${revision} python3 perl" conflicts="clang-analyzer18>=0 clang-analyzer17>=0 clang-analyzer15>=0" short_desc+=" - A source code analysis framework" homepage="https://clang-analyzer.llvm.org/" pycompile_dirs="${_llvm_datadir}/scan-view" _clang_analyzer19_files=( share/scan-view share/scan-build lib/libscanbuild libexec/analyze-c++ libexec/analyze-cc libexec/intercept-c++ libexec/intercept-cc libexec/c++-analyzer libexec/ccc-analyzer share/man/man1/scan-build.1 bin/analyze-build bin/scan-build bin/scan-build-py bin/scan-view ) for _alt in "${_clang_analyzer19_files[@]}"; do alternatives+=" clang-analyzer:/usr/${_alt}:/usr/${_llvm_prefix}/${_alt}" done pkg_install() { for _f in "${_clang_analyzer19_files[@]}"; do vmove usr/${_llvm_prefix}/${_f} done } } clang-tools-extra19_package() { lib32disabled=yes depends="clang19>=${version}_${revision} python3" conflicts="clang-tools-extra18>=0 clang-tools-extra17>=0 clang-tools-extra15>=0" short_desc+=" - Extra Clang tools" homepage="https://clang.llvm.org/extra/" _clang_tools_extra19_files=( bin/clang-apply-replacements bin/clang-change-namespace bin/clang-doc bin/clang-include-cleaner bin/clang-include-fixer bin/clang-move bin/clang-pseudo bin/clang-query bin/clang-reorder-fields bin/clang-tidy bin/clangd bin/find-all-symbols bin/modularize bin/pp-trace bin/run-clang-tidy share/man/man1/extraclangtools.1 ) for _alt in "${_clang_tools_extra19_files[@]}"; do alternatives+=" clang-tools-extra:/usr/${_alt}:/usr/${_llvm_prefix}/${_alt}" done pkg_install() { vlicense ${wrksrc}/clang-tools-extra/LICENSE.TXT for _f in "${_clang_tools_extra19_files[@]}"; do vmove usr/${_llvm_prefix}/${_f} done } } # "bolt" package name is already used llvm-bolt19_package() { lib32disabled=yes depends="clang19>=${version}_${revision}" conflicts="llvm-bolt18>=0 llvm-bolt17>=0" short_desc+=" - post-link optimizer" homepage="https://github.com/llvm/llvm-project/tree/main/bolt" _llvm_bolt19_files=( bin/llvm-bolt bin/perf2bolt bin/llvm-boltdiff bin/merge-fdata bin/llvm-bolt-heatmap ) for _alt in "${_llvm_bolt19_files[@]}"; do alternatives+=" llvm-bolt:/usr/${_alt}:/usr/${_llvm_prefix}/${_alt}" done pkg_install() { vlicense ${wrksrc}/bolt/LICENSE.TXT for _f in "${_llvm_bolt19_files[@]}"; do vmove usr/${_llvm_prefix}/${_f} done if [ -z "$CROSS_BUILD" ]; then vmove ${_llvm_libdir}/libbolt_rt_instr.a vmove ${_llvm_libdir}/libbolt_rt_hugify.a fi } } lldb19_package() { lib32disabled=yes depends+=" python3-six" conflicts="lldb18>=0 lldb17>=0 lldb15>=0" short_desc+=" - LLDB debugger" homepage="https://lldb.llvm.org/" _lldb19_files=( bin/lldb bin/lldb-argdumper bin/lldb-instr bin/lldb-server bin/lldb-dap lib/python${py3_ver}/site-packages/lldb ) if [ -z "$CROSS_BUILD" ]; then _lldb19_files+=("lib/lua/5.3/lldb.so") fi for _alt in "${_lldb19_files[@]}"; do alternatives+=" lldb:/usr/${_alt}:/usr/${_llvm_prefix}/${_alt}" done pkg_install() { vlicense ${wrksrc}/lldb/LICENSE.TXT for _f in "${_lldb19_files[@]}"; do vmove usr/${_llvm_prefix}/${_f} done } } lldb19-devel_package() { lib32disabled=yes depends="lldb19>=${version}_${revision}" conflicts="lldb18-devel>=0 lldb17-devel>=0 lldb15-devel>=0" short_desc+=" - LLDB debugger - development files" pkg_install() { vmove ${_llvm_incdir}/lldb vmove "${_llvm_libdir}/liblldb*.so" } } liblldb19_package() { lib32disabled=yes short_desc+=" - LLDB debugger - runtime library" pkg_install() { _vlink_libs "${_llvm_libdir}/liblldb*.so.*" } } lld19_package() { lib32disabled=yes conflicts="lld18>=0 lld17>=0 lld15>=0" short_desc+=" - linker" homepage="https://lld.llvm.org" _lld19_files=( bin/lld bin/lld-link bin/ld.lld bin/ld64.lld bin/wasm-ld ) for _alt in "${_lld19_files[@]}"; do alternatives+=" lld:/usr/${_alt}:/usr/${_llvm_prefix}/${_alt}" done pkg_install() { vlicense ${wrksrc}/lld/LICENSE.TXT for _f in "${_lld19_files[@]}"; do vmove usr/${_llvm_prefix}/${_f} done } } lld19-devel_package() { lib32disabled=yes depends="lld19>=${version}_${revision} llvm19>=${version}_${revision}" conflicts="lld18-devel>=0 lld17-devel>=0 lld15-devel>=0" short_desc+=" - linker - development files" homepage="https://lld.llvm.org" pkg_install() { vmove ${_llvm_incdir}/lld vmove ${_llvm_libdir}/cmake/lld vmove "${_llvm_libdir}/liblld*.a" } } mlir19_package() { lib32disabled=yes short_desc+=" - multi-level IR compiler framework" homepage="https://mlir.llvm.org/" _mlir19_files=( bin/mlir-cat bin/mlir-cpu-runner bin/mlir-linalg-ods-yaml-gen bin/mlir-lsp-server bin/mlir-minimal-opt bin/mlir-minimal-opt-canonicalize bin/mlir-opt bin/mlir-pdll bin/mlir-pdll-lsp-server bin/mlir-query bin/mlir-reduce bin/mlir-tblgen bin/mlir-transform-opt bin/mlir-translate bin/tblgen-lsp-server share/man/man1/mlir-tblgen.1 ) for _alt in "${_mlir19_files[@]}"; do alternatives+=" mlir:/usr/${_alt}:/usr/${_llvm_prefix}/${_alt}" done pkg_install() { for _f in "${_mlir19_files[@]}"; do vmove usr/${_llvm_prefix}/${_f} done _vlink_libs "${_llvm_libdir}/libMLIR*.so.*" _vlink_libs "${_llvm_libdir}/libmlir*.so.*" } } mlir19-devel_package() { lib32disabled=yes depends="mlir19>=${version}_${revision} llvm19>=${version}_${revision}" conflicts="mlir18-devel>=0 mlir17-devel>=0" short_desc+=" - multi-level IR compiler framework - development files" homepage="https://mlir.llvm.org/" pkg_install() { vmove ${_llvm_incdir}/mlir vmove ${_llvm_incdir}/mlir-c vmove ${_llvm_libdir}/cmake/mlir vmove "${_llvm_libdir}/libMLIR*" vmove "${_llvm_libdir}/objects-Release/obj.MLIR*" vmove "${_llvm_libdir}/libmlir*" } } flang19_package() { lib32disabled=yes depends="mlir19>=${version}_${revision}" conflicts="flang18>=0 flang17>=0" short_desc+=" - Fortran language frontend" homepage="https://flang.llvm.org/" _flang19_files=( bin/flang-new bin/bbc bin/f18-parse-demo bin/fir-opt bin/tco ) for _alt in "${_flang19_files[@]}"; do alternatives+=" flang:/usr/${_alt}:/usr/${_llvm_prefix}/${_alt}" done pkg_install() { for _f in "${_flang19_files[@]}"; do vmove usr/${_llvm_prefix}/${_f} done vmove "${_llvm_libdir}/libflang*.a" vmove "${_llvm_libdir}/libFortran*.a" vmove "${_llvm_incdir}/flang/*.mod" } } flang19-devel_package() { lib32disabled=yes depends="flang19>=${version}_${revision} llvm19>=${version}_${revision}" conflicts="flang18-devel>=0 flang17-devel>=0" short_desc+=" - Fortran language frontend - development files" homepage="https://flang.llvm.org/" pkg_install() { vmove ${_llvm_incdir}/flang vmove ${_llvm_libdir}/cmake/flang vmove "${_llvm_libdir}/libFIR*.a" vmove "${_llvm_libdir}/libHLFIR*.a" vmove "${_llvm_libdir}/libCUF*.a" } } libomp19_package() { short_desc+=" - Clang OpenMP support library" conflicts="libomp18>=0 libomp17>=0" _libomp19_files=( lib/libomp.so ) case "$XBPS_TARGET_MACHINE" in x86_64*|aarch64*|riscv64*) _libomp19_files+=("lib/libompd.so") ;; esac if [ "$build_option_offload" ]; then _libomp19_files+=("bin/llvm-omp-device-info") _libomp19_files+=("bin/llvm-omp-kernel-replay") _libomp19_files+=("lib/libomptarget.so") fi for _alt in "${_libomp19_files[@]}"; do alternatives+=" libomp:/usr/${_alt}:/usr/${_llvm_prefix}/${_alt}" done pkg_install() { for _f in "${_libomp19_files[@]}"; do vmove usr/${_llvm_prefix}/${_f} done if [ "$build_option_offload" ]; then _vlink_libs "${_llvm_libdir}/libomp*.so*" fi } } libomp19-devel_package() { short_desc+=" - Clang OpenMP support library - development files" depends="libomp19>=${version}_${revision}" conflicts="libomp18-devel>=0 libomp17-devel>=0" pkg_install() { if [ -f "${DESTDIR}/${_llvm_libdir}/libarcher.so" ]; then vmove "${_llvm_libdir}/libarcher*.so" fi if [ -f "${DESTDIR}/${_llvm_libdir}/libarcher_static.a" ]; then vmove "${_llvm_libdir}/libarcher*.a" fi vmove ${_llvm_libdir}/cmake/openmp if [ "$build_option_offload" ]; then vmove "${_llvm_libdir}/libomptarget*.bc" vmove "${_llvm_libdir}/libomp*.a" fi } } llvm-libunwind_package() { short_desc+=" - libunwind" pkg_install() { vmove "usr/lib/libunwind.so.*" } } llvm-libunwind-devel_package() { short_desc+=" - libunwind - development files" depends="llvm-libunwind>=${version}_${revision}" conflicts="libunwind-devel>=0" pkg_install() { vmove usr/include/mach-o vmove "usr/include/*unwind*" vmove "usr/lib/libunwind.a" vmove "usr/lib/libunwind.so" } } libcxxabi_package() { short_desc+=" - low level support for libc++" pkg_install() { vmove "usr/lib/libc++abi.so.*" } } libcxxabi-devel_package() { short_desc+=" - low level support for libc++ - development files" depends="libcxxabi>=${version}_${revision}" pkg_install() { vmove usr/include/c++/v1/cxxabi.h vmove usr/include/c++/v1/__cxxabi_config.h vmove usr/lib/libc++abi.so vmove usr/lib/libc++abi.a } } libcxx_package() { short_desc+=" - C++ standard library" pkg_install() { vmove "usr/lib/libc++.so.*" } } libcxx-devel_package() { short_desc+=" - C++ standard library - development files" depends="libcxx>=${version}_${revision}" pkg_install() { vmove usr/lib/libc++.modules.json vmove usr/include/c++ vmove usr/share/libc++ vmove "usr/lib/libc++.so" vmove "usr/lib/libc++.a" vmove "usr/lib/libc++experimental.a" } } compiler-rt19_package() { short_desc+=" - runtime libraries" depends="clang19-headers>=${version}_${revision}" noshlibprovides=yes noverifyrdeps=yes homepage="https://compiler-rt.llvm.org/" pkg_install() { vmove ${_llvm_libdir}/clang/19/lib if [ -d "${DESTDIR}/${_llvm_libdir}/clang/19/bin" ]; then vmove ${_llvm_libdir}/clang/19/bin fi if [ -d "${DESTDIR}/${_llvm_libdir}/clang/19/share" ]; then vmove ${_llvm_libdir}/clang/19/share fi } } libllvm19_package() { short_desc+=" - library" pkg_install() { _vlink_libs "${_llvm_libdir}/libLLVM-*.so" _vlink_libs "${_llvm_libdir}/libLLVM.so.*" } } llvm19-doc_package() { short_desc+=" - documentation" pkg_install() { vmove ${_llvm_datadir}/doc } } llvm19-devel_package() { depends="llvm19>=${version}_${revision}" conflicts="llvm18-devel>=0 llvm17-devel>=0 llvm15-devel>=0" short_desc+=" - development files" if [ "$build_option_openmp" ]; then depends+=" libomp19-devel>=${version}_${revision} " fi if [ "$build_option_mlir" ]; then depends+=" mlir19-devel>=${version}_${revision} " fi if [ "$build_option_clang" ]; then depends+=" clang19-devel>=${version}_${revision} " fi pkg_install() { vmove ${_llvm_libdir}/libLLVM.so vmove ${_llvm_libdir}/libLTO.so vmove ${_llvm_libdir}/libRemarks.so vmove ${_llvm_incdir}/llvm vmove ${_llvm_incdir}/llvm-c vmove "${_llvm_libdir}/libLLVM*.a" vmove ${_llvm_libdir}/cmake/llvm } } # These binaries are ONLY used when building llvm, they aren't normally installed llvm19-cross-tools_package() { conflicts="llvm18-cross-tools>=0 llvm17-cross-tools>=0" short_desc+=" - build tools for cross compiling LLVM" depends="llvm19-devel>=${version}_${revision}" if [ "$build_option_lldb" ]; then depends+=" lldb19-devel>=${version}_${revision}" fi if [ "$build_option_lld" ]; then depends+=" lld19-devel>=${version}_${revision}" fi if [ "$build_option_flang" ]; then depends+=" flang19-devel>=${version}_${revision}" fi pkg_install() { # Binaries ONLY used during the process of building llvm, and aren't usually installed vmkdir ${_llvm_bindir} vcopy build/bin/clang-tidy-confusable-chars-gen ${_llvm_bindir} vcopy build/bin/clang-pseudo-gen ${_llvm_bindir} if [ "$build_option_lldb" ]; then vcopy build/bin/lldb-tblgen ${_llvm_bindir} fi if [ "$build_option_mlir" ]; then vcopy build/bin/mlir-src-sharder ${_llvm_bindir} fi } } libclc19_package() { short_desc+=" - Open implementation of the OpenCL C programming language" replaces="libclc-git>=0" _libclc19_files=( share/clc include/clc share/pkgconfig/libclc.pc ) for _alt in "${_libclc19_files[@]}"; do alternatives+=" libclc:/usr/${_alt}:/usr/${_llvm_prefix}/${_alt}" done pkg_install() { for _f in "${_libclc19_files[@]}"; do vmove usr/${_llvm_prefix}/${_f} done } }