+#
+# NOTE:
+# - normal build (x86_64) requires about 80 GB of disk space
+#
# TODO:
# - move and package:
# %{_datadir}/clang/bash-autocomplete.sh
# %{_datadir}/clang/clang-format.el - clang tools emacs integration
# %{_datadir}/clang/clang-include-fixer.el
# %{_datadir}/clang/clang-rename.el
-# %{_datadir}/clang/clang-format.py - clang tools vim integration
-# %{_datadir}/clang/clang-rename.py
# - no content in doc package (it used to contain parts of clang apidocs and some examples)
# - system isl in polly?
#
Summary: The Low Level Virtual Machine (An Optimizing Compiler Infrastructure)
Summary(pl.UTF-8): Niskopoziomowa maszyna wirtualna (infrastruktura kompilatora optymalizującego)
Name: llvm
-Version: 4.0.1
+Version: 6.0.1
Release: 1
License: University of Illinois/NCSA Open Source License
Group: Development/Languages
#Source0Download: http://releases.llvm.org/download.html
Source0: http://releases.llvm.org/%{version}/%{name}-%{version}.src.tar.xz
-# Source0-md5: a818e70321b91e2bb2d47e60edd5408f
+# Source0-md5: c88c98709300ce2c285391f387fecce0
Source1: http://releases.llvm.org/%{version}/cfe-%{version}.src.tar.xz
-# Source1-md5: a6c7b3e953f8b93e252af5917df7db97
+# Source1-md5: 4e419bd4e3b55aa06d872320f754bd85
Source2: http://releases.llvm.org/%{version}/compiler-rt-%{version}.src.tar.xz
-# Source2-md5: 0227ac853ce422125f8bb08f6ad5c995
+# Source2-md5: 99bf8bcb68ba96dda74f6aee6c55f639
Source3: http://releases.llvm.org/%{version}/lldb-%{version}.src.tar.xz
-# Source3-md5: 908bdd777d3b527a914ba360477b8ab3
+# Source3-md5: 482eba39e78c75a83216cf2d5b7a54b4
Source4: http://releases.llvm.org/%{version}/polly-%{version}.src.tar.xz
-# Source4-md5: 0d4a3fa2eb446a378bbf01b220851b1f
+# Source4-md5: 4e5937753d1f77e2c0feca485fc7f9da
Source5: http://releases.llvm.org/%{version}/clang-tools-extra-%{version}.src.tar.xz
-# Source5-md5: cfd46027a0ab7eed483dfcc803e86bd9
+# Source5-md5: 431cba2b652e9c227a59a6d681388160
Source6: http://releases.llvm.org/%{version}/lld-%{version}.src.tar.xz
-# Source6-md5: 39cd3512cddcfd7d37ef12066c961660
+# Source6-md5: 31cc580b32be124972c40c19c0839fed
Patch1: %{name}-pld.patch
Patch3: x32-gcc-toolchain.patch
Patch4: cmake-buildtype.patch
Patch5: %{name}-ocaml-shared.patch
-Patch6: D35246.diff
-Patch7: gcc7.patch
URL: http://llvm.org/
BuildRequires: bash
BuildRequires: bison
BuildRequires: perl-tools-pod
BuildRequires: python >= 1:2.7
BuildRequires: rpm-pythonprov
+BuildRequires: rpmbuild(macros) >= 1.734
%{?with_doc:BuildRequires: sphinx-pdg}
BuildRequires: tar >= 1:1.22
BuildRequires: xz
BuildRequires: libxml2-devel >= 2
BuildRequires: ncurses-ext-devel
BuildRequires: python-devel >= 2
-BuildRequires: swig-python
+BuildRequires: swig-python >= 3.0.11
%endif
%if %{with polly}
#BuildRequires: gmp-devel or imath-devel (private copy in polly/lib/External/isl/imath)
ExcludeArch: ppc64
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
-%define abi 4.0
+%define abi 6.0
%define _sysconfdir /etc/%{name}
%define specflags_ppc -fno-var-tracking-assignments
%define filterout_cxx -fvar-tracking-assignments -Werror=format-security
%define filterout_ccpp -fvar-tracking-assignments
-# std::__once_call, std::__once_callable non-function symbols
-%define skip_post_check_so libclang.so.* liblldb.so.*
-
%description
LLVM is a compiler infrastructure designed for compile-time,
link-time, runtime, and idle-time optimization of programs from
%description ocaml-doc -l pl.UTF-8
Dokumentacja HTML wiązania OCamla do LLVM-a.
+%package opt-viewer
+Summary: Optimization records visualization tools
+Summary(pl.UTF-8): Narzędzia do wizualizacji rekordów optymalizacji
+Group: Development/Tools
+Requires: %{name} = %{version}
+BuildArch: noarch
+
+%description opt-viewer
+Optimization records visualization tools.
+
+%description opt-viewer -l pl.UTF-8
+Narzędzia do wizualizacji rekordów optymalizacji.
+
+%package -n vim-plugin-clang
+Summary: Clang format and rename integration for Vim
+Summary(pl.UTF-8): Integracja narzędzi Clang do formatowania i zmiany nazw z Vimem
+Group: Applications/Editors/Vim
+Requires: vim-rt >= 4:7.0
+BuildArch: noarch
+
+%description -n vim-plugin-clang
+Clang format and rename integration for Vim.
+
+%description -n vim-plugin-clang -l pl.UTF-8
+Integracja narzędzi Clang do formatowania i zmiany nazw z Vimem.
+
%prep
%setup -q -n %{name}-%{version}.src -a1 %{?with_rt:-a2} %{?with_lldb:-a3} %{?with_polly:-a4} -a5 -a6
%{__mv} cfe-%{version}.src tools/clang
%patch3 -p1
%patch4 -p1
%patch5 -p1
-%patch6 -p0
-%patch7 -p1
grep -rl /usr/bin/env tools utils | xargs sed -i -e '1{
s,^#!.*bin/env python,#!%{__python},
s,^#!.*bin/env perl,#!%{__perl},
}'
+find -name '*.py' -print0 | xargs -0 sed -i -e '1{
+ s,^#!.*bin/python.*,#!%{__python},
+}'
+
%build
install -d build
%{__make} -C tools/clang/docs docs-clang-html
%{__make} -C tools/clang/docs docs-clang-man
%{__make} -C tools/lld/docs docs-lld-html
-LD_LIBRARY_PATH=$(pwd)/%{_lib}
-%{__make} -C tools/lldb/docs lldb-python-doc
+%{__make} \
+ LD_LIBRARY_PATH=$(pwd)/%{_lib} \
+ -C tools/lldb/docs lldb-python-doc
%{__make} -C tools/lldb/docs lldb-cpp-doc
%endif
%install
rm -rf $RPM_BUILD_ROOT
-%{__make} -C build install \
+%{__make} -j1 -C build install \
DESTDIR=$RPM_BUILD_ROOT
# only some .pyc files are created by make install
%attr(755,root,root) %{_bindir}/llvm-as
%attr(755,root,root) %{_bindir}/llvm-bcanalyzer
%attr(755,root,root) %{_bindir}/llvm-cat
+%attr(755,root,root) %{_bindir}/llvm-cfi-verify
%attr(755,root,root) %{_bindir}/llvm-cov
+%attr(755,root,root) %{_bindir}/llvm-cvtres
%attr(755,root,root) %{_bindir}/llvm-cxxdump
%attr(755,root,root) %{_bindir}/llvm-cxxfilt
%attr(755,root,root) %{_bindir}/llvm-diff
%attr(755,root,root) %{_bindir}/llvm-dis
+%attr(755,root,root) %{_bindir}/llvm-dlltool
%attr(755,root,root) %{_bindir}/llvm-dsymutil
%attr(755,root,root) %{_bindir}/llvm-dwarfdump
%attr(755,root,root) %{_bindir}/llvm-dwp
%attr(755,root,root) %{_bindir}/llvm-mc
%attr(755,root,root) %{_bindir}/llvm-mcmarkup
%attr(755,root,root) %{_bindir}/llvm-modextract
+%attr(755,root,root) %{_bindir}/llvm-mt
%attr(755,root,root) %{_bindir}/llvm-nm
+%attr(755,root,root) %{_bindir}/llvm-objcopy
%attr(755,root,root) %{_bindir}/llvm-objdump
%attr(755,root,root) %{_bindir}/llvm-opt-report
-%attr(755,root,root) %{_bindir}/llvm-pdbdump
+%attr(755,root,root) %{_bindir}/llvm-pdbutil
%attr(755,root,root) %{_bindir}/llvm-profdata
%attr(755,root,root) %{_bindir}/llvm-ranlib
+%attr(755,root,root) %{_bindir}/llvm-rc
+%attr(755,root,root) %{_bindir}/llvm-readelf
%attr(755,root,root) %{_bindir}/llvm-readobj
%attr(755,root,root) %{_bindir}/llvm-rtdyld
%attr(755,root,root) %{_bindir}/llvm-size
%attr(755,root,root) %{_bindir}/yaml2obj
%if %{with doc}
%{_mandir}/man1/bugpoint.1*
+%{_mandir}/man1/dsymutil.1*
%{_mandir}/man1/lit.1*
%{_mandir}/man1/llc.1*
%{_mandir}/man1/lli.1*
%{_mandir}/man1/llvm-lib.1*
%{_mandir}/man1/llvm-link.1*
%{_mandir}/man1/llvm-nm.1*
+%{_mandir}/man1/llvm-pdbutil.1*
%{_mandir}/man1/llvm-profdata.1*
%{_mandir}/man1/llvm-ranlib.1*
%{_mandir}/man1/llvm-readobj.1*
# non-soname symlink
%attr(755,root,root) %{_libdir}/libLLVM-%{version}.so
%attr(755,root,root) %{_libdir}/libLTO.so.%{version}
-%attr(755,root,root) %ghost %{_libdir}/libLTO.so.4
+%attr(755,root,root) %ghost %{_libdir}/libLTO.so.6
+%attr(755,root,root) %{_libdir}/LLVMgold.so
%files devel
%defattr(644,root,root,755)
%{_libdir}/libPollyISL.a
%{_libdir}/libPollyPPCG.a
%{_includedir}/polly
+%{_libdir}/cmake/polly
%endif
%files -n clang
%files -n clang-libs
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/libclang.so.%{abi}
-%attr(755,root,root) %ghost %{_libdir}/libclang.so.4
+%attr(755,root,root) %ghost %{_libdir}/libclang.so.6
%if %{with rt} && %{with multilib}
%ifarch %{x8664} x32
%doc tools/clang/tools/extra/{CODE_OWNERS.TXT,README.txt}
%attr(755,root,root) %{_bindir}/clang-apply-replacements
%attr(755,root,root) %{_bindir}/clang-change-namespace
+%attr(755,root,root) %{_bindir}/clang-func-mapping
%attr(755,root,root) %{_bindir}/clang-include-fixer
%attr(755,root,root) %{_bindir}/clang-query
+%attr(755,root,root) %{_bindir}/clang-refactor
%attr(755,root,root) %{_bindir}/clang-rename
%attr(755,root,root) %{_bindir}/clang-reorder-fields
%attr(755,root,root) %{_bindir}/clang-tidy
+%attr(755,root,root) %{_bindir}/clangd
%attr(755,root,root) %{_bindir}/find-all-symbols
%attr(755,root,root) %{_bindir}/modularize
%attr(755,root,root) %{_bindir}/pp-trace
%defattr(644,root,root,755)
%doc tools/lld/{LICENSE.TXT,README.md}
%attr(755,root,root) %{_bindir}/ld.lld
+%attr(755,root,root) %{_bindir}/ld64.lld
%attr(755,root,root) %{_bindir}/lld
%attr(755,root,root) %{_bindir}/lld-link
+%attr(755,root,root) %{_bindir}/wasm-ld
%files -n lld-devel
%defattr(644,root,root,755)
-%{_libdir}/liblld[ACDEHMRXY]*.a
+%{_libdir}/liblld[ACDEHMRWXY]*.a
%{_includedir}/lld
%if %{with lldb}
%files -n lldb
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/lldb
-%attr(755,root,root) %{_bindir}/lldb-%{version}
%attr(755,root,root) %{_bindir}/lldb-argdumper
%attr(755,root,root) %{_bindir}/lldb-mi
-%attr(755,root,root) %{_bindir}/lldb-mi-%{version}
%attr(755,root,root) %{_bindir}/lldb-server
-%attr(755,root,root) %{_bindir}/lldb-server-%{version}
+%attr(755,root,root) %{_bindir}/lldb-test
%attr(755,root,root) %{_libdir}/liblldb.so.%{version}
-%attr(755,root,root) %ghost %{_libdir}/liblldb.so.4
+%attr(755,root,root) %ghost %{_libdir}/liblldb.so.6
+%attr(755,root,root) %{_libdir}/liblldbIntelFeatures.so.%{version}
+%attr(755,root,root) %ghost %{_libdir}/liblldbIntelFeatures.so.6
%dir %{py_sitedir}/lldb
%attr(755,root,root) %{py_sitedir}/lldb/lldb-argdumper
%{py_sitedir}/lldb/formatters
%files -n lldb-devel
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/liblldb.so
+%attr(755,root,root) %{_libdir}/liblldbIntelFeatures.so
%{_libdir}/liblldb*.a
%{_includedir}/lldb
%endif
%if %{with ocaml}
%files ocaml
%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/ocaml/stublibs/dllllvm*.so
%dir %{_libdir}/ocaml/llvm
-%attr(755,root,root) %{_libdir}/ocaml/llvm/dllllvm*.so
%{_libdir}/ocaml/llvm/llvm*.cma
%{_libdir}/ocaml/llvm/llvm*.cmi
%{_libdir}/ocaml/META.llvm*
%defattr(644,root,root,755)
%doc ocamldocs/*
%endif
+
+%files opt-viewer
+%defattr(644,root,root,755)
+%{_datadir}/opt-viewer
+
+%files -n vim-plugin-clang
+%defattr(644,root,root,755)
+%{_datadir}/clang/clang-format.py
+%{_datadir}/clang/clang-rename.py