1 DESCRIPTION = "The Low Level Virtual Machine"
2 HOMEPAGE = "http://nohomepage.org"
3 SECTION = "Development/Toolchain"
14 RPROVIDES_libllvm += "libllvm"
18 RPROVIDES_llvm += "llvm"
20 #PROVIDES by clang-analyzer
21 PROVIDES += "clang-analyzer"
22 RPROVIDES_clang-analyzer += "clang-analyzer"
24 #PROVIDES by clang-doc
25 PROVIDES += "clang-doc"
26 RPROVIDES_clang-doc += "clang-doc"
28 #PROVIDES by llvm-devel
29 PROVIDES += "llvm-devel"
30 RPROVIDES_llvm-devel += "llvm-devel"
31 RPROVIDES_llvm-devel += "llvm-dev"
32 # the PROVIDES rules is ignore "llvm-static = 3.1-0"
33 PROVIDES += "llvm-static"
34 RPROVIDES_llvm-devel += "llvm-static"
36 #PROVIDES by clang-devel
37 PROVIDES += "clang-devel"
38 RPROVIDES_clang-devel += "clang-devel"
39 RPROVIDES_clang-devel += "clang-dev"
43 RPROVIDES_clang += "clang"
46 #RDEPENDS of llvm (${PN})
47 RDEPENDS_${PN} += "libllvm"
49 #RDEPENDS of clang-analyzer (clang-analyzer)
50 RDEPENDS_clang-analyzer += "python"
51 RDEPENDS_clang-analyzer += "clang"
53 #RDEPENDS of clang-doc (clang-doc)
54 RDEPENDS_clang-doc += "llvm"
56 #RDEPENDS of llvm-devel (${PN}-devel)
57 RDEPENDS_${PN}-devel += "llvm"
58 RDEPENDS_${PN}-devel += "libffi-dev"
59 RDEPENDS_${PN}-devel += "update-alternatives"
60 RDEPENDS_${PN}-devel += "libstdc++-dev"
62 #RDEPENDS of clang-devel (clang-devel)
63 RDEPENDS_clang-devel += "clang"
65 #RDEPENDS of clang (clang)
66 RDEPENDS_clang += "gcc"
67 RDEPENDS_clang += "llvm"
68 RDEPENDS_clang += "libstdc++-dev"
74 DEPENDS += "gcc-cross"
77 DEPENDS += "python-devel"
78 DEPENDS += "bison-native"
80 DEPENDS += "libtool-cross"
87 unp ${S}/packaging/clang-3.1.src.tar.gz
89 chmod -Rf a+rX,u+w,g-w,o-w ${S}
90 #setup -q -n llvm-3.1.src -a1
91 cp ${S}/packaging/llvm.manifest .
93 mv clang-3.1.src tools/clang
99 sed -i 's|/lib /usr/lib $lt_ld_extra|/usr/lib $lt_ld_extra|' \
113 CFLAGS="-O2 -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables" ; export CFLAGS ;
114 CXXFLAGS="${CXXFLAGS:--O2 -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables}" ; export CXXFLAGS ;
115 FFLAGS="${FFLAGS:--O2 -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -I%_fmoddir}" ; export FFLAGS ;
116 LD_AS_NEEDED=1; export LD_AS_NEEDED ;
118 # Build without -ftree-pre as a workaround for clang segfaulting on x86_64.
119 # https://bugzilla.redhat.com/show_bug.cgi?id=791365
121 # Disabling assertions now, rec. by pure and needed for OpenGTL
123 CFLAGS="${CFLAGS:--O2 -fno-tree-pre -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables}" ; export CFLAGS ;
124 CXXFLAGS="${CXXFLAGS:--O2 -fno-tree-pre -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables}" ; export CXXFLAGS ;
125 FFLAGS="${FFLAGS:--O2 -fno-tree-pre -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -I%_fmoddir}" ; export FFLAGS ;
126 autotools_do_configure --build=${TARGET_SYS} --host=${HOST_SYS} \
127 --target=x86_64-tizen-linux \
132 --sbindir=/usr/sbin \
134 --datadir=/usr/share \
135 --includedir=/usr/include \
137 --libexecdir=/usr/libexec \
138 --localstatedir=/var \
139 --sharedstatedir=/usr/com \
140 --mandir=/usr/share/man \
141 --infodir=/usr/share/info \
143 --libdir=/usr/lib/llvm \
144 --with-binutils-include=/usr/include \
145 --enable-targets=host \
146 --disable-assertions \
147 --enable-debug-runtime \
153 # configure does not properly specify libdir
154 sed -i 's|(PROJ_prefix)/lib|(PROJ_prefix)/lib/llvm|g' Makefile.config
156 # FIXME upstream need to fix this
157 # llvm-config.cpp hardcodes lib in it
158 sed -i 's|ActiveLibDir = ActivePrefix + "/lib"|ActiveLibDir = ActivePrefix + "/lib/llvm"|g' tools/llvm-config/llvm-config.cpp
160 make -j16 REQUIRES_RTTI=1 VERBOSE=1 OPTIMIZE_OPTION="-O2 -fno-tree-pre -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables"
163 # the Koji build server does not seem to have enough RAM
164 # for the default 16 threads
166 make check LIT_ARGS="-v -j4" \
170 # unexpected failures on all platforms with GCC 4.7.0.
172 make -C tools/clang/test TESTARGS="-v -j4" \
173 | tee clang-testlog-x86_64.txt
180 echo export RPM_BUILD_ROOT=${D}
187 make install DESTDIR=${D} \
188 PROJ_docsdir=/moredocs
191 mv ${D}/usr/bin/llvm-config{,-64}
193 pushd ${D}/usr/include/llvm/Config
194 mv config.h config-64.h
195 cp -p ${S}/packaging/llvm-Config-config.h config.h
196 mv llvm-config.h llvm-config-64.h
197 cp -p ${S}/packaging/llvm-Config-llvm-config.h llvm-config.h
200 # Create ld.so.conf.d entry
201 mkdir -p ${D}/etc/ld.so.conf.d
202 cat >> ${D}/etc/ld.so.conf.d/llvm-x86_64.conf << EOF
206 # Static analyzer not installed by default:
207 # http://clang-analyzer.llvm.org/installation#OtherPlatforms
208 mkdir -p ${D}/usr/lib/clang-analyzer
210 for f in scan-{build,view}; do
211 ln -s /usr/lib/clang-analyzer/$f/$f ${D}/usr/bin/$f
214 (cd tools/clang/tools && cp -pr scan-{build,view} \
215 ${D}/usr/lib/clang-analyzer/)
217 # Move documentation back to build directory
220 rm -f moredocs/*.tar.gz
221 rm -f moredocs/ocamldoc/html/*.tar.gz
223 # and separate the apidoc
225 # And prepare Clang documentation
228 for f in LICENSE.TXT NOTES.txt README.txt; do # TODO.txt; do
229 ln tools/clang/$f clang-docs/
231 rm -rf tools/clang/docs/{doxygen*,Makefile*,*.graffle,tools}
234 file ${D}//usr/bin/* | awk -F: '$2~/ELF/{print $1}' | xargs -r chrpath -d
235 file ${D}//usr/lib/llvm/*.so | awk -F: '$2~/ELF/{print $1}' | xargs -r chrpath -d
236 #chrpath -d %{buildroot}/%{_libexecdir}/clang-cc
238 # Get rid of erroneously installed example files.
239 rm ${D}/usr/lib/llvm/*LLVMHello.*
241 # FIXME file this bug
242 sed -i 's,ABS_RUN_DIR/lib",ABS_RUN_DIR/lib/llvm",' \
243 ${D}/usr/bin/llvm-config-64
245 chmod -x ${D}/usr/lib/llvm/*.a
247 # remove documentation makefiles:
248 # they require the build directory to work
249 find examples -name 'Makefile' | xargs -0r rm -f
255 rm -rf ${D}/usr/share/info
256 rm -rf ${D}/usr/share/doc/packages
257 rm -rf ${D}/usr/share/doc/llvm
258 rm -rf ${D}/usr/share/doc/llvm-3.1
259 rm -rf ${D}/usr/share/gtk-doc
260 rm -rf ${D}/usr/share/doc
261 rm -rf ${D}/usr/share/man
262 find ${D} -regex ".*/man/man./.*.[0-9]" | xargs rm -f --
263 find ${D} -regex ".*/man/../man./.*.[0-9]" | xargs rm -f --
264 find ${D} -regex ".*/man/man./.*.[0-9]pm" | xargs rm -f --
271 PACKAGES += "libllvm"
273 PACKAGES += "clang-analyzer"
274 PACKAGES += "llvm-devel"
275 PACKAGES += "clang-devel"
279 libllvm_files += "llvm.manifest"
280 libllvm_files += "/etc/ld.so.conf.d/llvm-x86_64.conf"
281 libllvm_files += "/usr/lib/llvm"
282 libllvm_files += "/usr/lib/llvm/*.so"
285 llvm_files += "llvm.manifest"
286 llvm_files += "/usr/bin/bugpoint"
287 llvm_files += "/usr/bin/llc"
288 llvm_files += "/usr/bin/lli"
289 llvm_files += "/usr/bin/llvm*"
290 llvm_files += "/usr/bin/macho-dump"
291 llvm_files += "/usr/bin/opt"
293 clang-analyzer_files = ""
294 clang-analyzer_files += "llvm.manifest"
295 clang-analyzer_files += "/usr/bin/scan-build"
296 clang-analyzer_files += "/usr/bin/scan-view"
297 clang-analyzer_files += "/usr/lib/clang-analyzer"
299 llvm-devel_files = ""
300 llvm-devel_files += "llvm.manifest"
301 llvm-devel_files += "/usr/bin/llvm-config-64"
302 llvm-devel_files += "/usr/include/llvm"
303 llvm-devel_files += "/usr/include/llvm-c"
304 llvm-devel_files += "/usr/lib/llvm/*.a"
306 clang-devel_files = ""
307 clang-devel_files += "llvm.manifest"
308 clang-devel_files += "/usr/include/clang"
309 clang-devel_files += "/usr/include/clang-c"
312 clang_files += "llvm.manifest"
313 clang_files += "/usr/bin/clang*"
314 clang_files += "/usr/bin/c-index-test"
315 clang_files += "/usr/lib/llvm/libclang.so"
316 clang_files += "/usr/lib/clang"
318 FILES_lib${PN} = "${libllvm_files}"
319 FILES_${PN} = "${llvm_files}"
320 FILES_clang-analyzer = "${clang-analyzer_files}"
321 FILES_${PN}-devel = "${llvm-devel_files}"
322 FILES_clang-devel = "${clang-devel_files}"
323 FILES_clang = "${clang_files}"
325 PKG_libllvm= "libllvm"
327 PKG_clang-analyzer= "clang-analyzer"
328 PKG_llvm-devel= "llvm-devel"
329 PKG_clang-devel= "clang-devel"
332 require llvm-extraconf.inc