]>
Commit | Line | Data |
---|---|---|
1 | # TODO: | |
2 | # - move and package: | |
3 | # %{_datadir}/clang/clang-format-sublime.py - sublime plugin | |
4 | # %{_datadir}/clang/clang-format.el - emacs mode | |
5 | # %{_datadir}/clang/clang-format.py - vim plugin | |
6 | # - no content in doc package (it used to contain parts of clang apidocs and some examples) | |
7 | # | |
8 | # Conditional build: | |
9 | %bcond_without lldb # LLDB debugger | |
10 | %bcond_without polly # Polly cache-locality optimization, auto-parallelism and vectorization | |
11 | %bcond_without rt # compiler-rt libraries | |
12 | %bcond_without ocaml # OCaml binding | |
13 | %bcond_without doc # HTML docs and man pages | |
14 | %bcond_with apidocs # doxygen docs (HUGE, so they are not built by default) | |
15 | %bcond_with tests # run tests | |
16 | ||
17 | # No ocaml on other arches or no native ocaml (required for ocaml-ctypes) | |
18 | %ifnarch %{ix86} %{x8664} arm aarch64 ppc sparc sparcv9 | |
19 | %undefine with_ocaml | |
20 | %endif | |
21 | ||
22 | Summary: The Low Level Virtual Machine (An Optimizing Compiler Infrastructure) | |
23 | Summary(pl.UTF-8): Niskopoziomowa maszyna wirtualna (infrastruktura kompilatora optymalizującego) | |
24 | Name: llvm | |
25 | Version: 3.7.0 | |
26 | Release: 6 | |
27 | License: University of Illinois/NCSA Open Source License | |
28 | Group: Development/Languages | |
29 | #Source0Download: http://llvm.org/releases/download.html | |
30 | Source0: http://llvm.org/releases/%{version}/%{name}-%{version}.src.tar.xz | |
31 | # Source0-md5: b98b9495e5655a672d6cb83e1a180f8e | |
32 | Source1: http://llvm.org/releases/%{version}/cfe-%{version}.src.tar.xz | |
33 | # Source1-md5: 8f9d27335e7331cf0a4711e952f21f01 | |
34 | Source2: http://llvm.org/releases/%{version}/compiler-rt-%{version}.src.tar.xz | |
35 | # Source2-md5: 383c10affd513026f08936b5525523f5 | |
36 | Source3: http://llvm.org/releases/%{version}/lldb-%{version}.src.tar.xz | |
37 | # Source3-md5: e5931740400d1dc3e7db4c7ba2ceff68 | |
38 | Source4: http://llvm.org/releases/%{version}/polly-%{version}.src.tar.xz | |
39 | # Source4-md5: 32f93ffc9cc7e042df22089761558f8b | |
40 | Source5: http://llvm.org/releases/%{version}/clang-tools-extra-%{version}.src.tar.xz | |
41 | # Source5-md5: d5a87dacb65d981a427a536f6964642e | |
42 | Source6: http://llvm.org/releases/%{version}/lld-%{version}.src.tar.xz | |
43 | # Source6-md5: 91bd593a67293d84dad0bf11845546c2 | |
44 | Patch0: %{name}-lld-link.patch | |
45 | Patch1: %{name}-pld.patch | |
46 | Patch2: libdir.patch | |
47 | Patch3: x32-gcc-toolchain.patch | |
48 | Patch5: debuginfo-fix.patch | |
49 | URL: http://llvm.org/ | |
50 | BuildRequires: bash | |
51 | BuildRequires: bison | |
52 | BuildRequires: cmake | |
53 | BuildRequires: flex | |
54 | BuildRequires: gcc >= 5:3.4 | |
55 | # gcc4 might be installed, but not current __cc | |
56 | %if "%(echo %{cc_version} | cut -d. -f1,2)" < "3.4" | |
57 | BuildRequires: __cc >= 3.4 | |
58 | %endif | |
59 | %ifarch x32 | |
60 | BuildRequires: glibc-devel(x86_64) | |
61 | %endif | |
62 | BuildRequires: groff | |
63 | BuildRequires: libltdl-devel | |
64 | BuildRequires: libstdc++-devel >= 5:3.4 | |
65 | %if %{with ocaml} | |
66 | BuildRequires: ocaml-ctypes-devel >= 0.4 | |
67 | BuildRequires: ocaml-findlib | |
68 | BuildRequires: ocaml-ocamldoc | |
69 | BuildRequires: ocaml-ounit | |
70 | %endif | |
71 | BuildRequires: perl-base >= 1:5.6 | |
72 | BuildRequires: perl-tools-pod | |
73 | BuildRequires: rpm-pythonprov | |
74 | %{?with_doc:BuildRequires: sphinx-pdg} | |
75 | BuildRequires: tar >= 1:1.22 | |
76 | BuildRequires: xz | |
77 | %if %{with apidocs} | |
78 | BuildRequires: doxygen | |
79 | BuildRequires: graphviz | |
80 | %endif | |
81 | %if %{with tests} | |
82 | BuildRequires: dejagnu | |
83 | BuildRequires: python | |
84 | BuildRequires: tcl-devel | |
85 | %endif | |
86 | %if %{with lldb} | |
87 | BuildRequires: epydoc | |
88 | %ifarch i386 i486 | |
89 | BuildRequires: libatomic-devel | |
90 | %endif | |
91 | BuildRequires: libedit-devel | |
92 | BuildRequires: libxml2-devel >= 2 | |
93 | BuildRequires: ncurses-ext-devel | |
94 | BuildRequires: python-devel >= 2 | |
95 | BuildRequires: swig-python | |
96 | %endif | |
97 | %if %{with polly} | |
98 | BuildRequires: cloog-isl-devel | |
99 | # >= 0.18.2-2 | |
100 | BuildRequires: gmp-devel | |
101 | BuildRequires: isl-devel >= 0.14 | |
102 | # optional | |
103 | BuildRequires: pluto-devel | |
104 | BuildRequires: scoplib-devel >= 0.2.1-2 | |
105 | #cuda-devel | |
106 | %endif | |
107 | Requires: %{name}-libs = %{version}-%{release} | |
108 | # LLVM is not supported on PPC64 | |
109 | # http://llvm.org/bugs/show_bug.cgi?id=3729 | |
110 | ExcludeArch: ppc64 | |
111 | BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) | |
112 | ||
113 | %define _sysconfdir /etc/%{name} | |
114 | ||
115 | %define specflags_ppc -fno-var-tracking-assignments | |
116 | ||
117 | # strip corrupts: $RPM_BUILD_ROOT/usr/lib64/llvm-gcc/bin/llvm-c++ ... | |
118 | %define _noautostrip .*/\\(libmud.*\\.a\\|bin/llvm-.*\\|lib.*++\\.a\\) | |
119 | ||
120 | # clang doesn't know it, and leaving it here would pollute llvm-config | |
121 | %define filterout_c -fvar-tracking-assignments | |
122 | %define filterout_cxx -fvar-tracking-assignments | |
123 | %define filterout_ccpp -fvar-tracking-assignments | |
124 | ||
125 | # std::__once_call, std::__once_callable non-function symbols | |
126 | %define skip_post_check_so liblldAArch64ELFTarget.so.* liblldARMELFTarget.so.* liblldHexagonELFTarget.so.* liblldMipsELFTarget.so.* liblldb.so.* | |
127 | ||
128 | %description | |
129 | LLVM is a compiler infrastructure designed for compile-time, | |
130 | link-time, runtime, and idle-time optimization of programs from | |
131 | arbitrary programming languages. LLVM is written in C++ and has been | |
132 | developed since 2000 at the University of Illinois and Apple. It | |
133 | currently supports compilation of C and C++ programs using clang | |
134 | frontend. | |
135 | ||
136 | %description -l pl.UTF-8 | |
137 | LLVM to infrastruktura kompilatora zaprojektowana do optymalizacji | |
138 | czasu kompilowania, linkowania, działania i bezczynności programów w | |
139 | dowolnych językach programowania. Jest napisana w C++, rozwijana od | |
140 | roku 2000 przez Uniwersytet w Illinois i Apple. Aktualnie obsługuje | |
141 | kompilację programów w C i C++ przy użyciu frontendu clang. | |
142 | ||
143 | %package libs | |
144 | Summary: LLVM shared library | |
145 | Summary(pl.UTF-8): Biblioteka współdzielona LLVM-a | |
146 | Group: Libraries | |
147 | Conflicts: llvm < 3.2 | |
148 | ||
149 | %description libs | |
150 | LLVM shared library. | |
151 | ||
152 | %description libs -l pl.UTF-8 | |
153 | Biblioteka współdzielona LLVM-a. | |
154 | ||
155 | %package devel | |
156 | Summary: Static libraries and header files for LLVM | |
157 | Summary(pl.UTF-8): Biblioteki statyczne i pliki nagłówkowe dla LLVM-a | |
158 | Group: Development/Languages | |
159 | Requires: %{name}-libs = %{version}-%{release} | |
160 | Requires: libstdc++-devel >= 6:3.4 | |
161 | ||
162 | %description devel | |
163 | This package contains static libraries and header files needed to | |
164 | develop new native programs that use the LLVM infrastructure. | |
165 | ||
166 | %description devel -l pl.UTF-8 | |
167 | Ten pakiet zawiera biblioteki statyczne oraz pliki nagłówkowe | |
168 | potrzebne do tworzenia nowych programów natywnych wykorzystujących | |
169 | infrastrukturę LLVM. | |
170 | ||
171 | %package doc | |
172 | Summary: Documentation for LLVM | |
173 | Summary(pl.UTF-8): Dokumentacja do LLVM-a | |
174 | Group: Documentation | |
175 | # does not require base | |
176 | ||
177 | %description doc | |
178 | Documentation for the LLVM compiler infrastructure. | |
179 | ||
180 | %description doc -l pl.UTF-8 | |
181 | Dokumentacja do infrastruktury kompilatorów LLVM. | |
182 | ||
183 | %package apidocs | |
184 | Summary: API documentation for LLVM | |
185 | Summary(pl.UTF-8): Dokumentacja API LLVM-a | |
186 | Group: Development/Languages | |
187 | Requires: %{name}-doc = %{version}-%{release} | |
188 | ||
189 | %description apidocs | |
190 | API documentation for the LLVM compiler infrastructure. | |
191 | ||
192 | %description apidocs -l pl.UTF-8 | |
193 | Dokumentacja API infrastruktury kompilatorów LLVM. | |
194 | ||
195 | %package polly | |
196 | Summary: Polyhedral optimizations for LLVM | |
197 | Summary(pl.UTF-8): Optymalizacje wielościanowe dla LLVM-a | |
198 | Group: Development/Tools | |
199 | URL: http://polly.llvm.org/ | |
200 | Requires: %{name} = %{version}-%{release} | |
201 | ||
202 | %description polly | |
203 | Polly is a high-level loop and data-locality optimizer and | |
204 | optimization infrastructure for LLVM. It uses an abstract mathematical | |
205 | representation based on integer polyhedra to analyze and optimize the | |
206 | memory access pattern of a program. | |
207 | ||
208 | %description polly -l pl.UTF-8 | |
209 | Polly to wysokopoziomowy optymalizator i infrastruktura LLVM-a do | |
210 | optymalizacji pętli i położenia danych. Wykorzystuje abstrakcyjną | |
211 | reprezentację matematyczną opartą na wielościanach całkowitoliczbowych | |
212 | do analizy i optymalizacji wzorców dostępu do pamięci przez program. | |
213 | ||
214 | %package polly-devel | |
215 | Summary: Header files for LLVM Polly optimization infrastructure | |
216 | Summary(pl.UTF-8): Pliki nagłówkowe infrastruktury optymalizacji LLVM-a Polly | |
217 | Group: Development/Libraries | |
218 | URL: http://polly.llvm.org/ | |
219 | Requires: %{name}-devel = %{version}-%{release} | |
220 | Requires: %{name}-polly = %{version}-%{release} | |
221 | ||
222 | %description polly-devel | |
223 | Header files for LLVM Polly optimization infrastructure. | |
224 | ||
225 | %description polly-devel -l pl.UTF-8 | |
226 | Pliki nagłówkowe infrastruktury optymalizacji LLVM-a Polly. | |
227 | ||
228 | %package -n clang | |
229 | Summary: A C language family frontend for LLVM | |
230 | Summary(pl.UTF-8): Frontend LLVM-a do języków z rodziny C | |
231 | License: NCSA | |
232 | Group: Development/Languages | |
233 | Requires: %{name} = %{version}-%{release} | |
234 | ||
235 | %description -n clang | |
236 | clang: noun 1. A loud, resonant, metallic sound. 2. The strident call | |
237 | of a crane or goose. 3. C-language family front-end toolkit. | |
238 | ||
239 | The goal of the Clang project is to create a new C, C++, Objective C | |
240 | and Objective C++ front-end for the LLVM compiler. Its tools are built | |
241 | as libraries and designed to be loosely-coupled and extendable. | |
242 | ||
243 | %description -n clang -l pl.UTF-8 | |
244 | clang (z angielskiego): 1. głośny, rezonujący, metaliczny dźwięk; 2. | |
245 | piskliwy odgłos żurawia lub gęsi; 3. narzędzia frontendowe dla języków | |
246 | z rodziny C. | |
247 | ||
248 | Celem projektu Clang jest utworzenie nowego frontendu dla kompilatora | |
249 | LLVM do języków C, C++, Objective C i Objective C++. Narzędzia są | |
250 | budowane jako biblioteki i zaprojektowane z myślą o swobodnym łączeniu | |
251 | i rozszerzaniu. | |
252 | ||
253 | %package -n clang-multilib | |
254 | Summary: A C language family frontend for LLVM - 32-bit support | |
255 | Summary(pl.UTF-8): Frontend LLVM-a do języków z rodziny C - obsługa binariów 32-bitowych | |
256 | License: NCSA | |
257 | Group: Development/Languages | |
258 | Requires: clang = %{version}-%{release} | |
259 | ||
260 | %description -n clang-multilib | |
261 | clang: noun 1. A loud, resonant, metallic sound. 2. The strident call | |
262 | of a crane or goose. 3. C-language family front-end toolkit. | |
263 | ||
264 | The goal of the Clang project is to create a new C, C++, Objective C | |
265 | and Objective C++ front-end for the LLVM compiler. Its tools are built | |
266 | as libraries and designed to be loosely-coupled and extendable. | |
267 | ||
268 | This package contains the C compiler support for producing 32-bit | |
269 | programs on 64-bit host. | |
270 | ||
271 | %description -n clang-multilib -l pl.UTF-8 | |
272 | clang (z angielskiego): 1. głośny, rezonujący, metaliczny dźwięk; 2. | |
273 | piskliwy odgłos żurawia lub gęsi; 3. narzędzia frontendowe dla języków | |
274 | z rodziny C. | |
275 | ||
276 | Celem projektu Clang jest utworzenie nowego frontendu dla kompilatora | |
277 | LLVM do języków C, C++, Objective C i Objective C++. Narzędzia są | |
278 | budowane jako biblioteki i zaprojektowane z myślą o swobodnym łączeniu | |
279 | i rozszerzaniu. | |
280 | ||
281 | Ten pakiet zawiera rozszerzenie kompilatora C o obsługę tworzenia | |
282 | programów 32-bitowych na maszynie 64-bitowej. | |
283 | ||
284 | %package -n clang-analyzer | |
285 | Summary: A source code analysis framework | |
286 | Summary(pl.UTF-8): Szkielet do analizy kodu źródłowego | |
287 | License: NCSA | |
288 | Group: Development/Languages | |
289 | Requires: clang = %{version}-%{release} | |
290 | # not picked up automatically since files are currently not instaled | |
291 | # in standard Python hierarchies yet | |
292 | Requires: python | |
293 | ||
294 | %description -n clang-analyzer | |
295 | The Clang Static Analyzer consists of both a source code analysis | |
296 | framework and a standalone tool that finds bugs in C and Objective-C | |
297 | programs. The standalone tool is invoked from the command-line, and is | |
298 | intended to run in tandem with a build of a project or code base. | |
299 | ||
300 | %description -n clang-analyzer -l pl.UTF-8 | |
301 | Clang Static Analyzer składa się ze szkieletu do analizy kodu | |
302 | źródłowego oraz samodzielnego narzędzia znajdującego błędy w | |
303 | programach w C i C++. Narzędzie jest wywoływane z linii poleceń, z | |
304 | myślą o uruchamianiu wraz z kompilacją projektu lub kodu. | |
305 | ||
306 | %package -n clang-devel | |
307 | Summary: Header files for Clang | |
308 | Summary(pl.UTF-8): Pliki nagłówkowe Clanga | |
309 | Group: Development/Languages | |
310 | Requires: %{name}-devel = %{version}-%{release} | |
311 | Requires: clang = %{version}-%{release} | |
312 | ||
313 | %description -n clang-devel | |
314 | This package contains header files for the Clang compiler. | |
315 | ||
316 | %description -n clang-devel -l pl.UTF-8 | |
317 | Ten pakiet zawiera pliki nagłówkowe kompilatora Clang. | |
318 | ||
319 | %package -n clang-doc | |
320 | Summary: Documentation for Clang | |
321 | Summary(pl.UTF-8): Dokumentacja do Clanga | |
322 | Group: Documentation | |
323 | Requires: %{name} = %{version}-%{release} | |
324 | ||
325 | %description -n clang-doc | |
326 | Documentation for the Clang compiler front-end. | |
327 | ||
328 | %description -n clang-doc -l pl.UTF-8 | |
329 | Dokumentacja do frontendu kompilatora Clang. | |
330 | ||
331 | %package -n clang-apidocs | |
332 | Summary: API documentation for Clang | |
333 | Summary(pl.UTF-8): Dokumentacja API Clanga | |
334 | Group: Development/Languages | |
335 | Requires: clang-doc = %{version}-%{release} | |
336 | ||
337 | %description -n clang-apidocs | |
338 | API documentation for the Clang compiler. | |
339 | ||
340 | %description -n clang-apidocs -l pl.UTF-8 | |
341 | Dokumentacja API kompilatora Clang. | |
342 | ||
343 | %package -n clang-tools-extra | |
344 | Summary: Extra tools for Clang | |
345 | Summary(pl.UTF-8): Dodatkowe narzędzia do kompilatora Clang | |
346 | Group: Development/Tools | |
347 | URL: http://clang.llvm.org/docs/ClangTools.html | |
348 | Requires: clang = %{version}-%{release} | |
349 | ||
350 | %description -n clang-tools-extra | |
351 | Extra tools for Clang. | |
352 | ||
353 | %description -n clang-tools-extra -l pl.UTF-8 | |
354 | Dodatkowe narzędzia do kompilatora Clang. | |
355 | ||
356 | %package -n lld | |
357 | Summary: The LLVM linker | |
358 | Summary(pl.UTF-8): Konsolidator z projektu LLVM | |
359 | Group: Development/Libraries | |
360 | URL: http://lld.llvm.org/ | |
361 | Requires: %{name} = %{version}-%{release} | |
362 | ||
363 | %description -n lld | |
364 | lld is a new set of modular code for creating linker tools. | |
365 | ||
366 | %description -n lld -l pl.UTF-8 | |
367 | lld to nowy zbiór modularnego kodu do tworzenia narzędzi | |
368 | konsolidujących. | |
369 | ||
370 | %package -n lld-devel | |
371 | Summary: Development files for LLD linker tools | |
372 | Summary(pl.UTF-8): Pliki programistyczne narzędzi konsolidujących LLD | |
373 | Group: Development/Tools | |
374 | URL: http://lld.llvm.org/ | |
375 | Requires: %{name}-devel = %{version}-%{release} | |
376 | ||
377 | %description -n lld-devel | |
378 | Development files for LLD linker tools. | |
379 | ||
380 | %description -n lld-devel -l pl.UTF-8 | |
381 | Pliki programistyczne narzędzi konsolidujących LLD. | |
382 | ||
383 | %package -n lldb | |
384 | Summary: Next generation high-performance debugger | |
385 | Summary(pl.UTF-8): Wydajny debugger nowej generacji | |
386 | Group: Development/Debuggers | |
387 | URL: http://lldb.llvm.org/ | |
388 | Requires: %{name} = %{version}-%{release} | |
389 | ||
390 | %description -n lldb | |
391 | LLDB is a next generation, high-performance debugger. It is built as a | |
392 | set of reusable components which highly leverage existing libraries in | |
393 | the larger LLVM Project, such as the Clang expression parser and LLVM | |
394 | disassembler. | |
395 | ||
396 | %description -n lldb -l pl.UTF-8 | |
397 | LLDB to wydajny debugger nowej generacji. Jest zbudowany w oparciu o | |
398 | komponenty wielokrotnego użytku, wykorzystujące istniejące biblioteki | |
399 | w projekcie LLVM, takie jak analizator wyrażeń kompilatora Clang oraz | |
400 | disasembler LLVM. | |
401 | ||
402 | %package -n lldb-devel | |
403 | Summary: Development files for LLDB debugger | |
404 | Summary(pl.UTF-8): Pliki programistyczne debuggera LLDB | |
405 | Group: Development/Libraries | |
406 | URL: http://lldb.llvm.org/ | |
407 | Requires: %{name}-devel = %{version}-%{release} | |
408 | Requires: clang-devel = %{version}-%{release} | |
409 | Requires: lldb = %{version}-%{release} | |
410 | ||
411 | %description -n lldb-devel | |
412 | Development files for LLDB debugger. | |
413 | ||
414 | %description -n lldb-devel -l pl.UTF-8 | |
415 | Pliki programistyczne debuggera LLDB. | |
416 | ||
417 | %package ocaml | |
418 | Summary: OCaml binding for LLVM | |
419 | Summary(pl.UTF-8): Wiązanie OCamla do LLVM-a | |
420 | Group: Libraries | |
421 | Requires: %{name} = %{version}-%{release} | |
422 | %requires_eq ocaml-runtime | |
423 | ||
424 | %description ocaml | |
425 | OCaml binding for LLVM. | |
426 | ||
427 | %description ocaml -l pl.UTF-8 | |
428 | Wiązanie OCamla do LLVM-a. | |
429 | ||
430 | %package ocaml-devel | |
431 | Summary: Development files for LLVM OCaml binding | |
432 | Summary(pl.UTF-8): Pliki programistyczne wiązania OCamla do LLVM-a | |
433 | Group: Development/Libraries | |
434 | Requires: %{name}-devel = %{version}-%{release} | |
435 | Requires: %{name}-ocaml = %{version}-%{release} | |
436 | ||
437 | %description ocaml-devel | |
438 | The llvm-ocaml-devel package contains libraries and signature files | |
439 | for developing applications that use llvm-ocaml binding. | |
440 | ||
441 | %description ocaml-devel -l pl.UTF-8 | |
442 | Ten pakiet zawiera biblioteki i pliki sygnatur do tworzenia aplikacji | |
443 | wykorzystujących wiązanie llvm-ocaml. | |
444 | ||
445 | %package ocaml-doc | |
446 | Summary: Documentation for LLVM's OCaml binding | |
447 | Summary(pl.UTF-8): Dokumentacja wiązania OCamla do LLVM-a | |
448 | Group: Documentation | |
449 | Requires: %{name}-ocaml = %{version}-%{release} | |
450 | ||
451 | %description ocaml-doc | |
452 | HTML documentation for LLVM's OCaml binding. | |
453 | ||
454 | %description ocaml-doc -l pl.UTF-8 | |
455 | Dokumentacja HTML wiązania OCamla do LLVM-a. | |
456 | ||
457 | %prep | |
458 | %setup -q -n %{name}-%{version}.src -a1 %{?with_rt:-a2} %{?with_lldb:-a3} %{?with_polly:-a4} -a5 -a6 | |
459 | mv cfe-%{version}.src tools/clang | |
460 | %{?with_rt:mv compiler-rt-%{version}.src projects/compiler-rt} | |
461 | %{?with_lldb:mv lldb-%{version}.src tools/lldb} | |
462 | %{?with_polly:mv polly-%{version}.src tools/polly} | |
463 | mv clang-tools-extra-%{version}.src tools/clang/tools/extra | |
464 | mv lld-%{version}.src tools/lld | |
465 | ||
466 | %patch0 -p1 | |
467 | %patch1 -p1 | |
468 | %patch2 -p1 | |
469 | %patch3 -p1 | |
470 | %patch5 -p1 | |
471 | ||
472 | grep -rl /usr/bin/env tools utils | xargs sed -i -e '1{ | |
473 | s,^#!.*bin/env python,#!%{__python}, | |
474 | s,^#!.*bin/env perl,#!%{__perl}, | |
475 | }' | |
476 | ||
477 | %build | |
478 | install -d build | |
479 | ||
480 | # Disabling assertions now, rec. by pure and needed for OpenGTL | |
481 | # TESTFIX no PIC on ix86: http://llvm.org/bugs/show_bug.cgi?id=3801 | |
482 | cd build | |
483 | CPPFLAGS="%{rpmcppflags} -D_FILE_OFFSET_BITS=64" | |
484 | ||
485 | %{cmake} ../ \ | |
486 | %ifarch %{x8664} | |
487 | -DLLVM_LIBDIR_SUFFIX:STRING=64 \ | |
488 | %endif | |
489 | %ifarch x32 | |
490 | -DLLVM_LIBDIR_SUFFIX:STRING=x32 \ | |
491 | %endif | |
492 | %if %{with apidocs} | |
493 | -DLLVM_ENABLE_DOXYGEN:BOOL=ON \ | |
494 | %endif | |
495 | %if %{with doc} | |
496 | -DLLVM_ENABLE_SPHINX:BOOL=ON \ | |
497 | %endif | |
498 | -DLLVM_ENABLE_PIC:BOOL=ON \ | |
499 | -DLLVM_ENABLE_ASSERTIONS:BOOL=OFF \ | |
500 | -DLLVM_ENABLE_CXX1Y:BOOL=ON \ | |
501 | -DLLVM_BINDINGS_LIST:LIST="%{?with_ocaml:ocaml}" \ | |
502 | -DBUILD_SHARED_LIBS:BOOL=ON | |
503 | ||
504 | %{__make} \ | |
505 | VERBOSE=1 \ | |
506 | REQUIRES_RTTI=1 \ | |
507 | OPTIMIZE_OPTION="%{rpmcflags} %{rpmcppflags}" | |
508 | ||
509 | %if %{with tests} | |
510 | %{__make} check 2>&1 | tee llvm-testlog.txt | |
511 | %{__make} -C tools/clang test 2>&1 | tee clang-testlog.txt | |
512 | %endif | |
513 | ||
514 | %if %{with doc} | |
515 | %{__make} -C docs docs-llvm-html | |
516 | %{__make} -C docs docs-llvm-man | |
517 | %if %{with ocaml} | |
518 | %{__make} -C docs ocaml_doc | |
519 | %endif | |
520 | %{__make} -C tools/clang/docs docs-clang-html | |
521 | %{__make} -C tools/clang/docs docs-clang-man | |
522 | %{__make} -C tools/lld/docs docs-lld-html | |
523 | %{__make} -C tools/lldb/docs lldb-python-doc | |
524 | %{__make} -C tools/lldb/docs lldb-cpp-doc | |
525 | %{__make} -C ../tools/clang/tools/extra/docs html | |
526 | %endif | |
527 | ||
528 | %install | |
529 | rm -rf $RPM_BUILD_ROOT | |
530 | %{__make} -C build install \ | |
531 | DESTDIR=$RPM_BUILD_ROOT | |
532 | ||
533 | # only some .pyc files are created by make install | |
534 | %py_comp $RPM_BUILD_ROOT%{py_sitedir} | |
535 | %py_ocomp $RPM_BUILD_ROOT%{py_sitedir} | |
536 | ||
537 | # Static analyzer not installed by default: | |
538 | # http://clang-analyzer.llvm.org/installation#OtherPlatforms | |
539 | install -d $RPM_BUILD_ROOT%{_libdir}/clang-analyzer | |
540 | # create launchers | |
541 | for f in scan-{build,view}; do | |
542 | ln -s %{_libdir}/clang-analyzer/$f/$f $RPM_BUILD_ROOT%{_bindir}/$f | |
543 | cp -pr tools/clang/tools/$f $RPM_BUILD_ROOT%{_libdir}/clang-analyzer | |
544 | done | |
545 | install -d $RPM_BUILD_ROOT%{_mandir}/man1 | |
546 | %{__mv} $RPM_BUILD_ROOT%{_libdir}/clang-analyzer/scan-build/scan-build.1 $RPM_BUILD_ROOT%{_mandir}/man1 | |
547 | %py_comp $RPM_BUILD_ROOT%{_libdir}/clang-analyzer/scan-view | |
548 | %py_ocomp $RPM_BUILD_ROOT%{_libdir}/clang-analyzer/scan-view | |
549 | %py_postclean %{_libdir}/clang-analyzer/scan-view | |
550 | # not this OS | |
551 | %{__rm} $RPM_BUILD_ROOT%{_libdir}/clang-analyzer/scan-build/*.bat | |
552 | ||
553 | # not installed by cmake buildsystem | |
554 | install build/bin/clang-query $RPM_BUILD_ROOT%{_bindir} | |
555 | install build/bin/pp-trace $RPM_BUILD_ROOT%{_bindir} | |
556 | ||
557 | %if %{with doc} | |
558 | cp -p build/docs/man/*.1 $RPM_BUILD_ROOT%{_mandir}/man1 | |
559 | # these tools are not installed | |
560 | %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/{FileCheck,llvm-build}.1 | |
561 | # make links | |
562 | echo '.so llvm-ar.1' > $RPM_BUILD_ROOT%{_mandir}/man1/llvm-ranlib.1 | |
563 | %endif | |
564 | ||
565 | # Move documentation back to build directory | |
566 | %if %{with ocaml} | |
567 | rm -rf ocamldocs | |
568 | mv $RPM_BUILD_ROOT%{_prefix}/docs/ocaml/html/html ocamldocs | |
569 | %endif | |
570 | ||
571 | # and separate the apidoc | |
572 | %if %{with apidocs} | |
573 | rm -rf clang-apidoc | |
574 | cp -a build/tools/clang/docs/html clang-apidoc | |
575 | %endif | |
576 | ||
577 | # And prepare Clang documentation | |
578 | rm -rf clang-docs | |
579 | install -d clang-docs | |
580 | for f in LICENSE.TXT NOTES.txt README.txt; do | |
581 | ln tools/clang/$f clang-docs | |
582 | done | |
583 | ||
584 | # Get rid of erroneously installed example files. | |
585 | %{__rm} $RPM_BUILD_ROOT%{_libdir}/LLVMHello.so | |
586 | # test? | |
587 | %{__rm} $RPM_BUILD_ROOT%{_bindir}/llvm-c-test | |
588 | # not this OS | |
589 | %{__rm} $RPM_BUILD_ROOT%{_datadir}/clang/clang-format-bbedit.applescript | |
590 | ||
591 | %clean | |
592 | rm -rf $RPM_BUILD_ROOT | |
593 | ||
594 | %post libs -p /sbin/ldconfig | |
595 | %postun libs -p /sbin/ldconfig | |
596 | ||
597 | %post -n clang -p /sbin/ldconfig | |
598 | %postun -n clang -p /sbin/ldconfig | |
599 | ||
600 | %post -n clang-tools-extra -p /sbin/ldconfig | |
601 | %postun -n clang-tools-extra -p /sbin/ldconfig | |
602 | ||
603 | %post -n lldb -p /sbin/ldconfig | |
604 | %postun -n lldb -p /sbin/ldconfig | |
605 | ||
606 | %files | |
607 | %defattr(644,root,root,755) | |
608 | %doc CREDITS.TXT LICENSE.TXT README.txt %{?with_tests:llvm-testlog.txt} | |
609 | %attr(755,root,root) %{_bindir}/bugpoint | |
610 | %attr(755,root,root) %{_bindir}/llc | |
611 | %attr(755,root,root) %{_bindir}/lli | |
612 | %attr(755,root,root) %{_bindir}/llvm-ar | |
613 | %attr(755,root,root) %{_bindir}/llvm-as | |
614 | %attr(755,root,root) %{_bindir}/llvm-bcanalyzer | |
615 | %attr(755,root,root) %{_bindir}/llvm-cov | |
616 | %attr(755,root,root) %{_bindir}/llvm-diff | |
617 | %attr(755,root,root) %{_bindir}/llvm-dis | |
618 | %attr(755,root,root) %{_bindir}/llvm-dsymutil | |
619 | %attr(755,root,root) %{_bindir}/llvm-dwarfdump | |
620 | %attr(755,root,root) %{_bindir}/llvm-extract | |
621 | %attr(755,root,root) %{_bindir}/llvm-lib | |
622 | %attr(755,root,root) %{_bindir}/llvm-link | |
623 | %ifarch %{x8664} x32 | |
624 | %attr(755,root,root) %{_bindir}/llvm-lto | |
625 | %endif | |
626 | %attr(755,root,root) %{_bindir}/llvm-mc | |
627 | %attr(755,root,root) %{_bindir}/llvm-mcmarkup | |
628 | %attr(755,root,root) %{_bindir}/llvm-nm | |
629 | %attr(755,root,root) %{_bindir}/llvm-objdump | |
630 | %attr(755,root,root) %{_bindir}/llvm-profdata | |
631 | %attr(755,root,root) %{_bindir}/llvm-ranlib | |
632 | %attr(755,root,root) %{_bindir}/llvm-readobj | |
633 | %attr(755,root,root) %{_bindir}/llvm-rtdyld | |
634 | %attr(755,root,root) %{_bindir}/llvm-size | |
635 | %attr(755,root,root) %{_bindir}/llvm-stress | |
636 | %attr(755,root,root) %{_bindir}/llvm-symbolizer | |
637 | %attr(755,root,root) %{_bindir}/llvm-tblgen | |
638 | %attr(755,root,root) %{_bindir}/llvm-cxxdump | |
639 | %attr(755,root,root) %{_bindir}/llvm-pdbdump | |
640 | %attr(755,root,root) %{_bindir}/macho-dump | |
641 | %attr(755,root,root) %{_bindir}/obj2yaml | |
642 | %attr(755,root,root) %{_bindir}/opt | |
643 | %attr(755,root,root) %{_bindir}/verify-uselistorder | |
644 | %attr(755,root,root) %{_bindir}/yaml2obj | |
645 | %if %{with doc} | |
646 | %{_mandir}/man1/bugpoint.1* | |
647 | %{_mandir}/man1/lit.1* | |
648 | %{_mandir}/man1/llc.1* | |
649 | %{_mandir}/man1/lli.1* | |
650 | %{_mandir}/man1/llvm-ar.1* | |
651 | %{_mandir}/man1/llvm-as.1* | |
652 | %{_mandir}/man1/llvm-bcanalyzer.1* | |
653 | %{_mandir}/man1/llvm-cov.1* | |
654 | %{_mandir}/man1/llvm-diff.1* | |
655 | %{_mandir}/man1/llvm-dis.1* | |
656 | %{_mandir}/man1/llvm-dwarfdump.1* | |
657 | %{_mandir}/man1/llvm-extract.1* | |
658 | %{_mandir}/man1/llvm-link.1* | |
659 | %{_mandir}/man1/llvm-nm.1* | |
660 | %{_mandir}/man1/llvm-profdata.1* | |
661 | %{_mandir}/man1/llvm-ranlib.1* | |
662 | %{_mandir}/man1/llvm-readobj.1* | |
663 | %{_mandir}/man1/llvm-stress.1* | |
664 | %{_mandir}/man1/llvm-symbolizer.1* | |
665 | %{_mandir}/man1/opt.1* | |
666 | %{_mandir}/man1/tblgen.1* | |
667 | %endif | |
668 | ||
669 | %files libs | |
670 | %defattr(644,root,root,755) | |
671 | %attr(755,root,root) %{_libdir}/libLLVM*.so.%{version} | |
672 | %attr(755,root,root) %ghost %{_libdir}/libLLVM*.so.3.7 | |
673 | %ifarch %{x8664} x32 | |
674 | %attr(755,root,root) %{_libdir}/libLTO.so.%{version} | |
675 | %attr(755,root,root) %ghost %{_libdir}/libLTO.so.3.7 | |
676 | %endif | |
677 | ||
678 | %files devel | |
679 | %defattr(644,root,root,755) | |
680 | %attr(755,root,root) %{_bindir}/llvm-config | |
681 | %attr(755,root,root) %{_libdir}/libLLVM*.so | |
682 | %attr(755,root,root) %{_libdir}/BugpointPasses.so | |
683 | %ifarch %{x8664} x32 | |
684 | %attr(755,root,root) %{_libdir}/libLTO.so | |
685 | %endif | |
686 | %{_includedir}/llvm | |
687 | %{_includedir}/llvm-c | |
688 | %dir %{_datadir}/llvm | |
689 | %{_datadir}/llvm/cmake | |
690 | %if %{with doc} | |
691 | %{_mandir}/man1/llvm-config.1* | |
692 | %endif | |
693 | ||
694 | #%files doc | |
695 | #%defattr(644,root,root,755) | |
696 | ||
697 | %if %{with apidocs} | |
698 | %files apidocs | |
699 | %defattr(644,root,root,755) | |
700 | %doc apidoc/* | |
701 | %endif | |
702 | ||
703 | %if %{with polly} | |
704 | %files polly | |
705 | %defattr(644,root,root,755) | |
706 | %doc tools/polly/{CREDITS.txt,LICENSE.txt,README} | |
707 | %attr(755,root,root) %{_libdir}/LLVMPolly.so | |
708 | %attr(755,root,root) %{_libdir}/libPolly.so | |
709 | ||
710 | %files polly-devel | |
711 | %defattr(644,root,root,755) | |
712 | %{_includedir}/polly | |
713 | %endif | |
714 | ||
715 | %files -n clang | |
716 | %defattr(644,root,root,755) | |
717 | %doc clang-docs/{LICENSE.TXT,NOTES.txt,README.txt} %{?with_tests:clang-testlog.txt} | |
718 | %attr(755,root,root) %{_bindir}/clang | |
719 | %attr(755,root,root) %{_bindir}/clang++ | |
720 | %attr(755,root,root) %{_bindir}/clang-3.7 | |
721 | %attr(755,root,root) %{_bindir}/clang-check | |
722 | %attr(755,root,root) %{_bindir}/clang-cl | |
723 | %attr(755,root,root) %{_bindir}/clang-format | |
724 | %attr(755,root,root) %{_bindir}/git-clang-format | |
725 | %attr(755,root,root) %{_libdir}/libclang.so.3.7 | |
726 | %attr(755,root,root) %{_libdir}/libclang[A-Z]*.so.%{version} | |
727 | %attr(755,root,root) %ghost %{_libdir}/libclang[A-Z]*.so.3.7 | |
728 | %dir %{_libdir}/clang | |
729 | %dir %{_libdir}/clang/%{version} | |
730 | %{_libdir}/clang/%{version}/include | |
731 | %if %{with rt} | |
732 | %ifarch %{ix86} %{x8664} | |
733 | %{_libdir}/clang/%{version}/asan_blacklist.txt | |
734 | %dir %{_libdir}/clang/%{version}/lib | |
735 | %dir %{_libdir}/clang/%{version}/lib/linux | |
736 | %endif | |
737 | %ifarch %{ix86} | |
738 | %{_libdir}/clang/%{version}/lib/linux/libclang_rt.*-i*86.a | |
739 | %attr(755,root,root) %{_libdir}/clang/%{version}/lib/linux/libclang_rt.*-i*86.so | |
740 | %endif | |
741 | %ifarch %{x8664} | |
742 | %{_libdir}/clang/%{version}/dfsan_abilist.txt | |
743 | %{_libdir}/clang/%{version}/msan_blacklist.txt | |
744 | %{_libdir}/clang/%{version}/lib/linux/libclang_rt.*-x86_64.a | |
745 | %attr(755,root,root) %{_libdir}/clang/%{version}/lib/linux/libclang_rt.*-x86_64.so | |
746 | %{_libdir}/clang/%{version}/lib/linux/libclang_rt.*-x86_64.a.syms | |
747 | %endif | |
748 | %endif | |
749 | %dir %{_datadir}/clang | |
750 | %{_datadir}/clang/clang-format-diff.py | |
751 | ||
752 | %if %{with rt} | |
753 | %ifarch %{x8664} | |
754 | %files -n clang-multilib | |
755 | %defattr(644,root,root,755) | |
756 | %{_libdir}/clang/%{version}/lib/linux/libclang_rt.*-i386.a | |
757 | %attr(755,root,root) %{_libdir}/clang/%{version}/lib/linux/libclang_rt.*-i386.so | |
758 | %endif | |
759 | %endif | |
760 | ||
761 | %files -n clang-analyzer | |
762 | %defattr(644,root,root,755) | |
763 | %attr(755,root,root) %{_bindir}/scan-build | |
764 | %attr(755,root,root) %{_bindir}/scan-view | |
765 | %{_mandir}/man1/scan-build.1* | |
766 | %dir %{_libdir}/clang-analyzer | |
767 | ||
768 | %dir %{_libdir}/clang-analyzer/scan-build | |
769 | %{_libdir}/clang-analyzer/scan-build/*.css | |
770 | %{_libdir}/clang-analyzer/scan-build/*.js | |
771 | %attr(755,root,root) %{_libdir}/clang-analyzer/scan-build/scan-build | |
772 | %attr(755,root,root) %{_libdir}/clang-analyzer/scan-build/*-analyzer | |
773 | ||
774 | %dir %{_libdir}/clang-analyzer/scan-view | |
775 | %attr(755,root,root) %{_libdir}/clang-analyzer/scan-view/scan-view | |
776 | %{_libdir}/clang-analyzer/scan-view/Resources | |
777 | %{_libdir}/clang-analyzer/scan-view/*.py[co] | |
778 | ||
779 | %files -n clang-devel | |
780 | %defattr(644,root,root,755) | |
781 | %attr(755,root,root) %{_libdir}/libclang*.so | |
782 | %{_includedir}/clang | |
783 | %{_includedir}/clang-c | |
784 | ||
785 | %files -n clang-doc | |
786 | %defattr(644,root,root,755) | |
787 | %doc tools/clang/docs/*.{html,png,txt} | |
788 | ||
789 | %if %{with apidocs} | |
790 | %files -n clang-apidocs | |
791 | %defattr(644,root,root,755) | |
792 | %doc clang-apidoc/* | |
793 | %endif | |
794 | ||
795 | %files -n clang-tools-extra | |
796 | %defattr(644,root,root,755) | |
797 | %doc tools/clang/tools/extra/{CODE_OWNERS.TXT,README.txt} tools/clang/tools/extra/docs/_build/html/{*.html,*.js,_static} | |
798 | %attr(755,root,root) %{_bindir}/clang-apply-replacements | |
799 | %attr(755,root,root) %{_bindir}/clang-modernize | |
800 | %attr(755,root,root) %{_bindir}/clang-query | |
801 | %attr(755,root,root) %{_bindir}/clang-rename | |
802 | %attr(755,root,root) %{_bindir}/clang-tidy | |
803 | %attr(755,root,root) %{_bindir}/pp-trace | |
804 | %attr(755,root,root) %{_libdir}/libmodernizeCore.so.%{version} | |
805 | %attr(755,root,root) %ghost %{_libdir}/libmodernizeCore.so.3.7 | |
806 | # -devel? | |
807 | %attr(755,root,root) %{_libdir}/libmodernizeCore.so | |
808 | ||
809 | %files -n lld | |
810 | %defattr(644,root,root,755) | |
811 | %doc tools/lld/{LICENSE.TXT,README.md} | |
812 | %attr(755,root,root) %{_bindir}/lld | |
813 | %attr(755,root,root) %{_libdir}/liblld[ACDEHMPRXY]*.so.%{version} | |
814 | %attr(755,root,root) %ghost %{_libdir}/liblld[ACDEHMPRXY]*.so.3.7 | |
815 | ||
816 | %files -n lld-devel | |
817 | %defattr(644,root,root,755) | |
818 | %attr(755,root,root) %{_libdir}/liblld[ACDEHMPRXY]*.so | |
819 | %{_includedir}/lld | |
820 | ||
821 | %if %{with lldb} | |
822 | %files -n lldb | |
823 | %defattr(644,root,root,755) | |
824 | %attr(755,root,root) %{_bindir}/argdumper | |
825 | %attr(755,root,root) %{_bindir}/lldb | |
826 | %attr(755,root,root) %{_bindir}/lldb-%{version} | |
827 | %attr(755,root,root) %{_bindir}/lldb-mi | |
828 | %attr(755,root,root) %{_bindir}/lldb-mi-%{version} | |
829 | %attr(755,root,root) %{_bindir}/lldb-server | |
830 | %attr(755,root,root) %{_bindir}/lldb-server-%{version} | |
831 | %attr(755,root,root) %{_libdir}/liblldb.so.%{version} | |
832 | %attr(755,root,root) %ghost %{_libdir}/liblldb.so.3.7 | |
833 | %dir %{py_sitedir}/lldb | |
834 | %attr(755,root,root) %{py_sitedir}/lldb/argdumper | |
835 | %{py_sitedir}/lldb/formatters | |
836 | %{py_sitedir}/lldb/runtime | |
837 | %{py_sitedir}/lldb/utils | |
838 | %{py_sitedir}/lldb/__init__.py[co] | |
839 | %{py_sitedir}/lldb/embedded_interpreter.py[co] | |
840 | %attr(755,root,root) %{py_sitedir}/lldb/_lldb.so | |
841 | %attr(755,root,root) %{py_sitedir}/readline.so | |
842 | ||
843 | %files -n lldb-devel | |
844 | %defattr(644,root,root,755) | |
845 | %attr(755,root,root) %{_libdir}/liblldb.so | |
846 | %{_libdir}/liblldb*.a | |
847 | %{_includedir}/lldb | |
848 | %endif | |
849 | ||
850 | %if %{with ocaml} | |
851 | %files ocaml | |
852 | %defattr(644,root,root,755) | |
853 | %{_libdir}/ocaml/META.llvm* | |
854 | %attr(755,root,root) %{_libdir}/ocaml/dllllvm*.so | |
855 | %{_libdir}/ocaml/llvm*.cma | |
856 | %{_libdir}/ocaml/llvm*.cmi | |
857 | ||
858 | %files ocaml-devel | |
859 | %defattr(644,root,root,755) | |
860 | %{_libdir}/ocaml/libllvm*.a | |
861 | %{_libdir}/ocaml/llvm*.a | |
862 | %{_libdir}/ocaml/llvm*.cmx* | |
863 | ||
864 | %files ocaml-doc | |
865 | %defattr(644,root,root,755) | |
866 | %doc ocamldocs/* | |
867 | %endif |