]> TLD Linux GIT Repositories - packages/llvm.git/blob - llvm.spec
- from PLD, TLDized
[packages/llvm.git] / llvm.spec
1 #
2 # TODO:
3 # - fix include search path to support libdir/gcc/platform/version/include.
4 #   current error: /usr/include/wchar.h:39:11: fatal error: 'stdarg.h' file not found# include <stdarg.h>
5 #
6 # Conditional build:
7 %bcond_without  ocaml   # ocaml binding
8 %bcond_with     apidocs # The doxygen docs are HUGE, so they are not built by default.
9 %bcond_without  man     # man pages
10 %bcond_with     tests   # run tests
11
12 %ifarch s390 s390x sparc64
13 # No ocaml on these arches
14 %undefine       with_ocaml
15 %endif
16
17 Summary:        The Low Level Virtual Machine (An Optimizing Compiler Infrastructure)
18 Summary(pl.UTF-8):      Niskopoziomowa maszyna wirtualna (infrastruktura kompilatora optymalizującego)
19 Name:           llvm
20 Version:        3.2
21 Release:        4
22 License:        University of Illinois/NCSA Open Source License
23 Group:          Development/Languages
24 #Source0Download: http://llvm.org/releases/download.html
25 Source0:        http://llvm.org/releases/%{version}/%{name}-%{version}.src.tar.gz
26 # Source0-md5:  71610289bbc819e3e15fdd562809a2d7
27 Source1:        http://llvm.org/releases/%{version}/clang-%{version}.src.tar.gz
28 # Source1-md5:  3896ef4334df08563b05d0848ba80582
29 Patch0:         %{name}-config.patch
30 # Data files should be installed with timestamps preserved
31 Patch1:         %{name}-2.6-timestamp.patch
32 Patch2:         %{name}-tld.patch
33 # R600 target support from git://people.freedesktop.org/~tstellar/llvm
34 Patch3:         %{name}-r600.patch
35 URL:            http://llvm.org/
36 BuildRequires:  autoconf >= 2.60
37 BuildRequires:  automake >= 1:1.9.6
38 BuildRequires:  bash
39 BuildRequires:  bison
40 BuildRequires:  flex
41 BuildRequires:  gcc >= 5:3.4
42 # gcc4 might be installed, but not current __cc
43 %if "%(echo %{cc_version} | cut -d. -f1,2)" < "3.4"
44 BuildRequires:  __cc >= 3.4
45 %endif
46 BuildRequires:  groff
47 BuildRequires:  libltdl-devel
48 BuildRequires:  libtool >= 2:1.5.22
49 BuildRequires:  libstdc++-devel >= 5:3.4
50 BuildRequires:  ocaml-ocamldoc
51 BuildRequires:  perl-base >= 1:5.6
52 BuildRequires:  perl-tools-pod
53 BuildRequires:  rpm-pythonprov
54 %{?with_man:BuildRequires:      sphinx-pdg}
55 %if %{with apidocs}
56 BuildRequires:  doxygen
57 BuildRequires:  graphviz
58 %endif
59 %if %{with tests}
60 BuildRequires:  dejagnu
61 BuildRequires:  python
62 BuildRequires:  tcl-devel
63 %endif
64 Requires:       %{name}-libs = %{version}-%{release}
65 # LLVM is not supported on PPC64
66 # http://llvm.org/bugs/show_bug.cgi?id=3729
67 ExcludeArch:    ppc64
68 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
69
70 %define         _sysconfdir     /etc/%{name}
71
72 %define         specflags_ppc   -fno-var-tracking-assignments
73
74 # strip corrupts: $RPM_BUILD_ROOT/usr/lib64/llvm-gcc/bin/llvm-c++ ...
75 %define         _noautostrip    .*/\\(libmud.*\\.a\\|bin/llvm-.*\\|lib.*++\\.a\\)
76
77 %description
78 LLVM is a compiler infrastructure designed for compile-time,
79 link-time, runtime, and idle-time optimization of programs from
80 arbitrary programming languages. LLVM is written in C++ and has been
81 developed since 2000 at the University of Illinois and Apple. It
82 currently supports compilation of C and C++ programs using clang
83 frontend.
84
85 %description -l pl.UTF-8
86 LLVM to infrastruktura kompilatora zaprojektowana do optymalizacji
87 czasu kompilowania, linkowania, działania i bezczynności programów w
88 dowolnych językach programowania. Jest napisana w C++, rozwijana od
89 roku 2000 przez Uniwersytet w Illinois i Apple. Aktualnie obsługuje
90 kompilację programów w C i C++ przy użyciu frontendu clang.
91
92 %package libs
93 Summary:        LLVM shared library
94 Summary(pl.UTF-8):      Biblioteka współdzielona LLVM-a
95 Group:          Libraries
96 Conflicts:      llvm < 3.2
97
98 %description libs
99 LLVM shared library.
100
101 %description libs -l pl.UTF-8
102 Biblioteka współdzielona LLVM-a.
103
104 %package devel
105 Summary:        Static libraries and header files for LLVM
106 Summary(pl.UTF-8):      Biblioteki statyczne i pliki nagłówkowe dla LLVM-a
107 Group:          Development/Languages
108 Requires:       %{name}-libs = %{version}-%{release}
109 Requires:       libstdc++-devel >= 6:3.4
110
111 %description devel
112 This package contains static libraries and header files needed to
113 develop new native programs that use the LLVM infrastructure.
114
115 %description devel -l pl.UTF-8
116 Ten pakiet zawiera biblioteki statyczne oraz pliki nagłówkowe
117 potrzebne do tworzenia nowych programów natywnych wykorzystujących
118 infrastrukturę LLVM.
119
120 %package doc
121 Summary:        Documentation for LLVM
122 Summary(pl.UTF-8):      Dokumentacja do LLVM-a
123 Group:          Documentation
124 # does not require base
125
126 %description doc
127 Documentation for the LLVM compiler infrastructure.
128
129 %description doc -l pl.UTF-8
130 Dokumentacja do infrastruktury kompilatorów LLVM.
131
132 %package apidocs
133 Summary:        API documentation for LLVM
134 Summary(pl.UTF-8):      Dokumentacja API LLVM-a
135 Group:          Development/Languages
136 Requires:       %{name}-doc = %{version}-%{release}
137
138 %description apidocs
139 API documentation for the LLVM compiler infrastructure.
140
141 %description apidocs -l pl.UTF-8
142 Dokumentacja API infrastruktury kompilatorów LLVM.
143
144 %package -n clang
145 Summary:        A C language family frontend for LLVM
146 Summary(pl.UTF-8):      Frontend LLVM-a do języków z rodziny C
147 License:        NCSA
148 Group:          Development/Languages
149 Requires:       %{name} = %{version}-%{release}
150
151 %description -n clang
152 clang: noun 1. A loud, resonant, metallic sound. 2. The strident call
153 of a crane or goose. 3. C-language family front-end toolkit.
154
155 The goal of the Clang project is to create a new C, C++, Objective C
156 and Objective C++ front-end for the LLVM compiler. Its tools are built
157 as libraries and designed to be loosely-coupled and extendable.
158
159 %description -n clang -l pl.UTF-8
160 clang (z angielskiego): 1. głośny, rezonujący, metaliczny dźwięk; 2.
161 piskliwy odgłos żurawia lub gęsi; 3. narzędzia frontendowe dla języków
162 z rodziny C.
163
164 Celem projektu Clang jest utworzenie nowego frontendu dla kompilatora
165 LLVM do języków C, C++, Objective C i Objective C++. Narzędzia są
166 budowane jako biblioteki i zaprojektowane z myślą o swobodnym łączeniu
167 i rozszerzaniu.
168
169 %package -n clang-analyzer
170 Summary:        A source code analysis framework
171 Summary(pl.UTF-8):      Szkielet do analizy kodu źródłowego
172 License:        NCSA
173 Group:          Development/Languages
174 Requires:       clang = %{version}-%{release}
175 # not picked up automatically since files are currently not instaled
176 # in standard Python hierarchies yet
177 Requires:       python
178
179 %description -n clang-analyzer
180 The Clang Static Analyzer consists of both a source code analysis
181 framework and a standalone tool that finds bugs in C and Objective-C
182 programs. The standalone tool is invoked from the command-line, and is
183 intended to run in tandem with a build of a project or code base.
184
185 %description -n clang-analyzer -l pl.UTF-8
186 Clang Static Analyzer składa się ze szkieletu do analizy kodu
187 źródłowego oraz samodzielnego narzędzia znajdującego błędy w
188 programach w C i C++. Narzędzie jest wywoływane z linii poleceń, z
189 myślą o uruchamianiu wraz z kompilacją projektu lub kodu.
190
191 %package -n clang-devel
192 Summary:        Header files for Clang
193 Summary(pl.UTF-8):      Pliki nagłówkowe Clanga
194 Group:          Development/Languages
195 Requires:       %{name}-devel = %{version}-%{release}
196 Requires:       clang = %{version}-%{release}
197
198 %description -n clang-devel
199 This package contains header files for the Clang compiler.
200
201 %description -n clang-devel -l pl.UTF-8
202 Ten pakiet zawiera pliki nagłówkowe kompilatora Clang.
203
204 %package -n clang-doc
205 Summary:        Documentation for Clang
206 Summary(pl.UTF-8):      Dokumentacja do Clanga
207 Group:          Documentation
208 Requires:       %{name} = %{version}-%{release}
209
210 %description -n clang-doc
211 Documentation for the Clang compiler front-end.
212
213 %description -n clang-doc -l pl.UTF-8
214 Dokumentacja do frontendu kompilatora Clang.
215
216 %package -n clang-apidocs
217 Summary:        API documentation for Clang
218 Summary(pl.UTF-8):      Dokumentacja API Clanga
219 Group:          Development/Languages
220 Requires:       clang-doc = %{version}-%{release}
221
222 %description -n clang-apidocs
223 API documentation for the Clang compiler.
224
225 %description -n clang-apidocs -l pl.UTF-8
226 Dokumentacja API kompilatora Clang.
227
228 %package ocaml
229 Summary:        OCaml binding for LLVM
230 Summary(pl.UTF-8):      Wiązanie OCamla do LLVM-a
231 Group:          Libraries
232 Requires:       %{name} = %{version}-%{release}
233 %requires_eq    ocaml-runtime
234
235 %description ocaml
236 OCaml binding for LLVM.
237
238 %description ocaml -l pl.UTF-8
239 Wiązanie OCamla do LLVM-a.
240
241 %package ocaml-devel
242 Summary:        Development files for LLVM OCaml binding
243 Summary(pl.UTF-8):      Pliki programistyczne wiązania OCamla do LLVM-a
244 Group:          Development/Libraries
245 Requires:       %{name}-devel = %{version}-%{release}
246 Requires:       %{name}-ocaml = %{version}-%{release}
247
248 %description ocaml-devel
249 The llvm-ocaml-devel package contains libraries and signature files
250 for developing applications that use llvm-ocaml binding.
251
252 %description ocaml-devel -l pl.UTF-8
253 Ten pakiet zawiera biblioteki i pliki sygnatur do tworzenia aplikacji
254 wykorzystujących wiązanie llvm-ocaml.
255
256 %package ocaml-doc
257 Summary:        Documentation for LLVM's OCaml binding
258 Summary(pl.UTF-8):      Dokumentacja wiązania OCamla do LLVM-a
259 Group:          Documentation
260 Requires:       %{name}-ocaml = %{version}-%{release}
261
262 %description ocaml-doc
263 HTML documentation for LLVM's OCaml binding.
264
265 %description ocaml-doc -l pl.UTF-8
266 Dokumentacja HTML wiązania OCamla do LLVM-a.
267
268 %prep
269 %setup -q -a1 -n %{name}-%{version}.src
270 mv clang-*.* tools/clang
271 %patch0 -p1
272 %patch1 -p1
273 %patch2 -p1
274 %patch3 -p1
275
276 # configure does not properly specify libdir
277 %{__sed} -i 's|(PROJ_prefix)/lib|(PROJ_prefix)/%{_lib}|g' Makefile.config.in
278 %{__sed} -i 's|/lib/|/%{_lib}/|' lib/Support/Unix/Path.inc
279 # clang resources
280 %{__sed} -i 's|(PROJ_prefix)/lib/|(PROJ_prefix)/%{_lib}/|g' tools/clang/lib/Headers/Makefile
281 %{__sed} -i 's|"lib"|"%{_lib}"|' tools/clang/lib/Driver/Driver.cpp
282
283 grep -rl /usr/bin/env tools utils | xargs sed -i -e '1{
284         s,^#!.*bin/env python,#!%{__python},
285         s,^#!.*bin/env perl,#!%{__perl},
286 }'
287
288 install -d obj
289
290 %build
291 cd autoconf
292 %{__aclocal} -I m4
293 %{__autoconf} -o ../configure configure.ac
294 cd ..
295 %{__autoheader} -I autoconf -I autoconf/m4 autoconf/configure.ac
296
297 # Disabling assertions now, rec. by pure and needed for OpenGTL
298 # TESTFIX no PIC on ix86: http://llvm.org/bugs/show_bug.cgi?id=3801
299 #
300 # bash specific 'test a < b'
301 cd obj
302 bash ../%configure \
303         --datadir=%{_datadir}/%{name}-%{version} \
304         --disable-assertions \
305 %ifarch %{ix86}
306         --disable-pic \
307 %endif
308         --disable-static \
309         --enable-bindings=%{?with_ocaml:ocaml}%{!?with_ocaml:none} \
310         --enable-debug-runtime \
311 %if %{with apidocs}
312         --enable-doxygen \
313 %endif
314         --enable-experimental-targets=R600 \
315         --enable-jit \
316         --enable-optimized \
317         --enable-shared \
318         --with-pic
319
320 %{__make} \
321         REQUIRES_RTTI=1 \
322         OPTIMIZE_OPTION="%{rpmcflags} %{rpmcppflags}"
323
324 %if %{with tests}
325 %{__make} check 2>&1 | tee llvm-testlog.txt
326 %{__make} -C tools/clang test 2>&1 | tee clang-testlog.txt
327 %endif
328
329 cd ..
330
331 %if %{with man}
332 %{__make} -C docs -f Makefile.sphinx man
333 %endif
334
335 %install
336 rm -rf $RPM_BUILD_ROOT
337 %{__make} -C obj -j1 install \
338         PROJ_docsdir=/moredocs \
339         DESTDIR=$RPM_BUILD_ROOT
340
341 # Static analyzer not installed by default:
342 # http://clang-analyzer.llvm.org/installation#OtherPlatforms
343 install -d $RPM_BUILD_ROOT%{_libdir}/clang-analyzer
344 # create launchers
345 for f in scan-{build,view}; do
346         ln -s %{_libdir}/clang-analyzer/$f/$f $RPM_BUILD_ROOT%{_bindir}/$f
347         cp -pr tools/clang/tools/$f $RPM_BUILD_ROOT%{_libdir}/clang-analyzer
348 done
349 %{__mv} $RPM_BUILD_ROOT%{_libdir}/clang-analyzer/scan-build/scan-build.1 $RPM_BUILD_ROOT%{_mandir}/man1
350 %py_comp $RPM_BUILD_ROOT%{_libdir}/clang-analyzer/scan-view
351 %py_ocomp $RPM_BUILD_ROOT%{_libdir}/clang-analyzer/scan-view
352 %py_postclean %{_libdir}/clang-analyzer/scan-view
353
354 %if %{with man}
355 install -d $RPM_BUILD_ROOT%{_mandir}/man1
356 cp -p docs/_build/man/*.1 $RPM_BUILD_ROOT%{_mandir}/man1
357 # these tools are not installed
358 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/{FileCheck,llvm-build}.1
359 %endif
360
361 # Move documentation back to build directory
362 rm -rf moredocs
363 mv $RPM_BUILD_ROOT/moredocs .
364 %{__rm} -v moredocs/*.tar.gz
365 %{__rm} -v moredocs/ocamldoc/html/*.tar.gz
366
367 # and separate the apidoc
368 %if %{with apidocs}
369 rm -rf apidoc clang-apidoc
370 mv moredocs/html/doxygen apidoc
371 cp -a tools/clang/docs/doxygen/html clang-apidoc
372 %endif
373
374 # And prepare Clang documentation
375 rm -rf clang-docs
376 install -d clang-docs
377 for f in LICENSE.TXT NOTES.txt README.txt; do
378         ln tools/clang/$f clang-docs
379 done
380
381 # Get rid of erroneously installed example files.
382 %{__rm} -v $RPM_BUILD_ROOT%{_libdir}/*LLVMHello.*
383
384 # remove documentation makefiles:
385 # they require the build directory to work
386 rm -rf moredocs/examples
387 cp -a examples moredocs/examples
388 find moredocs/examples -name Makefile | xargs -0r rm -f
389
390 %clean
391 rm -rf $RPM_BUILD_ROOT
392
393 %post   libs -p /sbin/ldconfig
394 %postun libs -p /sbin/ldconfig
395
396 %files
397 %defattr(644,root,root,755)
398 %doc CREDITS.TXT LICENSE.TXT README.txt %{?with_tests:llvm-testlog.txt}
399 %attr(755,root,root) %{_bindir}/bugpoint
400 %attr(755,root,root) %{_bindir}/llc
401 %attr(755,root,root) %{_bindir}/lli
402 %attr(755,root,root) %{_bindir}/llvm-ar
403 %attr(755,root,root) %{_bindir}/llvm-as
404 %attr(755,root,root) %{_bindir}/llvm-bcanalyzer
405 %attr(755,root,root) %{_bindir}/llvm-cov
406 %attr(755,root,root) %{_bindir}/llvm-diff
407 %attr(755,root,root) %{_bindir}/llvm-dis
408 %attr(755,root,root) %{_bindir}/llvm-dwarfdump
409 %attr(755,root,root) %{_bindir}/llvm-extract
410 %attr(755,root,root) %{_bindir}/llvm-link
411 %attr(755,root,root) %{_bindir}/llvm-mc
412 %attr(755,root,root) %{_bindir}/llvm-mcmarkup
413 %attr(755,root,root) %{_bindir}/llvm-nm
414 %attr(755,root,root) %{_bindir}/llvm-objdump
415 %attr(755,root,root) %{_bindir}/llvm-prof
416 %attr(755,root,root) %{_bindir}/llvm-ranlib
417 %attr(755,root,root) %{_bindir}/llvm-readobj
418 %attr(755,root,root) %{_bindir}/llvm-rtdyld
419 %attr(755,root,root) %{_bindir}/llvm-size
420 %attr(755,root,root) %{_bindir}/llvm-stress
421 %attr(755,root,root) %{_bindir}/llvm-tblgen
422 %attr(755,root,root) %{_bindir}/macho-dump
423 %attr(755,root,root) %{_bindir}/opt
424 %{_mandir}/man1/bugpoint.1*
425 %{_mandir}/man1/lit.1*
426 %{_mandir}/man1/llc.1*
427 %{_mandir}/man1/lli.1*
428 %{_mandir}/man1/llvm-ar.1*
429 %{_mandir}/man1/llvm-as.1*
430 %{_mandir}/man1/llvm-bcanalyzer.1*
431 %{_mandir}/man1/llvm-cov.1*
432 %{_mandir}/man1/llvm-diff.1*
433 %{_mandir}/man1/llvm-dis.1*
434 %{_mandir}/man1/llvm-extract.1*
435 %{_mandir}/man1/llvm-link.1*
436 %{_mandir}/man1/llvm-nm.1*
437 %{_mandir}/man1/llvm-prof.1*
438 %{_mandir}/man1/llvm-ranlib.1*
439 %{_mandir}/man1/llvm-stress.1*
440 %{_mandir}/man1/opt.1*
441 %{_mandir}/man1/tblgen.1*
442
443 %files libs
444 %defattr(644,root,root,755)
445 %attr(755,root,root) %{_libdir}/libLLVM-%{version}svn.so
446
447 %files devel
448 %defattr(644,root,root,755)
449 %attr(755,root,root) %{_bindir}/llvm-config
450 %attr(755,root,root) %{_libdir}/libprofile_rt.so
451 %{_libdir}/libLLVM*.a
452 %{_libdir}/libprofile_rt.a
453 %ifarch %{x8664}
454 %attr(755,root,root) %{_libdir}/BugpointPasses.so
455 %attr(755,root,root) %{_libdir}/libLTO.so
456 %{_libdir}/libLTO.a
457 %endif
458 %{_includedir}/llvm
459 %{_includedir}/llvm-c
460 %{_mandir}/man1/llvm-config.1*
461
462 %files doc
463 %defattr(644,root,root,755)
464 %doc moredocs/examples moredocs/html
465
466 %if %{with apidocs}
467 %files apidocs
468 %defattr(644,root,root,755)
469 %doc apidoc/*
470 %endif
471
472 %files -n clang
473 %defattr(644,root,root,755)
474 %doc clang-docs/{LICENSE.TXT,NOTES.txt,README.txt} %{?with_tests:clang-testlog.txt}
475 %attr(755,root,root) %{_bindir}/c-index-test
476 %attr(755,root,root) %{_bindir}/clang
477 %attr(755,root,root) %{_bindir}/clang++
478 %attr(755,root,root) %{_bindir}/clang-check
479 %attr(755,root,root) %{_bindir}/clang-tblgen
480 %attr(755,root,root) %{_libdir}/libclang.so
481 %{_libdir}/clang
482 %{_mandir}/man1/clang.1*
483
484 %files -n clang-analyzer
485 %defattr(644,root,root,755)
486 %attr(755,root,root) %{_bindir}/scan-build
487 %attr(755,root,root) %{_bindir}/scan-view
488 %{_mandir}/man1/scan-build.1*
489 %dir %{_libdir}/clang-analyzer
490
491 %dir %{_libdir}/clang-analyzer/scan-build
492 %{_libdir}/clang-analyzer/scan-build/*.css
493 %{_libdir}/clang-analyzer/scan-build/*.js
494 %attr(755,root,root) %{_libdir}/clang-analyzer/scan-build/scan-build
495 %attr(755,root,root) %{_libdir}/clang-analyzer/scan-build/*-analyzer
496
497 %dir %{_libdir}/clang-analyzer/scan-view
498 %attr(755,root,root) %{_libdir}/clang-analyzer/scan-view/scan-view
499 %{_libdir}/clang-analyzer/scan-view/Resources
500 %{_libdir}/clang-analyzer/scan-view/*.py[co]
501
502 %files -n clang-devel
503 %defattr(644,root,root,755)
504 %{_libdir}/libclang*.a
505 %{_includedir}/clang
506 %{_includedir}/clang-c
507
508 %files -n clang-doc
509 %defattr(644,root,root,755)
510 %doc tools/clang/docs/*.{css,html,png,txt}
511
512 %if %{with apidocs}
513 %files -n clang-apidocs
514 %defattr(644,root,root,755)
515 %doc clang-apidoc/*
516 %endif
517
518 %if %{with ocaml}
519 %files ocaml
520 %defattr(644,root,root,755)
521 %{_libdir}/ocaml/META.llvm
522 %{_libdir}/ocaml/llvm*.cma
523 %{_libdir}/ocaml/llvm*.cmi
524
525 %files ocaml-devel
526 %defattr(644,root,root,755)
527 %{_libdir}/libllvm*.a
528 %{_libdir}/ocaml/libLLVM*.a
529 %{_libdir}/ocaml/libllvm*.a
530 %{_libdir}/ocaml/llvm*.a
531 %{_libdir}/ocaml/llvm*.cmx*
532 %{_libdir}/ocaml/llvm*.mli
533
534 %files ocaml-doc
535 %defattr(644,root,root,755)
536 %doc moredocs/ocamldoc/html/*
537 %endif