blob: e4324f860278b0de50dea799204af67bce225d8a (
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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
|
# Contributor Eric Molitor <eric@molitor.org>
# Contributor Patrick Gansterer <paroga@paroga.com>
# Contributor Travis Tilley <ttilley@gmail.com>
# Contributor omni <omni+alpine@hack.org>
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=clang
# Note: Update together with llvm.
pkgver=11.1.0
pkgrel=2
_llvmver=${pkgver%%.*}
pkgdesc="A C language family front-end for LLVM"
arch="all"
url="https://llvm.org/"
license="Apache-2.0"
options="!check" # fail to build
makedepends="
cmake
isl-dev
libedit-dev
libexecinfo-dev
libxml2-dev
libxml2-utils
llvm$_llvmver-dev
llvm$_llvmver-static
llvm$_llvmver-test-utils
samurai
python3
py3-sphinx
"
checkdepends="diffutils bash gtest-dev"
depends_dev="$pkgname=$pkgver-r$pkgrel $pkgname-extra-tools=$pkgver-r$pkgrel"
subpackages="$pkgname-static $pkgname-dev $pkgname-doc $pkgname-libs
$pkgname-analyzer::noarch
$pkgname-extra-tools:extra
py3-$pkgname:python:noarch
"
source="https://github.com/llvm/llvm-project/releases/download/llvmorg-$pkgver/clang-$pkgver.src.tar.xz
https://github.com/llvm/llvm-project/releases/download/llvmorg-$pkgver/clang-tools-extra-$pkgver.src.tar.xz
10-add-musl-triples.patch
20-Enable-stack-protector-by-default-for-Alpine-Linux.patch
40-fix-ld-name-on-x86.patch
"
builddir="$srcdir/clang-$pkgver.src"
prepare() {
mv "$srcdir/clang-tools-extra-$pkgver.src" "$builddir/tools/extra"
# Substitute python hashbangs with python3.
# Some scripts do not have a *.py postfix, thus iterate over all files.
grep -l -R "^#!/usr/bin/env python$" . | while read f; do
sed -i "$f" -e 's|^#!/usr/bin/env python$|&3|'
done
default_prepare
}
build() {
mkdir -p "$builddir"/build
cd "$builddir"/build
python_version=$(python3 -V | sed 's/.*\([0-9]\{1,\}\.[0-9]\{1,\}\)\..*/\1/')
# NOTE: DO NOT change `CMAKE_BUILD_TYPE`! Buildmodes like `None` will enable
# debug assertions for LLVM!
cmake .. -G Ninja -Wno-dev \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_FLAGS_RELEASE_INIT="$CFLAGS -O2" \
-DCMAKE_CXX_FLAGS_RELEASE_INIT="$CXXFLAGS" \
-DCMAKE_EXE_LINKER_FLAGS_RELEASE_INIT="$LDFLAGS -Wl,-z,stack-size=2097152" \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_VERBOSE_MAKEFILE=OFF \
-DCLANG_VENDOR=Alpine \
-DLLVM_EXTERNAL_LIT=/usr/bin/lit \
-DCLANG_BUILD_EXAMPLES=OFF \
-DCLANG_INCLUDE_DOCS=ON \
-DCLANG_PYTHON_BINDINGS_VERSIONS="$python_version" \
-DLLVM_BUILD_DOCS=ON \
-DLLVM_ENABLE_SPHINX=ON \
-DSPHINX_WARNINGS_AS_ERRORS=OFF \
-DCLANG_INCLUDE_TESTS=ON \
-DCLANG_PLUGIN_SUPPORT=ON \
-DLIBCLANG_BUILD_STATIC=ON \
-DLLVM_ENABLE_EH=ON \
-DLLVM_ENABLE_RTTI=ON
ninja clang-tblgen
ninja
}
check() {
ninja -C build check-all
}
package() {
DESTDIR="$pkgdir" ninja -C build install
install -m 644 build/lib/libclang.a "$pkgdir"/usr/lib
}
static() {
pkgdesc="Static libraries for clang"
mkdir -p "$subpkgdir"/usr/lib
mv "$pkgdir"/usr/lib/*.a "$subpkgdir"/usr/lib/
}
dev() {
default_dev
# move back usr/lib/clang/x.y.z/include with files such as altivec.h, msa.h etc
# these are needed to build programs *with* clang, not *against* it.
mv "$subpkgdir"/usr/lib/clang "$pkgdir"/usr/lib/
}
analyzer() {
pkgdesc="Clang source code analysis framework"
depends="$pkgname=$pkgver-r$pkgrel perl python3"
cd "$pkgdir"
install -dm0755 \
"$subpkgdir"/usr/bin \
"$subpkgdir"/usr/libexec \
"$subpkgdir"/usr/share
mv usr/bin/scan-* "$subpkgdir"/usr/bin/
mv usr/libexec/*-analyzer "$subpkgdir"/usr/libexec/
mv usr/share/scan-* "$subpkgdir"/usr/share/
}
extra() {
pkgdesc="Extra tools built using Clang’s tooling APIs"
cd "$pkgdir"
install -dm0755 \
"$subpkgdir"/usr/bin \
"$subpkgdir"/usr/share/clang \
"$subpkgdir"/usr/share/emacs/site-lisp
# FIXME: Make sure this is the right list of binaries for -extra-tools
mv usr/bin/clang-apply-replacements \
usr/bin/clang-change-namespace \
usr/bin/clang-check \
usr/bin/clang-doc \
usr/bin/clang-extdef-mapping \
usr/bin/clang-format \
usr/bin/clang-include-fixer \
usr/bin/clang-move \
usr/bin/clang-offload-bundler \
usr/bin/clang-offload-wrapper \
usr/bin/clang-query \
usr/bin/clang-refactor \
usr/bin/clang-rename \
usr/bin/clang-reorder-fields \
usr/bin/clang-scan-deps \
usr/bin/clang-tidy \
usr/bin/clangd* \
usr/bin/diagtool \
usr/bin/find-all-symbols \
usr/bin/git-clang-format \
usr/bin/hmaptool \
usr/bin/modularize \
usr/bin/pp-trace \
"$subpkgdir"/usr/bin
mv usr/share/clang/clang-include-fixer* \
usr/share/clang/clang-format*.py \
usr/share/clang/*clang-tidy* \
usr/share/clang/run-find-all-symbols.py \
"$subpkgdir"/usr/share/clang
mv usr/share/clang/clang-*.el \
"$subpkgdir"/usr/share/emacs/site-lisp
}
python() {
pkgdesc="Clang Python Bindings"
depends="$pkgname-libs=$pkgver-r$pkgrel python3"
mkdir -p "$subpkgdir"/usr/lib
mv "$pkgdir"/usr/lib/python* "$subpkgdir"/usr/lib/
}
sha512sums="f4bb7e4ded61f2c489e01310432d8e062eba992d992ed65ca2e69a7c20eb5d0c90e81968baaa71c01ac9d96f814a2dcca4ef8f8bfac4cef6d7907ecece097dac clang-11.1.0.src.tar.xz
b629b8b8c0a3390bb6cd2ce609242a6f97feea9509145a2eb5566d09359cee56fc510f21f5f8d1508ff5d612ecb9176572e6358c01cd8590fc799898c34873b6 clang-tools-extra-11.1.0.src.tar.xz
90d61072676b283192fd24804cce7b246acfee418c68c42cc299db6a0605a7d1b5460d5817ea4ea715d94fa6d067dc445673b3949133c1f05957448b9738cc84 10-add-musl-triples.patch
80af662d9e02f6164ffc1ab70e652b27d7aea3d738d045a87369dd3287506a8eb6a7f5918afb5651b21dcedccde64c8a148bc1cadcacedb1ca532de8c1401dfb 20-Enable-stack-protector-by-default-for-Alpine-Linux.patch
32add4879375d47a0a6055bc45073dc1bfd06a823e59f62cc8c5cdf762393e39a923b3c5b432972f84c294773585c684f623a8ede43a8044de4f3fe9d89e40cb 40-fix-ld-name-on-x86.patch"
|