From d6368cbf5bd0b650c5e83bd3802a3108e4d531db Mon Sep 17 00:00:00 2001 From: Daniel Martinez Date: Fri, 9 Feb 2024 09:20:48 -0500 Subject: [PATCH] llvm17: fixup and refactor --- srcpkgs/clang17-headers | 1 + srcpkgs/compiler-rt | 1 + srcpkgs/llvm17-cross-tools | 1 + srcpkgs/llvm17/template | 126 ++++++++++++++++++++++++------------- 4 files changed, 84 insertions(+), 45 deletions(-) create mode 120000 srcpkgs/clang17-headers create mode 120000 srcpkgs/compiler-rt create mode 120000 srcpkgs/llvm17-cross-tools diff --git a/srcpkgs/clang17-headers b/srcpkgs/clang17-headers new file mode 120000 index 0000000000000..96970d5c02c13 --- /dev/null +++ b/srcpkgs/clang17-headers @@ -0,0 +1 @@ +llvm17 \ No newline at end of file diff --git a/srcpkgs/compiler-rt b/srcpkgs/compiler-rt new file mode 120000 index 0000000000000..96970d5c02c13 --- /dev/null +++ b/srcpkgs/compiler-rt @@ -0,0 +1 @@ +llvm17 \ No newline at end of file diff --git a/srcpkgs/llvm17-cross-tools b/srcpkgs/llvm17-cross-tools new file mode 120000 index 0000000000000..96970d5c02c13 --- /dev/null +++ b/srcpkgs/llvm17-cross-tools @@ -0,0 +1 @@ +llvm17 \ No newline at end of file diff --git a/srcpkgs/llvm17/template b/srcpkgs/llvm17/template index 7bc22ec50272e..743c9e58ecb99 100644 --- a/srcpkgs/llvm17/template +++ b/srcpkgs/llvm17/template @@ -1,7 +1,7 @@ # Template file for 'llvm17' pkgname=llvm17 version=17.0.6 -revision=1 +revision=2 build_wrksrc=llvm build_style=cmake _ext_suffix=".cpython-${py3_ver/./}-linux-${XBPS_TARGET_LIBC/glibc/gnu}.so" @@ -26,7 +26,6 @@ configure_args=" -DCLANG_LINK_CLANG_DYLIB=YES -DLLVM_ENABLE_RTTI=YES -DLLVM_ENABLE_FFI=YES - -DLLVM_ENABLE_RUNTIMES=all -DLLVM_BINUTILS_INCDIR=/usr/include -DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=NO -DLLDB_PYTHON_RELATIVE_PATH=lib/python${py3_ver}/site-packages @@ -62,9 +61,12 @@ if [ "$XBPS_TARGET_LIBC" = "musl" ]; then -DCOMPILER_RT_BUILD_GWP_ASAN=OFF" fi +subpackages+=" libllvm17 llvm17-doc llvm17-devel " + +_enabled_projects="" if [ "$build_option_clang" ]; then _enabled_projects+="clang;" - subpackages+=" clang17 clang17-devel libclang17 libclang-cpp17 clang-analyzer17 " + subpackages+=" clang17 clang17-headers clang17-devel libclang17 libclang-cpp17 clang-analyzer17 " fi if [ "$build_option_clang_tools_extra" ]; then _enabled_projects+="clang-tools-extra;" @@ -100,11 +102,26 @@ if [ "$build_option_openmp" ]; then _enabled_projects+="openmp;" subpackages+=" libomp libomp-devel " fi -subpackages+=" llvm-libunwind llvm-libunwind-devel libcxx libcxx-devel libcxxabi libcxxabi-devel libllvm17 llvm17-doc llvm17-devel " + +_enabled_runtimes= +if [ 1 ]; then + subpackages+=" llvm-libunwind llvm-libunwind-devel " + _enabled_runtimes+="${_enabled_runtimes:+;}libunwind" +fi +if [ 1 ]; then + subpackages+=" libcxx libcxx-devel libcxxabi libcxxabi-devel " + _enabled_runtimes+="${_enabled_runtimes:+;}libcxxabi;libcxx" +fi +if [ 1 ]; then + subpackages+=" compiler-rt " + _enabled_runtimes+="${_enabled_runtimes:+;}compiler-rt" +fi configure_args+=" -DLLVM_ENABLE_PROJECTS=${_enabled_projects}" +configure_args+=" -DLLVM_ENABLE_RUNTIMES=${_enabled_runtimes}" if [ "$CROSS_BUILD" ]; then + hostmakedepends+=" llvm17-cross-tools " # Seems to require a full host llvm/clang build configure_args+=" -DLIBOMPTARGET_BUILD_CUDA_PLUGIN=OFF" configure_args+=" -DLIBOMPTARGET_BUILD_AMDGPU_PLUGIN=OFF" @@ -113,6 +130,7 @@ fi # For OCaml bindings and lldb lua scripting if [ -z "$CROSS_BUILD" ]; then + subpackages+=" llvm17-cross-tools" # OCaml cross build is broken hostmakedepends+=" ocaml ocaml-findlib " # lldb cross build fails with lua @@ -170,37 +188,16 @@ pre_configure() { esac if [ "$CROSS_BUILD" ]; then - msg_normal "Building host tblgen\n" - mkdir -p build/HOST - cd build/HOST - CC="$BUILD_CC" CXX="$BUILD_CXX" CFLAGS="$BUILD_CFLAGS" \ - CXXFLAGS="$BUILD_CXXFLAGS" LDFLAGS="$BUILD_LDFLAGS" \ - cmake ../.. -DCMAKE_BUILD_TYPE=Release \ - -DLLVM_ENABLE_PROJECTS=${_enabled_projects} - - make ${makejobs} -C utils/TableGen - configure_args+=" -DLLVM_TABLEGEN=${wrksrc}/llvm/build/HOST/bin/llvm-tblgen" - - make ${makejobs} -C tools/clang/utils/TableGen - configure_args+=" -DCLANG_TABLEGEN=${wrksrc}/llvm/build/HOST/bin/clang-tblgen" - - make ${makejobs} -C tools/mlir/tools/mlir-pdll - configure_args+=" -DMLIR_TABLEGEN=${wrksrc}/llvm/build/HOST/bin/mlir-tblgen" - configure_args+=" -DMLIR_PDLL_TABLEGEN=${wrksrc}/llvm/build/HOST/bin/mlir-pdll" - configure_args+=" -DMLIR_LINALG_ODS_YAML_GEN=${wrksrc}/llvm/build/HOST/bin/mlir-linalg-ods-yaml-gen" - - make ${makejobs} -C tools/clang/tools/extra/clang-tidy/misc/ConfusableTable - configure_args+=" -DCLANG_TIDY_CONFUSABLE_CHARS_GEN=${wrksrc}/llvm/build/HOST/bin/clang-tidy-confusable-chars-gen" - make ${makejobs} -C tools/clang/tools/extra/pseudo/gen - configure_args+=" -DCLANG_PSEUDO_GEN=${wrksrc}/llvm/build/HOST/bin/clang-pseudo-gen" - - make ${makejobs} -C tools/llvm-config - configure_args+=" -DLLVM_CONFIG_PATH=${wrksrc}/llvm/build/HOST/bin/llvm-config" - - make ${makejobs} -C tools/lldb/utils/TableGen lldb-tblgen - configure_args+=" -DLLDB_TABLEGEN_EXE=${wrksrc}/llvm/build/HOST/bin/lldb-tblgen" - - cd ../.. + configure_args+=" -DLLVM_NATIVE_TOOL_DIR=/usr/bin" + configure_args+=" -DLLVM_TABLEGEN=/usr/bin/llvm-tblgen" + configure_args+=" -DCLANG_TABLEGEN=/usr/bin/clang-tblgen" + configure_args+=" -DMLIR_TABLEGEN=/usr/bin/mlir-tblgen" + configure_args+=" -DMLIR_PDLL_TABLEGEN=/usr/bin/mlir-pdll" + configure_args+=" -DMLIR_LINALG_ODS_YAML_GEN=/usr/bin/mlir-linalg-ods-yaml-gen" + configure_args+=" -DCLANG_TIDY_CONFUSABLE_CHARS_GEN=/usr/bin/clang-tidy-confusable-chars-gen" + configure_args+=" -DCLANG_PSEUDO_GEN=/usr/bin/clang-pseudo-gen" + configure_args+=" -DLLVM_CONFIG_PATH=/usr/bin/llvm-config" + configure_args+=" -DLLDB_TABLEGEN_EXE=/usr/bin/lldb-tblgen" fi case "$XBPS_TARGET_MACHINE" in @@ -238,6 +235,13 @@ post_build() { -DSPHINX_WARNINGS_AS_ERRORS=OFF ninja ${makejobs} -C ${wrksrc}/${build_wrksrc}/runtimes-doc docs-libcxx-html docs-libunwind-html + + if [ -z "$CROSS_BUILD" ]; then + vmkdir usr/bin + vcopy build/bin/lldb-tblgen usr/bin + vcopy build/bin/clang-tidy-confusable-chars-gen usr/bin + vcopy build/bin/clang-pseudo-gen usr/bin + fi } post_install() { @@ -280,7 +284,7 @@ post_install() { clang17_package() { lib32disabled=yes depends="libstdc++-devel libgcc-devel binutils ${XBPS_TARGET_LIBC}-devel - libclang17-${version}_${revision} " + llvm17-${version}_${revision} " short_desc+=" - C language family frontend" homepage="https://clang.llvm.org/" pkg_install() { @@ -313,16 +317,27 @@ clang17_package() { } } +clang17-headers_package() { + lib32disabled=yes + short_desc+=" - C language family frontend - Headers" + homepage="https://clang.llvm.org/" + pkg_install() { + vmove usr/lib/clang/17/include + } +} + clang17-devel_package() { lib32disabled=yes depends="libstdc++-devel libgcc-devel binutils ${XBPS_TARGET_LIBC}-devel - libclang17-${version}_${revision}" + clang17-${version}_${revision} clang-analyzer17-${version}_${revision}" + if [ "$build_option_clang_tools_extra" ]; then + depends+=" clang-tools-extra17-${version}_${revision}" + fi short_desc+=" - C language family frontend - development Files" homepage="https://clang.llvm.org/" pkg_install() { vmove usr/include/clang vmove usr/include/clang-c - vmove usr/lib/clang vmove usr/lib/libear vmove usr/lib/cmake/clang vmove "usr/lib/libclang*.a" @@ -343,14 +358,16 @@ clang17-devel_package() { } libclang17_package() { - short_desc+=" - C frontend runtime library" + depends="clang17-headers-${version}_${revision}" + short_desc+=" - C frontend library" pkg_install() { vmove "usr/lib/libclang.so.*" } } libclang-cpp17_package() { - short_desc+=" - C frontend runtime library (C++ interface)" + depends="clang17-headers-${version}_${revision}" + short_desc+=" - C frontend library (C++ interface)" pkg_install() { vmove "usr/lib/libclang-cpp.so.*" } @@ -629,15 +646,24 @@ libcxx-devel_package() { } } +compiler-rt_package() { + short_desc+=" - runtime libraries" + homepage="https://compiler-rt.llvm.org/" + pkg_install() { + vmove usr/lib/clang/17/lib + vmove usr/lib/clang/17/bin + } +} + libllvm17_package() { - short_desc+=" - runtime library" + short_desc+=" - library" pkg_install() { vmove "usr/lib/libLLVM-*.so*" } } llvm17-doc_package() { - short_desc+=" - documentation " + short_desc+=" - documentation" pkg_install() { vmove usr/share/doc } @@ -647,13 +673,13 @@ llvm17-devel_package() { short_desc+=" - development files" depends="llvm17>=${version}_${revision}" if [ "$build_option_openmp" ]; then - depends+=" libomp-devel>={$version}_${revision} " + depends+=" libomp-devel>=${version}_${revision} " fi if [ "$build_option_mlir" ]; then - depends+=" mlir17-devel>={$version}_${revision} " + depends+=" mlir17-devel>=${version}_${revision} " fi if [ "$build_option_clang" ]; then - depends+=" clang17-devel>={$version}_${revision} " + depends+=" clang17-devel>=${version}_${revision} " fi pkg_install() { vmove usr/lib/libLLVM.so @@ -666,3 +692,13 @@ llvm17-devel_package() { } } + +llvm17-cross-tools_package() { + short_desc+=" - build tools for cross compiling LLVM" + depends="lldb17-devel>=${version}_${revision} llvm17-devel>=${version}_${revision}" + pkg_install() { + vmove usr/bin/lldb-tblgen + vmove usr/bin/clang-tidy-confusable-chars-gen + vmove usr/bin/clang-pseudo-gen + } +}