llvm/llvm.spec

523 lines
16 KiB
RPMSpec

%define gccver %(gcc -dumpversion)
%define majver %(echo %version | cut -d. -f1-2)
Name: llvm
Version: 6.0.1
Release: 4mamba
Summary: The Low Level Virtual Machine
Group: Development/Languages
Vendor: openmamba
Distribution: openmamba
Packager: Davide Madrisan <davide.madrisan@gmail.com>
URL: https://llvm.org/
Source0: https://releases.llvm.org/%{version}/llvm-%{version}.src.tar.xz
Source1: https://releases.llvm.org/%{version}/cfe-%{version}.src.tar.xz
Source2: https://releases.llvm.org/%{version}/compiler-rt-%{version}.src.tar.xz
Source3: https://releases.llvm.org/%{version}/clang-tools-extra-%{version}.src.tar.xz
Source4: https://releases.llvm.org/%{version}/lld-%{version}.src.tar.xz
Source5: https://releases.llvm.org/%{version}/lldb-%{version}.src.tar.xz
Source6: llvm-6.0.0-llvm-config.patch
Patch0: %{name}-3.1-llvm-config.patch
Patch1: llvm-3.4-default-to-i586.patch
Patch2: llvm-5.0.0-openmamba-triplet.patch
Patch3: llvm-3.5.0-buildfix-CommandLine_h-getOption.patch
Patch4: llvm-3.5.0-x86_64-llvm-config.patch
Patch5: llvm-3.5.0-llvm-config.patch
Patch6: llvm-3.8.0-ocamldoc-install.patch
Patch7: llvm-5.0.0-llvm-shlib-build-fix.patch
Patch8: llvm-5.0.0-disable-symbolizer-test.patch
Patch9: llvm-6.0.0--export-LLVM_DYLIB_COMPONENTS-in-LLVMConfig.cmake.patch
Patch10: llvm-6.0.0-cmake-fix-a-typo-in-llvm_config-macro.patch
Patch11: llvm-6.0.0-export-LLVMInitializeInstCombine-as-extern-C.patch
Patch12: llvm-6.0.0-DebugInfo-discard-invalid-DBG_VALUE-instructions.patch
Patch13: llvm-6.0.0-fixup-for-rL326769-RegState-Debug-is-being-truncated.patch
License: NCSA
## AUTOBUILDREQ-BEGIN
BuildRequires: glibc-devel
BuildRequires: libedit-devel
BuildRequires: libffi-devel
BuildRequires: libgcc
BuildRequires: libncurses-devel
BuildRequires: libperl
BuildRequires: libstdc++6-devel
BuildRequires: libxml2-devel
BuildRequires: libz-devel
BuildRequires: perl-devel
## AUTOBUILDREQ-END
BuildRequires: gcc-c++ >= 8.1.0
BuildRequires: glibc-devel
BuildRequires: ocaml
BuildRequires: ocaml-ctypes
BuildRequires: ocaml-ounit
BuildRequires: z3
BuildRequires: libz3-devel
#Requires: gcc >= %{gccver}
#Requires: gcc-c++ >= %{gccver}
BuildConflicts: llvm-ocaml
BuildRoot: %{_tmppath}/%{name}-%{version}-root
%description
The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
Despite its name, LLVM has little to do with traditional virtual machines, though it does provide helpful libraries that can be used to build them.
%package -n lib%{name}
Group: System/Libraries
Summary: Shared libraries for %{name}
%description -n lib%{name}
This package contains shared libraries for %{name}.
%package -n lib%{name}-devel
Summary: Libraries and header files for LLVM
Group: Development/Languages
Requires: lib%{name} = %{?epoch:%epoch:}%{version}-%{release}
Provides: llvm-devel
Obsoletes: llvm-devel
%description -n lib%{name}-devel
The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
Despite its name, LLVM has little to do with traditional virtual machines, though it does provide helpful libraries that can be used to build them.
This package contains library and header files needed to develop new native programs that use the LLVM infrastructure.
%package -n lib%{name}-apidocs
Group: Documentation
Summary: lib%{name} API documentation
Requires: lib%{name}-devel = %{?epoch:%epoch:}%{version}-%{release}
Requires: gtk-doc
%description -n lib%{name}-apidocs
This package includes the lib%{name} API documentation.
%package tools
Summary: Additional LLVM tools
Group: Development/Languages
Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release}
%description tools
The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
Despite its name, LLVM has little to do with traditional virtual machines, though it does provide helpful libraries that can be used to build them.
This package contains additional LLVM tools.
%package -n clang
Summary: LLVM native C/C++/Objective-C compiler
Group: Development/Languages
Requires: gcc-c++
Provides: cfe
Provides: llvm-clang
Obsoletes: llvm-clang
%description -n clang
Cfe is an "LLVM native" C/C++/Objective-C compiler, which aims to deliver amazingly fast compiles, extremely useful error and warning messages and to provide a platform for building great source level tools.
The Cfe Static Analyzer is a tool automatically finds bugs in your code, and is a great example of the sort of tool that can be built using the Cfe frontend as a library to parse C/C++ code.
%package -n clang-devel
Summary: Libraries and header files for LLVM cfe
Group: Development/Languages
Requires: clang = %{?epoch:%epoch:}%{version}-%{release}
Provides: cfe-devel
Provides: llvm-clang-devel
Obsoletes: llvm-clang-devel
%description -n clang-devel
Cfe is an "LLVM native" C/C++/Objective-C compiler, which aims to deliver amazingly fast compiles, extremely useful error and warning messages and to provide a platform for building great source level tools.
The Cfe Static Analyzer is a tool automatically finds bugs in your code, and is a great example of the sort of tool that can be built using the Cfe frontend as a library to parse C/C++ code.
This package contains header files for the Cfe compiler.
%package -n clang-apidocs
Group: Documentation
Summary: clang API documentation
Requires: clang-devel = %{?epoch:%epoch:}%{version}-%{release}
Requires: gtk-doc
%description -n clang-apidocs
This package includes the clang API documentation.
%package ocaml
Summary: OCaml binding for LLVM
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
#Requires: ocaml-runtime
%description ocaml
OCaml binding for LLVM.
%package ocaml-devel
Summary: Development files for %{name}-ocaml
Group: Development/Libraries
Requires: %{name}-devel = %{?epoch:%epoch:}%{version}-%{release}
Requires: %{name}-ocaml = %{?epoch:%epoch:}%{version}-%{release}
Requires: ocaml
%description ocaml-devel
The %{name}-ocaml-devel package contains libraries and signature files for developing applications that use %{name}-ocaml.
%package ocaml-apidocs
Group: Documentation
Summary: LLVM ocaml API documentation
Requires: %{name}-ocaml-devel = %{?epoch:%epoch:}%{version}-%{release}
Requires: gtk-doc
%description ocaml-apidocs
This package includes the LLVM ocaml API documentation.
%prep
%setup -q -a1 -a2 -a3 -a4 -a5 -n %{name}-%{version}.src
#% setup -q -n %{name}-%{version}.src -D -T
#%patch0 -p1
#%patch1 -p1
mv cfe-%{version}.src tools/clang
mv compiler-rt-%{version}.src projects/compiler-rt
mv clang-tools-extra-%{version}.src tools/clang/tools/extra
mv lld-%{version}.src tools/lld
mv lldb-%{version}.src tools/lldb
%patch2 -p1
#%patch3 -p1
#%ifarch x86_64
#%patch4 -p1
#%else
#%patch5 -p1
#%endif
%patch6 -p1
#%patch7 -p1
#%patch8 -p1
%patch9 -p1
%patch10 -p0
#%patch11 -p1
#%patch12 -p1
#%patch13 -p1
# https://bugs.llvm.org/show_bug.cgi?id=34123
#sed -i '/LLVMSupport/d' tools/clang/tools/extra/clangd/tool/CMakeLists.txt
sed -i "/REMOVE_DUPLICATES/d" tools/llvm-shlib/CMakeLists.txt
%build
mkdir -p build
cd build
cmake \
-G Ninja \
%ifarch x86_64
-DCMAKE_C_COMPILER=clang \
-DCMAKE_CXX_COMPILER=clang++ \
%else
-DCMAKE_C_COMPILER=gcc \
-DCMAKE_CXX_COMPILER=g++ \
%endif
-DCMAKE_INSTALL_PREFIX=%{_prefix} \
-DLLVM_HOST_TRIPLE="%{_target_platform}" \
-DLLVM_DEFAULT_TARGET_TRIPLE="%{_target_platform}" \
-DLLVM_ENABLE_FFI=ON \
-DFFI_INCLUDE_DIR=$(pkg-config --variable=includedir libffi) \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_BUILD_LLVM_DYLIB=ON \
-DLLVM_LINK_LLVM_DYLIB=ON \
-DPYTHON_EXECUTABLE=%{_bindir}/python \
-DLLDB_DISABLE_PYTHON=ON \
-DLLVM_INSTALL_UTILS=ON \
-DLLVM_ENABLE_SPHINX=ON \
%ifarch x86_64
-DLLVM_LIBDIR_SUFFIX="64" \
%endif
-DSPHINX_WARNINGS_AS_ERRORS=OFF \
%ifnarch arm
-DLLVM_ENABLE_RTTI=ON \
-DLLVM_BUILD_TESTS=ON \
-DLLVM_BUILD_DOCS=ON \
%else
-DLLVM_BUILD_EXTERNAL_COMPILER_RT=OFF \
%endif
-Wno-dev ..
#%ifarch x86_64
# -DLLVM_LIBDIR_SUFFIX="64/llvm" \
#%else
# -DLLVM_LIBDIR_SUFFIX="/llvm" \
#%endif
# -DLLVM_TARGETS_TO_BUILD="host;AMDGPU" \
ninja all ocaml_doc
#% make all docs-llvm-html docs-llvm-man docs-clang-html docs-clang-man
%install
[ "%{buildroot}" != / ] && rm -rf "%{buildroot}"
#% makeinstall -C build
cd build
export DESTDIR=%{buildroot}
ninja install
#install -d %{buildroot}%{_sysconfdir}/ld.so.conf.d
#cat >> %{buildroot}%{_sysconfdir}/ld.so.conf.d/llvm-%{_arch}.conf << EOF
#%{_libdir}/llvm
#EOF
%ifarch x86_64
# Needed for multilib (https://bugs.archlinux.org/task/29951)
# Header stub is taken from Fedora
mv %{buildroot}%{_includedir}/llvm/Config/llvm-config{,-64}.h
cp %{SOURCE6} %{buildroot}%{_includedir}/llvm/Config/llvm-config.h
%endif
rm -f %{buildroot}%{_datadir}/doc/clang/html/.buildinfo
rm -f %{buildroot}%{_datadir}/doc/llvm/html/.buildinfo
%clean
[ "%{buildroot}" != / ] && rm -rf "%{buildroot}"
%post
/sbin/ldconfig
:
%postun
/sbin/ldconfig
:
%files
%defattr(-,root,root)
%{_bindir}/bugpoint
%{_bindir}/llc
%{_bindir}/lli
#%{_bindir}/lli-child-target
%{_bindir}/llvm*
#%{_bindir}/macho-dump
#%{_bindir}/c-index-test
%{_bindir}/obj2yaml
%{_bindir}/sancov
%{_bindir}/sanstats
%{_bindir}/verify-uselistorder
%{_bindir}/yaml2obj
%{_bindir}/wasm-ld
#%{_libdir}/ocaml/META.llvm
#%{_bindir}/llvm-config
%{_bindir}/opt
%{_bindir}/scan-build
%{_bindir}/scan-view
%dir %{_datadir}/scan-build
%{_datadir}/scan-build/*
%dir %{_datadir}/scan-view
%{_datadir}/scan-view/*
%dir %{_datadir}/opt-viewer
%{_datadir}/opt-viewer/*
%{_mandir}/man1/FileCheck.1*
%{_mandir}/man1/bugpoint.1*
%{_mandir}/man1/dsymutil.1*
%{_mandir}/man1/lit.1*
%{_mandir}/man1/llc.1*
%{_mandir}/man1/lli.1*
%{_mandir}/man1/llvm-ar.1*
%{_mandir}/man1/llvm-as.1*
%{_mandir}/man1/llvm-bcanalyzer.1*
%{_mandir}/man1/llvm-build.1*
%{_mandir}/man1/llvm-config.1*
%{_mandir}/man1/llvm-cov.1*
%{_mandir}/man1/llvm-diff.1*
%{_mandir}/man1/llvm-dis.1*
%{_mandir}/man1/llvm-dwarfdump.1*
%{_mandir}/man1/llvm-extract.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-readobj.1*
%{_mandir}/man1/llvm-stress.1*
%{_mandir}/man1/llvm-symbolizer.1*
%{_mandir}/man1/opt.1*
%{_mandir}/man1/scan-build.1*
%{_mandir}/man1/tblgen.1*
%doc CREDITS.TXT LICENSE.TXT
#doc llvm-testlog.txt
%files tools
%defattr(-,root,root)
%{_bindir}/FileCheck
%{_bindir}/clangd
%{_bindir}/count
%{_bindir}/find-all-symbols
%{_bindir}/ld64.lld
%{_bindir}/ld.lld
%{_bindir}/lld
%{_bindir}/lld-link
%{_bindir}/lldb
%{_bindir}/lldb-argdumper
%{_bindir}/lldb-mi
%{_bindir}/lldb-server
%{_bindir}/lldb-test
%{_bindir}/lli-child-target
%{_bindir}/modularize
%{_bindir}/not
%{_bindir}/yaml-bench
%dir %{_docdir}/clang-tools
%{_docdir}/clang-tools/*
%dir %{_docdir}/lld
%{_docdir}/lld/*
%{_mandir}/man1/extraclangtools.1*
%files -n libllvm
%defattr(-,root,root)
%{_libdir}/libLLVM-%{majver}.so
%{_libdir}/libLTO.so.*
%{_libdir}/liblldb.so.*
%{_libdir}/liblldbIntelFeatures.so.*
%files -n libllvm-devel
%defattr(-,root,root)
%{_includedir}/%{name}
%{_includedir}/%{name}-c
%dir %{_includedir}/lld
%{_includedir}/lld/*
%dir %{_includedir}/lldb
%{_includedir}/lldb/*
%{_libdir}/*.a
%{_libdir}/*.so
%exclude %{_libdir}/libLLVM-%{majver}.so
%dir %{_libdir}/cmake/llvm
%{_libdir}/cmake/llvm/*.cmake
%doc README.txt
%files -n libllvm-apidocs
%defattr(-,root,root)
%dir %{_datadir}/doc/llvm/html/
%{_datadir}/doc/llvm/html/*
%files -n clang
%defattr(-,root,root)
%{_bindir}/c-index-test
%{_bindir}/clang
%{_bindir}/clang++
%{_bindir}/clang-*
%{_bindir}/git-clang-format
#%{_bindir}/clang-tblgen
#%{_bindir}/count
#%{_bindir}/not
%{_prefix}/libexec/c++-analyzer
%{_prefix}/libexec/ccc-analyzer
%dir %{_libdir}/clang
%dir %{_libdir}/clang/%{version}
%{_libdir}/clang/%{version}/*
%{_libdir}/libclang.so.*
%dir %{_datadir}/clang/
%{_datadir}/clang/*
%{_mandir}/man1/clang.1*
%doc tools/clang/LICENSE.TXT
%files -n clang-devel
%defattr(-,root,root)
%dir %{_includedir}/clang-c
%{_includedir}/clang-c/*.h
#%{_includedir}/clang-c/module.modulemap
%dir %{_includedir}/clang/ARCMigrate
%{_includedir}/clang/ARCMigrate/*.h
%dir %{_includedir}/clang
%{_includedir}/clang/*
%dir %{_datadir}/doc/clang/html/
%{_datadir}/doc/clang/html/*
%dir %{_libdir}/cmake/clang
%{_libdir}/cmake/clang/*.cmake
%doc tools/clang/{NOTES.txt,README.txt}
%files -n clang-apidocs
%defattr(-,root,root)
%doc tools/clang/docs
%files ocaml
%defattr(-,root,root)
%{_libdir}/ocaml/llvm/*.cma
%{_libdir}/ocaml/llvm/*.cmi
%{_libdir}/ocaml/llvm/*.mli
%{_libdir}/ocaml/META.llvm*
%files ocaml-devel
%defattr(-,root,root)
%{_libdir}/ocaml/llvm/*.a
%{_libdir}/ocaml/llvm/*.cmx*
%files ocaml-apidocs
%defattr(-,root,root)
%dir %{_docdir}/llvm/ocaml-html
%{_docdir}/llvm/ocaml-html/*
%changelog
* Sun Sep 02 2018 Silvan Calarco <silvan.calarco@mambasoft.it> 6.0.1-4mamba
- remove building with libc++ to fix e.g. Mesa build
* Sat Jul 14 2018 Silvan Calarco <silvan.calarco@mambasoft.it> 6.0.1-3mamba
- rebuilt wth LLVM_ENABLE_LIBCXX=ON
* Sat Jul 14 2018 Silvan Calarco <silvan.calarco@mambasoft.it> 6.0.1-2mamba
- rebuilt with libc++
* Sat Jul 07 2018 Automatic Build System <autodist@mambasoft.it> 6.0.1-1mamba
- automatic version update by autodist
* Mon Jun 25 2018 Silvan Calarco <silvan.calarco@mambasoft.it> 6.0.0-4mamba
- rebuilt with gcc 8.1.0
* Sun Jun 24 2018 Silvan Calarco <silvan.calarco@mambasoft.it> 6.0.0-3mamba
- apply patches from Arch to possibly fix lld segfault
* Sat Jun 23 2018 Silvan Calarco <silvan.calarco@mambasoft.it> 6.0.0-2mamba
- rebuilt with standard target libdir and other changes to try fixing lld crash with at least chromium build
* Tue Jun 19 2018 Automatic Build System <autodist@mambasoft.it> 6.0.0-1mamba
- automatic version update by autodist
* Mon Dec 25 2017 Automatic Build System <autodist@mambasoft.it> 5.0.1-1mamba
- automatic version update by autodist
* Tue Nov 28 2017 Silvan Calarco <silvan.calarco@mambasoft.it> 5.0.0-2mamba
- fix link against libllvm by changing and extending build arguments and external llvm subpackages
* Tue Nov 28 2017 Silvan Calarco <silvan.calarco@mambasoft.it> 5.0.0-1mamba
- update to 5.0.0
* Wed Jul 13 2016 Automatic Build System <autodist@mambasoft.it> 3.8.1-1mamba
- automatic version update by autodist
* Sat Jun 11 2016 Silvan Calarco <silvan.calarco@mambasoft.it> 3.8.0-3mamba
- rebuilt using cmake
* Sat May 28 2016 Silvan Calarco <silvan.calarco@mambasoft.it> 3.8.0-2mamba
- rebuilt
* Thu May 26 2016 Automatic Build System <autodist@mambasoft.it> 3.8.0-1mamba
- automatic version update by autodist
* Sun Jan 18 2015 Automatic Build System <autodist@mambasoft.it> 3.5.1-1mamba
- automatic version update by autodist
* Fri Sep 19 2014 Silvan Calarco <silvan.calarco@mambasoft.it> 3.5.0-2mamba
- patch llvm-config for x86_64 support and %{_libdir}/llvm
* Wed Sep 10 2014 Silvan Calarco <silvan.calarco@mambasoft.it> 3.5.0-1mamba
- update to 3.5.0
* Thu Jul 10 2014 Silvan Calarco <silvan.calarco@mambasoft.it> 3.4.2-1mamba
- update to 3.4.2
* Sun Feb 16 2014 Silvan Calarco <silvan.calarco@mambasoft.it> 3.4-2mamba
- fix configure settings and add --with-extra-ld-options to correctly link and
pass --with-arch=%{_target_cpu} to fix penmamba bug #000163
* Sun Jan 12 2014 Silvan Calarco <silvan.calarco@mambasoft.it> 3.4-1mamba
- update to 3.4
* Thu Jun 20 2013 Automatic Build System <autodist@mambasoft.it> 3.3-1mamba
- update to 3.3
* Sat Dec 22 2012 Automatic Build System <autodist@mambasoft.it> 3.2-1mamba
- automatic version update by autodist
* Fri Jul 20 2012 Silvan Calarco <silvan.calarco@mambasoft.it> 3.1-1mamba
- update to 3.1
* Thu Feb 23 2012 Ercole 'ercolinux' Carpanetto <ercole69@gmail.com> 3.0.-1mamba
- update to 3.0
* Sun Jul 10 2011 Silvan Calarco <silvan.calarco@mambasoft.it> 2.9-1mamba
- update to 2.9
* Sat Jan 01 2011 Davide Madrisan <davide.madrisan@gmail.com> 2.8-1mamba
- package created by autospec