# # LLVM Common Support. # # This configuration file configure's, make's and install's LLVM and some of # it projects. # %include %{_configdir}/checks.cfg # # The package description. # Name: rtems-llvm-%{llvm_version}-%{_host}-%{release} Summary: LLVM v%{llvm_version} on host %{_host} Version: %{llvm_version} Release: %{release} URL: http://llvm.org/ # # The LLVM version depends on the type of build we are doing. # %if %{rsb_released} %define rtems_llvm_version %{rsb_version} %else %define rtems_llvm_version %{rtems_version} %endif # # LLVM Download URL. # %define llvm_url https://github.com/llvm/llvm-project/releases/download/llvmorg-%{llvm_version} # # Packages # %source set cfe %{llvm_url}/cfe-%{llvm_version}.src.tar.xz %source set clang-tools-extra %{llvm_url}/clang-tools-extra-%{llvm_version}.src.tar.xz %source set compiler-rt %{llvm_url}/compiler-rt-%{llvm_version}.src.tar.xz %source set libcxx %{llvm_url}/libcxx-%{llvm_version}.src.tar.xz %source set libcxxabi %{llvm_url}/libcxxabi-%{llvm_version}.src.tar.xz %source set libunwind %{llvm_url}/libunwind-%{llvm_version}.src.tar.xz %source set lld %{llvm_url}/lld-%{llvm_version}.src.tar.xz %source set lldb %{llvm_url}/lldb-%{llvm_version}.src.tar.xz %source set llvm %{llvm_url}/llvm-%{llvm_version}.src.tar.xz %source set openmp %{llvm_url}/openmp-%{llvm_version}.src.tar.xz # # Build LLDB on all hosts except MacOS as it reqires a codesign login key of # name 'llvm'. # %if %{_build_os} != darwin %define with_llvm_lldb 1 %endif %if %{defined with_llvm_lldb} %define lldb_codesign_identity -DLLDB_CODESIGN_IDENTITY=llvm %else %define lldb_codesign_identity %{nil} %endif %if %{_build_os} == win32 %define llvm_build_tools CXX=clang++ CC=clang %else %define llvm_build_tools %{nil} %endif %if %{defined with_llvm_verbose} %define llvm_verbose VERBOSE=1 %else %define llvm_verbose %{nil} %endif # # Prepare the source code. # %prep # save the build top directory and cd back to it rather than # using 'cd ..' because some shells change $PWD to a symlink's # target location and 'cd ..' fails. build_top=$(pwd) llvm_source=%{?llvm_external:%{llvm_expand_name}}%{!?llvm_external:"llvm-%{llvm_version}"} # llvm is a collection of separate packages, download them and then create # the source tree. source_dir_llvm=${llvm_source} %source setup llvm -q -E %{__mv} llvm-%{llvm_version}.src ${source_dir_llvm} %source setup cfe -q -E %{__mv} cfe-%{llvm_version}.src ${source_dir_llvm}/tools/clang %source setup clang-tools-extra -q -E %{__mv} clang-tools-extra-%{llvm_version}.src ${source_dir_llvm}/tools/clang/extra %source setup compiler-rt -q -E %{__mv} compiler-rt-%{llvm_version}.src ${source_dir_llvm}/projects/compiler-rt %source setup libcxx -q -E %{__mv} libcxx-%{llvm_version}.src ${source_dir_llvm}/projects/libcxx %source setup libcxxabi -q -E %{__mv} libcxxabi-%{llvm_version}.src ${source_dir_llvm}/projects/libcxxabi %source setup libunwind -q -E %{__mv} libunwind-%{llvm_version}.src ${source_dir_llvm}/projects/libunwind %source setup lld -q -E %{__mv} lld-%{llvm_version}.src ${source_dir_llvm}/tools/lld %if %{defined with_llvm_lldb} %source setup lldb -q -E %{__mv} lldb-%{llvm_version}.src ${source_dir_llvm}/tools/lldb %endif %source setup openmp -q -E %{__mv} openmp-%{llvm_version}.src ${source_dir_llvm}/tools/openmp %patch setup llvm -p1 cd ${build_top} %build build_top=$(pwd) # SWIG will be built and installed into %{swig_prefix} if defined # so add it as a path. %if %{defined swig_prefix} export PATH=%{swig_prefix}/bin:$PATH %endif %{build_directory} mkdir -p ${build_dir} cd ${build_dir} %{llvm_build_tools} \ %{__cmake} -Wno-dev \ -G "Unix Makefiles" \ -DCMAKE_COLOR_MAKEFILE=OFF \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=%{_prefix} \ -DPACKAGE_VERSION="%{llvm_version} (%{llvm_version_message})" \ %{lldb_codesign_identity} \ ../${source_dir_llvm} version_inc="tools/clang/include/clang/Basic/Version.inc" %{__cat} ${version_inc} | \ sed -e 's/CLANG_VERSION_STRING "[0-9]*\.[0-9]*\.[0-9]*/& \(%{llvm_version_message}\)/g' \ > ${version_inc}.tmp %{__mv} ${version_inc}.tmp ${version_inc} %{__make} %{?_smp_mflags} %{llvm_verbose} cd ${build_top} %install build_top=$(pwd) %{__rmdir} $SB_BUILD_ROOT cd ${build_dir} %{__make} DESTDIR=$SB_BUILD_ROOT install cd ${build_top}