mirror of
https://git.rtems.org/rtems-source-builder
synced 2024-10-09 07:15:10 +08:00
167 lines
4.5 KiB
INI
167 lines
4.5 KiB
INI
#
|
|
# 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}
|