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