blob: 7c4a0d4ba872cf824eb5be28466b68a8e5e923c2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
# shellcheck shell=bash
# Maintainer: William Horvath <william at horvath dot blog>
pkgname=llvm-mingw
pkgver=19.1.7+20250114
pkgrel=1
# This controls the version we will pull.
_tag="20250114"
pkgdesc="A self-contained LLVM/Clang/LLD based mingw-w64 toolchain for i686 and x86_64 targets"
arch=('x86_64')
url="https://github.com/mstorsjo/${pkgname}"
license=(
'LicenseRef-custom'
'ZPL-2.1'
'GPL-3.0'
'GPL-3.0-with-GCC-exception'
'GFDL-1.3-or-later'
'Apache-2.0 WITH LLVM-exception'
'custom:ISC'
)
depends=(
'gcc-libs'
'glibc'
'zlib'
'libffi'
'libedit'
'ncurses'
'libxml2'
'bash'
)
makedepends=(
'cmake>=3.20.0'
'ninja'
'python'
'git'
'libxml2'
'zlib'
'xz'
'swig'
'lua53'
'doxygen'
'perl'
)
optdepends=('wine: for running Windows executables')
groups=('mingw-w64-toolchain' 'mingw-w64') # not sure...
provides=( # what to do here?
'mingw-w64-gcc'
'mingw-w64-clang'
'mingw-w64-binutils'
'mingw-w64-tools'
'mingw-w64-crt'
'mingw-w64-headers'
'mingw-w64-winpthreads'
'mingw-w64-winstorecompat'
'llvm-mingw-w64-toolchain'
)
options=('staticlibs' '!buildflags' '!emptydirs')
source=(
"git+${url}#tag=${_tag}"
"git+https://github.com/llvm/llvm-project.git#tag=llvmorg-${pkgver%'+'"$_tag"}"
)
sha256sums=('f3de01627afe67ba5427681ed33d7258fda90fc5b9b87728e21e58f0daca1deb'
'f6c754bd1b8d7da76f357a539ff8175f214b7dc1b52391a0fe75cfb9a57f28dd')
pkgver() {
# This looks to be where the maintainer (Martin Storsjö) does version bumps
llvmver="$(grep -e "LLVM_VERSION:=" "${srcdir}/${pkgname}"/build-llvm.sh | sed 's/.*-\([0-9.]*\).*/\1/')"
printf '%s+%s' "${llvmver}" "${_tag}"
}
prepare() {
cd "${srcdir}/${pkgname}"
chmod +x build-all.sh
chmod +x build-llvm.sh
rm -rf "${srcdir}/llvm-mingw/llvm-project"
ln -srf "${srcdir}/llvm-project" "${srcdir}/llvm-mingw/"
}
build() {
cd "${srcdir}/${pkgname}"
# Never pop Wine prefix dialog during mingw configure
export DISPLAY=
# Configure to build only i686 and x86_64 targets (default builds i686, x86_64, armv7, aarch64)
export TOOLCHAIN_ARCHS="i686 x86_64"
# Flags from GH Actions workflow
export LLVM_CMAKEFLAGS="-DLLVM_ENABLE_LIBXML2=OFF -DLLVM_ENABLE_TERMINFO=OFF -DLLDB_ENABLE_PYTHON=OFF"
./build-all.sh "${srcdir}/install/llvm-mingw"
}
package() {
cd "${srcdir}"
install -d "${pkgdir}/opt"
cp -r install/llvm-mingw "${pkgdir}/opt/"
install -d "${pkgdir}/etc/profile.d"
echo 'export PATH="${PATH}:/opt/llvm-mingw/bin"' >"${pkgdir}/etc/profile.d/llvm-mingw.sh"
## llvm-mingw license
install -Dm644 "${srcdir}/${pkgname}/LICENSE.txt" \
"${pkgdir}/usr/share/licenses/${pkgname}/LICENSE.llvm-mingw.txt" # ISC
## llvm/llvm-libs license
install -Dm644 "${srcdir}/${pkgname}/llvm-project/LICENSE.TXT" \
"${pkgdir}/usr/share/licenses/${pkgname}/LICENSE.llvm.txt" # Apache-2.0 WITH LLVM-exception
## MinGW licenses
install -Dm644 "${srcdir}/${pkgname}/mingw-w64/COPYING" \
"${pkgdir}/usr/share/licenses/${pkgname}/COPYING.MinGW-w64-meta.txt" # ZPL
install -Dm644 "${srcdir}/${pkgname}/mingw-w64/COPYING.MinGW-w64/COPYING.MinGW-w64.txt" \
"${pkgdir}/usr/share/licenses/${pkgname}/COPYING.MinGW-w64.txt" # ?
install -Dm644 "${srcdir}/${pkgname}/mingw-w64/COPYING.MinGW-w64-runtime/COPYING.MinGW-w64-runtime.txt" \
"${pkgdir}/usr/share/licenses/${pkgname}/COPYING.MinGW-w64-runtime.txt" # ?
install -Dm644 "${srcdir}/${pkgname}/mingw-w64/mingw-w64-crt/profile/COPYING" \
"${pkgdir}/usr/share/licenses/${pkgname}/COPYING.profile.txt"
install -Dm644 "${srcdir}/${pkgname}/mingw-w64/mingw-w64-libraries/libmangle/COPYING" \
"${pkgdir}/usr/share/licenses/${pkgname}/COPYING.libmangle.txt"
install -Dm644 "${srcdir}/${pkgname}/mingw-w64/mingw-w64-libraries/pseh/COPYING" \
"${pkgdir}/usr/share/licenses/${pkgname}/COPYING.pseh.txt"
install -Dm644 "${srcdir}/${pkgname}/mingw-w64/mingw-w64-libraries/winpthreads/COPYING" \
"${pkgdir}/usr/share/licenses/${pkgname}/COPYING.winpthreads.txt"
install -Dm644 "${srcdir}/${pkgname}/mingw-w64/mingw-w64-libraries/winstorecompat/COPYING" \
"${pkgdir}/usr/share/licenses/${pkgname}/COPYING.winstorecompat.txt"
install -Dm644 "${srcdir}/${pkgname}/mingw-w64/mingw-w64-tools/gendef/COPYING" \
"${pkgdir}/usr/share/licenses/${pkgname}/COPYING.gendef.txt"
install -Dm644 "${srcdir}/${pkgname}/mingw-w64/mingw-w64-tools/genidl/COPYING" \
"${pkgdir}/usr/share/licenses/${pkgname}/COPYING.genidl.txt"
install -Dm644 "${srcdir}/${pkgname}/mingw-w64/mingw-w64-tools/genpeimg/COPYING" \
"${pkgdir}/usr/share/licenses/${pkgname}/COPYING.genpeimg.txt"
## cleanup
find "${pkgdir}/opt/llvm-mingw" -name '*.exe.manifest' -delete
find "${pkgdir}/opt/llvm-mingw" -name '*.la' -delete
find "${pkgdir}/opt/llvm-mingw" -type f '(' -name '*COPYING*' -o -name '*LICENSE*' ')' -delete
## To strip or not to strip, that is the question
}
|