mirror of
https://git.rtems.org/rtems-source-builder
synced 2024-10-09 07:15:10 +08:00

For release branches -Werror is disabled by default, however, for the development branch of GCC it is enabled. Make sure that it is always disabled.
251 lines
6.6 KiB
INI
251 lines
6.6 KiB
INI
#
|
|
# GCC Common Support.
|
|
#
|
|
# This configuration file configure's, make's and install's gcc. It uses
|
|
# newlib, MPFR, MPC, and GMP in a one-tree build configuration.
|
|
#
|
|
|
|
%include %{_configdir}/checks.cfg
|
|
|
|
%ifn %{defined gcc_version_message}
|
|
%error No GCC Version message defined.
|
|
%endif
|
|
|
|
#
|
|
# The package description.
|
|
#
|
|
Name: %{_target}-gcc-%{gcc_version}-newlib-%{newlib_version}-%{_host}-%{release}
|
|
Summary: GCC v%{gcc_version} and Newlib v%{newlib_version} for target %{_target} on host %{_host}
|
|
Version: %{gcc_version}
|
|
Release: %{release}
|
|
URL: http://gcc.gnu.org/
|
|
|
|
#
|
|
# Supports Candian Cross (Cxc).
|
|
#
|
|
%define allow_cxc
|
|
|
|
#
|
|
# The GCC library directory
|
|
#
|
|
%global _gcclibdir %{_prefix}/lib
|
|
|
|
#
|
|
# Default LTO to off.
|
|
#
|
|
%ifn %{defined with_lto}
|
|
%define with_lto 0
|
|
%endif
|
|
|
|
#
|
|
# The GCC version depends on the type of build we are doing.
|
|
#
|
|
%if %{rsb_released}
|
|
%define rtems_gcc_version %{rsb_version}
|
|
%else
|
|
%define rtems_gcc_version %{rtems_version}
|
|
%endif
|
|
|
|
#
|
|
# Packages GCC requires
|
|
#
|
|
%if %{defined cloog_version}
|
|
%source set cloog https://gcc.gnu.org/pub/gcc/infrastructure/cloog-%{cloog_version}.tar.gz
|
|
%endif
|
|
%if %{defined isl_version}
|
|
%source set isl https://gcc.gnu.org/pub/gcc/infrastructure/isl-%{isl_version}.tar.bz2
|
|
%endif
|
|
%source set mpc https://gcc.gnu.org/pub/gcc/infrastructure/mpc-%{mpc_version}.tar.gz
|
|
%source set gmp https://gcc.gnu.org/pub/gcc/infrastructure/gmp-%{gmp_version}.tar.bz2
|
|
%source set mpfr https://gcc.gnu.org/pub/gcc/infrastructure/mpfr-%{mpfr_version}.tar.bz2
|
|
|
|
#
|
|
# 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)
|
|
|
|
gcc_source=%{?gcc_external:%{gcc_expand_name}}%{!?gcc_external:"gcc-%{gcc_version}"}
|
|
|
|
# gcc and optional the g++ core if separate packages
|
|
source_dir_gcc=${gcc_source}
|
|
%source setup gcc -q -n ${gcc_source}
|
|
|
|
%patch setup gcc -p1
|
|
cd ${build_top}
|
|
|
|
# newlib
|
|
source_dir_newlib=%{?newlib_external:%{newlib_expand_name}}%{!?newlib_external:"newlib-%{newlib_version}"}
|
|
%source setup newlib -q -D -n ${source_dir_newlib}
|
|
%patch setup newlib -p1
|
|
cd ${build_top}
|
|
|
|
# Link newlib into the gcc source tree
|
|
%{__rmfile} ${source_dir_gcc}/newlib
|
|
%{__ln_s} $PWD/${source_dir_newlib}/newlib ${source_dir_gcc}/newlib
|
|
|
|
%if %{defined cloog_version}
|
|
# CLooG
|
|
source_dir_cloog="cloog-%{cloog_version}"
|
|
%source setup cloog -q -D -n cloog-%{cloog_version}
|
|
%patch setup cloog -p1
|
|
cd ${build_top}
|
|
# Build MPFR one-tree style
|
|
%{__rmfile} ${source_dir_gcc}/cloog
|
|
%{__ln_s} $PWD/${source_dir_cloog} ${source_dir_gcc}/cloog
|
|
%endif
|
|
|
|
%if %{defined isl_version}
|
|
# ISL
|
|
source_dir_isl="isl-%{isl_version}"
|
|
%source setup isl -q -D -n isl-%{isl_version}
|
|
%patch setup isl -p1
|
|
cd ${build_top}
|
|
# Build MPFR one-tree style
|
|
%{__rmfile} ${source_dir_gcc}/isl
|
|
%{__ln_s} $PWD/${source_dir_isl} ${source_dir_gcc}/isl
|
|
%endif
|
|
|
|
# MPFR
|
|
source_dir_mpfr="mpfr-%{mpfr_version}"
|
|
%source setup mpfr -q -D -n mpfr-%{mpfr_version}
|
|
%patch setup mpfr -p1
|
|
cd ${build_top}
|
|
# Build MPFR one-tree style
|
|
%{__rmfile} ${source_dir_gcc}/mpfr
|
|
%{__ln_s} $PWD/${source_dir_mpfr} ${source_dir_gcc}/mpfr
|
|
|
|
# MPC
|
|
source_dir_mpc="mpc-%{mpc_version}"
|
|
%source setup mpc -q -D -n mpc-%{mpc_version}
|
|
%patch setup mpc -p1
|
|
cd ${build_top}
|
|
# Build MPC one-tree style
|
|
%{__rmfile} ${source_dir_gcc}/mpc
|
|
%{__ln_s} $PWD/${source_dir_mpc} ${source_dir_gcc}/mpc
|
|
|
|
# GMP
|
|
source_dir_gmp="gmp-%{gmp_version}"
|
|
%source setup gmp -q -D -n gmp-%{gmp_version}
|
|
%patch setup gmp -p1
|
|
cd ${build_top}
|
|
# Build GMP one-tree style
|
|
%{__rmfile} ${source_dir_gcc}/gmp
|
|
%{__ln_s} $PWD/${source_dir_gmp} ${source_dir_gcc}/gmp
|
|
|
|
echo "%{gcc_version_message}" > ${source_dir_gcc}/gcc/DEV-PHASE
|
|
|
|
# Fix timestamps
|
|
cd ${source_dir_gcc}
|
|
contrib/gcc_update --touch
|
|
cd ${build_top}
|
|
|
|
%build
|
|
build_top=$(pwd)
|
|
|
|
%{build_directory}
|
|
|
|
mkdir -p ${build_dir}
|
|
cd ${build_dir}
|
|
|
|
# Languages.
|
|
languages="c"
|
|
%if %{enable_cxx}
|
|
languages="$languages,c++"
|
|
%endif
|
|
%if %{enable_ada}
|
|
languages="$languages,ada"
|
|
%endif
|
|
%if %{enable_go}
|
|
languages="$languages,go"
|
|
%endif
|
|
%if %{enable_fortran}
|
|
languages="$languages,fortran"
|
|
%endif
|
|
%if %{enable_java}
|
|
languages="$languages,java"
|
|
%endif
|
|
%if %{enable_objc}
|
|
languages="$languages,objc"
|
|
%endif
|
|
|
|
%{host_build_flags}
|
|
|
|
../${source_dir_gcc}/configure \
|
|
--prefix=%{_prefix} \
|
|
--bindir=%{_bindir} \
|
|
--exec_prefix=%{_exec_prefix} \
|
|
--includedir=%{_includedir} \
|
|
--libdir=%{_gcclibdir} \
|
|
--libexecdir=%{_libexecdir} \
|
|
--mandir=%{_mandir} \
|
|
--infodir=%{_infodir} \
|
|
--datadir=%{_datadir} \
|
|
--build=%{_build} --host=%{_host} \
|
|
--target=%{_target} \
|
|
--disable-libstdcxx-pch \
|
|
--with-gnu-as --with-gnu-ld --verbose \
|
|
--with-newlib \
|
|
--disable-nls --without-included-gettext \
|
|
--disable-win32-registry \
|
|
--disable-werror \
|
|
--enable-version-specific-runtime-libs \
|
|
%{?with_lto:--enable-lto}%{!?with_lto:--disable-lto} \
|
|
--enable-newlib-io-c99-formats \
|
|
%{?disable_MAKEINFO:MAKEINFO=missing} \
|
|
%{?with_iconv:--enable-newlib-iconv} \
|
|
%{?with_iconv:--enable-newlib-iconv-encodings=%{_newlib_iconv_encodings}} \
|
|
%{?with_threads:--enable-threads}%{!?with_threads:--disable-threads} \
|
|
%{?with_plugin:--enable-plugin}%{!?with_plugin:--disable-plugin} \
|
|
%{?enable_obsolete:--enable-obsolete} \
|
|
%{?with_libgomp:--enable-libgomp} \
|
|
%{?gcc_configure_extra_options:%{gcc_configure_extra_options}} \
|
|
--enable-languages="$languages"
|
|
|
|
if test "%_host" != "%_build" ; then
|
|
# Bug in gcc-3.2.1:
|
|
# Somehow, gcc doesn't get syslimits.h right for Cdn-Xs
|
|
mkdir -p gcc/include
|
|
cp ../${source_dir_gcc}/gcc/gsyslimits.h gcc/include/syslimits.h
|
|
fi
|
|
|
|
%{__make} %{?_smp_mflags} all
|
|
|
|
cd ${build_top}
|
|
|
|
%install
|
|
build_top=$(pwd)
|
|
|
|
%{__rmdir} $SB_BUILD_ROOT
|
|
|
|
cd ${build_dir}
|
|
%{__make} DESTDIR=$SB_BUILD_ROOT install
|
|
cd ${build_top}
|
|
|
|
# libiberty doesn't honor --libdir, but always installs to a
|
|
# magically guessed _libdir
|
|
%{__rmfile} ${SB_BUILD_ROOT}%{_libdir}/libiberty.a
|
|
|
|
# We use the version from binutils
|
|
%{__rmfile} $SB_BUILD_ROOT%{_bindir}/%{_target}-c++filt%{_exeext}
|
|
|
|
# We don't ship info/dir
|
|
%{__rmfile} $SB_BUILD_ROOT%{_infodir}/dir
|
|
|
|
# Don't want libffi's man-pages
|
|
%{__rmfile} $SB_BUILD_ROOT%{_mandir}/man3/*ffi*
|
|
|
|
# Clean the symlinks away incase the source is a repo
|
|
# Note, delete as a directory because of MSYS2 support on Windows.
|
|
%{__rmdir} ${source_dir_gcc}/newlib
|
|
%{__rmdir} ${source_dir_gcc}/mpfr
|
|
%{__rmdir} ${source_dir_gcc}/mpc
|
|
%{__rmdir} ${source_dir_gcc}/gmp
|
|
|
|
%testing
|
|
# Add testing here.
|
|
export RUNTESTFLAGS=--target_board=%{_target}-run
|