1 # Template file for 'llvm'
5 wrksrc="llvm-${version}.src"
9 -DCMAKE_BUILD_TYPE=Release
10 -DLLVM_INSTALL_UTILS=ON
11 -DLLVM_BUILD_LLVM_DYLIB=ON
12 -DLLVM_LINK_LLVM_DYLIB=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"
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"
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"
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"
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"
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"
66 case "$XBPS_TARGET_MACHINE" in
67 *-musl) sed -i 's|__ptrace_request|int|g' source/Plugins/Process/Linux/NativeProcessLinux.cpp ;;
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
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
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
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
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
91 case "$XBPS_TARGET_MACHINE" in
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
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"
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"
119 case "$XBPS_TARGET_MACHINE" in
121 x86_64*) _arch="X86";;
123 aarch64*) _arch="AArch64";;
124 mips*) _arch="Mips";;
126 configure_args+=" -DLLVM_TARGET_ARCH=${_arch}"
127 configure_args+=" -DLLVM_DEFAULT_TARGET_TRIPLE=${XBPS_CROSS_TRIPLET:-$XBPS_TRIPLET}"
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
148 # Remove llvm-config-host in cross builds.
149 if [ "$CROSS_BUILD" ]; then
150 rm -f ${DESTDIR}/usr/bin/llvm-config-host
154 clang-analyzer_package() {
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/"
161 vmove usr/share/man/man1/scan-build.1
162 vmove "/usr/bin/scan-*"
163 vmove "/usr/share/scan-*"
164 vmove "/usr/libexec/*analyzer"
167 clang-tools-extra_package() {
168 depends="clang-${version}_${revision} python"
169 short_desc+=" - Extra Clang tools"
170 homepage="http://clang.llvm.org/extra/"
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*"
185 depends="libstdc++-devel libgcc-devel binutils"
186 case "$XBPS_TARGET_MACHINE" in
187 *-musl) depends+=" musl-devel";;
188 *) depends+=" glibc-devel";;
190 short_desc+=" - C language family frontend"
191 alternatives="cc:cc:/usr/bin/clang"
192 homepage="http://clang.llvm.org/"
194 vmove usr/include/clang
195 vmove usr/include/clang-c
196 vmove "usr/bin/*clang*"
197 vmove usr/bin/c-index-test
199 vmove usr/lib/cmake/clang
200 vmove "usr/lib/libclang*"
201 vmove "usr/share/clang"
206 short_desc+=" - linker"
207 homepage="http://lld.llvm.org"
210 vmove usr/bin/ld.lld*
213 lld-devel_package() {
215 short_desc+=" - linker - development files"
216 homepage="http://lld.llvm.org"
218 vmove usr/include/lld
219 vmove "usr/lib/liblld*a"
224 depends+=" python-six"
225 short_desc+=" - LLDB debugger"
226 homepage="http://lldb.llvm.org/"
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"
236 lldb-devel_package() {
237 depends="lldb>=${version}_${revision}"
238 short_desc+=" - LLDB debugger - development files"
240 vmove usr/include/lldb
241 vmove "usr/lib/liblldb*.a"
242 vmove "usr/lib/liblldb*.so"
245 libllvm6.0_package() {
246 short_desc+=" - runtime library"
248 vmove "usr/lib/libLLVM-*.so*"