From: Slava Barinov Date: Fri, 30 Jul 2021 11:15:23 +0000 (+0300) Subject: [packaging] Add packaging X-Git-Tag: accepted/tizen/base/toolchain/20240529.013406~15 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a8f9a7d7aab6539921ff30a57e1267e3eaa57b8c;p=platform%2Fupstream%2Fllvm.git [packaging] Add packaging Change-Id: Ia0f97e3b5d3901fe5183e51faad7b01bd3af6cd8 Signed-off-by: Slava Barinov --- diff --git a/packaging/llvm.manifest b/packaging/llvm.manifest new file mode 100644 index 000000000000..bea6c60d9a40 --- /dev/null +++ b/packaging/llvm.manifest @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/packaging/llvm.spec b/packaging/llvm.spec new file mode 100644 index 000000000000..1b4c3b61b53f --- /dev/null +++ b/packaging/llvm.spec @@ -0,0 +1,401 @@ +%define keepstatic 1 +%define llvm_release_build 1 + +%define llvm_version 10 + +Name: llvm +Summary: The LLVM Project is a collection of modular and reusable compiler and toolchain technologies +Version: 10.0.0 +Release: 1 +Group: Development/Toolchain +License: NCSA +Source0: %{name}-%{version}.tar.gz +Source1001: llvm.manifest + +BuildRequires: cmake +BuildRequires: python3 +BuildRequires: python-devel +BuildRequires: patchelf +BuildRequires: binutils-devel + +%if 0%{llvm_release_build} +BuildRequires: sed +%endif + +Requires: libllvm = %{version}-%{release} + +%if 0%{llvm_release_build} +# Disable debug packages building +%define debug_package %{nil} +%define __debug_install_post %{_rpmconfigdir}/find-debuginfo.sh %{?_find_debuginfo_opts} %{?_find_debuginfo_strip_opts} %{?_find_debuginfo_ko_strip_opts} "%{_builddir}/%{?buildsubdir}"\ + rm -rf "%{buildroot}/usr/lib/debug"\ + rm -rf "%{buildroot}/usr/src/debug" +%endif + +%define install_prefix /usr +%define sdk_install_prefix /home/owner/share/tmp/sdk_tools/lldb +%define sdk_bin_dir %{sdk_install_prefix}/bin + +%ifarch x86_64 aarch64 +%define library_dir %{install_prefix}/lib64 +%define sdk_lib_dir %{sdk_install_prefix}/lib64 +%define system_lib_dir /usr/lib64 +%else +%define library_dir %{install_prefix}/lib +%define sdk_lib_dir %{sdk_install_prefix}/lib +%define system_lib_dir /usr/lib +%endif + +%ifarch armv7l +%define ARCH armv7l +%define ABI eabi +%endif +%ifarch armv7hl +%define ARCH armv7hl +%define ABI eabihf +%endif +%ifarch %ix86 +%define ARCH i586 +%endif +%ifarch x86_64 +%define ARCH x86_64 +%endif +%ifarch aarch64 +%define ARCH aarch64 +%endif +%define host_arch %{ARCH}-tizen-linux-gnu%{?ABI} + +%description +LLVM is a compiler infrastructure designed for compile-time, link-time, runtime, +and idle-time optimization of programs from arbitrary programming languages. +LLVM is written in C++ and has been developed since 2000 at the University of +Illinois and Apple. It currently supports compilation of C and C++ programs, +using front-ends derived from GCC 4.0.1. A new front-end for the C family of +languages is in development. The compiler infrastructure +includes mirror sets of programming tools as well as libraries with equivalent +functionality. + +%package devel +Summary: Libraries and Header Files for LLVM %{version} +Requires: %{name} = %{version} + +%description devel +This package contains library and header files needed to develop +new native programs that use the LLVM infrastructure. + +%package static-devel +Summary: Static libraries for LLVM +Requires: %{name} = %{version} + +%description static-devel +This package contains static libraries needed to develop new +native programs that use the LLVM infrastructure. + +%package -n libllvm +Summary: LLVM shared libraries + +%description -n libllvm +Shared libraries for the LLVM compiler infrastructure. + +%package -n clang +Summary: Clang %{version} (C Language family frontend for LLVM) +License: NCSA +Requires: llvm = %{version}-%{release} +Provides: libclang.so.%{version} + +%description -n clang +A new front-end for the C family of languages is in development. + +%package -n clang-devel +Summary: Clang %{version} Development Library +Requires: clang = %{version}-%{release} + +%description -n clang-devel +This package contains the clang (C language) frontend for LLVM. +(development files) + +%package -n lldb +Summary: LLDB +License: NCSA + +%description -n lldb +LLDB is a next generation, high-performance debugger. It is built as a set +of reusable components which highly leverage existing libraries in the +larger LLVM Project, such as the Clang expression parser and LLVM +disassembler. + +%package -n lldb-devel +Summary: Development header files for LLDB +Requires: lldb = %{version}-%{release} + +%description -n lldb-devel +The package contains header files for the LLDB debugger. + +%package -n compiler-rt +Summary: Compiler runtime libraries + +%description -n compiler-rt +Compiler runtime libraries + +%prep +%setup -q + +%build +%if 0%{llvm_release_build} +# Not to build debug info +RELCFLAGS=$(echo $CFLAGS | sed -e 's*\(^\|[[:space:]]\)-g\([[:digit:]]\+\|gdb\)\?* *g') +export CFLAGS=${RELCFLAGS} +RELCXXFLAGS=$(echo $CXXFLAGS | sed -e 's*\(^\|[[:space:]]\)-g\([[:digit:]]\+\|gdb\)\?* *g') +export CXXFLAGS=${RELCXXFLAGS} +RELFFLAGS=$(echo $FFLAGS | sed -e 's*\(^\|[[:space:]]\)-g\([[:digit:]]\+\|gdb\)\?* *g') +export FFLAGS=${RELFFLAGS} +%endif + +cp %{SOURCE1001} . +%ifarch %ix86 +%{?asan:%gcc_unforce_options} +%endif + +%ifarch armv7l aarch64 +CPP_INCLUDE_PATHS=$(cpp -xc++ -v < /dev/null 2>&1 | \ + awk '/search starts here:/{flag=1;next}/End of search list/{flag=0}flag' | \ + sed -e "s/^ //" | tr '\n' ':' | sed -e 's/.$//') +%endif + +mkdir -p build +cd build +cmake \ + -DCMAKE_C_COMPILER=/usr/bin/gcc \ + -DCMAKE_CXX_COMPILER=/usr/bin/g++ \ + -DCMAKE_INSTALL_PREFIX=%{install_prefix} \ + -DCMAKE_BUILD_TYPE=Release \ + -DLLVM_ENABLE_ASSERTIONS=No \ + -DLLVM_TARGETS_TO_BUILD='X86;ARM;AArch64;BPF' \ + -DLLVM_BUILD_LLVM_DYLIB=1 \ + -DLLDB_DISABLE_LIBEDIT=1 \ + -DLLDB_DISABLE_PYTHON=1 \ + -DLLVM_TARGET_ARCH=%{ARCH} \ + -DLLVM_HOST_TRIPLE=%{host_arch} \ + -DLLDB_DISABLE_CURSES=1 \ + -DLLVM_ENABLE_PROJECTS="clang;lldb;clang-tools-extra;compiler-rt" \ + -DLLVM_BUILD_EXAMPLES=OFF \ + -DLLVM_INCLUDE_EXAMPLES=OFF \ + -DLLVM_BUILD_TESTS=OFF \ + -DLLVM_INCLUDE_TESTS=OFF \ + -DLLVM_ENABLE_DOXYGEN=OFF \ + -DLLVM_BUILD_DOCS=OFF \ + -DLLVM_INCLUDE_DOCS=OFF \ + -DLLVM_OPTIMIZED_TABLEGEN=ON \ +%ifarch armv7l aarch64 + -DC_INCLUDE_DIRS="${CPP_INCLUDE_PATHS}" \ +%endif +%ifarch x86_64 aarch64 + -DLLVM_LIBDIR_SUFFIX=64 \ +%endif +%ifarch %ix86 + -DCMAKE_C_FLAGS="-m32" \ + -DCMAKE_CXX_FLAGS="-m32" \ +%endif + -DLLVM_BINUTILS_INCDIR=/usr/include \ + ../llvm + +%if 0%{llvm_release_build} +make %{?jobs:-j%jobs} +%else +%if 0%{?jobs}>4 +make -j4 +%else +make %{?jobs:-j%jobs} +%endif +%endif + +%install +cd build +%make_install +ln -sf %{install_prefix}/bin/clang++ %{buildroot}%{install_prefix}/bin/clang++-%{llvm_version} + +mkdir -p %{buildroot}%{bindir} +# copy lldb for sdk +mkdir -p %{buildroot}%{sdk_bin_dir} +mkdir -p %{buildroot}%{sdk_lib_dir} + +mv %{buildroot}%{install_prefix}/bin/lldb %{buildroot}%{sdk_bin_dir} +mv %{buildroot}%{install_prefix}/bin/lldb-argdumper %{buildroot}%{sdk_bin_dir} +mv %{buildroot}%{install_prefix}/bin/lldb-server %{buildroot}%{sdk_bin_dir} + +ln -sf %{sdk_bin_dir}/lldb %{buildroot}%{install_prefix}/bin/ + +cp -P %{buildroot}%{library_dir}/liblldb.so* %{buildroot}%{sdk_lib_dir}/ + +rm -rf %{buildroot}/usr/lib/debug/* + +%post -n clang -p /sbin/ldconfig +%postun -n clang -p /sbin/ldconfig + +%post -n lldb +echo "plugin load /usr/share/dotnet.tizen/netcoreapp/libsosplugin.so" > /root/.lldbinit +echo "setclrpath /usr/share/dotnet.tizen/netcoreapp" >> /root/.lldbinit + +%clean +echo Cleaning %{buildroot} + +%files +%manifest %{name}.manifest +%defattr(-,root,root,-) +%{install_prefix}/bin/bugpoint +%{install_prefix}/bin/llc +%{install_prefix}/bin/lli +%{install_prefix}/bin/llvm-ar +%{install_prefix}/bin/llvm-as +%{install_prefix}/bin/llvm-bcanalyzer +%{install_prefix}/bin/llvm-c-test +%{install_prefix}/bin/llvm-cat +%{install_prefix}/bin/llvm-config +%{install_prefix}/bin/llvm-cov +%{install_prefix}/bin/llvm-cvtres +%{install_prefix}/bin/llvm-cxxdump +%{install_prefix}/bin/llvm-cxxfilt +%{install_prefix}/bin/llvm-diff +%{install_prefix}/bin/llvm-dis +%{install_prefix}/bin/llvm-dlltool +%{install_prefix}/bin/llvm-dwarfdump +%{install_prefix}/bin/llvm-dwp +%{install_prefix}/bin/llvm-extract +%{install_prefix}/bin/llvm-lib +%{install_prefix}/bin/llvm-link +%{install_prefix}/bin/llvm-lto +%{install_prefix}/bin/llvm-lto2 +%{install_prefix}/bin/llvm-mc +%{install_prefix}/bin/llvm-modextract +%{install_prefix}/bin/llvm-mt +%{install_prefix}/bin/llvm-nm +%{install_prefix}/bin/llvm-objdump +%{install_prefix}/bin/llvm-opt-report +%{install_prefix}/bin/llvm-pdbutil +%{install_prefix}/bin/llvm-profdata +%{install_prefix}/bin/llvm-ranlib +%{install_prefix}/bin/llvm-readelf +%{install_prefix}/bin/llvm-readobj +%{install_prefix}/bin/llvm-rtdyld +%{install_prefix}/bin/llvm-size +%{install_prefix}/bin/llvm-split +%{install_prefix}/bin/llvm-stress +%{install_prefix}/bin/llvm-strings +%{install_prefix}/bin/llvm-symbolizer +%{install_prefix}/bin/llvm-tblgen +%{install_prefix}/bin/llvm-xray +%{install_prefix}/bin/obj2yaml +%{install_prefix}/bin/opt +%{install_prefix}/bin/sancov +%{install_prefix}/bin/sanstats +%{install_prefix}/bin/scan-build +%{install_prefix}/bin/scan-view +%{install_prefix}/bin/verify-uselistorder +%{install_prefix}/bin/yaml2obj +%{install_prefix}/bin/diagtool +%{install_prefix}/bin/dsymutil +%{install_prefix}/bin/hmaptool +%{install_prefix}/bin/lldb-instr +%{install_prefix}/bin/lldb-vscode +%{install_prefix}/bin/llvm-addr2line +%{install_prefix}/bin/llvm-cfi-verify +%{install_prefix}/bin/llvm-cxxmap +%{install_prefix}/bin/llvm-elfabi +%{install_prefix}/bin/llvm-exegesis +%{install_prefix}/bin/llvm-ifs +%{install_prefix}/bin/llvm-install-name-tool +%{install_prefix}/bin/llvm-jitlink +%{install_prefix}/bin/llvm-lipo +%{install_prefix}/bin/llvm-mca +%{install_prefix}/bin/llvm-objcopy +%{install_prefix}/bin/llvm-rc +%{install_prefix}/bin/llvm-reduce +%{install_prefix}/bin/llvm-strip +%{install_prefix}/bin/llvm-undname +%{install_prefix}/bin/pp-trace + +%files devel +%manifest %{name}.manifest +%defattr(-,root,root,-) +%{install_prefix}/include/llvm/* +%{install_prefix}/include/llvm-c/* +%{install_prefix}/share/* +%{library_dir}/cmake/llvm/* +%{library_dir}/libLTO*.so* +%{library_dir}/LLVMgold.so +%{library_dir}/libRemarks.so* + +%files static-devel +%manifest %{name}.manifest +%defattr(-,root,root,-) +%{library_dir}/lib*.a + +%files -n libllvm +%manifest %{name}.manifest +%defattr(-,root,root,-) +%{library_dir}/libLLVM*.so* + +%files -n clang +%manifest %{name}.manifest +%defattr(-,root,root,-) +%{install_prefix}/bin/c-index-test +%{install_prefix}/bin/clang +%{install_prefix}/bin/clang++ +%{install_prefix}/bin/clang-%{llvm_version} +%{install_prefix}/bin/clang++-%{llvm_version} +%{install_prefix}/bin/clang-apply-replacements +%{install_prefix}/bin/clang-change-namespace +%{install_prefix}/bin/clang-check +%{install_prefix}/bin/clang-cl +%{install_prefix}/bin/clang-cpp +%{install_prefix}/bin/clang-doc +%{install_prefix}/bin/clang-extdef-mapping +%{install_prefix}/bin/clang-move +%{install_prefix}/bin/clang-offload-wrapper +%{install_prefix}/bin/clang-refactor +%{install_prefix}/bin/clang-scan-deps +%{install_prefix}/bin/clang-format +%{install_prefix}/bin/clang-import-test +%{install_prefix}/bin/clang-include-fixer +%{install_prefix}/bin/clang-offload-bundler +%{install_prefix}/bin/clang-query +%{install_prefix}/bin/clang-rename +%{install_prefix}/bin/clang-reorder-fields +%{install_prefix}/bin/clang-tidy +%{install_prefix}/bin/clangd +%{install_prefix}/bin/git-clang-format +%{install_prefix}/bin/find-all-symbols +%{install_prefix}/bin/modularize +%{library_dir}/clang/%{version}/include/* +%{library_dir}/libclang*.so* +%{library_dir}/cmake/clang/* +%{install_prefix}/libexec/c++-analyzer +%{install_prefix}/libexec/ccc-analyzer + +%files -n clang-devel +%manifest %{name}.manifest +%defattr(-,root,root,-) +%{install_prefix}/include/clang/* +%{install_prefix}/include/clang-c/* + +%files -n lldb +%manifest %{name}.manifest +%defattr(-,root,root,-) +%{sdk_bin_dir}/lldb +%{install_prefix}/bin/lldb +%{sdk_bin_dir}/lldb-argdumper +%{sdk_bin_dir}/lldb-server +%{sdk_lib_dir}/liblldb*.so* + +%files -n lldb-devel +%manifest %{name}.manifest +%defattr(-,root,root,-) +%{install_prefix}/include/lldb/* +%{library_dir}/liblldb*.so* + +%files -n compiler-rt +%manifest %{name}.manifest +%defattr(-,root,root,-) +%{library_dir}/clang/%{version}/lib/linux/* +%{library_dir}/clang/%{version}/include/sanitizer/* +%{library_dir}/clang/%{version}/*