[new-package] llvm-14 14.0.6

This commit is contained in:
مهدي شينون (Mehdi Chinoune)
2023-03-25 06:23:02 +01:00
parent 1595789f14
commit efed60fec2
8 changed files with 386 additions and 0 deletions

View File

@@ -0,0 +1,24 @@
From b47a00af69f3c662e54dc54e482fc9b0d4ba6480 Mon Sep 17 00:00:00 2001
From: Martell Malone <martellmalone@gmail.com>
Date: Sun, 28 Jun 2015 20:14:51 +0100
Subject: [PATCH 2/5] Fix GetHostTriple for mingw-w64 in msys
---
cmake/modules/GetHostTriple.cmake | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/cmake/modules/GetHostTriple.cmake b/cmake/modules/GetHostTriple.cmake
index 0cad1db4eff..47e9f986e15 100644
--- a/cmake/modules/GetHostTriple.cmake
+++ b/cmake/modules/GetHostTriple.cmake
@@ -16,7 +16,7 @@
else()
set( value "i686-pc-windows-msvc" )
endif()
- elseif( MINGW AND NOT MSYS )
+ elseif( MINGW )
# CMake doesn't provide COMPILER_ARCHITECTURE_ID for Clang/GCC,
# but it does for MSVC.
if( CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "ARM.*" )
2.13.3

View File

@@ -0,0 +1,28 @@
--- a/cmake/modules/LLVMInstallSymlink.cmake
+++ b/cmake/modules/LLVMInstallSymlink.cmake
@@ -6,17 +6,18 @@
function(install_symlink name target outdir)
set(DESTDIR $ENV{DESTDIR})
+ if(CMAKE_HOST_UNIX)
+ set(LINK_OR_COPY create_symlink)
+ else()
+ set(LINK_OR_COPY copy)
+ endif()
+
set(bindir "${DESTDIR}${CMAKE_INSTALL_PREFIX}/${outdir}")
message(STATUS "Creating ${name}")
execute_process(
- COMMAND "${CMAKE_COMMAND}" -E create_symlink "${target}" "${name}"
- WORKING_DIRECTORY "${bindir}" ERROR_VARIABLE has_err)
- if(CMAKE_HOST_WIN32 AND has_err)
- execute_process(
- COMMAND "${CMAKE_COMMAND}" -E copy "${target}" "${name}"
- WORKING_DIRECTORY "${bindir}")
- endif()
+ COMMAND "${CMAKE_COMMAND}" -E ${LINK_OR_COPY} "${target}" "${name}"
+ WORKING_DIRECTORY "${bindir}")
endfunction()

View File

@@ -0,0 +1,26 @@
From 9102055df75457e1194008ce6152221112a785ad Mon Sep 17 00:00:00 2001
From: Mateusz Mikula <mati865@gmail.com>
Date: Tue, 14 Mar 2017 17:50:29 +0100
Subject: [PATCH 5/5] add pthread as system lib for mingw
---
lib/Support/CMakeLists.txt | 3 +++
1 file changed, 3 insertions(+)
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)
# 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)
+ if( MINGW )
+ set(system_libs ${system_libs} pthread)
+ endif()
elseif( CMAKE_HOST_UNIX )
if( HAVE_LIBRT )
set(system_libs ${system_libs} rt)
--
2.13.3

View File

@@ -0,0 +1,11 @@
--- llvm-10.0.0.src/include/llvm/ADT/Triple.h.orig 2020-05-15 15:49:40.073000000 +0200
+++ llvm-10.0.0.src/include/llvm/ADT/Triple.h 2020-05-15 20:51:29.844520400 +0200
@@ -809,7 +809,7 @@
/// Tests whether the target uses emulated TLS as default.
bool hasDefaultEmulatedTLS() const {
- return isAndroid() || isOSOpenBSD() || isWindowsCygwinEnvironment();
+ return isAndroid() || isOSOpenBSD() || isOSCygMing();
}
/// Tests whether the target uses -data-sections as default.

View File

@@ -0,0 +1,25 @@
From eef37f2d89e72954645f4f3583227df74c841a84 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Mateusz=20Miku=C5=82a?= <mati865@gmail.com>
Date: Sun, 18 Sep 2022 13:17:16 +0200
Subject: [PATCH] List memrchr as unavailable on Windows
Otherwise LLVM will optimize strrchr into memrchr causing linker error
---
lib/Analysis/TargetLibraryInfo.cpp | 1 +
1 file changed, 1 insertion(+)
diff --git a/lib/Analysis/TargetLibraryInfo.cpp b/lib/Analysis/TargetLibraryInfo.cpp
index 75b57e75fdd0..40f0cf39d7d6 100644
--- a/lib/Analysis/TargetLibraryInfo.cpp
+++ b/lib/Analysis/TargetLibraryInfo.cpp
@@ -439,6 +439,7 @@ static void initialize(TargetLibraryInfoImpl &TLI, const Triple &T,
TLI.setUnavailable(LibFunc_htons);
TLI.setUnavailable(LibFunc_lchown);
TLI.setUnavailable(LibFunc_lstat);
+ TLI.setUnavailable(LibFunc_memrchr);
TLI.setUnavailable(LibFunc_ntohl);
TLI.setUnavailable(LibFunc_ntohs);
TLI.setUnavailable(LibFunc_pread);
--
2.37.3.windows.1

View File

@@ -0,0 +1,25 @@
From 9498118b65fa150f074efb52b4507b53434a90ad Mon Sep 17 00:00:00 2001
From: Mateusz Mikula <mati865@gmail.com>
Date: Thu, 2 Feb 2017 12:33:51 +0100
Subject: [PATCH 4/6] link pthread with mingw
---
lib/Driver/ToolChains/MinGW.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/Driver/ToolChains/MinGW.cpp b/lib/Driver/ToolChains/MinGW.cpp
index 632b76d92b..23da2d6376 100644
--- a/lib/Driver/ToolChains/MinGW.cpp
+++ b/lib/Driver/ToolChains/MinGW.cpp
@@ -265,7 +265,7 @@
if (Args.hasArg(options::OPT_pg))
CmdArgs.push_back("-lgmon");
- if (Args.hasArg(options::OPT_pthread))
+ if (!Args.hasArg(options::OPT_no_pthread))
CmdArgs.push_back("-lpthread");
if (Sanitize.needsAsanRt()) {
--
2.14.1

View File

@@ -0,0 +1,30 @@
diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp
index 74c14fed6575..44ffd22b921f 100644
--- a/lib/CodeGen/CodeGenModule.cpp
+++ b/lib/CodeGen/CodeGenModule.cpp
@@ -1143,7 +1143,7 @@ static bool shouldAssumeDSOLocal(const CodeGenModule &CGM,
// such variables can't be marked as DSO local. (Native TLS variables
// can't be dllimported at all, though.)
if (GV->isDeclarationForLinker() && isa<llvm::GlobalVariable>(GV) &&
- (!GV->isThreadLocal() || CGM.getCodeGenOpts().EmulatedTLS))
+ (!GV->isThreadLocal() || CGM.useEmulatedTLS()))
return false;
}
diff --git a/clang/lib/CodeGen/CodeGenModule.h b/clang/lib/CodeGen/CodeGenModule.h
index f57afdca4942..b10c392dc1bb 100644
--- a/lib/CodeGen/CodeGenModule.h
+++ b/lib/CodeGen/CodeGenModule.h
@@ -746,6 +746,12 @@ public:
const TargetCodeGenInfo &getTargetCodeGenInfo();
+ bool useEmulatedTLS() const {
+ if (CodeGenOpts.ExplicitEmulatedTLS)
+ return CodeGenOpts.EmulatedTLS;
+ return getTriple().hasDefaultEmulatedTLS();
+ }
+
CodeGenTypes &getTypes() { return Types; }
CodeGenVTables &getVTables() { return VTables; }

217
mingw-w64-llvm-14/PKGBUILD Normal file
View File

@@ -0,0 +1,217 @@
# Maintainer: Martell Malone <martellmalone@gmail.com>
# Maintainer: Alexey Pavlov <alexpux@gmail.com>
# Contributor: Ray Donnelly <mingw.android@gmail.com>
# Contributor: Mateusz Mikuła <mati865@gmail.com>
# Contributor: wirx6 <wirx654@gmail.com>
# Contributor: Yuui Tanabe <yuuitanabe@163.com>
# Contributor: Oscar Fuentes <ofv@wanadoo.es>
# Contributor: Adrian Pop <adrian.pop@liu.se>
if [[ $MINGW_PACKAGE_PREFIX == *-clang-* ]]; then
_clangprefix=1
fi
_realname=llvm
pkgbase=mingw-w64-${_realname}-14
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}-14"
"${MINGW_PACKAGE_PREFIX}-clang-14")
pkgver=14.0.6
pkgrel=1
pkgdesc="C language family frontend for LLVM (mingw-w64)"
arch=('any')
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64')
url="https://llvm.org/"
license=("custom:Apache 2.0 with LLVM Exception")
makedepends=("${MINGW_PACKAGE_PREFIX}-cc"
"${MINGW_PACKAGE_PREFIX}-cmake"
"${MINGW_PACKAGE_PREFIX}-ninja"
"${MINGW_PACKAGE_PREFIX}-pkg-config"
"${MINGW_PACKAGE_PREFIX}-z3"
"${MINGW_PACKAGE_PREFIX}-libffi"
"${MINGW_PACKAGE_PREFIX}-python-sphinx"
"${MINGW_PACKAGE_PREFIX}-python"
"git"
)
_url=https://github.com/llvm/llvm-project/releases/download/llvmorg-${pkgver}
# libunwind: # https://bugs.llvm.org/show_bug.cgi?id=49228
source=("${_url}/llvm-${pkgver}.src.tar.xz"{,.sig}
"${_url}/clang-${pkgver}.src.tar.xz"{,.sig}
"0001-Fix-GetHostTriple-for-mingw-w64-in-msys.patch"
"0002-Revert-CMake-try-creating-symlink-first-on-windows.patch"
"0003-add-pthread-as-system-lib-for-mingw.patch"
"0004-enable-emutls-for-mingw.patch"
"0101-link-pthread-with-mingw.patch"
"0102-fix-emulated-tls.patch")
# Some patch notes :)
#0001-0099 -> llvm
#0101-0199 -> clang
sha256sums=('050922ecaaca5781fdf6631ea92bc715183f202f9d2f15147226f023414f619a'
'SKIP'
'2b5847b6a63118b9efe5c85548363c81ffe096b66c3b3675e953e26342ae4031'
'SKIP'
'eb03df53671df6627768141b3aaa76abe176a14e5e47911c97bec544387c4aff'
'efed1bd36c0d4295d4e4439987771e004ef5d232ce6e6f345d535baab945fd23'
'7f0c64cd87b61e894be632f180ae5291e1aa9f1d9d382608f659067eeeda7146'
'3837bd707d3d99a742e874d5c59a1e7d5502811d6926319974c5d9db86020039'
'715cb8862753854b2d9256e0b70003e2d1f57083d83eaeaf5a095fc72b8a4e26'
'3a58bd5243fb082df64c90bd9a4f00c698317f20365d11bbe30fac5dfccd215e')
validpgpkeys=('B6C8F98282B944E3B0D5C2530FC3042E345AD05D' # Hans Wennborg, Google.
'474E22316ABF4785A88C6E8EA2C794A986419D8A') # Tom Stellard
noextract=(clang-${pkgver}.src.tar.xz)
apply_patch_with_msg() {
for _patch in "$@"
do
msg2 "Applying ${_patch}"
patch -Nbp1 -i "${srcdir}/${_patch}"
done
}
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
# Rename Directories
for pkg in llvm clang; do
mv ${pkg}-$pkgver.src ${pkg}
done
# Patch llvm
cd "${srcdir}/llvm"
apply_patch_with_msg \
"0001-Fix-GetHostTriple-for-mingw-w64-in-msys.patch" \
"0002-Revert-CMake-try-creating-symlink-first-on-windows.patch"
if (( ! _clangprefix )); then
apply_patch_with_msg \
"0003-add-pthread-as-system-lib-for-mingw.patch" \
"0004-enable-emutls-for-mingw.patch"
fi
# Patch clang
cd "${srcdir}/clang"
if (( ! _clangprefix )); then
apply_patch_with_msg \
"0101-link-pthread-with-mingw.patch"
fi
# https://github.com/msys2/MINGW-packages/pull/12550#issuecomment-1228506687
apply_patch_with_msg \
"0102-fix-emulated-tls.patch"
}
build() {
cd "${srcdir}"
case "${CARCH}" in
i?86|armv7)
# lld needs all the address space it can get.
LDFLAGS+=" -Wl,--large-address-aware"
;;
esac
local -a platform_config
local -a common_cmake_args
if check_option "debug" "y"; then
common_cmake_args+=(-DCMAKE_BUILD_TYPE=Debug)
VERBOSE="VERBOSE=1"
else
common_cmake_args+=(-DCMAKE_BUILD_TYPE=Release)
fi
common_cmake_args+=(-Wno-dev
-DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX}/opt/llvm-14
-DCMAKE_INSTALL_LIBDIR=lib
-DCMAKE_SYSTEM_IGNORE_PATH=/usr/lib
-DLLVM_HOST_TRIPLE="${CARCH}-w64-windows-gnu"
-DPython3_EXECUTABLE=${MINGW_PREFIX}/bin/python.exe)
# Include location of libffi headers in CPPFLAGS
FFI_INCLUDE_DIR="$(pkg-config --cflags libffi)"
FFI_INCLUDE_DIR=$(echo $FFI_INCLUDE_DIR | sed 's|-I||g')
if (( _clangprefix )); then
platform_config+=(-DCLANG_DEFAULT_RTLIB=compiler-rt
-DCLANG_DEFAULT_UNWINDLIB=libunwind
-DCLANG_DEFAULT_CXX_STDLIB=libc++
-DLLVM_ENABLE_LIBCXX=ON
-DCLANG_DEFAULT_LINKER=lld
-DLLVM_ENABLE_LLD=ON)
fi
local _projects="clang"
platform_config+=(-DLLVM_TARGETS_TO_BUILD="AArch64;X86")
mkdir -p build-${MSYSTEM} && cd build-${MSYSTEM}
MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \
${MINGW_PREFIX}/bin/cmake.exe \
-GNinja \
-DFFI_INCLUDE_DIR="${FFI_INCLUDE_DIR}" \
-DLIBCLANG_BUILD_STATIC=ON \
-DLLVM_BUILD_STATIC=ON \
-DLLVM_ENABLE_ASSERTIONS=OFF \
-DLLVM_ENABLE_FFI=ON \
-DLLVM_ENABLE_PROJECTS="${_projects}" \
-DLLVM_ENABLE_SPHINX=ON \
-DLLVM_ENABLE_THREADS=ON \
-DLLVM_INCLUDE_EXAMPLES=OFF \
-DLLVM_INCLUDE_BENCHMARKS=OFF \
-DLLVM_INCLUDE_TESTS=OFF \
-DLLVM_INCLUDE_UTILS=OFF \
"${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\/cmake_install.cmake/d' tools/cmake_install.cmake
}
package_clang-14() {
pkgdesc="C language family frontend for LLVM (mingw-w64)"
url="https://clang.llvm.org/"
depends=("${MINGW_PACKAGE_PREFIX}-llvm-14"
$( ((_clangprefix)) && echo \
"${MINGW_PACKAGE_PREFIX}-crt" \
"${MINGW_PACKAGE_PREFIX}-headers" \
"${MINGW_PACKAGE_PREFIX}-lld" \
"${MINGW_PACKAGE_PREFIX}-winpthreads" \
|| echo "${MINGW_PACKAGE_PREFIX}-gcc"))
${MINGW_PREFIX}/bin/cmake --install "${srcdir}/build-${MSYSTEM}/tools/clang" --prefix "${pkgdir}${MINGW_PREFIX}"/opt/llvm-14
}
package_llvm-14() {
pkgdesc="Low Level Virtual Machine (mingw-w64)"
depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs")
DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake --install "${srcdir}/build-${MSYSTEM}"
install -Dm644 "${srcdir}/llvm/LICENSE.TXT" "${pkgdir}${MINGW_PREFIX}/opt/llvm-14/share/licenses/llvm/LICENSE"
# Install CMake stuff
install -d "${pkgdir}"${MINGW_PREFIX}/opt/llvm-14/share/llvm/cmake/{modules,platforms}
install -Dm644 "${srcdir}"/llvm/cmake/modules/*.cmake "${pkgdir}"${MINGW_PREFIX}/opt/llvm-14/share/llvm/cmake/modules/
install -Dm644 "${srcdir}"/llvm/cmake/platforms/*.cmake "${pkgdir}"${MINGW_PREFIX}/opt/llvm-14/share/llvm/cmake/platforms/
# fix cmake files.
local PREFIX_WIN=$(cygpath -wm ${MINGW_PREFIX})
sed -e "s|${PREFIX_WIN}|${MINGW_PREFIX}|g" -i ${pkgdir}/${MINGW_PREFIX}/opt/llvm-14/lib/cmake/llvm/LLVMExports.cmake
}
# template start; name=mingw-w64-splitpkg-wrappers; version=1.0;
# vim: set ft=bash :
# generate wrappers
for _name in "${pkgname[@]}"; do
_short="package_${_name#${MINGW_PACKAGE_PREFIX}-}"
_func="$(declare -f "${_short}")"
eval "${_func/#${_short}/package_${_name}}"
done
# template end;