Magellan Linux

Contents of /smage/trunk/core/llvm/llvm-3.8.0-r3.smage2

Parent Directory Parent Directory | Revision Log Revision Log


Revision 9079 - (show annotations) (download)
Fri Jun 17 11:14:06 2016 UTC (7 years, 11 months ago) by niro
File size: 8908 byte(s)
-rebuild
1 # $Id$
2
3 PNAME="llvm"
4 PVER="3.8.0"
5 PBUILD="r3"
6
7 # build lldb or not
8 LLDB_ENABLED=0
9
10 # gcc version which llvm was compiled with
11 GCC_VER="6.1.0"
12
13 SPLIT_PACKAGES="llvm-libs llvm clang clang-tools-extra"
14
15 if [[ ${LLDB_ENABLED} = 1 ]]
16 then
17 SPLIT_PACKAGES+=" lldb"
18 fi
19
20 PCAT="sys-dev"
21 HOMEPAGE="http://llvm.org/"
22
23 DEPEND_x86_64=">= sys-apps/multiarch-wrapper-1"
24 SPECIAL_VARS="DEPEND_x86_64"
25
26 XML_DEPEND=">= dev-libs/libxml2-2.9"
27
28 LLVM_DEPEND="$(marchdepend)
29 >= dev-lang/perl-5.24"
30
31 # lldb requires readline or libedit
32 LLDB_DEPEND=">= sys-libs/readline-6.3
33 >= dev-lang/python-2.7
34 >= dev-python/python-six-1.9
35 ${XML_DEPEND}"
36
37 CLANG_DEPEND="${XML_DEPEND}
38 == sys-dev/gcc-${GCC_VER}"
39
40 LIB_DEPEND=">= dev-libs/libffi-3.2
41 >= sys-libs/zlib-1.2
42 >= sys-libs/ncurses-6.0
43 == sys-libs/libstdc++-${GCC_VER}"
44
45 SDEPEND="${LIB_DEPEND}
46 ${LLVM_DEPEND}
47 ${CLANG_DEPEND}
48 >= dev-util/pkgconfig-0.25
49 >= sys-dev/bison-2.5
50 >= sys-dev/flex-2.3.35
51 >= sys-dev/make-3.82
52 >= sys-dev/binutils-2.26
53 >= dev-lang/python-2.7
54 >= virtual/sed
55 >= dev-lang/swig-3.0.8
56 >= dev-libs/libffi-dev-3.2
57 >= sys-libs/zlib-dev-1.2
58 >= sys-libs/ncurses-dev-6.0
59 >= dev-libs/libxml2-dev-2.9"
60
61 if [[ ${LLDB_ENABLED} = 1 ]]
62 then
63 SDEPEND="${SDEPEND}
64 ${LLDB_DEPEND}"
65 fi
66
67 SRCFILE="${PNAME}-${PVER}.src.tar.xz"
68 SRCDIR="${BUILDDIR}/${PNAME}-${PVER}.src"
69
70 CLANG_SRCFILE="cfe-${PVER}.src.tar.xz"
71 CLANG_SRCDIR="${BUILDDIR}/cfe-${PVER}.src"
72
73 CLANG_EXTRA_SRCFILE="clang-tools-extra-${PVER}.src.tar.xz"
74 CLANG_EXTRA_SRCDIR="${BUILDDIR}/clang-tools-extra-${PVER}.src"
75
76 COMPILER_RT_SRCFILE="compiler-rt-${PVER}.src.tar.xz"
77 COMPILER_RT_SRCDIR="${BUILDDIR}/compiler-rt-${PVER}.src"
78
79 LLDB_SRCFILE="lldb-${PVER}.src.tar.xz"
80 LLDB_SRCDIR="${BUILDDIR}/lldb-${PVER}.src"
81
82 MANPAGES_SRCFILE="${PNAME}-${PVER}-manpages.tar.bz2"
83 MANPAGES_SRCDIR="${BUILDDIR}/${PNAME}-${PVER}-manpages"
84
85 sminclude python mtools cmake multilib cleanutils
86 msetfeature "!check"
87
88 SRC_URI=(
89 http://llvm.org/releases/${PVER}/${SRCFILE}
90 http://llvm.org/releases/${PVER}/${CLANG_SRCFILE}
91 http://llvm.org/releases/${PVER}/${CLANG_EXTRA_SRCFILE}
92 http://llvm.org/releases/${PVER}/${COMPILER_RT_SRCFILE}
93 http://llvm.org/releases/${PVER}/${LLDB_SRCFILE}
94 mirror://${PNAME}/${SRCFILE}
95 mirror://${PNAME}/${MANPAGES_SRCFILE}
96 mirror://${PNAME}/${PNAME}-${PVER}-D17567-PR23529-Sema-part-of-attrbute-abi_tag-support.patch
97 mirror://${PNAME}/${PNAME}-${PVER}-D18035-PR23529-Mangler-part-of-attrbute-abi_tag-support.patch
98 )
99
100 #UP2DATE="updatecmd ${HOMEPAGE} | grep 'Download now' | sed 's:.*][lL][lL][vV][mM]\ \(.*\):\1:'"
101 UP2DATE="updatecmd ${HOMEPAGE}/releases/download.html | grep '.src.' | grep '/${PNAME}-[0-9]' | sed 's:.src::g' | highesttarball xz"
102
103 # pkgs which require a rebuild: mesa
104
105 split_info_llvm-libs()
106 {
107 DESCRIPTION="The Low Level Virtual Machine Runtime Library."
108 DEPEND="${LIB_DEPEND}"
109 PCAT="sys-libs"
110 }
111
112 split_info_llvm()
113 {
114 DESCRIPTION="The Low Level Virtual Machine."
115 DEPEND="${LLVM_DEPEND}
116 == sys-libs/llvm-libs-${PVER}"
117 }
118
119 split_info_lldb()
120 {
121 DESCRIPTION="Next generation, high-performance debugger."
122 DEPEND="${LLDB_DEPEND}"
123 }
124
125 split_info_clang()
126 {
127 DESCRIPTION="C language family frontend for LLVM."
128 DEPEND="${CLANG_DEPEND}
129 == sys-libs/llvm-libs-${PVER}"
130 }
131
132 split_info_clang-tools-extra()
133 {
134 DESCRIPTION="Extra tools built using clang's tooling APIs."
135 DEPEND="== sys-dev/clang-${PVER}"
136 }
137
138 src_prepare()
139 {
140 munpack ${SRCFILE} || die
141 SRCDIR="${CLANG_SRCDIR}" munpack ${CLANG_SRCFILE} || die
142 SRCDIR="${CLANG_EXTRA_SRCDIR}" munpack ${CLANG_EXTRA_SRCFILE} || die
143 SRCDIR="${COMPILER_RT_SRCDIR}" munpack ${COMPILER_RT_SRCFILE} || die
144 if [[ ${LLDB_ENABLED} = 1 ]]
145 then
146 SRCDIR="${LLDB_SRCDIR}" munpack ${LLDB_SRCFILE} || die
147 fi
148
149 # move all sources into the llvm src tree
150 all-abis mv ${CLANG_SRCDIR}-$(mabi) ${SRCDIR}-$(mabi)/tools/clang || die
151 all-abis mv ${CLANG_EXTRA_SRCDIR}-$(mabi) ${SRCDIR}-$(mabi)/tools/clang/tools/extra || die
152 all-abis mv ${COMPILER_RT_SRCDIR}-$(mabi) ${SRCDIR}-$(mabi)/projects/compiler-rt || die
153 if [[ ${LLDB_ENABLED} = 1 ]]
154 then
155 all-abis mv ${LLDB_SRCDIR}-$(mabi) ${SRCDIR}-$(mabi)/tools/lldb || die
156 fi
157
158 # pre-generated man-pages
159 oldmunpack ${MANPAGES_SRCFILE} || die
160
161 SRCSUBDIR="tools/clang" mpatch ${PNAME}-${PVER}-D17567-PR23529-Sema-part-of-attrbute-abi_tag-support.patch || die
162 SRCSUBDIR="tools/clang" mpatch ${PNAME}-${PVER}-D18035-PR23529-Mangler-part-of-attrbute-abi_tag-support.patch || die
163 }
164
165 src_compile()
166 {
167 # honor outside tree builds
168 all-abis install -d ${BUILDDIR}/build-$(mabi) || die
169
170 cmake_configure \
171 -DLLVM_BUILD_LLVM_DYLIB=ON \
172 -DLLVM_DYLIB_EXPORT_ALL=ON \
173 -DLLVM_LINK_LLVM_DYLIB=ON \
174 -DLLVM_ENABLE_RTTI=ON \
175 -DLLVM_ENABLE_FFI=ON \
176 -DLLVM_BUILD_TESTS=ON \
177 -DLLVM_BUILD_DOCS=OFF \
178 -DLLVM_ENABLE_SPHINX=OFF \
179 -DLLVM_ENABLE_DOXYGEN=OFF \
180 -DSPHINX_WARNINGS_AS_ERRORS=OFF \
181 -DFFI_INCLUDE_DIR=$(pkg-config --variable=includedir libffi) \
182 -DLLVM_BINUTILS_INCDIR=/usr/include \
183 || die
184
185 all-abis SRCDIR=${BUILDDIR}/build mmake || die
186
187 # Disable automatic installation of components that go into subpackages
188 SRCDIR=${BUILDDIR}/build all-abis "sed -i '/\(clang\|lldb\)\/cmake_install.cmake/d' tools/cmake_install.cmake || die"
189 SRCDIR=${BUILDDIR}/build all-abis "sed -i '/extra\/cmake_install.cmake/d' tools/clang/tools/cmake_install.cmake || die"
190 SRCDIR=${BUILDDIR}/build all-abis "sed -i '/compiler-rt\/cmake_install.cmake/d' projects/cmake_install.cmake || die"
191 }
192
193 src_check()
194 {
195 all-abis SRCDIR=${BUILDDIR}/build mmake -k check || die
196 all-abis SRCDIR=${BUILDDIR}/build mmake -k check-clang || die
197 }
198
199 src_install_llvm-libs()
200 {
201 SRCDIR=${BUILDDIR}/build mmake DESTDIR=${BINDIR} install || die
202
203 # keep libLLVM.so libLTO.so LLVMgold.so only
204 zapmost ${BINDIR} \
205 usr/$(mlibdir)/libLLVM*.so \
206 usr/$(mlibdir)/libLTO*.so \
207 usr/$(mlibdir)/LLVMgold.so \
208 $([[ $(mlibdir) != lib ]] && echo "usr/lib/libLLVM*.so") \
209 $([[ $(mlibdir) != lib ]] && echo "usr/lib/libLTO*.so") \
210 $([[ $(mlibdir) != lib ]] && echo "usr/lib/LLVMgold.so") \
211 || die
212
213 # symlink gold linker
214 all-abis 'minstalldir /usr/$(mlibdir)/bfd-plugins || die'
215 all-abis 'mlink ../LLVMgold.so /usr/$(mlibdir)/bfd-plugins/LLVMgold.so' || die
216 }
217
218 src_install_llvm()
219 {
220
221 SRCDIR=${BUILDDIR}/build mmake DESTDIR=${BINDIR} install || die
222
223 # install pre-generated man-pages
224 minstallman ${MANPAGES_SRCDIR}/*.1 || die
225
226 # remove libs provided by llvm-libs
227 mdelete /usr/$(mlibdir)/libLLVM*.so || die
228 mdelete /usr/$(mlibdir)/libLTO*.so || die
229 mdelete /usr/$(mlibdir)/LLVMgold.so || die
230 if [[ $(mlibdir) != lib ]]
231 then
232 mdelete /usr/lib/libLLVM*.so || die
233 mdelete /usr/lib/libLTO*.so || die
234 mdelete /usr/lib/LLVMgold.so || die
235 fi
236
237 # be multilib friendly
238 if [[ $(mlibdir) != lib ]]
239 then
240 if [[ -f ${BINDIR}/usr/bin/llvm-config ]]
241 then
242 mdelete /usr/bin/llvm-config || die
243 fi
244 SRCDIR=${BUILDDIR}/build all-abis minstallexec bin/llvm-config /usr/bin/llvm-config-$(mabi) || die
245 mlink multiarch-wrapper /usr/bin/llvm-config || die
246
247 if [[ -f ${BINDIR}/usr/include/llvm/Config/llvm-config.h ]]
248 then
249 mdelete /usr/include/llvm/Config/llvm-config.h || die
250 fi
251 SRCDIR=${BUILDDIR}/build all-abis minstallfile include/llvm/Config/llvm-config.h /usr/include/llvm/Config/llvm-config-$(mabi).h || die
252 cat > ${BINDIR}/usr/include/llvm/Config/llvm-config.h << EOF
253 #include <bits/wordsize.h>
254
255 #if __WORDSIZE == 32
256 #include "llvm-config-m32.h"
257 #elif __WORDSIZE == 64
258 #include "llvm-config-m64.h"
259 #else
260 #error "Unknown word size"
261 #endif
262 EOF
263 fi
264 }
265
266 src_install_clang()
267 {
268 SRCDIR=${BUILDDIR}/build mmake -C tools/clang DESTDIR=${BINDIR} install || die
269 SRCDIR=${BUILDDIR}/build mmake -C projects/compiler-rt DESTDIR=${BINDIR} install || die
270
271 # fix libexec
272 mv ${BINDIR}/usr/libexec/ccc-analyzer ${BINDIR}/usr/$(mlibdir)/clang || die
273 mv ${BINDIR}/usr/libexec/c++-analyzer ${BINDIR}/usr/$(mlibdir)/clang || die
274 rmdir ${BINDIR}/usr/libexec || die
275 sed -i "s:libexec:$(mlibdir)/clang:g" ${BINDIR}/usr/bin/scan-build || die
276
277 # install python bindings (non multilib)
278 minstalldir $(mget-python-libdir) || die
279 all-abis mcopy -a tools/clang/bindings/python/clang $(mget-python-libdir)/ || die
280 # compile all python scripts
281 python -m compileall ${BINDIR} || die
282 python -O -m compileall ${BINDIR} || die
283
284 minstalldocs tools/clang/LICENSE.TXT || die
285 }
286
287 src_install_clang-tools-extra()
288 {
289 SRCDIR=${BUILDDIR}/build mmake -C tools/clang/tools/extra DESTDIR=${BINDIR} install || die
290 minstalldocs tools/clang/tools/extra/LICENSE.TXT || die
291 }
292
293 src_install_lldb()
294 {
295 SRCDIR=${BUILDDIR}/build mmake -C tools/lldb DESTDIR=${BINDIR} install || die
296
297 # remove bundled python-six library
298 all-abis 'mdelete $(mget-python-libdir)/six.py || die'
299
300 # compile all python scripts
301 python -m compileall ${BINDIR} || die
302 python -O -m compileall ${BINDIR} || die
303
304 minstalldocs tools/lldb/LICENSE.TXT || die
305 }
306
307 postinstall_llvm-libs()
308 {
309 if [[ -f ${MROOT}/etc/env.d/10llvm ]]
310 then
311 rm ${MROOT}/etc/env.d/10llvm
312 env-rebuild
313 fi
314 }