diff --git a/mingw-w64-clang/0002-Fix-Findzstd-on-MINGW.patch b/mingw-w64-clang/0002-Fix-Findzstd-on-MINGW.patch deleted file mode 100644 index 108fb0e6a2ef6..0000000000000 --- a/mingw-w64-clang/0002-Fix-Findzstd-on-MINGW.patch +++ /dev/null @@ -1,16 +0,0 @@ ---- a/cmake/modules/Findzstd.cmake -+++ b/cmake/modules/Findzstd.cmake -@@ -29,11 +29,11 @@ - ) - - if(zstd_FOUND) -- if(zstd_LIBRARY MATCHES "${zstd_STATIC_LIBRARY_SUFFIX}$") -+ if(zstd_LIBRARY MATCHES "${zstd_STATIC_LIBRARY_SUFFIX}$" AND NOT MINGW) - set(zstd_STATIC_LIBRARY "${zstd_LIBRARY}") - elseif (NOT TARGET zstd::libzstd_shared) - add_library(zstd::libzstd_shared SHARED IMPORTED) -- if(MSVC) -+ if(WIN32) - # IMPORTED_LOCATION is the path to the DLL and IMPORTED_IMPLIB is the "library". - get_filename_component(zstd_DIRNAME "${zstd_LIBRARY}" DIRECTORY) - string(REGEX REPLACE "${CMAKE_INSTALL_LIBDIR}$" "${CMAKE_INSTALL_BINDIR}" zstd_DIRNAME "${zstd_DIRNAME}") diff --git a/mingw-w64-clang/0005-aarch64-unwind-seh.patch b/mingw-w64-clang/0005-aarch64-unwind-seh.patch deleted file mode 100644 index ff4385cd3a52b..0000000000000 --- a/mingw-w64-clang/0005-aarch64-unwind-seh.patch +++ /dev/null @@ -1,75 +0,0 @@ -From cef120a2e5abba06c1d7a699a4fd4a17e488d6af Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Martin=20Storsj=C3=B6?= -Date: Sun, 1 Oct 2023 00:08:23 +0300 -Subject: [PATCH] [AArch64] Disable loop alignment for Windows targets - -This should fix #66912. When emitting SEH unwind info, we need to -be able to calculate the exact length of functions before alignments -are fixed. Until that limitation is overcome, just disable all -loop alignment on Windows targets. ---- - llvm/lib/MC/MCWin64EH.cpp | 3 +++ - .../Target/AArch64/AArch64ISelLowering.cpp | 7 ++++++- - llvm/test/CodeGen/AArch64/sched-loop-align.ll | 21 +++++++++++++++++++ - 3 files changed, 30 insertions(+), 1 deletion(-) - create mode 100644 llvm/test/CodeGen/AArch64/sched-loop-align.ll - -diff --git a/lib/MC/MCWin64EH.cpp b/lib/MC/MCWin64EH.cpp -index a2d61da722af870..bb3492bec8aad8a 100644 ---- a/lib/MC/MCWin64EH.cpp -+++ b/lib/MC/MCWin64EH.cpp -@@ -1402,6 +1402,9 @@ static void ARM64EmitUnwindInfo(MCStreamer &streamer, WinEH::FrameInfo *info, - // here, but we'd have to emit the pdata, the xdata header, and the - // epilogue scopes later, since they depend on whether the we need to - // split the unwind data. -+ // -+ // If this is fixed, remove code in AArch64ISelLowering.cpp that -+ // disables loop alignment on Windows. - RawFuncLength = GetAbsDifference(streamer, info->FuncletOrFuncEnd, - info->Begin); - } -diff --git a/lib/Target/AArch64/AArch64ISelLowering.cpp b/lib/Target/AArch64/AArch64ISelLowering.cpp -index 932b36587f0694e..46064bc7e46783f 100644 ---- a/lib/Target/AArch64/AArch64ISelLowering.cpp -+++ b/lib/Target/AArch64/AArch64ISelLowering.cpp -@@ -1051,7 +1051,12 @@ AArch64TargetLowering::AArch64TargetLowering(const TargetMachine &TM, - // Set required alignment. - setMinFunctionAlignment(Align(4)); - // Set preferred alignments. -- setPrefLoopAlignment(STI.getPrefLoopAlignment()); -+ -+ // Don't align loops on Windows. The SEH unwind info generation needs to -+ // know the exact length of functions before the alignments have been -+ // expanded. -+ if (!Subtarget->isTargetWindows()) -+ setPrefLoopAlignment(STI.getPrefLoopAlignment()); - setMaxBytesForAlignment(STI.getMaxBytesForLoopAlignment()); - setPrefFunctionAlignment(STI.getPrefFunctionAlignment()); - -diff --git a/test/CodeGen/AArch64/sched-loop-align.ll b/test/CodeGen/AArch64/sched-loop-align.ll -new file mode 100644 -index 000000000000000..5b8e42c2790a439 ---- /dev/null -+++ b/test/CodeGen/AArch64/sched-loop-align.ll -@@ -0,0 +1,21 @@ -+; RUN: llc < %s -mtriple=aarch64-windows | FileCheck %s --check-prefix=WINDOWS -+; RUN: llc < %s -mtriple=aarch64-linux | FileCheck %s --check-prefix=LINUX -+ -+define dso_local void @b() #0 { -+entry: -+ br label %for.cond -+ -+for.cond: -+ tail call void @a() -+ br label %for.cond -+} -+ -+declare dso_local void @a(...) -+ -+attributes #0 = { noreturn nounwind uwtable "tune-cpu"="cortex-a53" } -+ -+; LINUX-LABEL: b: -+; LINUX: .p2align 4 -+ -+; WINDOWS-LABEL: b: -+; WINDOWS-NOT: .p2align diff --git a/mingw-w64-clang/0001-Fix-GetHostTriple-for-mingw-w64-in-msys.patch b/mingw-w64-llvm/0001-Fix-GetHostTriple-for-mingw-w64-in-msys.patch similarity index 100% rename from mingw-w64-clang/0001-Fix-GetHostTriple-for-mingw-w64-in-msys.patch rename to mingw-w64-llvm/0001-Fix-GetHostTriple-for-mingw-w64-in-msys.patch diff --git a/mingw-w64-llvm/0002-Fix-Findzstd-on-MINGW.patch b/mingw-w64-llvm/0002-Fix-Findzstd-on-MINGW.patch new file mode 100644 index 0000000000000..6fc561676c456 --- /dev/null +++ b/mingw-w64-llvm/0002-Fix-Findzstd-on-MINGW.patch @@ -0,0 +1,32 @@ +--- a/cmake/modules/Findzstd.cmake ++++ b/cmake/modules/Findzstd.cmake +@@ -16,6 +16,8 @@ + set(zstd_STATIC_LIBRARY_SUFFIX "\\${CMAKE_STATIC_LIBRARY_SUFFIX}$") + endif() + ++find_package(zstd CONFIG QUIET) ++if(NOT zstd_FOUND) + find_path(zstd_INCLUDE_DIR NAMES zstd.h) + find_library(zstd_LIBRARY NAMES zstd zstd_static) + find_library(zstd_STATIC_LIBRARY NAMES +@@ -27,16 +29,17 @@ + zstd DEFAULT_MSG + zstd_LIBRARY zstd_INCLUDE_DIR + ) ++endif() + + if(zstd_FOUND) +- if(zstd_LIBRARY MATCHES "${zstd_STATIC_LIBRARY_SUFFIX}$") ++ if(zstd_LIBRARY MATCHES "${zstd_STATIC_LIBRARY_SUFFIX}$" AND NOT MINGW) + set(zstd_STATIC_LIBRARY "${zstd_LIBRARY}") + elseif (NOT TARGET zstd::libzstd_shared) + add_library(zstd::libzstd_shared SHARED IMPORTED) +- if(MSVC) ++ if(WIN32) + # IMPORTED_LOCATION is the path to the DLL and IMPORTED_IMPLIB is the "library". + get_filename_component(zstd_DIRNAME "${zstd_LIBRARY}" DIRECTORY) +- string(REGEX REPLACE "${CMAKE_INSTALL_LIBDIR}$" "${CMAKE_INSTALL_BINDIR}" zstd_DIRNAME "${zstd_DIRNAME}") ++ string(REGEX REPLACE "\\${CMAKE_INSTALL_LIBDIR}$" "${CMAKE_INSTALL_BINDIR}" zstd_DIRNAME "${zstd_DIRNAME}") + get_filename_component(zstd_BASENAME "${zstd_LIBRARY}" NAME) + string(REGEX REPLACE "\\${CMAKE_LINK_LIBRARY_SUFFIX}$" "${CMAKE_SHARED_LIBRARY_SUFFIX}" zstd_BASENAME "${zstd_BASENAME}") + set_target_properties(zstd::libzstd_shared PROPERTIES diff --git a/mingw-w64-clang/0003-add-pthread-as-system-lib-for-mingw.patch b/mingw-w64-llvm/0003-add-pthread-as-system-lib-for-mingw.patch similarity index 94% rename from mingw-w64-clang/0003-add-pthread-as-system-lib-for-mingw.patch rename to mingw-w64-llvm/0003-add-pthread-as-system-lib-for-mingw.patch index 1d8792100b967..8ea90b6b84398 100644 --- a/mingw-w64-clang/0003-add-pthread-as-system-lib-for-mingw.patch +++ b/mingw-w64-llvm/0003-add-pthread-as-system-lib-for-mingw.patch @@ -11,10 +11,10 @@ diff --git a/lib/Support/CMakeLists.txt b/lib/Support/CMakeLists.txt index 0a8e3897cce..de9cda5dda3 100644 --- a/lib/Support/CMakeLists.txt +++ b/lib/Support/CMakeLists.txt -@@ -6,6 +6,9 @@ set(system_libs) +@@ -41,6 +41,9 @@ set(system_libs) # libuuid required for FOLDERID_Profile usage in lib/Support/Windows/Path.inc. # advapi32 required for CryptAcquireContextW in lib/Support/Windows/Path.inc. - set(system_libs ${system_libs} psapi shell32 ole32 uuid advapi32) + set(system_libs ${system_libs} psapi shell32 ole32 uuid advapi32 ws2_32) + if( MINGW ) + set(system_libs ${system_libs} pthread) + endif() diff --git a/mingw-w64-clang/0004-enable-emutls-for-mingw.patch b/mingw-w64-llvm/0004-enable-emutls-for-mingw.patch similarity index 100% rename from mingw-w64-clang/0004-enable-emutls-for-mingw.patch rename to mingw-w64-llvm/0004-enable-emutls-for-mingw.patch diff --git a/mingw-w64-clang/0101-link-pthread-with-mingw.patch b/mingw-w64-llvm/0101-link-pthread-with-mingw.patch similarity index 100% rename from mingw-w64-clang/0101-link-pthread-with-mingw.patch rename to mingw-w64-llvm/0101-link-pthread-with-mingw.patch diff --git a/mingw-w64-clang/0102-Rename-flang-new-flang-experimental-exec-to-flang.patch b/mingw-w64-llvm/0102-Rename-flang-new-flang-experimental-exec-to-flang.patch similarity index 100% rename from mingw-w64-clang/0102-Rename-flang-new-flang-experimental-exec-to-flang.patch rename to mingw-w64-llvm/0102-Rename-flang-new-flang-experimental-exec-to-flang.patch diff --git a/mingw-w64-clang/0303-ignore-new-bfd-options.patch b/mingw-w64-llvm/0303-ignore-new-bfd-options.patch similarity index 77% rename from mingw-w64-clang/0303-ignore-new-bfd-options.patch rename to mingw-w64-llvm/0303-ignore-new-bfd-options.patch index 39ec520b3becd..4ff30dc5d7998 100644 --- a/mingw-w64-clang/0303-ignore-new-bfd-options.patch +++ b/mingw-w64-llvm/0303-ignore-new-bfd-options.patch @@ -1,9 +1,9 @@ --- a/MinGW/Options.td +++ b/MinGW/Options.td -@@ -165,6 +165,8 @@ def alias_undefined_u: JoinedOrSeparate<["-"], "u">, Alias; +@@ -223,6 +223,8 @@ def alias_undefined_u: JoinedOrSeparate<["-"], "u">, Alias; + // Ignored options def: Joined<["-"], "O">; def: F<"as-needed">; - def: F<"build-id">; +def: F<"default-image-base-high">; +def: F<"default-image-base-low">; def: F<"disable-auto-image-base">; diff --git a/mingw-w64-clang/PKGBUILD b/mingw-w64-llvm/PKGBUILD similarity index 72% rename from mingw-w64-clang/PKGBUILD rename to mingw-w64-llvm/PKGBUILD index 49f14133b1ffb..0808da608aed1 100644 --- a/mingw-w64-clang/PKGBUILD +++ b/mingw-w64-llvm/PKGBUILD @@ -17,39 +17,42 @@ else _compiler=clang fi -_realname=clang +_realname=llvm pkgbase=mingw-w64-${_realname} -pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}" +pkgname=("${MINGW_PACKAGE_PREFIX}-llvm" + "${MINGW_PACKAGE_PREFIX}-llvm-libs" + "${MINGW_PACKAGE_PREFIX}-clang" "${MINGW_PACKAGE_PREFIX}-clang-libs" "${MINGW_PACKAGE_PREFIX}-clang-analyzer" "${MINGW_PACKAGE_PREFIX}-clang-tools-extra" "${MINGW_PACKAGE_PREFIX}-compiler-rt" $( (( _clangprefix )) && echo "${MINGW_PACKAGE_PREFIX}-gcc-compat" ) - "${MINGW_PACKAGE_PREFIX}-lld" - "${MINGW_PACKAGE_PREFIX}-llvm" - "${MINGW_PACKAGE_PREFIX}-llvm-libs") -_version=17.0.6 -_rc= + "${MINGW_PACKAGE_PREFIX}-lld") +_version=18.1.6 +_rc="" _tag=llvmorg-${_version}${_rc} pkgver=${_version}${_rc/-/} -pkgrel=3 +pkgrel=2 pkgdesc="C language family frontend for LLVM (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') url="https://llvm.org/" +msys2_references=( + "cpe: cpe:/a:llvm:llvm" +) license=("spdx:Apache-2.0 WITH LLVM-exception") groups=($( (( _clangprefix )) && echo "${MINGW_PACKAGE_PREFIX}-toolchain")) -makedepends=("${MINGW_PACKAGE_PREFIX}-cmake" - "${MINGW_PACKAGE_PREFIX}-z3" - "${MINGW_PACKAGE_PREFIX}-libffi" +makedepends=($([[ "$_compiler" == "clang" ]] && echo \ + "${MINGW_PACKAGE_PREFIX}-clang" || echo \ + "${MINGW_PACKAGE_PREFIX}-gcc") + "${MINGW_PACKAGE_PREFIX}-cmake" "${MINGW_PACKAGE_PREFIX}-ninja" "${MINGW_PACKAGE_PREFIX}-pkgconf" - "${MINGW_PACKAGE_PREFIX}-python-sphinx" - "${MINGW_PACKAGE_PREFIX}-python" "${MINGW_PACKAGE_PREFIX}-libunwind" - $([[ "$_compiler" == "clang" ]] && echo \ - "${MINGW_PACKAGE_PREFIX}-clang" || echo \ - "${MINGW_PACKAGE_PREFIX}-gcc") + "${MINGW_PACKAGE_PREFIX}-libffi" + "${MINGW_PACKAGE_PREFIX}-z3" + "${MINGW_PACKAGE_PREFIX}-python" + "${MINGW_PACKAGE_PREFIX}-python-sphinx" $((( _clangprefix )) && echo \ "${MINGW_PACKAGE_PREFIX}-compiler-rt" \ "${MINGW_PACKAGE_PREFIX}-libc++") @@ -63,40 +66,40 @@ source=("${_url}/llvm-${pkgver}.src.tar.xz"{,.sig} "${_url}/lld-${pkgver}.src.tar.xz"{,.sig} "${_url}/cmake-${pkgver}.src.tar.xz"{,.sig} "${_url}/third-party-${pkgver}.src.tar.xz"{,.sig} + # 0001-0099 -> llvm "0001-Fix-GetHostTriple-for-mingw-w64-in-msys.patch" "0002-Fix-Findzstd-on-MINGW.patch" "0003-add-pthread-as-system-lib-for-mingw.patch" "0004-enable-emutls-for-mingw.patch" + # 0101-0199 -> clang "0101-link-pthread-with-mingw.patch" "0102-Rename-flang-new-flang-experimental-exec-to-flang.patch" - "0303-ignore-new-bfd-options.patch") -# Some patch notes :) -#0001-0099 -> llvm -#0101-0199 -> clang -#0201-0299 -> rt -#0301-0399 -> lld -#0401-0499 -> clang-tools-extra -sha256sums=('b638167da139126ca11917b6880207cc6e8f9d1cbb1a48d87d017f697ef78188' + # 0201-0299 -> rt + # 0301-0399 -> lld + "0303-ignore-new-bfd-options.patch" + # 0401-0499 -> clang-tools-extra + ) +sha256sums=('c231d0a5445db2aafab855e052c247bdd9856ff9d7d9bffdd04e9f0bf8d5366f' 'SKIP' - 'a78f668a726ae1d3d9a7179996d97b12b90fb76ab9442a43110b972ff7ad9029' + '54e0817f918b90b5f94684e9729ac2f9d3820fce040d6395d71c1f19ffa3b03c' 'SKIP' - 'aa774642415d338d7b77a66fcbad6fd1f77f382dabcb67422a6230614eff1ab9' + 'd78732ec6d55b7374abe14b97c9529a7b56a1fe19929a5bf4c3802b69f77764e' 'SKIP' - '11b8d09dcf92a0f91c5c82defb5ad9ff4acf5cf073a80c317204baa922d136b4' + 'f05f4e15a4524194c93303aa6027006a5182eccfe8f5c90491c2f1fbfcedb96b' 'SKIP' - '4ac13125616dc44905b85820aa403d27ec1226329b7f674daeb5f5584c6f0b22' + 'f1f059c2bf98ffa558cd0c48ea568736c41f0c8029dabb53147d48b9efdaa802' 'SKIP' - '807f069c54dc20cb47b21c1f6acafdd9c649f3ae015609040d6182cab01140f4' + 'a643261ed98ff76ab10f1a7039291fa841c292435ba1cfe11e235c2231b95cdb' 'SKIP' - '3054d0a9c9375dab1a4539cc2cc45ab340341c5d71475f9599ba7752e222947b' + '4ae7b394d341aea6fb7d3d373a4f561ba8e48c0fecded4bb4f1f5f12ba9bd2b6' 'SKIP' 'eb03df53671df6627768141b3aaa76abe176a14e5e47911c97bec544387c4aff' - 'd7d58ad5d0e77f2803070a8fb7f4138a6f49a2cbf30c55ff059c31f40ca6b65c' - '7f0c64cd87b61e894be632f180ae5291e1aa9f1d9d382608f659067eeeda7146' + '0aff3a85d70ae437dfc634fe40db506bf5701403049284ffbdb931135ae8a483' + '016fbf6f742c062cc59360070264546c10385b1e8c37605758f62dcbea8f9bcc' '5f86e542dd1ec92b2fe06ee59061c3e23512df7bafabe82206f2b7d80b81836b' '715cb8862753854b2d9256e0b70003e2d1f57083d83eaeaf5a095fc72b8a4e26' '2770cadf8ccf6b31aece6aee8f76dceb71e6e9d01fdf3be74c3743480ce34899' - 'de631ab199a6fe83b3f695350bffaad067a2f95fc2ba9c8fe57dc85665d3653c') + 'fd0253879cc5e31857f57307e6105e56493358e35d7c4540e0b476be607ab94e') validpgpkeys=('B6C8F98282B944E3B0D5C2530FC3042E345AD05D' # Hans Wennborg, Google. '474E22316ABF4785A88C6E8EA2C794A986419D8A' # Tom Stellard 'D574BD5D1D0E98895E3BF90044F2485E45D59042') # Tobias Hieta @@ -121,7 +124,7 @@ revert_patch_with_msg() { prepare() { cd "${srcdir}" plain "Extracting clang-${pkgver}.src.tar.xz due to symlink(s) without pre-existing target(s)" - tar -xJf ${srcdir}/clang-${pkgver}.src.tar.xz -C ${srcdir} || true + tar -xJf "${srcdir}"/clang-${pkgver}.src.tar.xz -C "${srcdir}" || true # Rename Directories for pkg in llvm clang clang-tools-extra compiler-rt lld cmake third-party; do @@ -129,7 +132,7 @@ prepare() { done # Patch llvm - cd "${srcdir}/llvm" + cd "${srcdir}"/llvm apply_patch_with_msg \ "0001-Fix-GetHostTriple-for-mingw-w64-in-msys.patch" \ "0002-Fix-Findzstd-on-MINGW.patch" @@ -141,7 +144,7 @@ prepare() { fi # Patch clang - cd "${srcdir}/clang" + cd "${srcdir}"/clang if (( ! _clangprefix )); then apply_patch_with_msg \ @@ -152,18 +155,16 @@ prepare() { "0102-Rename-flang-new-flang-experimental-exec-to-flang.patch" # Patch lld - cd "${srcdir}/lld" + cd "${srcdir}"/lld apply_patch_with_msg \ "0303-ignore-new-bfd-options.patch" # Patch clang-tools-extra - cd "${srcdir}/clang-tools-extra" + cd "${srcdir}"/clang-tools-extra } build() { - cd "${srcdir}" - case "${CARCH}" in i?86|armv7) # lld needs all the address space it can get. @@ -179,28 +180,28 @@ build() { FFI_INCLUDE_DIR=$(echo $FFI_INCLUDE_DIR | sed 's|-I||g') if check_option "debug" "y"; then - common_cmake_args+=(-DCMAKE_BUILD_TYPE=Debug) + common_cmake_args+=(-DCMAKE_BUILD_TYPE=Debug + -DLLVM_ENABLE_ASSERTIONS=ON) VERBOSE="VERBOSE=1" else - common_cmake_args+=(-DCMAKE_BUILD_TYPE=MinSizeRel) + common_cmake_args+=(-DCMAKE_BUILD_TYPE=MinSizeRel + -DLLVM_ENABLE_ASSERTIONS=OFF + -DLLVM_ENABLE_DUMP=ON) fi common_cmake_args+=(-Wno-dev -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} -DCMAKE_SYSTEM_IGNORE_PATH=/usr/lib -DLLVM_HOST_TRIPLE="${CARCH}-w64-windows-gnu" - -DPython3_EXECUTABLE=${MINGW_PREFIX}/bin/python.exe - -DPython3_FIND_REGISTRY=NEVER - -DPython3_ROOT_DIR=${MINGW_PREFIX} - -DFFI_INCLUDE_DIR="${FFI_INCLUDE_DIR}" - -DLLVM_ENABLE_ASSERTIONS=OFF + -DLLVM_BUILD_STATIC=OFF + -DLLVM_BUILD_LLVM_DYLIB=ON + -DLLVM_LINK_LLVM_DYLIB=ON -DLLVM_ENABLE_FFI=ON + -DLLVM_ENABLE_THREADS=ON -DLLVM_INCLUDE_EXAMPLES=OFF -DLLVM_INCLUDE_BENCHMARKS=OFF -DLLVM_INCLUDE_TESTS=OFF - -DLLVM_BUILD_LLVM_DYLIB=ON - -DLLVM_BUILD_STATIC=OFF - -DLLVM_LINK_LLVM_DYLIB=ON - -DLLVM_ENABLE_THREADS=ON) + -DPython3_EXECUTABLE=${MINGW_PREFIX}/bin/python.exe + -DFFI_INCLUDE_DIR="${FFI_INCLUDE_DIR}") if [ "${_compiler}" == "clang" ]; then export CC='clang' @@ -216,7 +217,6 @@ build() { -DLLVM_ENABLE_PROJECTS="clang;compiler-rt" \ -DLLVM_BUILD_INSTRUMENTED=IR \ -DLLVM_TARGETS_TO_BUILD=Native \ - -DLLVM_NATIVE_TOOL_DIR=${MINGW_PREFIX}/bin \ -DCLANG_DEFAULT_RTLIB=compiler-rt \ -DCLANG_DEFAULT_UNWINDLIB=libunwind \ -DCLANG_DEFAULT_CXX_STDLIB=libc++ \ @@ -233,7 +233,6 @@ build() { -DCMAKE_CXX_COMPILER="${srcdir}"/build-${MSYSTEM}-instrument/bin/clang++.exe \ -DLLVM_ENABLE_PROJECTS="clang" \ -DLLVM_TARGETS_TO_BUILD=Native \ - -DLLVM_NATIVE_TOOL_DIR=${MINGW_PREFIX}/bin \ "${common_cmake_args[@]}" \ ../llvm # Drop profiles generated from running cmake; those are not representative. @@ -248,15 +247,17 @@ build() { # A bit hacky but it works local _clang_links="clang++;clang-cpp;as;c++;cc;cpp;${MINGW_CHOST}-cc;${MINGW_CHOST}-c++;${MINGW_CHOST}-clang;${MINGW_CHOST}-clang++" - platform_config+=(-DCLANG_DEFAULT_RTLIB=compiler-rt - -DCOMPILER_RT_USE_BUILTINS_LIBRARY=ON - -DCLANG_DEFAULT_UNWINDLIB=libunwind - -DCLANG_DEFAULT_CXX_STDLIB=libc++ + platform_config+=( -DLLVM_ENABLE_LIBCXX=ON - -DCLANG_DEFAULT_LINKER=lld -DLLVM_ENABLE_LLD=ON + -DLLVM_INSTALL_BINUTILS_SYMLINKS=ON + -DCLANG_DEFAULT_LINKER=lld + -DCLANG_DEFAULT_RTLIB=compiler-rt + -DCLANG_DEFAULT_UNWINDLIB=libunwind + -DCLANG_DEFAULT_CXX_STDLIB=libc++ -DCLANG_LINKS_TO_CREATE="${_clang_links}" - -DLLVM_INSTALL_BINUTILS_SYMLINKS=ON) + -DCOMPILER_RT_USE_BUILTINS_LIBRARY=ON + ) fi local _projects="clang;clang-tools-extra;compiler-rt;lld" @@ -266,9 +267,11 @@ build() { platform_config+=(-DCOMPILER_RT_BUILD_SANITIZERS=$( (( _clangprefix )) && echo "ON" || echo "OFF")) ;; armv7|aarch64) - platform_config+=(-DCOMPILER_RT_BUILD_MEMPROF=OFF + platform_config+=( + -DCOMPILER_RT_BUILD_MEMPROF=OFF -DCOMPILER_RT_BUILD_SANITIZERS=OFF - -DCOMPILER_RT_BUILD_XRAY=OFF) + -DCOMPILER_RT_BUILD_XRAY=OFF + ) ;; esac @@ -285,24 +288,17 @@ build() { MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \ ${MINGW_PREFIX}/bin/cmake.exe \ -GNinja \ - -DLIBCLANG_BUILD_STATIC=ON \ - -DLLD_DEFAULT_LD_LLD_IS_MINGW=ON \ -DLLVM_ENABLE_PROJECTS="${_projects}" \ -DLLVM_ENABLE_SPHINX=OFF \ -DLLVM_ENABLE_RTTI=ON \ -DLLVM_INSTALL_UTILS=ON \ + -DLIBCLANG_BUILD_STATIC=ON \ + -DLLD_DEFAULT_LD_LLD_IS_MINGW=ON \ "${common_cmake_args[@]}" \ "${platform_config[@]}" \ ../llvm ${MINGW_PREFIX}/bin/cmake.exe --build . - - # Disable automatic installation of components that go into subpackages - # -i.orig to check what has been removed in-case it starts dropping more than it should - # - sed -i.orig '/\(clang\|lld\)\/cmake_install.cmake/d' tools/cmake_install.cmake - sed -i.orig '/\(extra\|scan-build\|scan-build-py\|scan-view\)\/cmake_install.cmake/d' tools/clang/tools/cmake_install.cmake - sed -i.orig '/compiler-rt\/cmake_install.cmake/d' projects/cmake_install.cmake } @@ -322,14 +318,24 @@ package_clang() { "${MINGW_PACKAGE_PREFIX}-cc" \ || true )) - DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake --install "${srcdir}/build-${MSYSTEM}/tools/clang" + # Disable automatic installation of components that go into subpackages + # -i.orig to check what has been removed in-case it starts dropping more than it should + sed -i.orig '/\(extra\|scan-build\|scan-build-py\|scan-view\)\/cmake_install.cmake/d' build-${MSYSTEM}/tools/clang/tools/cmake_install.cmake + DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake --install "${srcdir}"/build-${MSYSTEM}/tools/clang + + install -Dm644 "${srcdir}"/clang/LICENSE.TXT "${pkgdir}"${MINGW_PREFIX}/share/licenses/clang/LICENSE - install -Dm644 "${srcdir}/clang/LICENSE.TXT" "${pkgdir}"${MINGW_PREFIX}/share/licenses/clang/LICENSE + # Install Python bindings + _site_packages=$(python -c "import site; print(site.getsitepackages()[0])") + site_packages=$(cygpath ${_site_packages}) + install -d "${pkgdir}"/${site_packages} + cp -a "${srcdir}"/clang/bindings/python/clang "${pkgdir}"/${site_packages} + ${MINGW_PREFIX}/bin/python -m compileall -o 0 -o 1 "${pkgdir}"/${site_packages} # Runtime libraries - rm -rf "${srcdir}/clang-libs" - mkdir -p "${srcdir}/clang-libs/${MINGW_PREFIX}/bin" - mv -f "${pkgdir}${MINGW_PREFIX}"/bin/libclang{,-cpp}.dll "${srcdir}/clang-libs/${MINGW_PREFIX}/bin" + rm -rf "${srcdir}"/clang-libs + mkdir -p "${srcdir}"/clang-libs/${MINGW_PREFIX}/bin + mv -f "${pkgdir}"${MINGW_PREFIX}/bin/libclang{,-cpp}.dll "${srcdir}"/clang-libs/${MINGW_PREFIX}/bin } package_clang-libs() { @@ -339,9 +345,9 @@ package_clang-libs() { "${MINGW_PACKAGE_PREFIX}-llvm-libs=${pkgver}") conflicts=("${MINGW_PACKAGE_PREFIX}-clang<17.0.6") - cp -r "${srcdir}/clang-libs/${MINGW_PREFIX}" "${pkgdir}${MINGW_PREFIX}" + cp -r "${srcdir}"/clang-libs/${MINGW_PREFIX} "${pkgdir}"${MINGW_PREFIX} - install -Dm644 "${srcdir}/clang/LICENSE.TXT" "${pkgdir}"${MINGW_PREFIX}/share/licenses/clang-libs/LICENSE + install -Dm644 "${srcdir}"/clang/LICENSE.TXT "${pkgdir}"${MINGW_PREFIX}/share/licenses/clang-libs/LICENSE } package_clang-analyzer() { @@ -352,13 +358,13 @@ package_clang-analyzer() { local _analyzer for _analyzer in scan-build scan-build-py scan-view; do - DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake --install "${srcdir}/build-${MSYSTEM}" --component ${_analyzer} + DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake --install "${srcdir}"/build-${MSYSTEM}/tools/clang/tools/${_analyzer} done # Compile Python scripts ${MINGW_PREFIX}/bin/python -m compileall -o 0 -o 1 "${pkgdir}"${MINGW_PREFIX}/lib/libscanbuild - install -Dm644 "${srcdir}/clang/LICENSE.TXT" "${pkgdir}"${MINGW_PREFIX}/share/licenses/clang-analyzer/LICENSE + install -Dm644 "${srcdir}"/clang/LICENSE.TXT "${pkgdir}"${MINGW_PREFIX}/share/licenses/clang-analyzer/LICENSE } package_clang-tools-extra() { @@ -366,7 +372,9 @@ package_clang-tools-extra() { url="https://clang.llvm.org/" depends=("${MINGW_PACKAGE_PREFIX}-clang=${pkgver}") - DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake --install "${srcdir}/build-${MSYSTEM}/tools/clang/tools/extra" + DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake --install "${srcdir}"/build-${MSYSTEM}/tools/clang/tools/extra + + install -Dm644 "${srcdir}"/clang-tools-extra/LICENSE.TXT "${pkgdir}"${MINGW_PREFIX}/share/licenses/clang-tools-extra/LICENSE } package_compiler-rt() { @@ -374,12 +382,14 @@ package_compiler-rt() { url="https://compiler-rt.llvm.org/" depends=($( (( _clangprefix )) || echo "${MINGW_PACKAGE_PREFIX}-gcc-libs")) - DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake --install "${srcdir}/build-${MSYSTEM}/projects/compiler-rt" - mkdir -p "${pkgdir}${MINGW_PREFIX}/bin/" - find "${pkgdir}${MINGW_PREFIX}/lib/clang/${_version%.[0-9].*}/lib/windows/" \ - -name '*.dll' -exec mv '{}' "${pkgdir}${MINGW_PREFIX}/bin/" \; + DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake --install "${srcdir}"/build-${MSYSTEM}/projects/compiler-rt + mkdir -p "${pkgdir}"${MINGW_PREFIX}/bin/ + find "${pkgdir}"${MINGW_PREFIX}/lib/clang/${_version%.[0-9].*}/lib/windows/ \ + -name '*.dll' -exec mv '{}' "${pkgdir}"${MINGW_PREFIX}/bin/ \; # remove bin dir we created if it is still empty - rmdir "${pkgdir}${MINGW_PREFIX}/bin/" 2>/dev/null || true + rmdir "${pkgdir}"${MINGW_PREFIX}/bin/ 2>/dev/null || true + + install -Dm644 "${srcdir}"/compiler-rt/LICENSE.TXT "${pkgdir}"${MINGW_PREFIX}/share/licenses/compiler-rt/LICENSE } package_gcc-compat() { @@ -388,11 +398,12 @@ package_gcc-compat() { depends=("${MINGW_PACKAGE_PREFIX}-clang=${pkgver}-${pkgrel}") provides=("${MINGW_PACKAGE_PREFIX}-gcc") conflicts=("${MINGW_PACKAGE_PREFIX}-gcc") + groups=() - mkdir -p "${pkgdir}${MINGW_PREFIX}/bin" + mkdir -p "${pkgdir}"${MINGW_PREFIX}/bin local _alias for _alias in gcc g++ ${MINGW_CHOST}-gcc ${MINGW_CHOST}-g++; do - cp -f "${srcdir}/build-${MSYSTEM}/bin/clang.exe" "${pkgdir}${MINGW_PREFIX}/bin/${_alias}.exe" + cp -f "${srcdir}"/build-${MSYSTEM}/bin/clang.exe "${pkgdir}"${MINGW_PREFIX}/bin/${_alias}.exe done } @@ -407,26 +418,30 @@ package_lld() { "${MINGW_PACKAGE_PREFIX}-binutils" \ || true)) - DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake --install "${srcdir}/build-${MSYSTEM}/tools/lld" + DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake --install "${srcdir}"/build-${MSYSTEM}/tools/lld if (( _clangprefix )); then - install -Dm755 "${pkgdir}${MINGW_PREFIX}/bin/lld.exe" "${pkgdir}${MINGW_PREFIX}/bin/ld.exe" + install -Dm755 "${pkgdir}"${MINGW_PREFIX}/bin/lld.exe "${pkgdir}"${MINGW_PREFIX}/bin/ld.exe fi + + install -Dm644 "${srcdir}"/lld/LICENSE.TXT "${pkgdir}"${MINGW_PREFIX}/share/licenses/lld/LICENSE } package_llvm() { pkgdesc="Low Level Virtual Machine (mingw-w64)" - depends=("${MINGW_PACKAGE_PREFIX}-llvm-libs") - - cd "${srcdir}"/llvm + depends=("${MINGW_PACKAGE_PREFIX}-llvm-libs=${pkgver}") - DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake --install "${srcdir}/build-${MSYSTEM}" + # Disable automatic installation of components that go into subpackages + # -i.orig to check what has been removed in-case it starts dropping more than it should + sed -i.orig '/\(clang\|lld\)\/cmake_install.cmake/d' build-${MSYSTEM}/tools/cmake_install.cmake + sed -i.orig '/compiler-rt\/cmake_install.cmake/d' build-${MSYSTEM}/projects/cmake_install.cmake + DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake --install build-${MSYSTEM} - install -Dm644 "${srcdir}/llvm/LICENSE.TXT" "${pkgdir}${MINGW_PREFIX}/share/licenses/llvm/LICENSE" + install -Dm644 "${srcdir}"/llvm/LICENSE.TXT "${pkgdir}"${MINGW_PREFIX}/share/licenses/llvm/LICENSE # Runtime libraries - rm -rf "${srcdir}/llvm-libs" - mkdir -p "${srcdir}/llvm-libs/${MINGW_PREFIX}/bin" - mv -f "${pkgdir}${MINGW_PREFIX}"/bin/lib{LLVM-*,LTO,Remarks}.dll "${srcdir}/llvm-libs/${MINGW_PREFIX}/bin" + rm -rf "${srcdir}"/llvm-libs + mkdir -p "${srcdir}"/llvm-libs/${MINGW_PREFIX}/bin + mv -f "${pkgdir}"${MINGW_PREFIX}/bin/lib{LLVM-*,LTO,Remarks}.dll "${srcdir}"/llvm-libs/${MINGW_PREFIX}/bin # Provide gcov on CLANG* if [[ ${MINGW_PACKAGE_PREFIX} == *-clang-* ]]; then @@ -440,21 +455,21 @@ package_llvm() { # fix cmake files. local PREFIX_WIN=$(cygpath -wm ${MINGW_PREFIX}) - sed -e "s|${PREFIX_WIN}|${MINGW_PREFIX}|g" -i ${pkgdir}/${MINGW_PREFIX}/lib/cmake/llvm/LLVMExports.cmake + sed -e "s|${PREFIX_WIN}|${MINGW_PREFIX}|g" -i "${pkgdir}"/${MINGW_PREFIX}/lib/cmake/llvm/LLVMExports.cmake } package_llvm-libs() { pkgdesc="Low Level Virtual Machine Runtime Libraries (mingw-w64)" - depends=("${MINGW_PACKAGE_PREFIX}-libffi" - "${MINGW_PACKAGE_PREFIX}-gcc-libs" - "${MINGW_PACKAGE_PREFIX}-zlib" + depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs" + "${MINGW_PACKAGE_PREFIX}-libffi" "${MINGW_PACKAGE_PREFIX}-libxml2" + "${MINGW_PACKAGE_PREFIX}-zlib" "${MINGW_PACKAGE_PREFIX}-zstd") conflicts=("${MINGW_PACKAGE_PREFIX}-llvm<16.0.2-2") - cp -r "${srcdir}/llvm-libs/${MINGW_PREFIX}" "${pkgdir}${MINGW_PREFIX}" + cp -r "${srcdir}"/llvm-libs/${MINGW_PREFIX} "${pkgdir}"${MINGW_PREFIX} - install -Dm644 "${srcdir}/llvm/LICENSE.TXT" "${pkgdir}${MINGW_PREFIX}/share/licenses/llvm-libs/LICENSE" + install -Dm644 "${srcdir}"/llvm/LICENSE.TXT "${pkgdir}"${MINGW_PREFIX}/share/licenses/llvm-libs/LICENSE } # template start; name=mingw-w64-splitpkg-wrappers; version=1.0; diff --git a/mingw-w64-clang/README-patches.md b/mingw-w64-llvm/README-patches.md similarity index 100% rename from mingw-w64-clang/README-patches.md rename to mingw-w64-llvm/README-patches.md diff --git a/mingw-w64-clang/update-clang-from-msys2.sh b/mingw-w64-llvm/update-clang-from-msys2.sh old mode 100644 new mode 100755 similarity index 90% rename from mingw-w64-clang/update-clang-from-msys2.sh rename to mingw-w64-llvm/update-clang-from-msys2.sh index 5c39723e2564c..8f575e80a9efe --- a/mingw-w64-clang/update-clang-from-msys2.sh +++ b/mingw-w64-llvm/update-clang-from-msys2.sh @@ -8,7 +8,7 @@ cleanup(){ rm -rf upstream } -pkgname=mingw-w64-clang +pkgname=mingw-w64-llvm old_pkgver="$(sed -ne 's/pkgver=\([.0-9]*\).*/\1/p' -e 's/_version=\([.0-9]*\).*/\1/p' < PKGBUILD)" old_pkgrel="$(sed -ne 's/pkgrel=\([0-9]*\).*/\1/p' < PKGBUILD)" @@ -49,7 +49,8 @@ mv upstream/$pkgname/README-patches.md ./ || die "$0: failed to replace existing sed -e "s/pkgrel=[.0-9]\+\(.*\)/pkgrel=$new_pkgrel\1/" \ -e 's/-DCMAKE_BUILD_TYPE=Release/-DCMAKE_BUILD_TYPE=MinSizeRel/' \ - -e 's/-DLLVM_TARGETS_TO_BUILD=[^)]*/-DLLVM_TARGETS_TO_BUILD=Native/' \ + -e 's/-DLLVM_TARGETS_TO_BUILD=[^)\\]*/-DLLVM_TARGETS_TO_BUILD=Native/' \ + -e 's/-DLLVM_TARGETS_TO_BUILD=Native\\/-DLLVM_TARGETS_TO_BUILD=Native \\/' \ -e 's/-DLLVM_ENABLE_SPHINX=ON/-DLLVM_ENABLE_SPHINX=OFF/'\ -e '/^check()/,/^}/d' \ -i PKGBUILD