3 # - normal build (x86_64) requires about 80 GB of disk space
7 # %{_datadir}/clang/bash-autocomplete.sh
8 # %{_datadir}/clang/clang-format-sublime.py - sublime plugin
9 # %{_datadir}/clang/clang-format.el - clang tools emacs integration
10 # %{_datadir}/clang/clang-include-fixer.el
11 # %{_datadir}/clang/clang-rename.el
12 # - no content in doc package (it used to contain parts of clang apidocs and some examples)
13 # - system isl in polly?
16 %bcond_without lldb # LLDB debugger
17 %bcond_without polly # Polly cache-locality optimization, auto-parallelism and vectorization
18 %bcond_without rt # compiler-rt libraries
19 %bcond_without multilib # compiler-rt multilib libraries
20 %bcond_without ocaml # OCaml binding
21 %bcond_without z3 # Z3 constraint solver support in Clang Static Analyzer
22 %bcond_without doc # HTML docs and man pages
23 %bcond_with flang # flang (Fortran18) compiler (broken as of 11.0.1)
24 %bcond_with cxxmodules # C++20 modules (requires support in bootstrap compiler)
25 %bcond_with apidocs # doxygen docs (HUGE, so they are not built by default)
26 %bcond_with tests # run tests
27 %bcond_with lowmem # lower memory requirements
29 # No ocaml on other arches or no native ocaml (required for ocaml-ctypes)
30 %ifnarch %{ix86} %{x8664} %{arm} aarch64 ppc sparc sparcv9
34 %ifarch armv3l armv4b armv4l armv4tl armv5tl armv5tel armv5tejl armv6l armv6hl
38 %ifarch %{arm} aarch64
42 Summary: The Low Level Virtual Machine (An Optimizing Compiler Infrastructure)
43 Summary(pl.UTF-8): Niskopoziomowa maszyna wirtualna (infrastruktura kompilatora optymalizującego)
47 License: University of Illinois/NCSA Open Source License
48 Group: Development/Languages
49 #Source0Download: https://github.com/llvm/llvm-project/releases/
50 Source0: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/%{name}-%{version}.src.tar.xz
51 # Source0-md5: 6ec7ae9fd43da9b87cda15b3ab9cc7af
52 Source1: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/clang-%{version}.src.tar.xz
53 # Source1-md5: b4cb0b74b1f3292a89c9720f3e1e2934
54 Source2: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/compiler-rt-%{version}.src.tar.xz
55 # Source2-md5: 29d6186e048936008512b8bbdb3a1b71
56 Source3: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/lldb-%{version}.src.tar.xz
57 # Source3-md5: e49cde09adb5ed43a651e6d5bcb2aded
58 Source4: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/polly-%{version}.src.tar.xz
59 # Source4-md5: f9cc25cb4e52f1176225ef28d3b4d8ab
60 Source5: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/clang-tools-extra-%{version}.src.tar.xz
61 # Source5-md5: 1e577a85948a0f07483b7c405e59a0ca
62 Source6: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/lld-%{version}.src.tar.xz
63 # Source6-md5: 652c93bd3f78fcb9a02d8d3027f7dae2
64 Source7: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/flang-%{version}.src.tar.xz
65 # Source7-md5: 3d37b40aa1618d8337e9b010d3e24f2d
66 # "mlir" subdir extracted from https://github.com/llvm/llvm-project/releases/download/llvmorg-11.0.1/llvm-project-11.0.1.src.tar.xz
67 Source8: mlir-%{version}.tar.xz
68 # Source8-md5: 97736d1209b01ac52b0dd3c0916f8198
69 Patch1: %{name}-pld.patch
70 Patch2: %{name}-python-modules.patch
71 Patch3: x32-gcc-toolchain.patch
72 Patch4: cmake-buildtype.patch
73 Patch5: %{name}-ocaml-shared.patch
74 Patch6: %{name}-flang.patch
77 BuildRequires: binutils-devel
79 BuildRequires: cmake >= 3.4.3
82 BuildRequires: libedit-devel
83 BuildRequires: libltdl-devel
84 BuildRequires: libpfm-devel
85 BuildRequires: libstdc++-devel >= 6:5
86 BuildRequires: libxml2-devel >= 2
87 BuildRequires: ncurses-devel
89 BuildRequires: ocaml >= 4.00.0
90 BuildRequires: ocaml-ctypes-devel >= 0.4
91 BuildRequires: ocaml-findlib
92 BuildRequires: ocaml-ocamldoc
93 BuildRequires: ocaml-ounit >= 2
95 BuildRequires: perl-base >= 1:5.6
96 BuildRequires: perl-tools-pod
97 BuildRequires: python >= 1:2.7
98 BuildRequires: python-PyYAML
99 BuildRequires: python-pygments >= 2.0
100 BuildRequires: rpm-pythonprov
101 BuildRequires: rpmbuild(macros) >= 1.734
102 %{?with_doc:BuildRequires: sphinx-pdg}
103 BuildRequires: tar >= 1:1.22
104 BuildRequires: xar-devel
106 %{?with_z3:BuildRequires: z3-devel >= 4.7.1}
107 BuildRequires: zlib-devel
109 BuildRequires: doxygen
110 BuildRequires: graphviz
113 BuildRequires: dejagnu
114 BuildRequires: tcl-devel
116 %if %{with rt} && %{with multilib}
118 BuildRequires: gcc-c++-multilib-32
119 BuildRequires: libstdc++-multilib-32-devel
122 BuildRequires: gcc-c++-multilib-32
123 BuildRequires: gcc-c++-multilib-64
124 BuildRequires: glibc-devel(x86_64)
125 BuildRequires: libstdc++-multilib-32-devel
126 BuildRequires: libstdc++-multilib-64-devel
130 BuildRequires: epydoc
131 %ifarch i386 i486 %{arm}
132 BuildRequires: libatomic-devel
134 BuildRequires: libxml2-devel >= 2
135 BuildRequires: lua-devel
136 BuildRequires: ncurses-ext-devel
137 BuildRequires: python-devel >= 1:2.7
138 %{?with_doc:BuildRequires: python3-recommonmark}
139 BuildRequires: swig-python >= 3.0.11
140 BuildRequires: xz-devel
143 #BuildRequires: gmp-devel or imath-devel (private copy in polly/lib/External/isl/imath)
144 # private copy in polly/lib/External/isl
145 #BuildRequires: isl-devel >= 0.22.1
146 #TODO (bcond): cuda-devel (with POLLY_ENABLE_GPGPU_CODEGEN=ON)
149 BuildConflicts: llvm-ocaml
151 Requires: %{name}-libs = %{version}-%{release}
152 # LLVM is not supported on PPC64
153 # http://llvm.org/bugs/show_bug.cgi?id=3729
155 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
158 %define _sysconfdir /etc/%{name}
160 %define specflags_ppc -fno-var-tracking-assignments
162 # objcopy: BFD (GNU Binutils) 2.32 assertion fail format.c:459
163 # objcopy: error: .../libLLVM-8.so(.debug_gnu_pubtypes) is too large (0x1ceee347 bytes)
164 # objcopy: .../libLLVM-8.so[.debug_gnu_pubtypes]: memory exhausted
166 %define _enable_debug_packages 0
168 # ix86 and x32 - the same issue as https://llvm.org/bugs/show_bug.cgi?id=27237
169 # use -gsplit-dwarf only when building packages with debuginfo
170 # to avoid excessive disk space usage
171 %if 0%{?_enable_debug_packages}
172 %define specflags -gsplit-dwarf
175 # strip corrupts: $RPM_BUILD_ROOT/usr/lib64/llvm-gcc/bin/llvm-c++ ...
176 %define _noautostrip .*/\\(libmud.*\\.a\\|bin/llvm-.*\\|lib.*++\\.a\\)
178 # clang doesn't know -fvar-tracking-assignments, and leaving it here would pollute llvm-config
179 # -Werror=format-security is for swig
180 # TODO: add - -Werror=format-security to tools/lldb/scripts/LLDBWrapPython.cpp
181 %define filterout_c -fvar-tracking-assignments
182 %define filterout_cxx -fvar-tracking-assignments -Werror=format-security
183 %define filterout_ccpp -fvar-tracking-assignments
186 LLVM is a compiler infrastructure designed for compile-time,
187 link-time, runtime, and idle-time optimization of programs from
188 arbitrary programming languages. LLVM is written in C++ and has been
189 developed since 2000 at the University of Illinois and Apple. It
190 currently supports compilation of C and C++ programs using clang
193 %description -l pl.UTF-8
194 LLVM to infrastruktura kompilatora zaprojektowana do optymalizacji
195 czasu kompilowania, linkowania, działania i bezczynności programów w
196 dowolnych językach programowania. Jest napisana w C++, rozwijana od
197 roku 2000 przez Uniwersytet w Illinois i Apple. Aktualnie obsługuje
198 kompilację programów w C i C++ przy użyciu frontendu clang.
201 Summary: LLVM shared libraries
202 Summary(pl.UTF-8): Biblioteki współdzielone LLVM-a
204 Conflicts: llvm < 3.2
207 LLVM shared libraries.
209 %description libs -l pl.UTF-8
210 Biblioteki współdzielone LLVM-a.
213 Summary: Static libraries and header files for LLVM
214 Summary(pl.UTF-8): Biblioteki statyczne i pliki nagłówkowe dla LLVM-a
215 Group: Development/Languages
216 Requires: %{name}-libs = %{version}-%{release}
217 Requires: libstdc++-devel >= 6:3.4
220 This package contains static libraries and header files needed to
221 develop new native programs that use the LLVM infrastructure.
223 %description devel -l pl.UTF-8
224 Ten pakiet zawiera biblioteki statyczne oraz pliki nagłówkowe
225 potrzebne do tworzenia nowych programów natywnych wykorzystujących
229 Summary: Documentation for LLVM
230 Summary(pl.UTF-8): Dokumentacja do LLVM-a
232 # does not require base
235 Documentation for the LLVM compiler infrastructure.
237 %description doc -l pl.UTF-8
238 Dokumentacja do infrastruktury kompilatorów LLVM.
241 Summary: API documentation for LLVM
242 Summary(pl.UTF-8): Dokumentacja API LLVM-a
243 Group: Development/Languages
244 Requires: %{name}-doc = %{version}-%{release}
247 API documentation for the LLVM compiler infrastructure.
249 %description apidocs -l pl.UTF-8
250 Dokumentacja API infrastruktury kompilatorów LLVM.
253 Summary: Polyhedral optimizations for LLVM
254 Summary(pl.UTF-8): Optymalizacje wielościanowe dla LLVM-a
255 Group: Development/Tools
256 URL: http://polly.llvm.org/
257 Requires: %{name} = %{version}-%{release}
260 Polly is a high-level loop and data-locality optimizer and
261 optimization infrastructure for LLVM. It uses an abstract mathematical
262 representation based on integer polyhedra to analyze and optimize the
263 memory access pattern of a program.
265 %description polly -l pl.UTF-8
266 Polly to wysokopoziomowy optymalizator i infrastruktura LLVM-a do
267 optymalizacji pętli i położenia danych. Wykorzystuje abstrakcyjną
268 reprezentację matematyczną opartą na wielościanach całkowitoliczbowych
269 do analizy i optymalizacji wzorców dostępu do pamięci przez program.
272 Summary: Header files for LLVM Polly optimization infrastructure
273 Summary(pl.UTF-8): Pliki nagłówkowe infrastruktury optymalizacji LLVM-a Polly
274 Group: Development/Libraries
275 URL: http://polly.llvm.org/
276 Requires: %{name}-devel = %{version}-%{release}
277 Requires: %{name}-polly = %{version}-%{release}
279 %description polly-devel
280 Header files for LLVM Polly optimization infrastructure.
282 %description polly-devel -l pl.UTF-8
283 Pliki nagłówkowe infrastruktury optymalizacji LLVM-a Polly.
286 Summary: A C language family frontend for LLVM
287 Summary(pl.UTF-8): Frontend LLVM-a do języków z rodziny C
289 Group: Development/Languages
290 Requires: %{name} = %{version}-%{release}
291 Requires: clang-libs = %{version}-%{release}
293 %description -n clang
294 clang: noun 1. A loud, resonant, metallic sound. 2. The strident call
295 of a crane or goose. 3. C-language family front-end toolkit.
297 The goal of the Clang project is to create a new C, C++, Objective C
298 and Objective C++ front-end for the LLVM compiler. Its tools are built
299 as libraries and designed to be loosely-coupled and extendable.
301 %description -n clang -l pl.UTF-8
302 clang (z angielskiego): 1. głośny, rezonujący, metaliczny dźwięk; 2.
303 piskliwy odgłos żurawia lub gęsi; 3. narzędzia frontendowe dla języków
306 Celem projektu Clang jest utworzenie nowego frontendu dla kompilatora
307 LLVM do języków C, C++, Objective C i Objective C++. Narzędzia są
308 budowane jako biblioteki i zaprojektowane z myślą o swobodnym łączeniu
311 %package -n clang-libs
312 Summary: Clang shared libraries
313 Summary(pl.UTF-8): Biblioteki współdzielone Clanga
316 %description -n clang-libs
317 Clang shared libraries.
319 %description -n clang-libs -l pl.UTF-8
320 Biblioteki współdzielone Clanga.
322 %package -n clang-multilib
323 Summary: A C language family frontend for LLVM - 32-bit support
324 Summary(pl.UTF-8): Frontend LLVM-a do języków z rodziny C - obsługa binariów 32-bitowych
326 Group: Development/Languages
327 Requires: clang = %{version}-%{release}
329 %description -n clang-multilib
330 clang: noun 1. A loud, resonant, metallic sound. 2. The strident call
331 of a crane or goose. 3. C-language family front-end toolkit.
333 The goal of the Clang project is to create a new C, C++, Objective C
334 and Objective C++ front-end for the LLVM compiler. Its tools are built
335 as libraries and designed to be loosely-coupled and extendable.
337 This package contains the C compiler support for producing 32-bit
338 programs on 64-bit host.
340 %description -n clang-multilib -l pl.UTF-8
341 clang (z angielskiego): 1. głośny, rezonujący, metaliczny dźwięk; 2.
342 piskliwy odgłos żurawia lub gęsi; 3. narzędzia frontendowe dla języków
345 Celem projektu Clang jest utworzenie nowego frontendu dla kompilatora
346 LLVM do języków C, C++, Objective C i Objective C++. Narzędzia są
347 budowane jako biblioteki i zaprojektowane z myślą o swobodnym łączeniu
350 Ten pakiet zawiera rozszerzenie kompilatora C o obsługę tworzenia
351 programów 32-bitowych na maszynie 64-bitowej.
353 %package -n clang-analyzer
354 Summary: A source code analysis framework
355 Summary(pl.UTF-8): Szkielet do analizy kodu źródłowego
357 Group: Development/Languages
358 Requires: clang = %{version}-%{release}
359 # not picked up automatically since files are currently not instaled
360 # in standard Python hierarchies yet
363 %description -n clang-analyzer
364 The Clang Static Analyzer consists of both a source code analysis
365 framework and a standalone tool that finds bugs in C and Objective-C
366 programs. The standalone tool is invoked from the command-line, and is
367 intended to run in tandem with a build of a project or code base.
369 %description -n clang-analyzer -l pl.UTF-8
370 Clang Static Analyzer składa się ze szkieletu do analizy kodu
371 źródłowego oraz samodzielnego narzędzia znajdującego błędy w
372 programach w C i C++. Narzędzie jest wywoływane z linii poleceń, z
373 myślą o uruchamianiu wraz z kompilacją projektu lub kodu.
375 %package -n clang-devel
376 Summary: Header files for Clang
377 Summary(pl.UTF-8): Pliki nagłówkowe Clanga
378 Group: Development/Languages
379 Requires: %{name}-devel = %{version}-%{release}
380 Requires: clang = %{version}-%{release}
381 %{?with_polly:Requires: llvm-polly-devel = %{version}-%{release}}
383 %description -n clang-devel
384 This package contains header files for the Clang compiler.
386 %description -n clang-devel -l pl.UTF-8
387 Ten pakiet zawiera pliki nagłówkowe kompilatora Clang.
389 %package -n clang-doc
390 Summary: Documentation for Clang
391 Summary(pl.UTF-8): Dokumentacja do Clanga
393 Requires: %{name} = %{version}-%{release}
395 %description -n clang-doc
396 Documentation for the Clang compiler front-end.
398 %description -n clang-doc -l pl.UTF-8
399 Dokumentacja do frontendu kompilatora Clang.
401 %package -n clang-apidocs
402 Summary: API documentation for Clang
403 Summary(pl.UTF-8): Dokumentacja API Clanga
404 Group: Development/Languages
405 Requires: clang-doc = %{version}-%{release}
407 %description -n clang-apidocs
408 API documentation for the Clang compiler.
410 %description -n clang-apidocs -l pl.UTF-8
411 Dokumentacja API kompilatora Clang.
413 %package -n clang-tools-extra
414 Summary: Extra tools for Clang
415 Summary(pl.UTF-8): Dodatkowe narzędzia do kompilatora Clang
416 Group: Development/Tools
417 URL: http://clang.llvm.org/docs/ClangTools.html
418 Requires: clang = %{version}-%{release}
420 %description -n clang-tools-extra
421 Extra tools for Clang.
423 %description -n clang-tools-extra -l pl.UTF-8
424 Dodatkowe narzędzia do kompilatora Clang.
427 Summary: The LLVM linker
428 Summary(pl.UTF-8): Konsolidator z projektu LLVM
429 Group: Development/Libraries
430 URL: http://lld.llvm.org/
431 Requires: %{name} = %{version}-%{release}
434 lld is a new set of modular code for creating linker tools.
436 %description -n lld -l pl.UTF-8
437 lld to nowy zbiór modularnego kodu do tworzenia narzędzi
440 %package -n lld-devel
441 Summary: Development files for LLD linker tools
442 Summary(pl.UTF-8): Pliki programistyczne narzędzi konsolidujących LLD
443 Group: Development/Tools
444 URL: http://lld.llvm.org/
445 Requires: %{name}-devel = %{version}-%{release}
447 %description -n lld-devel
448 Development files for LLD linker tools.
450 %description -n lld-devel -l pl.UTF-8
451 Pliki programistyczne narzędzi konsolidujących LLD.
454 Summary: Next generation high-performance debugger
455 Summary(pl.UTF-8): Wydajny debugger nowej generacji
456 Group: Development/Debuggers
457 URL: http://lldb.llvm.org/
458 Requires: %{name} = %{version}-%{release}
462 LLDB is a next generation, high-performance debugger. It is built as a
463 set of reusable components which highly leverage existing libraries in
464 the larger LLVM Project, such as the Clang expression parser and LLVM
467 %description -n lldb -l pl.UTF-8
468 LLDB to wydajny debugger nowej generacji. Jest zbudowany w oparciu o
469 komponenty wielokrotnego użytku, wykorzystujące istniejące biblioteki
470 w projekcie LLVM, takie jak analizator wyrażeń kompilatora Clang oraz
473 %package -n lldb-devel
474 Summary: Development files for LLDB debugger
475 Summary(pl.UTF-8): Pliki programistyczne debuggera LLDB
476 Group: Development/Libraries
477 URL: http://lldb.llvm.org/
478 Requires: %{name}-devel = %{version}-%{release}
479 Requires: clang-devel = %{version}-%{release}
480 Requires: lldb = %{version}-%{release}
482 %description -n lldb-devel
483 Development files for LLDB debugger.
485 %description -n lldb-devel -l pl.UTF-8
486 Pliki programistyczne debuggera LLDB.
489 Summary: OCaml binding for LLVM
490 Summary(pl.UTF-8): Wiązanie OCamla do LLVM-a
492 Requires: %{name} = %{version}-%{release}
494 %requires_eq ocaml-runtime
498 OCaml binding for LLVM.
500 %description ocaml -l pl.UTF-8
501 Wiązanie OCamla do LLVM-a.
504 Summary: Development files for LLVM OCaml binding
505 Summary(pl.UTF-8): Pliki programistyczne wiązania OCamla do LLVM-a
506 Group: Development/Libraries
507 Requires: %{name}-devel = %{version}-%{release}
508 Requires: %{name}-ocaml = %{version}-%{release}
510 %description ocaml-devel
511 The llvm-ocaml-devel package contains libraries and signature files
512 for developing applications that use llvm-ocaml binding.
514 %description ocaml-devel -l pl.UTF-8
515 Ten pakiet zawiera biblioteki i pliki sygnatur do tworzenia aplikacji
516 wykorzystujących wiązanie llvm-ocaml.
519 Summary: Documentation for LLVM's OCaml binding
520 Summary(pl.UTF-8): Dokumentacja wiązania OCamla do LLVM-a
522 Requires: %{name}-ocaml = %{version}-%{release}
524 %description ocaml-doc
525 HTML documentation for LLVM's OCaml binding.
527 %description ocaml-doc -l pl.UTF-8
528 Dokumentacja HTML wiązania OCamla do LLVM-a.
531 Summary: Optimization records visualization tools
532 Summary(pl.UTF-8): Narzędzia do wizualizacji rekordów optymalizacji
533 Group: Development/Tools
534 Requires: %{name} = %{version}
537 %description opt-viewer
538 Optimization records visualization tools.
540 %description opt-viewer -l pl.UTF-8
541 Narzędzia do wizualizacji rekordów optymalizacji.
543 %package -n vim-plugin-clang
544 Summary: Clang format and rename integration for Vim
545 Summary(pl.UTF-8): Integracja narzędzi Clang do formatowania i zmiany nazw z Vimem
546 Group: Applications/Editors/Vim
547 Requires: vim-rt >= 4:7.0
550 %description -n vim-plugin-clang
551 Clang format and rename integration for Vim.
553 %description -n vim-plugin-clang -l pl.UTF-8
554 Integracja narzędzi Clang do formatowania i zmiany nazw z Vimem.
557 %setup -q -n %{name}-%{version}.src -a1 %{?with_rt:-a2} %{?with_lldb:-a3} %{?with_polly:-a4} -a5 -a6 %{?with_flang:-a7 -a8}
558 %{__mv} clang-%{version}.src tools/clang
559 %{?with_rt:%{__mv} compiler-rt-%{version}.src projects/compiler-rt}
560 %{?with_lldb:%{__mv} lldb-%{version}.src tools/lldb}
561 %{?with_polly:%{__mv} polly-%{version}.src tools/polly}
562 %{__mv} clang-tools-extra-%{version}.src tools/clang/tools/extra
563 %{__mv} lld-%{version}.src tools/lld
565 %{__mv} flang-%{version}.src tools/flang
566 %{__mv} mlir tools/mlir
578 grep -rl /usr/bin/env projects tools utils | xargs sed -i -e '1{
579 s,^#!.*bin/env python,#!%{__python},
580 s,^#!.*bin/env perl,#!%{__perl},
583 find -name '*.py' -print0 | xargs -0 sed -i -e '1{
584 s,^#!.*bin/python.*,#!%{__python},
590 # Disabling assertions now, rec. by pure and needed for OpenGTL
591 # TESTFIX no PIC on ix86: http://llvm.org/bugs/show_bug.cgi?id=3801
593 CPPFLAGS="%{rpmcppflags} -D_FILE_OFFSET_BITS=64"
596 export CFLAGS="%{rpmcflags} -g0"
597 export CXXFLAGS="%{rpmcxxflags} -g0"
598 export LDFLAGS="%{rpmldflags} -Wl,--reduce-memory-overheads"
602 -DBUILD_SHARED_LIBS:BOOL=OFF \
603 -DENABLE_LINKER_BUILD_ID:BOOL=ON \
604 -DLLVM_BINDINGS_LIST:LIST="%{?with_ocaml:ocaml}" \
605 -DLLVM_BINUTILS_INCDIR:STRING=%{_includedir} \
606 -DLLVM_BUILD_LLVM_DYLIB:BOOL=ON \
607 -DLLVM_ENABLE_ASSERTIONS:BOOL=OFF \
609 -DLLVM_ENABLE_DOXYGEN:BOOL=ON \
611 %{?with_cxxmodules:-DLLVM_ENABLE_MODULES:BOOL=ON} \
612 -DLLVM_ENABLE_PIC:BOOL=ON \
613 -DLLVM_ENABLE_RTTI:BOOL=ON \
615 -DLLVM_ENABLE_SPHINX:BOOL=ON \
617 %{?with_z3:-DLLVM_ENABLE_Z3_SOLVER:BOOL=ON} \
618 %if "%{_lib}" == "lib64"
619 -DLLVM_LIBDIR_SUFFIX:STRING=64 \
621 %if "%{_lib}" == "libx32"
622 -DLLVM_LIBDIR_SUFFIX:STRING=x32 \
624 -DLLVM_LINK_LLVM_DYLIB:BOOL=ON \
625 -DLLVM_DEFAULT_TARGET_TRIPLE:STRING=%{_target_platform} \
627 -DLLVM_PARALLEL_LINK_JOBS:STRING=1 \
629 -DSPHINX_WARNINGS_AS_ERRORS=OFF
633 OPTIMIZE_OPTION="%{rpmcflags} %{rpmcppflags}"
636 %{__make} check 2>&1 | tee llvm-testlog.txt
637 %{__make} -C tools/clang test 2>&1 | tee clang-testlog.txt
641 %{__make} -C docs docs-llvm-html
642 %{__make} -C docs docs-llvm-man
644 %{__make} -C docs ocaml_doc
646 %{__make} -C tools/clang/docs docs-clang-html
647 %{__make} -C tools/clang/docs docs-clang-man
648 %{__make} -C tools/lld/docs docs-lld-html
649 # workaround failed import of _lldb
650 cp -pnL %{_lib}/python%{py_ver}/site-packages/lldb/_lldb.so tools/lldb/docs/lldb
652 LD_LIBRARY_PATH=$(pwd)/%{_lib} \
653 -C tools/lldb/docs lldb-python-doc
654 %{__make} -C tools/lldb/docs lldb-cpp-doc
658 rm -rf $RPM_BUILD_ROOT
660 %{__make} -j1 -C build install \
661 DESTDIR=$RPM_BUILD_ROOT
663 # only some .pyc files are created by make install
664 %py_comp $RPM_BUILD_ROOT%{py_sitedir}
665 %py_ocomp $RPM_BUILD_ROOT%{py_sitedir}
667 # Adjust static analyzer installation
668 # http://clang-analyzer.llvm.org/installation#OtherPlatforms
669 install -d $RPM_BUILD_ROOT%{_libdir}/scan-build
670 %{__mv} $RPM_BUILD_ROOT%{_prefix}/libexec/c??-analyzer $RPM_BUILD_ROOT%{_libdir}/scan-build
671 %{__sed} -i -e 's,/\.\./libexec/,/../%{_lib}/scan-build/,' $RPM_BUILD_ROOT%{_bindir}/scan-build
672 %py_comp $RPM_BUILD_ROOT%{_datadir}/scan-view
673 %py_ocomp $RPM_BUILD_ROOT%{_datadir}/scan-view
674 %py_postclean %{_datadir}/scan-view
676 # not installed by cmake buildsystem
677 install build/bin/pp-trace $RPM_BUILD_ROOT%{_bindir}
680 cp -p build/docs/man/*.1 $RPM_BUILD_ROOT%{_mandir}/man1
681 # these tools are not installed
682 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/{FileCheck,llvm-build}.1
684 echo '.so llvm-ar.1' > $RPM_BUILD_ROOT%{_mandir}/man1/llvm-ranlib.1
687 # Move documentation back to build directory
690 %{__mv} $RPM_BUILD_ROOT%{_docdir}/llvm/ocaml-html ocamldocs
693 # and separate the apidoc
696 cp -a build/tools/clang/docs/html clang-apidoc
699 # And prepare Clang documentation
701 install -d clang-docs
702 for f in LICENSE.TXT NOTES.txt README.txt; do
703 ln tools/clang/$f clang-docs
706 %{__rm} $RPM_BUILD_ROOT%{_bindir}/{c-index-test,llvm-c-test}
708 %{__rm} $RPM_BUILD_ROOT%{_datadir}/clang/clang-format-bbedit.applescript
710 %{__rm} $RPM_BUILD_ROOT%{py_sitedir}/six.py*
711 # it seems it is used internally by an extra clang tool
712 %{__rm} $RPM_BUILD_ROOT%{_libdir}/libfindAllSymbols.a
714 # disable completeness check incompatible with split packaging
715 %{__sed} -i -e '/^foreach(target .*IMPORT_CHECK_TARGETS/,/^endforeach/d; /^unset(_IMPORT_CHECK_TARGETS)/d' $RPM_BUILD_ROOT%{_libdir}/cmake/llvm/LLVMExports.cmake
718 rm -rf $RPM_BUILD_ROOT
720 %post libs -p /sbin/ldconfig
721 %postun libs -p /sbin/ldconfig
723 %post -n clang-libs -p /sbin/ldconfig
724 %postun -n clang-libs -p /sbin/ldconfig
726 %post -n lldb -p /sbin/ldconfig
727 %postun -n lldb -p /sbin/ldconfig
730 %defattr(644,root,root,755)
731 %doc CREDITS.TXT LICENSE.TXT README.txt %{?with_tests:llvm-testlog.txt}
732 %attr(755,root,root) %{_bindir}/bugpoint
733 %attr(755,root,root) %{_bindir}/dsymutil
734 %attr(755,root,root) %{_bindir}/llc
735 %attr(755,root,root) %{_bindir}/lli
736 %attr(755,root,root) %{_bindir}/llvm-addr2line
737 %attr(755,root,root) %{_bindir}/llvm-ar
738 %attr(755,root,root) %{_bindir}/llvm-as
739 %attr(755,root,root) %{_bindir}/llvm-bcanalyzer
740 %attr(755,root,root) %{_bindir}/llvm-cat
741 %attr(755,root,root) %{_bindir}/llvm-cfi-verify
742 %attr(755,root,root) %{_bindir}/llvm-cov
743 %attr(755,root,root) %{_bindir}/llvm-cvtres
744 %attr(755,root,root) %{_bindir}/llvm-cxxdump
745 %attr(755,root,root) %{_bindir}/llvm-cxxfilt
746 %attr(755,root,root) %{_bindir}/llvm-cxxmap
747 %attr(755,root,root) %{_bindir}/llvm-diff
748 %attr(755,root,root) %{_bindir}/llvm-dis
749 %attr(755,root,root) %{_bindir}/llvm-dlltool
750 %attr(755,root,root) %{_bindir}/llvm-dwarfdump
751 %attr(755,root,root) %{_bindir}/llvm-dwp
752 %attr(755,root,root) %{_bindir}/llvm-elfabi
753 %attr(755,root,root) %{_bindir}/llvm-exegesis
754 %attr(755,root,root) %{_bindir}/llvm-extract
755 %attr(755,root,root) %{_bindir}/llvm-gsymutil
756 %attr(755,root,root) %{_bindir}/llvm-ifs
757 %attr(755,root,root) %{_bindir}/llvm-install-name-tool
758 %attr(755,root,root) %{_bindir}/llvm-jitlink
759 %attr(755,root,root) %{_bindir}/llvm-lib
760 %attr(755,root,root) %{_bindir}/llvm-link
761 %attr(755,root,root) %{_bindir}/llvm-lipo
762 %attr(755,root,root) %{_bindir}/llvm-lto
763 %attr(755,root,root) %{_bindir}/llvm-lto2
764 %attr(755,root,root) %{_bindir}/llvm-mc
765 %attr(755,root,root) %{_bindir}/llvm-mca
766 %attr(755,root,root) %{_bindir}/llvm-ml
767 %attr(755,root,root) %{_bindir}/llvm-modextract
768 %attr(755,root,root) %{_bindir}/llvm-mt
769 %attr(755,root,root) %{_bindir}/llvm-nm
770 %attr(755,root,root) %{_bindir}/llvm-objcopy
771 %attr(755,root,root) %{_bindir}/llvm-objdump
772 %attr(755,root,root) %{_bindir}/llvm-opt-report
773 %attr(755,root,root) %{_bindir}/llvm-pdbutil
774 %attr(755,root,root) %{_bindir}/llvm-profdata
775 %attr(755,root,root) %{_bindir}/llvm-ranlib
776 %attr(755,root,root) %{_bindir}/llvm-rc
777 %attr(755,root,root) %{_bindir}/llvm-readelf
778 %attr(755,root,root) %{_bindir}/llvm-readobj
779 %attr(755,root,root) %{_bindir}/llvm-reduce
780 %attr(755,root,root) %{_bindir}/llvm-rtdyld
781 %attr(755,root,root) %{_bindir}/llvm-size
782 %attr(755,root,root) %{_bindir}/llvm-split
783 %attr(755,root,root) %{_bindir}/llvm-strip
784 %attr(755,root,root) %{_bindir}/llvm-stress
785 %attr(755,root,root) %{_bindir}/llvm-strings
786 %attr(755,root,root) %{_bindir}/llvm-symbolizer
787 %attr(755,root,root) %{_bindir}/llvm-tblgen
788 %attr(755,root,root) %{_bindir}/llvm-undname
789 %attr(755,root,root) %{_bindir}/llvm-xray
790 %attr(755,root,root) %{_bindir}/obj2yaml
791 %attr(755,root,root) %{_bindir}/opt
792 %attr(755,root,root) %{_bindir}/sancov
793 %attr(755,root,root) %{_bindir}/sanstats
794 %attr(755,root,root) %{_bindir}/verify-uselistorder
795 %attr(755,root,root) %{_bindir}/yaml2obj
797 %{_mandir}/man1/bugpoint.1*
798 %{_mandir}/man1/dsymutil.1*
799 %{_mandir}/man1/lit.1*
800 %{_mandir}/man1/llc.1*
801 %{_mandir}/man1/lli.1*
802 %{_mandir}/man1/llvm-addr2line.1*
803 %{_mandir}/man1/llvm-ar.1*
804 %{_mandir}/man1/llvm-as.1*
805 %{_mandir}/man1/llvm-bcanalyzer.1*
806 %{_mandir}/man1/llvm-cov.1*
807 %{_mandir}/man1/llvm-cxxfilt.1*
808 %{_mandir}/man1/llvm-cxxmap.1*
809 %{_mandir}/man1/llvm-diff.1*
810 %{_mandir}/man1/llvm-dis.1*
811 %{_mandir}/man1/llvm-dwarfdump.1*
812 %{_mandir}/man1/llvm-exegesis.1*
813 %{_mandir}/man1/llvm-extract.1*
814 %{_mandir}/man1/llvm-lib.1*
815 %{_mandir}/man1/llvm-link.1*
816 %{_mandir}/man1/llvm-lipo.1*
817 %{_mandir}/man1/llvm-locstats.1*
818 %{_mandir}/man1/llvm-mca.1*
819 %{_mandir}/man1/llvm-nm.1*
820 %{_mandir}/man1/llvm-objcopy.1*
821 %{_mandir}/man1/llvm-objdump.1*
822 %{_mandir}/man1/llvm-pdbutil.1*
823 %{_mandir}/man1/llvm-profdata.1*
824 %{_mandir}/man1/llvm-ranlib.1*
825 %{_mandir}/man1/llvm-readelf.1*
826 %{_mandir}/man1/llvm-readobj.1*
827 %{_mandir}/man1/llvm-size.1*
828 %{_mandir}/man1/llvm-stress.1*
829 %{_mandir}/man1/llvm-strings.1*
830 %{_mandir}/man1/llvm-strip.1*
831 %{_mandir}/man1/llvm-symbolizer.1*
832 %{_mandir}/man1/opt.1*
833 %{_mandir}/man1/tblgen.1*
837 %defattr(644,root,root,755)
838 %attr(755,root,root) %{_libdir}/libLLVM-%{abi}.so
840 %attr(755,root,root) %{_libdir}/libLLVM-%{version}.so
841 %attr(755,root,root) %ghost %{_libdir}/libLTO.so.11
842 %attr(755,root,root) %{_libdir}/LLVMgold.so
843 %attr(755,root,root) %{_libdir}/libRemarks.so.11
844 %attr(755,root,root) %{_libdir}/libclang-cpp.so.11
847 %defattr(644,root,root,755)
848 %attr(755,root,root) %{_bindir}/llvm-config
849 %attr(755,root,root) %{_libdir}/libLLVM.so
850 %attr(755,root,root) %{_libdir}/libLTO.so
851 %attr(755,root,root) %{_libdir}/libRemarks.so
852 %attr(755,root,root) %{_libdir}/libclang-cpp.so
853 %{_libdir}/libLLVM*.a
855 %{_includedir}/llvm-c
856 %{_libdir}/cmake/llvm
858 %{_mandir}/man1/llvm-config.1*
862 #%defattr(644,root,root,755)
866 %defattr(644,root,root,755)
872 %defattr(644,root,root,755)
873 %doc tools/polly/{CREDITS.txt,LICENSE.txt,README} tools/polly/www/{bugs,changelog,contributors}.html
874 %attr(755,root,root) %{_libdir}/LLVMPolly.so
877 %defattr(644,root,root,755)
878 %{_libdir}/libPolly.a
879 %{_libdir}/libPollyISL.a
880 %{_libdir}/libPollyPPCG.a
882 %{_libdir}/cmake/polly
886 %defattr(644,root,root,755)
887 %doc clang-docs/{LICENSE.TXT,NOTES.txt,README.txt} %{?with_tests:clang-testlog.txt}
888 %attr(755,root,root) %{_bindir}/clang
889 %attr(755,root,root) %{_bindir}/clang++
890 %attr(755,root,root) %{_bindir}/clang-%{abi}
891 %attr(755,root,root) %{_bindir}/clang-check
892 %attr(755,root,root) %{_bindir}/clang-cl
893 %attr(755,root,root) %{_bindir}/clang-cpp
894 %attr(755,root,root) %{_bindir}/clang-doc
895 %attr(755,root,root) %{_bindir}/clang-format
896 %attr(755,root,root) %{_bindir}/clang-offload-bundler
897 %attr(755,root,root) %{_bindir}/clang-offload-wrapper
898 %attr(755,root,root) %{_bindir}/git-clang-format
899 %dir %{_libdir}/clang
900 %dir %{_libdir}/clang/%{version}
901 %{_libdir}/clang/%{version}/include
903 %ifarch %{x8664} aarch64
904 %dir %{_libdir}/clang/%{version}/bin
905 %attr(755,root,root) %{_libdir}/clang/%{version}/bin/hwasan_symbolize
907 %ifarch %{ix86} %{x8664} aarch64
908 %dir %{_libdir}/clang/%{version}/lib
909 %dir %{_libdir}/clang/%{version}/lib/linux
910 %dir %{_libdir}/clang/%{version}/share
914 %dir %{_libdir}/clang/%{version}/lib
915 %dir %{_libdir}/clang/%{version}/lib/linux
916 %dir %{_libdir}/clang/%{version}/share
920 %{_libdir}/clang/%{version}/lib/linux/clang_rt.*-i*86.o
921 %{_libdir}/clang/%{version}/lib/linux/libclang_rt.*-i*86.a
922 %attr(755,root,root) %{_libdir}/clang/%{version}/lib/linux/libclang_rt.*-i*86.so
925 %{_libdir}/clang/%{version}/lib/linux/clang_rt.*-x86_64.o
926 %{_libdir}/clang/%{version}/lib/linux/libclang_rt.*-x86_64.a
927 %attr(755,root,root) %{_libdir}/clang/%{version}/lib/linux/libclang_rt.*-x86_64.so
928 %{_libdir}/clang/%{version}/lib/linux/libclang_rt.*-x86_64.a.syms
931 %{_libdir}/clang/%{version}/lib/linux/clang_rt.*-aarch64.o
932 %{_libdir}/clang/%{version}/lib/linux/libclang_rt.*-aarch64.a
933 %attr(755,root,root) %{_libdir}/clang/%{version}/lib/linux/libclang_rt.*-aarch64.so
934 %{_libdir}/clang/%{version}/lib/linux/libclang_rt.*-aarch64.a.syms
936 %ifarch %{ix86} %{x8664} %{arm} aarch64 mips mips64 ppc64
937 %{_libdir}/clang/%{version}/share/asan_blacklist.txt
939 %ifarch %{ix86} %{x8664} mips64 aarch64
940 %{_libdir}/clang/%{version}/share/cfi_blacklist.txt
942 %ifarch %{x8664} aarch64 mips64
943 %{_libdir}/clang/%{version}/share/dfsan_abilist.txt
944 %{_libdir}/clang/%{version}/share/msan_blacklist.txt
946 %ifarch %{x8664} aarch64
947 %{_libdir}/clang/%{version}/share/hwasan_blacklist.txt
951 %{_libdir}/clang/%{version}/share/asan_blacklist.txt
952 %{_libdir}/clang/%{version}/share/cfi_blacklist.txt
953 %{_libdir}/clang/%{version}/share/dfsan_abilist.txt
954 %{_libdir}/clang/%{version}/share/msan_blacklist.txt
955 %{_libdir}/clang/%{version}/share/hwasan_blacklist.txt
959 %dir %{_datadir}/clang
960 %{_datadir}/clang/clang-format-diff.py
963 %defattr(644,root,root,755)
964 %attr(755,root,root) %{_libdir}/libclang.so.%{abi}
966 %if %{with rt} && %{with multilib}
968 %files -n clang-multilib
969 %defattr(644,root,root,755)
970 %{_libdir}/clang/%{version}/lib/linux/clang_rt.*-i386.o
971 %{_libdir}/clang/%{version}/lib/linux/libclang_rt.*-i386.a
972 %attr(755,root,root) %{_libdir}/clang/%{version}/lib/linux/libclang_rt.*-i386.so
975 %{_libdir}/clang/%{version}/lib/linux/clang_rt.*-x86_64.o
976 %{_libdir}/clang/%{version}/lib/linux/libclang_rt.*-x86_64.a
977 %attr(755,root,root) %{_libdir}/clang/%{version}/lib/linux/libclang_rt.*-x86_64.so
978 %{_libdir}/clang/%{version}/lib/linux/libclang_rt.*-x86_64.a.syms
982 %files -n clang-analyzer
983 %defattr(644,root,root,755)
984 %attr(755,root,root) %{_bindir}/scan-build
985 %attr(755,root,root) %{_bindir}/scan-view
986 %{_datadir}/scan-build
987 %{_datadir}/scan-view
988 %{_mandir}/man1/scan-build.1*
989 %dir %{_libdir}/scan-build
990 %attr(755,root,root) %{_libdir}/scan-build/c++-analyzer
991 %attr(755,root,root) %{_libdir}/scan-build/ccc-analyzer
993 %files -n clang-devel
994 %defattr(644,root,root,755)
995 %attr(755,root,root) %{_libdir}/libclang.so
996 %{_libdir}/libclang*.a
998 %{_includedir}/clang-c
999 %{_includedir}/clang-tidy
1000 %{_libdir}/cmake/clang
1003 %defattr(644,root,root,755)
1004 %doc tools/clang/docs/*.{html,png,txt}
1007 %files -n clang-apidocs
1008 %defattr(644,root,root,755)
1012 %files -n clang-tools-extra
1013 %defattr(644,root,root,755)
1014 %doc tools/clang/tools/extra/{CODE_OWNERS.TXT,README.txt}
1015 %attr(755,root,root) %{_bindir}/clang-apply-replacements
1016 %attr(755,root,root) %{_bindir}/clang-change-namespace
1017 %attr(755,root,root) %{_bindir}/clang-extdef-mapping
1018 %attr(755,root,root) %{_bindir}/clang-include-fixer
1019 %attr(755,root,root) %{_bindir}/clang-move
1020 %attr(755,root,root) %{_bindir}/clang-query
1021 %attr(755,root,root) %{_bindir}/clang-refactor
1022 %attr(755,root,root) %{_bindir}/clang-rename
1023 %attr(755,root,root) %{_bindir}/clang-reorder-fields
1024 %attr(755,root,root) %{_bindir}/clang-scan-deps
1025 %attr(755,root,root) %{_bindir}/clang-tidy
1026 %attr(755,root,root) %{_bindir}/clangd
1027 %attr(755,root,root) %{_bindir}/diagtool
1028 %attr(755,root,root) %{_bindir}/find-all-symbols
1029 %attr(755,root,root) %{_bindir}/hmaptool
1030 %attr(755,root,root) %{_bindir}/modularize
1031 %attr(755,root,root) %{_bindir}/pp-trace
1032 %{_datadir}/clang/clang-include-fixer.py
1033 %{_datadir}/clang/clang-tidy-diff.py
1034 %{_datadir}/clang/run-clang-tidy.py
1035 %{_datadir}/clang/run-find-all-symbols.py
1038 %defattr(644,root,root,755)
1039 %doc tools/lld/{LICENSE.TXT,README.md}
1040 %attr(755,root,root) %{_bindir}/ld.lld
1041 %attr(755,root,root) %{_bindir}/ld64.lld
1042 %attr(755,root,root) %{_bindir}/lld
1043 %attr(755,root,root) %{_bindir}/lld-link
1044 %attr(755,root,root) %{_bindir}/wasm-ld
1047 %defattr(644,root,root,755)
1048 %{_libdir}/liblld[ACDEHMRWXY]*.a
1050 %{_libdir}/cmake/lld
1054 %defattr(644,root,root,755)
1055 %attr(755,root,root) %{_bindir}/lldb
1056 %attr(755,root,root) %{_bindir}/lldb-argdumper
1057 %attr(755,root,root) %{_bindir}/lldb-instr
1058 %attr(755,root,root) %{_bindir}/lldb-server
1059 %attr(755,root,root) %{_bindir}/lldb-vscode
1060 %attr(755,root,root) %{_libdir}/liblldb.so.%{version}
1061 %attr(755,root,root) %ghost %{_libdir}/liblldb.so.11
1062 %attr(755,root,root) %ghost %{_libdir}/liblldbIntelFeatures.so.11
1063 %dir %{py_sitedir}/lldb
1064 %attr(755,root,root) %{py_sitedir}/lldb/lldb-argdumper
1065 %{py_sitedir}/lldb/formatters
1066 %{py_sitedir}/lldb/utils
1067 %{py_sitedir}/lldb/__init__.py[co]
1068 %{py_sitedir}/lldb/embedded_interpreter.py[co]
1069 %attr(755,root,root) %{py_sitedir}/lldb/_lldb.so
1071 %files -n lldb-devel
1072 %defattr(644,root,root,755)
1073 %attr(755,root,root) %{_libdir}/liblldb.so
1074 %attr(755,root,root) %{_libdir}/liblldbIntelFeatures.so
1080 %defattr(644,root,root,755)
1081 %attr(755,root,root) %{_libdir}/ocaml/stublibs/dllllvm*.so
1082 %dir %{_libdir}/ocaml/llvm
1083 %{_libdir}/ocaml/llvm/llvm*.cma
1084 %{_libdir}/ocaml/llvm/llvm*.cmi
1085 %{_libdir}/ocaml/META.llvm*
1088 %defattr(644,root,root,755)
1089 %{_libdir}/ocaml/llvm/libllvm*.a
1090 %{_libdir}/ocaml/llvm/llvm*.a
1091 %{_libdir}/ocaml/llvm/llvm*.cmx
1092 %{_libdir}/ocaml/llvm/llvm*.cmxa
1093 %{_libdir}/ocaml/llvm/llvm*.mli
1096 %defattr(644,root,root,755)
1101 %defattr(644,root,root,755)
1102 %{_datadir}/opt-viewer
1104 %files -n vim-plugin-clang
1105 %defattr(644,root,root,755)
1106 %{_datadir}/clang/clang-format.py
1107 %{_datadir}/clang/clang-rename.py