python-texttable: update to 1.3.1
[void-packages.git] / srcpkgs / llvm / template
blob00bdf9395ecc32c1541c447f7592cc58f335cba6
1 # Template file for 'llvm'
2 pkgname=llvm
3 version=6.0.0
4 revision=2
5 wrksrc="llvm-${version}.src"
6 lib32disabled=yes
7 build_style=cmake
8 configure_args="
9  -DCMAKE_BUILD_TYPE=Release
10  -DLLVM_INSTALL_UTILS=ON
11  -DLLVM_BUILD_LLVM_DYLIB=ON
12  -DLLVM_LINK_LLVM_DYLIB=ON
13  -DLLVM_ENABLE_RTTI=ON
14  -DLLVM_ENABLE_FFI=ON
15  -DLLVM_BINUTILS_INCDIR=/usr/include"
16 short_desc="Low Level Virtual Machine"
17 maintainer="Juan RP <xtraeme@voidlinux.eu>"
18 homepage="http://www.llvm.org"
19 license="NCSA"
20 distfiles="
21  http://www.llvm.org/releases/${version}/llvm-${version}.src.tar.xz
22  http://www.llvm.org/releases/${version}/lldb-${version}.src.tar.xz
23  http://www.llvm.org/releases/${version}/lld-${version}.src.tar.xz
24  http://www.llvm.org/releases/${version}/cfe-${version}.src.tar.xz
25  http://www.llvm.org/releases/${version}/clang-tools-extra-${version}.src.tar.xz
26  http://www.llvm.org/releases/${version}/compiler-rt-${version}.src.tar.xz"
27 checksum="1ff53c915b4e761ef400b803f07261ade637b0c269d99569f18040f3dcee4408
28  46f54c1d7adcd047d87c0179f7b6fa751614f339f4f87e60abceaa45f414d454
29  6b8c4a833cf30230c0213d78dbac01af21387b298225de90ab56032ca79c0e0b
30  e07d6dd8d9ef196cfc8e8bb131cbd6a2ed0b1caf1715f9d05b0f0eeaddb6df32
31  053b424a4cd34c9335d8918734dd802a8da612d13a26bbb88fcdf524b2d989d2
32  d0cc1342cf57e9a8d52f5498da47a3b28d24ac0d39cbc92308781b3ee0cea79a"
34 # XXX Investigate ocaml bindings.
35 hostmakedepends="groff perl python zlib-devel libffi-devel swig"
36 makedepends="python-devel zlib-devel libffi-devel libedit-devel libxml2-devel binutils-devel libatomic-devel"
37 depends="libllvm6.0"
39 subpackages="clang-tools-extra clang clang-analyzer libllvm6.0"
40 if [ -z "$CROSS_BUILD" ]; then
41         # XXX fails to cross compile due to python
42         subpackages+=" lldb lldb-devel"
44 subpackages+=" lld lld-devel"
46 post_extract() {
47         # patches
48         cd ${XBPS_BUILDDIR}/llvm-${version}.src
49         for i in ${FILESDIR}/patches/llvm/llvm-*.patch; do
50                 msg_normal "Applying $i to llvm\n"
51                 patch -sNp1 -i ${i}
52         done
54         cd ${XBPS_BUILDDIR}/cfe-${version}.src
55         for i in ${FILESDIR}/patches/cfe/cfe-*.patch; do
56                 msg_normal "Applying $i to cfe\n"
57                 patch -sNp1 -i ${i}
58         done
60         if [ -z "$CROSS_BUILD" ]; then
61                 cd ${XBPS_BUILDDIR}/lldb-${version}.src
62                 for i in ${FILESDIR}/patches/lldb/*.patch; do
63                         msg_normal "Applying $i to lldb\n"
64                         patch -sNp1 -i ${i}
65                 done
66                 case "$XBPS_TARGET_MACHINE" in
67                         *-musl) sed -i 's|__ptrace_request|int|g' source/Plugins/Process/Linux/NativeProcessLinux.cpp ;;
68                 esac
69         fi
71         # Move clang files into the llvm source.
72         if [ -d ${XBPS_BUILDDIR}/cfe-${version}.src ]; then
73                 mv ${XBPS_BUILDDIR}/cfe-${version}.src ${wrksrc}/tools/clang
74         fi
75         # Move clang-tools-extra files into llvm source.
76         if [ -d ${XBPS_BUILDDIR}/clang-tools-extra-${version}.src ]; then
77                 mv ${XBPS_BUILDDIR}/clang-tools-extra-${version}.src ${wrksrc}/tools/clang/tools/extra
78         fi
79         # Move lld files into the llvm source.
80         if [ -d ${XBPS_BUILDDIR}/lld-${version}.src ]; then
81                 mv ${XBPS_BUILDDIR}/lld-${version}.src ${wrksrc}/tools/lld
82         fi
83         # Move lldb files into the llvm source.
84         if [ -z "$CROSS_BUILD" -a -d ${XBPS_BUILDDIR}/lldb-${version}.src ]; then
85                 mv ${XBPS_BUILDDIR}/lldb-${version}.src ${wrksrc}/tools/lldb
86         fi
87         # Move compiler-rt files into the llvm source.
88         if [ -d ${XBPS_BUILDDIR}/compiler-rt-${version}.src ]; then
89                 mv ${XBPS_BUILDDIR}/compiler-rt-${version}.src ${wrksrc}/projects/compiler-rt
90         fi
91         case "$XBPS_TARGET_MACHINE" in
92                 *-musl)
93                         # Disable sanitizers
94                         sed -i 's/set(COMPILER_RT_HAS_SANITIZER_COMMON TRUE)/set(COMPILER_RT_HAS_SANITIZER_COMMON FALSE)/' ${wrksrc}/projects/compiler-rt/cmake/config-ix.cmake
95                         ;;
96         esac
100 pre_configure() {
101         # Vastly reduce size of debugging symbols:
102         CFLAGS=${CFLAGS/ -g/ -g1}
103         CXXFLAGS=${CXXFLAGS/ -g/ -g1}
105         if [ "$CROSS_BUILD" ]; then
106                 msg_normal "Building host tblgen\n"
107                 mkdir -p build/HOST
108                 cd build/HOST
109                 CC="$BUILD_CC" CXX="$BUILD_CXX" CFLAGS="$BUILD_CFLAGS" \
110                         CXXFLAGS="$BUILD_CXXFLAGS" LDFLAGS="$BUILD_LDFLAGS" \
111                         cmake ../.. -DCMAKE_BUILD_TYPE=Release
112                 make ${makejobs} -C utils/TableGen
113                 make ${makejobs} -C tools/clang/utils/TableGen
114                 configure_args+=" -DLLVM_TABLEGEN=${wrksrc}/build/HOST/bin/llvm-tblgen"
115                 configure_args+=" -DCLANG_TABLEGEN=${wrksrc}/build/HOST/bin/clang-tblgen"
116                 cd ../..
117         fi
119         case "$XBPS_TARGET_MACHINE" in
120                 i686*) _arch="X86";;
121                 x86_64*) _arch="X86";;
122                 arm*) _arch="ARM";;
123                 aarch64*) _arch="AArch64";;
124                 mips*) _arch="Mips";;
125         esac
126         configure_args+=" -DLLVM_TARGET_ARCH=${_arch}"
127         configure_args+=" -DLLVM_DEFAULT_TARGET_TRIPLE=${XBPS_CROSS_TRIPLET:-$XBPS_TRIPLET}"
130 do_install() {
131         vlicense LICENSE.TXT
133         cd build
134         cmake -DCMAKE_INSTALL_PREFIX=${DESTDIR}/usr -P cmake_install.cmake
136         # Fix permissions of static libs
137         chmod -x ${DESTDIR}/usr/lib/*.a
139         # Required for multilib.
140         if [ "$XBPS_TARGET_MACHINE" = "x86_64" ]; then
141                 for _header in llvm-config; do
142                         mv ${DESTDIR}/usr/include/llvm/Config/${_header}{,-64}.h
143                         vinstall ${FILESDIR}/llvm-Config-${_header}.h 644 \
144                                 usr/include/llvm/Config ${_header}.h
145                 done
146         fi
148         # Remove llvm-config-host in cross builds.
149         if [ "$CROSS_BUILD" ]; then
150                 rm -f ${DESTDIR}/usr/bin/llvm-config-host
151         fi
154 clang-analyzer_package() {
155         noarch=yes
156         pycompile_dirs="usr/share/scan-view"
157         depends="clang-${version}_${revision} python"
158         short_desc+=" - A source code analysis framework"
159         homepage="http://clang-analyzer.llvm.org/"
160         pkg_install() {
161                 vmove usr/share/man/man1/scan-build.1
162                 vmove "/usr/bin/scan-*"
163                 vmove "/usr/share/scan-*"
164                 vmove "/usr/libexec/*analyzer"
165         }
167 clang-tools-extra_package() {
168         depends="clang-${version}_${revision} python"
169         short_desc+=" - Extra Clang tools"
170         homepage="http://clang.llvm.org/extra/"
171         pkg_install() {
172                 vmove usr/bin/clang-apply-replacements
173                 vmove usr/bin/clang-query
174                 vmove usr/bin/clang-rename
175                 vmove usr/bin/clang-tidy
176                 vmove usr/bin/modularize
177                 vmove "usr/lib/libclangApplyReplacements*"
178                 vmove "usr/lib/libclangQuery*"
179                 vmove "usr/lib/libclangTidy*"
180                 vmove "usr/share/clang/*tidy*"
181         }
183 clang_package() {
184         lib32disabled=yes
185         depends="libstdc++-devel libgcc-devel binutils"
186         case "$XBPS_TARGET_MACHINE" in
187                 *-musl) depends+=" musl-devel";;
188                 *) depends+=" glibc-devel";;
189         esac
190         short_desc+=" - C language family frontend"
191         alternatives="cc:cc:/usr/bin/clang"
192         homepage="http://clang.llvm.org/"
193         pkg_install() {
194                 vmove usr/include/clang
195                 vmove usr/include/clang-c
196                 vmove "usr/bin/*clang*"
197                 vmove usr/bin/c-index-test
198                 vmove usr/lib/clang
199                 vmove usr/lib/cmake/clang
200                 vmove "usr/lib/libclang*"
201                 vmove "usr/share/clang"
202         }
204 lld_package() {
205         lib32disabled=yes
206         short_desc+=" - linker"
207         homepage="http://lld.llvm.org"
208         pkg_install() {
209                 vmove usr/bin/lld*
210                 vmove usr/bin/ld.lld*
211         }
213 lld-devel_package() {
214         lib32disabled=yes
215         short_desc+=" - linker - development files"
216         homepage="http://lld.llvm.org"
217         pkg_install() {
218                 vmove usr/include/lld
219                 vmove "usr/lib/liblld*a"
220         }
222 lldb_package() {
223         lib32disabled=yes
224         depends+=" python-six"
225         short_desc+=" - LLDB debugger"
226         homepage="http://lldb.llvm.org/"
227         pkg_install() {
228                 vmove usr/bin/*lldb*
229                 vmove usr/lib/liblldb*so.*
230                 vman tools/lldb/docs/lldb.1
231                 vmove /usr/lib/python*
232                 # Depend on python-six instead of conflicting
233                 rm "${PKGDESTDIR}/usr/lib/python2.7/site-packages/six.py"
234         }
236 lldb-devel_package() {
237         depends="lldb>=${version}_${revision}"
238         short_desc+=" - LLDB debugger - development files"
239         pkg_install() {
240                 vmove usr/include/lldb
241                 vmove "usr/lib/liblldb*.a"
242                 vmove "usr/lib/liblldb*.so"
243         }
245 libllvm6.0_package() {
246         short_desc+=" - runtime library"
247         pkg_install() {
248                 vmove "usr/lib/libLLVM-*.so*"
249         }