aboutsummaryrefslogtreecommitdiffstats
path: root/main/clang/APKBUILD
blob: 53e0cf027bffee366d1fb55fdb2011d1be05d19b (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
# Contributor Eric Molitor <eric@molitor.org>
# Contributor Travis Tilley <ttilley@gmail.com>
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=clang
# Note: Update together with llvm.
pkgver=10.0.0
pkgrel=1
_llvmver=${pkgver%%.*}
pkgdesc="A C language family front-end for LLVM"
arch="all"
url="https://llvm.org/"
license="Apache-2.0"
options="!check" # some 170 failing tests...
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"
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"
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
	30-fix-python-shebangs.patch
	"

builddir="$srcdir/clang-$pkgver.src"

prepare() {
	mv "$srcdir/clang-tools-extra-$pkgver.src" "$builddir/tools/extra"
	default_prepare
}

build() {
	mkdir -p "$builddir"/build
	cd "$builddir"/build

	cmake .. -G Ninja -Wno-dev \
		-DCMAKE_BUILD_TYPE=MinSizeRel \
		-DCMAKE_C_FLAGS_MINSIZEREL_INIT="$CFLAGS" \
		-DCMAKE_CXX_FLAGS_MINSIZEREL_INIT="$CXXFLAGS" \
		-DCMAKE_EXE_LINKER_FLAGS_MINSIZEREL_INIT="$LDFLAGS -Wl,-z,stack-size=2097152" \
		-DCMAKE_INSTALL_PREFIX=/usr \
		-DCMAKE_VERBOSE_MAKEFILE=OFF \
		-DCLANG_VENDOR=Alpine \
		-DCLANG_BUILD_EXAMPLES=OFF \
		-DCLANG_INCLUDE_DOCS=ON \
		-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() {
	cd "$builddir"/build

	case "$CARCH" in
	armhf) return;; # FIXME: tests fails on armhf
	esac
	lit -sv --param clang_site_config=$builddir/build/test/lib.site.cfg $builddir/build/test
}

package() {
	cd "$builddir"/build

	DESTDIR="$pkgdir" ninja install
	install -m 644 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"

	mkdir -p "$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"

	mkdir -p "$subpkgdir"/usr/bin "$subpkgdir"/usr/share/clang

	mv usr/bin/clang-apply-replacements "$subpkgdir"/usr/bin/
	mv usr/bin/clang-reorder-fields "$subpkgdir"/usr/bin/
	mv usr/bin/modularize "$subpkgdir"/usr/bin/
	mv usr/bin/clang-tidy "$subpkgdir"/usr/bin/
	mv usr/share/clang/*clang-tidy* "$subpkgdir"/usr/share/clang
	mv usr/bin/clang-change-namespace "$subpkgdir"/usr/bin/
	mv usr/bin/clang-doc "$subpkgdir"/usr/bin/
	mv usr/bin/clang-include-fixer "$subpkgdir"/usr/bin/
	#mv usr/bin/clang-move "$subpkgdir"/usr/bin/
	mv usr/bin/find-all-symbols "$subpkgdir"/usr/bin/
	mv usr/share/clang/clang-include-fixer* "$subpkgdir"/usr/share/clang
	mv usr/share/clang/run-find-all-symbols.py "$subpkgdir"/usr/share/clang
	mv usr/bin/clang-query "$subpkgdir"/usr/bin/
	mv usr/bin/clangd* "$subpkgdir"/usr/bin/
	#mv usr/bin/pp-trace "$subpkgdir"/usr/bin/
	#mv usr/bin/tool-template "$subpkgdir"/usr/bin/
}

sha512sums="b1cccc13c46abcda3d689f51d486fa613ecec40c581c72d8b15951715100a2b8fb24370161601e6716cdba5a784337439e99ec2f0766f988e9cce92de6d775da  clang-10.0.0.src.tar.xz
33b6019e64e9ac94bd7c000b77a4a927602a2705baa9b370e392a56b53fe09c8dad1ff7d583892729e9eb291440433ad7d71df768a96d927e4dbc1988fc01d99  clang-tools-extra-10.0.0.src.tar.xz
533558863dc7247202b2a739e1bd2d81a99a16be329370cb734d338284b5408ecd14fe78ac836aaf922e377334b7a3ebef532cf8395d91aafe346bf71eb8b7fc  10-add-musl-triples.patch
a8557c5a26774bf98548b9fe77cd54a1b0591bc75beffcb5fbd070986ba954d82255dddbcfcc884c07c3f433b1428c2a6ce649c3a158f4352f30e7057872335b  20-Enable-stack-protector-by-default-for-Alpine-Linux.patch
c7f34b425b0dcea9752eeb7ff3d3a33af9cc45740fd3e77d52e4d610c5fd3daaa4d59138a255b057ef886915615a77ec1e6a447f3818b4b2724129c0ba354932  30-fix-python-shebangs.patch"