%define gccver %(gcc -dumpversion) %define majver %(echo %version | cut -d. -f1-2) Name: llvm Version: 6.0.0 Release: 4mamba Summary: The Low Level Virtual Machine Group: Development/Languages Vendor: openmamba Distribution: openmamba Packager: Davide Madrisan URL: http://llvm.org/ Source0: http://releases.llvm.org/%{version}/llvm-%{version}.src.tar.xz Source1: http://releases.llvm.org/%{version}/cfe-%{version}.src.tar.xz Source2: http://releases.llvm.org/%{version}/compiler-rt-%{version}.src.tar.xz Source3: http://releases.llvm.org/%{version}/clang-tools-extra-%{version}.src.tar.xz Source4: http://releases.llvm.org/%{version}/lld-%{version}.src.tar.xz Source5: http://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 Requires: libstdc++6-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 devel Summary: Libraries and header files for LLVM Group: Development/Languages Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release} Requires: libstdc++6-devel %description 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 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 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. %prep %setup -q -a1 -a2 -a3 -a4 -a5 -n %{name}-%{version}.src #-D -T #:<< __EOF #%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 #:<< _EOF mkdir -p build cd build cmake \ -G Ninja \ -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}/ld64.lld %{_bindir}/ld.lld %{_bindir}/lld %{_bindir}/lld-link #%{_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}/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}/%{name}/*.a %dir %{_datadir}/doc/llvm/html/ %{_datadir}/doc/llvm/html/* %{_libdir}/*.a %{_libdir}/*.so %exclude %{_libdir}/libLLVM-%{majver}.so %dir %{_libdir}/cmake/llvm %{_libdir}/cmake/llvm/*.cmake %doc README.txt %files -n clang %defattr(-,root,root) #%{_bindir}/FileCheck %{_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} %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* #%{_libdir}/ocaml/*.mli %dir %{_docdir}/llvm/ocaml-html %{_docdir}/llvm/ocaml-html/* #%doc llvm-extradocs/ocamldoc/html %changelog * Mon Jun 25 2018 Silvan Calarco 6.0.0-4mamba - rebuilt with gcc 8.1.0 * Sun Jun 24 2018 Silvan Calarco 6.0.0-3mamba - apply patches from Arch to possibly fix lld segfault * Sat Jun 23 2018 Silvan Calarco 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 6.0.0-1mamba - automatic version update by autodist * Mon Dec 25 2017 Automatic Build System 5.0.1-1mamba - automatic version update by autodist * Tue Nov 28 2017 Silvan Calarco 5.0.0-2mamba - fix link against libllvm by changing and extending build arguments and external llvm subpackages * Tue Nov 28 2017 Silvan Calarco 5.0.0-1mamba - update to 5.0.0 * Wed Jul 13 2016 Automatic Build System 3.8.1-1mamba - automatic version update by autodist * Sat Jun 11 2016 Silvan Calarco 3.8.0-3mamba - rebuilt using cmake * Sat May 28 2016 Silvan Calarco 3.8.0-2mamba - rebuilt * Thu May 26 2016 Automatic Build System 3.8.0-1mamba - automatic version update by autodist * Sun Jan 18 2015 Automatic Build System 3.5.1-1mamba - automatic version update by autodist * Fri Sep 19 2014 Silvan Calarco 3.5.0-2mamba - patch llvm-config for x86_64 support and %{_libdir}/llvm * Wed Sep 10 2014 Silvan Calarco 3.5.0-1mamba - update to 3.5.0 * Thu Jul 10 2014 Silvan Calarco 3.4.2-1mamba - update to 3.4.2 * Sun Feb 16 2014 Silvan Calarco 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 3.4-1mamba - update to 3.4 * Thu Jun 20 2013 Automatic Build System 3.3-1mamba - update to 3.3 * Sat Dec 22 2012 Automatic Build System 3.2-1mamba - automatic version update by autodist * Fri Jul 20 2012 Silvan Calarco 3.1-1mamba - update to 3.1 * Thu Feb 23 2012 Ercole 'ercolinux' Carpanetto 3.0.-1mamba - update to 3.0 * Sun Jul 10 2011 Silvan Calarco 2.9-1mamba - update to 2.9 * Sat Jan 01 2011 Davide Madrisan 2.8-1mamba - package created by autospec