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

On NetBSD with ksh changing into a symlink made PWD the link's target path so a 'cd ..' returned you to that parent and not the parent you started from. Record the build top and then change back to that path. Change the package names to the actual packages and remove the extra directory in the build tree. This makes the paths simpler.
214 lines
6.4 KiB
INI
214 lines
6.4 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}-%{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/
|
|
BuildRoot: %{_tmppath}/%{name}-root-%(%{__id_u} -n)
|
|
|
|
#
|
|
# Supports Candian Cross (Cxc).
|
|
#
|
|
%define allow_cxc
|
|
|
|
#
|
|
# The GCC library directory
|
|
#
|
|
%global _gcclibdir %{_prefix}/lib
|
|
|
|
#
|
|
# 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 and optional the g++ core if separate packages
|
|
source_dir_0="gcc-%{gcc_version}"
|
|
%setup -q -n gcc-%{gcc_version}
|
|
%{?source1:%setup -q -D -T -n gcc-%{gcc_version} -b1}
|
|
%{?patch0:%patch0 %{?patch0_opts:%{patch0_opts}}%{!?patch0_opts:-p1}}
|
|
%{?patch1:%patch1 %{?patch1_opts:%{patch1_opts}}%{!?patch1_opts:-p1}}
|
|
%{?patch2:%patch2 %{?patch2_opts:%{patch2_opts}}%{!?patch2_opts:-p1}}
|
|
%{?patch3:%patch3 %{?patch3_opts:%{patch3_opts}}%{!?patch3_opts:-p1}}
|
|
%{?patch4:%patch4 %{?patch4_opts:%{patch4_opts}}%{!?patch4_opts:-p1}}
|
|
%{?patch5:%patch5 %{?patch5_opts:%{patch5_opts}}%{!?patch5_opts:-p1}}
|
|
%{?patch6:%patch6 %{?patch6_opts:%{patch6_opts}}%{!?patch6_opts:-p1}}
|
|
%{?patch7:%patch7 %{?patch7_opts:%{patch7_opts}}%{!?patch7_opts:-p1}}
|
|
%{?patch8:%patch8 %{?patch8_opts:%{patch8_opts}}%{!?patch8_opts:-p1}}
|
|
%{?patch9:%patch9 %{?patch9_opts:%{patch9_opts}}%{!?patch9_opts:-p1}}
|
|
cd ${build_top}
|
|
|
|
# newlib
|
|
source_dir_10="newlib-%{newlib_version}"
|
|
%setup -q -D -T -n newlib-%{newlib_version} -b10
|
|
%{?patch10:%patch10 %{?patch10_opts:%{patch10_opts}}%{!?patch10_opts:-p1}}
|
|
%{?patch11:%patch11 %{?patch11_opts:%{patch11_opts}}%{!?patch11_opts:-p1}}
|
|
%{?patch12:%patch12 %{?patch12_opts:%{patch12_opts}}%{!?patch12_opts:-p1}}
|
|
%{?patch13:%patch13 %{?patch13_opts:%{patch13_opts}}%{!?patch13_opts:-p1}}
|
|
%{?patch14:%patch14 %{?patch14_opts:%{patch14_opts}}%{!?patch14_opts:-p1}}
|
|
%{?patch15:%patch15 %{?patch15_opts:%{patch15_opts}}%{!?patch15_opts:-p1}}
|
|
%{?patch16:%patch16 %{?patch16_opts:%{patch16_opts}}%{!?patch16_opts:-p1}}
|
|
%{?patch17:%patch17 %{?patch17_opts:%{patch17_opts}}%{!?patch17_opts:-p1}}
|
|
%{?patch18:%patch18 %{?patch18_opts:%{patch18_opts}}%{!?patch18_opts:-p1}}
|
|
%{?patch19:%patch19 %{?patch19_opts:%{patch19_opts}}%{!?patch19_opts:-p1}}
|
|
cd ${build_top}
|
|
|
|
# Link newlib into the gcc source tree
|
|
%{__rmfile} ${source_dir_0}/newlib
|
|
%{__ln_s} $PWD/${source_dir_10}/newlib ${source_dir_0}/newlib
|
|
|
|
# MPFR
|
|
source_dir_20="mpfr-%{mpfr_version}"
|
|
%setup -q -D -T -n mpfr-%{mpfr_version} -b20
|
|
%{?patch20:%patch20 -p1}
|
|
cd ${build_top}
|
|
# Build MPFR one-tree style
|
|
%{__rmfile} ${source_dir_0}/mpfr
|
|
%{__ln_s} $PWD/${source_dir_20} ${source_dir_0}/mpfr
|
|
|
|
# MPC
|
|
source_dir_21="mpc-%{mpc_version}"
|
|
%setup -q -D -T -n mpc-%{mpc_version} -b21
|
|
%{?patch21:%patch21 -p1}
|
|
cd ${build_top}
|
|
# Build MPC one-tree style
|
|
%{__rmfile} ${source_dir_0}/mpc
|
|
%{__ln_s} $PWD/${source_dir_21} ${source_dir_0}/mpc
|
|
|
|
# GMP
|
|
source_dir_22="gmp-%{gmp_version}"
|
|
%setup -q -D -T -n gmp-%{gmp_version} -b22
|
|
%{?patch22:%patch22 -p1}
|
|
cd ${build_top}
|
|
# Build GMP one-tree style
|
|
%{__rmfile} ${source_dir_0}/gmp
|
|
%{__ln_s} $PWD/${source_dir_22} ${source_dir_0}/gmp
|
|
|
|
echo "%{gcc_version_message}" > ${source_dir_0}/gcc/DEV-PHASE
|
|
|
|
# Fix timestamps
|
|
cd ${source_dir_0}
|
|
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_0}/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 \
|
|
--with-system-zlib \
|
|
--disable-nls --without-included-gettext \
|
|
--disable-win32-registry \
|
|
--enable-version-specific-runtime-libs \
|
|
--disable-lto \
|
|
--enable-newlib-io-c99-formats \
|
|
%{?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} \
|
|
%{?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_0}/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
|
|
%{__rmfile} ${source_dir_0}/newlib
|
|
%{__rmfile} ${source_dir_0}/mpfr
|
|
%{__rmfile} ${source_dir_0}/mpc
|
|
%{__rmfile} ${source_dir_0}/gmp
|
|
|
|
%testing
|
|
# Add testing here.
|
|
export RUNTESTFLAGS=--target_board=%{_target}-run
|