blob: 0680df82697781e2fa0838014532b05651a4827e (
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
|
# Maintainer: Felix Schindler <aur at felixschindler dot net>
# Contributor: Evangelos Foutras <evangelos@foutrelis.com>
# Contributor: Jan "heftig" Steffens <jan.steffens@gmail.com>
pkgname=clang8
_pkgname=clang
pkgver=8.0.1
pkgrel=1
pkgdesc="C language family frontend for LLVM (8.x)"
arch=('x86_64')
url="https://clang.llvm.org/"
license=('custom:University of Illinois/NCSA Open Source License')
depends=('llvm8-libs' 'gcc' 'compiler-rt8')
makedepends=('gcc8' 'llvm8' 'cmake' 'ninja' 'python-sphinx' 'python2')
optdepends=('openmp: OpenMP support in clang with -fopenmp'
'python: for scan-view and git-clang-format'
'llvm8: referenced by some clang headers')
provides=("$_pkgname=$pkgver" "clang-analyzer=$pkgver" "clang-tools-extra=$pkgver")
conflicts=("$_pkgname" 'clang-analyzer' 'clang-tools-extra')
replaces=("$_pkgname" 'clang-analyzer' 'clang-tools-extra')
source=(https://github.com/llvm/llvm-project/releases/download/llvmorg-$pkgver/cfe-$pkgver.src.tar.xz
https://github.com/llvm/llvm-project/releases/download/llvmorg-$pkgver/clang-tools-extra-$pkgver.src.tar.xz
https://github.com/llvm/llvm-project/releases/download/llvmorg-$pkgver/llvm-$pkgver.src.tar.xz
0001-OpenCL-Change-type-of-block-pointer-for-OpenCL.patch
0002-OpenCL-Simplify-LLVM-IR-generated-for-OpenCL-blocks.patch
0003-OpenCL-Fix-assertion-due-to-blocks.patch
clang-doc-build-as-clang_tool.patch
0001-Fix-uninitialized-value-in-ABIArgInfo.patch
enable-SSP-and-PIE-by-default.patch)
sha256sums=('70effd69f7a8ab249f66b0a68aba8b08af52aa2ab710dfb8a0fba102685b1646'
'187179b617e4f07bb605cc215da0527e64990b4a7dd5cbcc452a16b64e02c3e1'
'44787a6d02f7140f145e2250d56c9f849334e11f9ae379827510ed72f12b75e7'
'fbb6d3c8135942e458bcad8882605a623bcd09bdec488eb0800e3afee0061e3a'
'91c49139e02c6d29f6201aa394868939b991b39b84215c082392ea96fbd8c334'
'191434810b5298331908ea1e193203e8441693da900238344e946ee6a79dad31'
'1dfa5f93c0c084b8a25ca79ef9e2fe63a476826629e8ef366e0a6eaf5fa10625'
'b7f31bcf03255f6a9b51b02935648e015ea538a0eef0b0c6d9c052fc5accb0c4'
'58f86da25eb230ed6d423b5b61870cbf3bef88f38103ca676a2c7f34b2372171')
validpgpkeys+=('B6C8F98282B944E3B0D5C2530FC3042E345AD05D') # Hans Wennborg <hans@chromium.org>
validpgpkeys+=('474E22316ABF4785A88C6E8EA2C794A986419D8A') # Tom Stellard <tstellar@redhat.com>
prepare() {
cd "$srcdir/cfe-$pkgver.src"
mkdir build
mv "$srcdir/clang-tools-extra-$pkgver.src" tools/extra
patch -Np1 -i ../enable-SSP-and-PIE-by-default.patch
# The following patch was reverted upstream because it triggered an ICE with
# GCC 7; however, we need it to pass the test suite when building with GCC 9
# https://bugs.llvm.org/show_bug.cgi?id=40547
patch -Np1 -i ../0001-Fix-uninitialized-value-in-ABIArgInfo.patch
# Backported patches for intel-opencl-clang and intel-compute-runtime
patch -Np1 -i ../0001-OpenCL-Change-type-of-block-pointer-for-OpenCL.patch
patch -Np1 -i ../0002-OpenCL-Simplify-LLVM-IR-generated-for-OpenCL-blocks.patch
patch -Np1 -i ../0003-OpenCL-Fix-assertion-due-to-blocks.patch
# Fix inclusion of /usr/bin/clang-doc
patch -Np1 -d tools/extra <../clang-doc-build-as-clang_tool.patch
}
build() {
cd "$srcdir/cfe-$pkgver.src/build"
export CC=cc-8
export CXX=c++-8
cmake .. -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr \
-DPYTHON_EXECUTABLE=/usr/bin/python \
-DBUILD_SHARED_LIBS=ON \
-DLLVM_LINK_LLVM_DYLIB=ON \
-DLLVM_ENABLE_RTTI=ON \
-DLLVM_BUILD_TESTS=ON \
-DLLVM_INCLUDE_DOCS=ON \
-DLLVM_BUILD_DOCS=ON \
-DLLVM_ENABLE_SPHINX=ON \
-DSPHINX_WARNINGS_AS_ERRORS=OFF \
-DLLVM_EXTERNAL_LIT=/usr/bin/lit \
-DLLVM_MAIN_SRC_DIR="$srcdir/llvm-$pkgver.src" \
-DLLVM_CMAKE_PATH="$srcdir/llvm-$pkgver.src/cmake/modules"
ninja
}
# There are 5 unexpected failures (which is not good!), but what to do about them?
#check() {
# cd "$srcdir/cfe-$pkgver.src/build"
# ninja check-clang{,-tools}
#}
_python2_optimize() {
python2 -m compileall "$@"
python2 -O -m compileall "$@"
}
_python3_optimize() {
python3 -m compileall "$@"
python3 -O -m compileall "$@"
python3 -OO -m compileall "$@"
}
package() {
cd "$srcdir/cfe-$pkgver.src/build"
DESTDIR="$pkgdir" ninja install
install -Dm644 ../LICENSE.TXT "$pkgdir/usr/share/licenses/$_pkgname/LICENSE"
# Remove documentation sources
rm -r "$pkgdir"/usr/share/doc/clang{,-tools}/html/{_sources,.buildinfo}
# Move analyzer scripts out of /usr/libexec
mv "$pkgdir"/usr/libexec/{ccc,c++}-analyzer "$pkgdir/usr/lib/clang/"
rmdir "$pkgdir/usr/libexec"
sed -i 's|libexec|lib/clang|' "$pkgdir/usr/bin/scan-build"
# Install Python bindings
for _py in 2.7 3.7; do
install -d "$pkgdir/usr/lib/python$_py/site-packages"
cp -a ../bindings/python/clang "$pkgdir/usr/lib/python$_py/site-packages/"
_python${_py%%.*}_optimize "$pkgdir/usr/lib/python$_py"
done
# Fix shebang in Python 2 script
sed -i '1s|/usr/bin/env python$|&2|' \
"$pkgdir"/usr/share/$_pkgname/run-find-all-symbols.py
# Compile Python scripts
_python2_optimize "$pkgdir/usr/share/clang"
_python3_optimize "$pkgdir/usr/share" -x 'clang-include-fixer|run-find-all-symbols'
}
# vim:set ts=2 sw=2 et:
|