summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRalf Corsepius <ralf.corsepius@rtems.org>2006-02-15 15:24:13 +0000
committerRalf Corsepius <ralf.corsepius@rtems.org>2006-02-15 15:24:13 +0000
commitb3a8c23bd0576f0162378eca358af3a76d9b5b9f (patch)
treec4829c03e30ebfacf928f82bef31761186038750
parentBackup. (diff)
downloadrtems-b3a8c23bd0576f0162378eca358af3a76d9b5b9f.tar.bz2
New (From rtems/scripts)
-rw-r--r--contrib/crossrpms/gcc/base-g77.add35
-rw-r--r--contrib/crossrpms/gcc/base-gcc.add69
-rw-r--r--contrib/crossrpms/gcc/base-gcj.add68
-rw-r--r--contrib/crossrpms/gcc/base-gfortran.add34
-rw-r--r--contrib/crossrpms/gcc/base-gnat.add40
-rw-r--r--contrib/crossrpms/gcc/gccnewlib.add256
-rw-r--r--contrib/crossrpms/gcc/install.add158
-rw-r--r--contrib/crossrpms/gcc/rpm-install.add48
-rw-r--r--contrib/crossrpms/gcc/target-c++.add38
-rw-r--r--contrib/crossrpms/gcc/target-g77.add29
-rw-r--r--contrib/crossrpms/gcc/target-gcc.add45
-rw-r--r--contrib/crossrpms/gcc/target-gcj.add53
-rw-r--r--contrib/crossrpms/gcc/target-gfortran.add33
-rw-r--r--contrib/crossrpms/gcc/target-gnat.add34
-rw-r--r--contrib/crossrpms/gcc/target-libc.add23
-rw-r--r--contrib/crossrpms/gcc/target-objc.add27
16 files changed, 990 insertions, 0 deletions
diff --git a/contrib/crossrpms/gcc/base-g77.add b/contrib/crossrpms/gcc/base-g77.add
new file mode 100644
index 0000000000..cf92c1bbc4
--- /dev/null
+++ b/contrib/crossrpms/gcc/base-g77.add
@@ -0,0 +1,35 @@
+%if "%{_prefix}" != "/usr"
+%if %build_g77
+# ==============================================================
+# rtems-base-g77
+# ==============================================================
+%package -n @rpmprefix@rtems@osversion@-base-g77
+Summary: Base package for RTEMS gcc/g77 compiler
+Group: %{rpmgroup}
+Version: %{gcc_version}
+License: GPL
+
+Requires(post): /sbin/install-info
+Requires(preun): /sbin/install-info
+
+%description -n @rpmprefix@rtems@osversion@-base-g77
+RTEMS is an open source operating system for embedded systems.
+
+This is the files for gcc/g77 that are shared by all targets.
+
+%files -n @rpmprefix@rtems@osversion@-base-g77
+%defattr(-,root,root)
+%dir %{_infodir}
+%ghost %{_infodir}/dir
+%{_infodir}/g77.info*.gz
+
+%post -n @rpmprefix@rtems@osversion@-base-g77
+ /sbin/install-info --info-dir=%{_infodir} %{_infodir}/g77.info.gz
+
+%preun -n @rpmprefix@rtems@osversion@-base-g77
+if [ $1 -eq 0 ]; then
+ /sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/g77.info.gz
+fi
+
+%endif
+%endif
diff --git a/contrib/crossrpms/gcc/base-gcc.add b/contrib/crossrpms/gcc/base-gcc.add
new file mode 100644
index 0000000000..2af9c08bae
--- /dev/null
+++ b/contrib/crossrpms/gcc/base-gcc.add
@@ -0,0 +1,69 @@
+%if "%{_prefix}" != "/usr"
+# ==============================================================
+# @rpmprefix@rtems@osversion@-base-gcc
+# ==============================================================
+%package -n @rpmprefix@rtems@osversion@-base-gcc
+Summary: Base package for rtems gcc and newlib C Library
+Group: %{rpmgroup}
+Version: %{gcc_version}
+License: GPL
+
+Requires(post): /sbin/install-info
+Requires(preun): /sbin/install-info
+
+%description -n @rpmprefix@rtems@osversion@-base-gcc
+
+RTEMS is an open source operating system for embedded systems.
+
+This is the files for gcc and newlib that are shared by all targets.
+
+%files -n @rpmprefix@rtems@osversion@-base-gcc
+%defattr(-,root,root)
+%dir %{_infodir}
+%ghost %{_infodir}/dir
+%{_infodir}/cpp.info*
+%{_infodir}/cppinternals.info*
+%{_infodir}/gcc.info*
+%{_infodir}/libc.info*
+%{_infodir}/libm.info*
+%{_infodir}/gccint.info*
+%if "%{gcc_version}" >= "3.4"
+%{_infodir}/gccinstall.info*
+%endif
+
+%dir %{_mandir}
+%if "%{gcc_version}" < "3.4"
+%dir %{_mandir}/man1
+%{_mandir}/man1/cpp.1*
+%{_mandir}/man1/gcov.1*
+%endif
+%dir %{_mandir}/man7
+%{_mandir}/man7/fsf-funding.7*
+%{_mandir}/man7/gfdl.7*
+%{_mandir}/man7/gpl.7*
+
+%post -n @rpmprefix@rtems@osversion@-base-gcc
+ /sbin/install-info --info-dir=%{_infodir} %{_infodir}/cpp.info.gz
+ /sbin/install-info --info-dir=%{_infodir} %{_infodir}/cppinternals.info.gz
+ /sbin/install-info --info-dir=%{_infodir} %{_infodir}/gcc.info.gz
+ /sbin/install-info --info-dir=%{_infodir} %{_infodir}/libc.info.gz
+ /sbin/install-info --info-dir=%{_infodir} %{_infodir}/libm.info.gz
+ /sbin/install-info --info-dir=%{_infodir} %{_infodir}/gccint.info.gz
+%if "%{gcc_version}" >= "3.4"
+ /sbin/install-info --info-dir=%{_infodir} %{_infodir}/gccinstall.info.gz
+%endif
+
+%preun -n @rpmprefix@rtems@osversion@-base-gcc
+if [ $1 -eq 0 ]; then
+ /sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/cpp.info.gz
+ /sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/cppinternals.info.gz
+ /sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/gcc.info.gz
+ /sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/libc.info.gz
+ /sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/libm.info.gz
+ /sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/gccint.info.gz
+%if "%{gcc_version}" >= "3.4"
+ /sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/gccinstall.info.gz
+%endif
+fi
+
+%endif
diff --git a/contrib/crossrpms/gcc/base-gcj.add b/contrib/crossrpms/gcc/base-gcj.add
new file mode 100644
index 0000000000..a9534deae2
--- /dev/null
+++ b/contrib/crossrpms/gcc/base-gcj.add
@@ -0,0 +1,68 @@
+%if "%{_prefix}" != "/usr"
+%if %build_gcj
+# ==============================================================
+# rtems-base-gcj
+# ==============================================================
+%package -n @rpmprefix@rtems@osversion@-base-gcj
+Summary: Base package for rtems gcc/java compiler (gcj)
+Group: %{rpmgroup}
+Version: %{gcc_version}
+License: GPL
+
+Requires(post): /sbin/install-info
+Requires(preun): /sbin/install-info
+
+%description -n @rpmprefix@rtems@osversion@-base-gcj
+RTEMS is an open source operating system for embedded systems.
+
+This is the files for gcc/java (gcj) that are shared by all targets.
+
+%files -n @rpmprefix@rtems@osversion@-base-gcj
+%defattr(-,root,root)
+%if "%{gcc_version}" <= "3.4"
+%dir %{_bindir}
+%{_bindir}/jar%{_exeext}
+%{_bindir}/grepjar%{_exeext}
+%endif
+
+%dir %{_infodir}
+%ghost %{_infodir}/dir
+%{_infodir}/gcj.info*
+%if "%{gcc_version}" >= "3.3"
+%{_infodir}/fastjar.info*
+%endif
+
+%if "%{gcc_version}" < "4.0"
+%if "%{gcc_version}" >= "3.3"
+%dir %{_mandir}
+%dir %{_mandir}/man1
+%{_mandir}/man1/gcjh.1*
+%{_mandir}/man1/jv-scan.1*
+%{_mandir}/man1/jcf-dump.1*
+%{_mandir}/man1/gij.1*
+%{_mandir}/man1/jv-convert.1*
+%{_mandir}/man1/rmic.1*
+%{_mandir}/man1/rmiregistry.1*
+%{_mandir}/man1/jar.1*
+%{_mandir}/man1/grepjar.1*
+%endif
+%endif
+
+%post -n @rpmprefix@rtems@osversion@-base-gcj
+/sbin/install-info --info-dir=%{_infodir} %{_infodir}/gcj.info*
+
+%if "%{gcc_version}" >= "3.3"
+ /sbin/install-info --info-dir=%{_infodir} %{_infodir}/fastjar.info*
+%endif
+
+%preun -n @rpmprefix@rtems@osversion@-base-gcj
+if [ $1 -eq 0 ]; then
+/sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/gcj.info*
+
+%if "%{gcc_version}" >= "3.3"
+ /sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/fastjar.info*
+%endif
+fi
+
+%endif
+%endif
diff --git a/contrib/crossrpms/gcc/base-gfortran.add b/contrib/crossrpms/gcc/base-gfortran.add
new file mode 100644
index 0000000000..15c77672c4
--- /dev/null
+++ b/contrib/crossrpms/gcc/base-gfortran.add
@@ -0,0 +1,34 @@
+%if "%{_prefix}" != "/usr"
+%if %build_f95
+# ==============================================================
+# rtems-base-gfortran
+# ==============================================================
+%package -n @rpmprefix@rtems@osversion@-base-gfortran
+Summary: Base package for RTEMS gcc/gfortran compiler
+Group: %{rpmgroup}
+License: GPL
+
+Requires(post): /sbin/install-info
+Requires(preun): /sbin/install-info
+
+%description -n @rpmprefix@rtems@osversion@-base-gfortran
+RTEMS is an open source operating system for embedded systems.
+
+This is the files for gcc/gfortran that are shared by all targets.
+
+%files -n @rpmprefix@rtems@osversion@-base-gfortran
+%defattr(-,root,root)
+%dir %{_infodir}
+%ghost %{_infodir}/dir
+%{_infodir}/gfortran.info*.gz
+
+%post -n @rpmprefix@rtems@osversion@-base-gfortran
+ /sbin/install-info --info-dir=%{_infodir} %{_infodir}/gfortran.info.gz
+
+%preun -n @rpmprefix@rtems@osversion@-base-gfortran
+if [ $1 -eq 0 ]; then
+ /sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/gfortran.info.gz
+fi
+
+%endif
+%endif
diff --git a/contrib/crossrpms/gcc/base-gnat.add b/contrib/crossrpms/gcc/base-gnat.add
new file mode 100644
index 0000000000..8835e215bd
--- /dev/null
+++ b/contrib/crossrpms/gcc/base-gnat.add
@@ -0,0 +1,40 @@
+%if "%{_prefix}" != "/usr"
+%if %build_gnat
+# ==============================================================
+# rtems-base-gnat
+# ==============================================================
+%package -n @rpmprefix@rtems@osversion@-base-gnat
+Summary: Base package for RTEMS gcc/gnat compiler
+Group: %{rpmgroup}
+License: GPL
+
+Requires(post): /sbin/install-info
+Requires(preun): /sbin/install-info
+
+%description -n @rpmprefix@rtems@osversion@-base-gnat
+RTEMS is an open source operating system for embedded systems.
+
+This is the gcc/gnat tools for the gcc/gnat compiler
+
+%files -n @rpmprefix@rtems@osversion@-base-gnat
+%defattr(-,root,root)
+%dir %{_bindir}
+%{_bindir}/vxaddr2line%{_exeext}
+
+%dir %{_infodir}
+%ghost %{_infodir}/dir
+%{_infodir}/gnat*
+
+%post -n @rpmprefix@rtems@osversion@-base-gnat
+ /sbin/install-info --info-dir=%{_infodir} %{_infodir}/gnat_rm.info.gz
+ /sbin/install-info --info-dir=%{_infodir} %{_infodir}/gnat-style.info.gz
+ /sbin/install-info --info-dir=%{_infodir} %{_infodir}/gnat_ugn_unw.info.gz
+
+%preun -n @rpmprefix@rtems@osversion@-base-gnat
+if [ $1 -eq 0 ]; then
+ /sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/gnat_rm.info.gz
+ /sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/gnat-style.info.gz
+ /sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/gnat_ugn_unw.info.gz
+fi
+%endif
+%endif
diff --git a/contrib/crossrpms/gcc/gccnewlib.add b/contrib/crossrpms/gcc/gccnewlib.add
new file mode 100644
index 0000000000..8b318b1490
--- /dev/null
+++ b/contrib/crossrpms/gcc/gccnewlib.add
@@ -0,0 +1,256 @@
+
+%define gcc_pkgvers @GCC_VERS@
+%define gcc_version %{expand:%%(echo "@GCC_VERS@" | sed -e 's,-.*,,')}
+%define gcc_rpmvers %{expand:%%(echo "@GCC_VERS@" | tr - _ )}
+
+%define build_newlib 1
+
+%if %build_newlib
+%define newlib_version @newlib_version@
+%define gccnewlib_version gcc%{gcc_version}newlib%{newlib_version}
+%endif
+
+%define gcc_target @target_alias@
+
+Name: @rpmprefix@@tool_target@-gcc
+Summary: @tool_target@ gcc
+
+Group: %{rpmgroup}
+Version: %gcc_rpmvers
+Release: @GCC_RPMREL@
+License: GPL
+URL: http://gcc.gnu.org
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+
+%define _use_internal_dependency_generator 0
+
+# default languages to build
+%define _cxx 1
+%define _fortran 0
+%define _gcj 0
+%define _gnat 0
+%define _objc 0
+%define _libgcj 0
+
+
+# custom defaults for specific targets
+%if "@tool_target@" == "arm-rtems@osversion@"
+# Gnat lacks arm support
+%define _gnat 0
+%endif
+
+%if "@tool_target@" == "avr-rtems@osversion@"
+%define _cxx 0
+%define _fortran 0
+%define _gcj 0
+%define _gnat 0
+%endif
+
+%if "@tool_target@" == "h8300-rtems@osversion@"
+%define _fortran 0
+%define _gcj 0
+%define _gnat 0
+%endif
+
+%if "@tool_target@" == "sh-rtems@osversion@"
+# Triggers an ICE in GCC-4.0.0
+%define _gnat 0
+%endif
+
+%if "@tool_target@" == "tic4x-rtems@osversion@"
+%define _cxx 0
+%define _gnat 0
+%define _gcj 0
+%define _fortran 0
+%endif
+
+
+# Allow the user to build arbitrary languages
+%{?_with_cxx:%define _cxx 1}
+%{?_with_fortran:%define _fortran 1}
+%{?_with_gcj:%define _gcj 1}
+%{?_with_gnat:%define _gnat 1}
+%{?_with_objc:%define _objc 1}
+%{?_with_libgcj:%define _libgcj 1}
+
+# Allow the user to suppress building languages
+%{?_without_cxx:%define _cxx 0}
+%{?_without_fortran:%define _fortran 0}
+%{?_without_gcj:%define _gcj 0}
+%{?_without_gnat:%define _gnat 0}
+%{?_without_objc:%define _objc 0}
+%{?_without_libgcj:%define _libgcj 0}
+
+%define build_cxx %_cxx
+%if "%{gcc_version}" >= "4.0.0"
+%define build_f95 %_fortran
+%define build_g77 0
+%else
+%define build_f95 0
+%define build_g77 %_fortran
+%endif
+%define build_gnat %_gnat
+%define build_gcj %_gcj
+%define build_objc %_objc
+%define build_libgcj %_libgcj
+
+
+%if %build_gcj
+# Building gcj requires bison and zlib
+BuildRequires: bison
+%endif
+
+BuildRequires: texinfo >= 4.2
+BuildRequires: @rpmprefix@@tool_target@-binutils
+BuildRequires: @rpmprefix@@tool_target@-sys-root
+
+Requires: @rpmprefix@@tool_target@-binutils
+
+%if "%{_vendor}" == "redhat"
+%if %build_gcj
+BuildRequires: zlib-devel
+%endif
+%if %build_gnat
+# Building gnat requires gnat
+# This really isn't available until RedHat 8.0. How to conditionalize this?
+BuildRequires: gcc-gnat
+# Urgh, building gnat requires the target libc
+BuildRequires: @rpmprefix@@tool_target@-libc < %{newlib_version}-%{release}
+%endif
+%if %build_f95
+BuildRequires: gmp-devel
+%endif
+%endif
+
+%if "%{gcc_version}" >= "3.4"
+%define gcclib %{_libdir}/gcc
+%define gccexec %{_libexecdir}/gcc
+%else
+%define gcclib %{_libdir}/gcc-lib
+%define gccexec %{_libdir}/gcc-lib
+%endif
+
+@SOURCES@
+
+%description
+Cross gcc for @tool_target@.
+
+%prep
+%setup -c -T -n %{name}-%{version}
+
+%setup -q -T -D -n %{name}-%{version} -a0
+%{?PATCH0:%patch0 -p0}
+
+%if %build_cxx
+%setup -q -T -D -n %{name}-%{version} -a1
+%{?PATCH1:%patch1 -p0}
+%endif
+
+%if %build_f95
+%setup -q -T -D -n %{name}-%{version} -a2
+%{?PATCH2:%patch2 -p0}
+%endif
+
+%if %build_gcj
+%setup -q -T -D -n %{name}-%{version} -a3
+%{?PATCH3:%patch3 -p0}
+%endif
+
+%if %build_gnat
+%setup -q -T -D -n %{name}-%{version} -a4
+%{?PATCH4:%patch4 -p0}
+%endif
+
+%if %build_objc
+%setup -T -D -n %{name}-%{version} -a5
+%{?PATCH5:%patch5 -p0}
+%endif
+
+%if %build_newlib
+%setup -q -T -D -n %{name}-%{version} -a50
+cd newlib-%{newlib_version}
+%{?PATCH50:%patch50 -p1}
+cd ..
+ # Copy the C library into gcc's source tree
+ ln -s ../newlib-%{newlib_version}/newlib gcc-%{gcc_version}
+%endif
+
+ cd gcc-%{gcc_pkgvers}
+
+ case @tool_target@ in
+ *rtems*)
+ sed -e 's/\(version_string.* = \"[^\"]*\)/\1 (RTEMS gcc-%{gcc_version}-@gcc_patch_version@\/newlib-%{newlib_version}-@newlib_patch_version@-@Release@)/' \
+ gcc/version.c > gcc/version.c~
+ mv gcc/version.c~ gcc/version.c
+ ;;
+ esac
+
+ # Fix timestamps
+ contrib/gcc_update --touch
+ cd ..
+
+
+%build
+ mkdir -p build
+
+ cd build
+
+ languages="c"
+%if %build_cxx
+ languages="$languages,c++"
+%endif
+%if %build_g77
+ languages="$languages,g77"
+%endif
+%if %build_f95
+ languages="$languages,f95"
+%endif
+%if %build_gcj
+ languages="$languages,java"
+%endif
+%if %build_objc
+ languages="$languages,objc"
+%endif
+%if %build_gnat
+ languages="$languages,ada"
+%endif
+%if %build_libgcj
+ optargs="--enable-libgcj"
+%endif
+%if "%{_prefix}" != "/usr"
+ export PATH="%{_bindir}:${PATH}"
+%endif
+
+ CC="%{__cc} ${RPM_OPT_FLAGS}" \
+ ../gcc-%{gcc_pkgvers}/configure \
+ --prefix=%{_prefix} \
+ --bindir=%{_bindir} \
+ --includedir=%{_includedir} \
+ --libdir=%{_libdir} \
+ --mandir=%{_mandir} \
+ --infodir=%{_infodir} \
+ --datadir=%{_datadir} \
+ --build=%_build --host=%_host \
+ --target=@tool_target@ \
+ --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 \
+ --with-sysroot=%{_prefix}/@tool_target@/sys-root \
+ --enable-languages="$languages" $optargs
+
+%if "%_host" != "%_build"
+ # Bug in gcc-3.2.1:
+ # Somehow, gcc doesn't get syslimits.h right for Cdn-Xs
+ mkdir -p gcc/include
+ cp ../gcc-%{gcc_pkgvers}/gcc/gsyslimits.h gcc/include/syslimits.h
+%endif
+
+ make all
+%if "%{_prefix}" != "/usr"
+ make info
+%endif
+ cd ..
+
diff --git a/contrib/crossrpms/gcc/install.add b/contrib/crossrpms/gcc/install.add
new file mode 100644
index 0000000000..30df39979e
--- /dev/null
+++ b/contrib/crossrpms/gcc/install.add
@@ -0,0 +1,158 @@
+%install
+%if "%{_prefix}" != "/usr"
+ export PATH="%{_bindir}:${PATH}"
+%endif
+ rm -rf $RPM_BUILD_ROOT
+
+ cd build
+# Bug in gcc-2.95.1: It doesn't build this installation directory
+# If it doesn't find it, gcc doesn't install @tool_target@/bin/gcc
+%if "%{gcc_version}" < "3.0"
+ mkdir -p $RPM_BUILD_ROOT%{_prefix}/@tool_target@/bin
+%endif
+
+ make DESTDIR=$RPM_BUILD_ROOT install
+ # cd back to build/
+ cd ..
+
+%if "%{gcc_version}" < "4.0.3"
+# Misplaced header file
+ if test -f $RPM_BUILD_ROOT%{_includedir}/mf-runtime.h; then
+ mv $RPM_BUILD_ROOT%{_includedir}/mf-runtime.h \
+ $RPM_BUILD_ROOT%{gcclib}/@tool_target@/%{gcc_version}/include/
+ fi
+%endif
+
+ # host library
+ rm -f ${RPM_BUILD_ROOT}%{_prefix}/lib/libiberty.a
+
+ # We use the version from binutils
+ rm -f $RPM_BUILD_ROOT%{_bindir}/@tool_target@-c++filt%{_exeext}
+
+%if %build_gnat
+ # Seemingly a VAX tool. Not meaningful for RTEMS
+ rm -f $RPM_BUILD_ROOT%{_bindir}/vxaddr2line%{_exeext}
+%endif
+
+%if "%{_prefix}" != "/usr"
+ # We don't ship info/dir
+ rm -f $RPM_BUILD_ROOT%{_infodir}/dir
+ touch $RPM_BUILD_ROOT%{_infodir}/dir
+%endif
+
+%if "%{_prefix}" == "/usr"
+# Conflict with a native GCC's infos
+ rm -rf $RPM_BUILD_ROOT%{_infodir}
+
+# Conflict with a native GCC's man pages
+ rm -rf $RPM_BUILD_ROOT%{_mandir}/man7
+%endif
+
+%if %build_f95
+# # Bug in gcc-4.0.0pre
+# mv $RPM_BUILD_ROOT%{_bindir}/gfortran $RPM_BUILD_ROOT%{_bindir}/@tool_target@-gfortran
+%endif
+
+%if "%{gcc_version}" >= "3.4"
+ # Bug in gcc-3.4.0pre
+ rm -f $RPM_BUILD_ROOT%{_bindir}/@tool_target@-@tool_target@-gcjh%{_exeext}
+%endif
+
+%if "%{gcc_version}" >= "3.3"
+ # Bug in gcc-3.3.x/gcc-3.4.x: Despite we don't need fixincludes, it installs
+ # the fixinclude-install-tools
+ rm -rf ${RPM_BUILD_ROOT}%{gcclib}/@tool_target@/%{gcc_version}/install-tools
+ rm -rf ${RPM_BUILD_ROOT}%{gccexec}/@tool_target@/%{gcc_version}/install-tools
+%endif
+
+%if "%{gcc_version}" < "3.0"
+ # Bug in gcc-2.95.x: It bogusly tries to share cpp for all targets.
+ # Rename it to target_alias-cpp
+ if test -f $RPM_BUILD_ROOT%{_bindir}/cpp%{_exeext};
+ then
+ mv $RPM_BUILD_ROOT%{_bindir}/cpp%{_exeext} \
+ $RPM_BUILD_ROOT%{_bindir}/@tool_target@-cpp%{_exeext}
+ fi
+%endif
+
+ # Collect multilib subdirectories
+ f=`gcc/xgcc -Bgcc/ --print-multi-lib | sed -e 's,;.*$,,'`
+
+ echo "%defattr(-,root,root,-)" > build/files.libc
+ TGTDIR="%{_prefix}/@tool_target@/lib"
+ for i in $f; do
+ case $i in
+ \.) echo "%dir ${TGTDIR}" >> build/files.libc
+ ;;
+ *) echo "%dir ${TGTDIR}/$i" >> build/files.libc
+ ;;
+ esac
+ done
+
+ rm -f dirs ;
+ echo "%defattr(-,root,root,-)" >> dirs
+%if "%{_prefix}" != "/usr"
+ echo "%dir %{_prefix}" >> dirs
+ echo "%dir %{_libdir}" >> dirs
+%if "%{gcc_version}" >= "3.4"
+ echo "%dir %{_libexecdir}" >> dirs
+%endif
+%endif
+ echo "%dir %{gcclib}" >> dirs
+ echo "%dir %{gcclib}/@tool_target@" >> dirs
+
+ TGTDIR="%{gcclib}/@tool_target@/%{gcc_version}"
+ for i in $f; do
+ case $i in
+ \.) echo "%dir ${TGTDIR}" >> dirs
+ ;;
+ *) echo "%dir ${TGTDIR}/$i" >> dirs
+ ;;
+ esac
+ done
+
+ # Collect files to go into different packages
+ cp dirs build/files.gcc
+ cp dirs build/files.g77
+ cp dirs build/files.gfortran
+ cp dirs build/files.objc
+ cp dirs build/files.gcj
+ cp dirs build/files.g++
+
+ TGTDIR="%{gcclib}/@tool_target@/%{gcc_version}"
+ f=`find ${RPM_BUILD_ROOT}${TGTDIR} ! -type d -print | sed -e "s,^$RPM_BUILD_ROOT,,g"`;
+ for i in $f; do
+ case $i in
+ *lib*.la) rm ${RPM_BUILD_ROOT}/$i ;; # ignore: gcc produces bogus libtool libs
+ *f771) ;;
+ *f951) ;;
+ *cc1) ;;
+ *cc1obj) ;;
+ *cc1plus) ;; # ignore: explicitly put into rpm elsewhere
+ *collect2) ;;
+ *libobjc*) echo "$i" >> build/files.objc ;;
+ *include/objc*) ;;
+ *include/g++*);;
+ *include/c++*);;
+ *adainclude*);;
+ *adalib*);;
+ *gnat1);;
+ *jc1) ;;
+ *jvgenmain) ;;
+ *libgfortran*.a) echo "$i" >> build/files.gfortran ;;
+ */libstdc++.*) echo "$i" >> build/files.g++ ;;
+ */libsupc++.*) echo "$i" >> build/files.g++ ;;
+ *) echo "$i" >> build/files.gcc ;;
+ esac
+ done
+
+ TGTDIR="%{_prefix}/@tool_target@/lib"
+ f=`find ${RPM_BUILD_ROOT}${TGTDIR} ! -type d -print | sed -e "s,^$RPM_BUILD_ROOT,,g"`;
+ for i in $f; do
+ case $i in
+ *lib*.la) rm ${RPM_BUILD_ROOT}/$i;; # ignore - gcc produces bogus libtool libs
+ *libiberty.a) rm ${RPM_BUILD_ROOT}/$i ;; # ignore - GPL'ed
+# all other files belong to libc
+ *) echo "$i" >> build/files.libc ;;
+ esac
+ done
diff --git a/contrib/crossrpms/gcc/rpm-install.add b/contrib/crossrpms/gcc/rpm-install.add
new file mode 100644
index 0000000000..856bed1047
--- /dev/null
+++ b/contrib/crossrpms/gcc/rpm-install.add
@@ -0,0 +1,48 @@
+# Extract %%__os_install_post into os_install_post~
+cat << \EOF >> os_install_post~
+%__os_install_post
+EOF
+
+# Generate customized brp-*scripts
+cat os_install_post~ | while read a x y; do
+case $a in
+# Prevent brp-strip* from trying to handle foreign binaries
+*/brp-strip*)
+ b=$(basename $a)
+ sed -e 's,find $RPM_BUILD_ROOT,find $RPM_BUILD_ROOT%_bindir $RPM_BUILD_ROOT%_libexecdir,' $a > $b
+ chmod a+x $b
+ ;;
+%if "%{_prefix}" != "/usr"
+# Fix up brp-compress to handle %%_prefix != /usr
+*/brp-compress*)
+ b=$(basename $a)
+ sed -e 's,\./usr/,./%{_prefix},' < $a > $b
+ chmod a+x $b
+ ;;
+%endif
+esac
+done
+
+sed -e 's,^[ ]*/usr/lib/rpm.*/brp-strip,./brp-strip,' \
+%if "%{_prefix}" != "/usr"
+ -e 's,^[ ]*/usr/lib/rpm.*/brp-compress,./brp-compress,' \
+%endif
+< os_install_post~ > os_install_post
+%define __os_install_post . ./os_install_post
+
+
+cat << EOF > %{_builddir}/%{name}-%{version}/find-provides
+#!/bin/sh
+grep -E -v '^${RPM_BUILD_ROOT}%{_prefix}/@tool_target@/(lib|include|sys-root)' \
+ | grep -v '^${RPM_BUILD_ROOT}%{gcclib}/@tool_target@/' | %__find_provides
+EOF
+chmod +x %{_builddir}/%{name}-%{version}/find-provides
+%define __find_provides %{_builddir}/%{name}-%{version}/find-provides
+
+cat << EOF > %{_builddir}/%{name}-%{version}/find-requires
+#!/bin/sh
+grep -E -v '^${RPM_BUILD_ROOT}%{_prefix}/@tool_target@/(lib|include|sys-root)' \
+ | grep -v '^${RPM_BUILD_ROOT}%{gcclib}/@tool_target@/' | %__find_requires
+EOF
+chmod +x %{_builddir}/%{name}-%{version}/find-requires
+%define __find_requires %{_builddir}/%{name}-%{version}/find-requires
diff --git a/contrib/crossrpms/gcc/target-c++.add b/contrib/crossrpms/gcc/target-c++.add
new file mode 100644
index 0000000000..d27e1870bf
--- /dev/null
+++ b/contrib/crossrpms/gcc/target-c++.add
@@ -0,0 +1,38 @@
+%if %build_cxx
+# ==============================================================
+# @tool_target@-c++
+# ==============================================================
+%package -n @rpmprefix@@tool_target@-c++
+Summary: GCC c++ compiler for @tool_target@
+Group: %{rpmgroup}
+Version: %{gcc_version}
+License: GPL
+
+%if "%{_prefix}" != "/usr"
+Requires: @rpmprefix@rtems@osversion@-base-gcc
+%endif
+Requires: @rpmprefix@@tool_target@-gcc = %{gcc_version}-%{release}
+
+%description -n @rpmprefix@@tool_target@-c++
+GCC c++ compiler for @tool_target@.
+
+%files -n @rpmprefix@@tool_target@-c++ -f build/files.g++
+%defattr(-,root,root)
+%{_mandir}/man1/@tool_target@-g++.1*
+
+%{_bindir}/@tool_target@-c++%{_exeext}
+%{_bindir}/@tool_target@-g++%{_exeext}
+
+%dir %{gccexec}
+%dir %{gccexec}/@tool_target@
+%dir %{gccexec}/@tool_target@/%{gcc_version}
+%{gccexec}/@tool_target@/%{gcc_version}/cc1plus%{_exeext}
+
+%dir %{gcclib}/@tool_target@/%{gcc_version}/include
+%if "%{gcc_version}" >= "3.2"
+%{gcclib}/@tool_target@/%{gcc_version}/include/c++
+%else
+%{gcclib}/@tool_target@/%{gcc_version}/include/g++
+%endif
+%endif
+
diff --git a/contrib/crossrpms/gcc/target-g77.add b/contrib/crossrpms/gcc/target-g77.add
new file mode 100644
index 0000000000..689514e9ba
--- /dev/null
+++ b/contrib/crossrpms/gcc/target-g77.add
@@ -0,0 +1,29 @@
+%if %build_g77
+# ==============================================================
+# @tool_target@-g77
+# ==============================================================
+%package -n @rpmprefix@@tool_target@-g77
+Summary: Fortran 77 support for @tool_target@-gcc
+Group: %{rpmgroup}
+Version: %{gcc_version}
+License: GPL
+Requires: @rpmprefix@rtems@osversion@-base-g77
+Requires: @rpmprefix@@tool_target@-gcc = %{gcc_version}-%{release}
+
+%description -n @rpmprefix@@tool_target@-g77
+RTEMS is an open source operating system for embedded systems.
+
+This is the gcc/g77 compiler for @tool_target@.
+
+%files -n @rpmprefix@@tool_target@-g77 -f build/files.g77
+%defattr(-,root,root)
+%{_bindir}/@tool_target@-g77%{_exeext}
+
+%{_mandir}/man1/@tool_target@-g77.1*
+
+%dir %{gccexec}
+%dir %{gccexec}/@tool_target@
+%dir %{gccexec}/@tool_target@/%{gcc_version}
+%{gccexec}/@tool_target@/%{gcc_version}/f771%{_exeext}
+%endif
+
diff --git a/contrib/crossrpms/gcc/target-gcc.add b/contrib/crossrpms/gcc/target-gcc.add
new file mode 100644
index 0000000000..3492971cfd
--- /dev/null
+++ b/contrib/crossrpms/gcc/target-gcc.add
@@ -0,0 +1,45 @@
+# ==============================================================
+# @tool_target@-gcc
+# ==============================================================
+%package -n @rpmprefix@@tool_target@-gcc
+Summary: GNU cc compiler for @tool_target@
+Group: %{rpmgroup}
+Version: %{gcc_version}
+Requires: @rpmprefix@@tool_target@-binutils
+Requires: @rpmprefix@@tool_target@-libc = %{newlib_version}-%{release}
+License: GPL
+
+%description -n @rpmprefix@@tool_target@-gcc
+GNU cc compiler for @tool_target@.
+
+%files -n @rpmprefix@@tool_target@-gcc -f build/files.gcc
+%defattr(-,root,root)
+%if "%{_prefix}" != "/usr"
+%dir %{_mandir}
+%dir %{_mandir}/man1
+%endif
+%{_mandir}/man1/@tool_target@-gcc.1*
+%if "%{gcc_version}" >= "3.4"
+%{_mandir}/man1/@tool_target@-cpp.1*
+%{_mandir}/man1/@tool_target@-gcov.1*
+%endif
+
+%if "%{_prefix}" != "/usr"
+%dir %{_bindir}
+%endif
+%{_bindir}/@tool_target@-cpp%{_exeext}
+%{_bindir}/@tool_target@-gcc%{_exeext}
+%if "%{gcc_version}" >= "3.3"
+%{_bindir}/@tool_target@-gcc-%{gcc_version}%{_exeext}
+%endif
+%{_bindir}/@tool_target@-gcov%{_exeext}
+%{_bindir}/@tool_target@-gccbug
+
+%dir %{gcclib}/@tool_target@/%{gcc_version}/include
+
+%dir %{gccexec}
+%dir %{gccexec}/@tool_target@
+%dir %{gccexec}/@tool_target@/%{gcc_version}
+%{gccexec}/@tool_target@/%{gcc_version}/cc1%{_exeext}
+%{gccexec}/@tool_target@/%{gcc_version}/collect2%{_exeext}
+
diff --git a/contrib/crossrpms/gcc/target-gcj.add b/contrib/crossrpms/gcc/target-gcj.add
new file mode 100644
index 0000000000..bb735eca4a
--- /dev/null
+++ b/contrib/crossrpms/gcc/target-gcj.add
@@ -0,0 +1,53 @@
+%if %build_gcj
+# ==============================================================
+# @tool_target@-gcj
+# ==============================================================
+%package -n @rpmprefix@@tool_target@-gcj
+Summary: Java support (gcj) for @tool_target@-gcc
+Group: %{rpmgroup}
+Version: %{gcc_version}
+License: GPL
+
+%if "%{_prefix}" != "/usr"
+Requires: @rpmprefix@rtems@osversion@-base-gcj
+%endif
+Requires: @rpmprefix@@tool_target@-gcc = %{gcc_version}-%{release}
+
+%description -n @rpmprefix@@tool_target@-gcj
+RTEMS is an open source operating system for embedded systems.
+
+This is the gcc/java compiler for @tool_target@
+
+%files -n @rpmprefix@@tool_target@-gcj -f build/files.gcj
+%defattr(-,root,root)
+%{_bindir}/@tool_target@-gcj%{_exeext}
+%{_bindir}/@tool_target@-jcf-dump%{_exeext}
+%{_bindir}/@tool_target@-jv-scan%{_exeext}
+%{_bindir}/@tool_target@-gcjh%{_exeext}
+
+%if "%{gcc_version}" >= "3.4"
+%{_bindir}/@tool_target@-*jar%{_exeext}
+
+%{_mandir}/man1/@tool_target@-*jar.1*
+%{_mandir}/man1/@tool_target@-gcj*.1*
+%{_mandir}/man1/@tool_target@-jv-*.1*
+%{_mandir}/man1/@tool_target@-jcf-dump.1*
+%{_mandir}/man1/@tool_target@-gij.1*
+%endif
+
+%if "%{gcc_version}" >= "4.0"
+%{_mandir}/man1/@tool_target@-grmi*.1*
+%else
+%if "%{gcc_version}" >= "3.4"
+%{_mandir}/man1/@tool_target@-rmi*.1*
+%endif
+%endif
+
+%dir %{gccexec}
+%dir %{gccexec}/@tool_target@
+%dir %{gccexec}/@tool_target@/%{gcc_version}
+%{gccexec}/@tool_target@/%{gcc_version}/jc1%{_exeext}
+%{gccexec}/@tool_target@/%{gcc_version}/jvgenmain%{_exeext}
+
+%endif
+
diff --git a/contrib/crossrpms/gcc/target-gfortran.add b/contrib/crossrpms/gcc/target-gfortran.add
new file mode 100644
index 0000000000..988ba3fffb
--- /dev/null
+++ b/contrib/crossrpms/gcc/target-gfortran.add
@@ -0,0 +1,33 @@
+%if %build_f95
+# ==============================================================
+# @tool_target@-gfortran
+# ==============================================================
+%package -n @rpmprefix@@tool_target@-gfortran
+Summary: Fortran 95 support for @tool_target@-gcc
+Group: %{rpmgroup}
+Version: %{gcc_version}
+License: GPL
+
+%if "%{_prefix}" != "/usr"
+Requires: @rpmprefix@rtems@osversion@-base-gfortran
+%endif
+Requires: @rpmprefix@@tool_target@-gcc = %{gcc_version}-%{release}
+Obsoletes: @rpmprefix@@tool_target@-g77
+
+%description -n @rpmprefix@@tool_target@-gfortran
+RTEMS is an open source operating system for embedded systems.
+
+This is the gcc/gfortran compiler for @tool_target@.
+
+%files -n @rpmprefix@@tool_target@-gfortran -f build/files.gfortran
+%defattr(-,root,root)
+%{_bindir}/@tool_target@-gfortran%{_exeext}
+
+%{_mandir}/man1/@tool_target@-gfortran.1*
+
+%dir %{gccexec}
+%dir %{gccexec}/@tool_target@
+%dir %{gccexec}/@tool_target@/%{gcc_version}
+%{gccexec}/@tool_target@/%{gcc_version}/f951%{_exeext}
+%endif
+
diff --git a/contrib/crossrpms/gcc/target-gnat.add b/contrib/crossrpms/gcc/target-gnat.add
new file mode 100644
index 0000000000..f0a3c5d0cc
--- /dev/null
+++ b/contrib/crossrpms/gcc/target-gnat.add
@@ -0,0 +1,34 @@
+%if %build_gnat
+# ==============================================================
+# @tool_target@-gnat
+# ==============================================================
+%package -n @rpmprefix@@tool_target@-gnat
+Summary: Ada support for for @tool_target@-gcc
+Group: %{rpmgroup}
+Version: %{gcc_version}
+License: GPL
+
+%if "%{_prefix}" != "/usr"
+Requires: @rpmprefix@rtems@osversion@-base-gnat
+%endif
+Requires: @rpmprefix@@tool_target@-gcc = %{gcc_version}-%{release}
+
+%description -n @rpmprefix@@tool_target@-gnat
+RTEMS is an open source operating system for embedded systems.
+
+This is the gcc/gnat compiler for @tool_target@.
+
+%files -n @rpmprefix@@tool_target@-gnat
+%defattr(-,root,root)
+%{_bindir}/@tool_target@-gnat*
+%{_bindir}/@tool_target@-gprmake%{_exeext}
+
+%dir %{gccexec}
+%dir %{gccexec}/@tool_target@
+%dir %{gccexec}/@tool_target@/%{gcc_version}
+%{gccexec}/@tool_target@/%{gcc_version}/gnat1%{_exeext}
+
+%{gcclib}/@tool_target@/%{gcc_version}/adalib
+%{gcclib}/@tool_target@/%{gcc_version}/adainclude
+%endif
+
diff --git a/contrib/crossrpms/gcc/target-libc.add b/contrib/crossrpms/gcc/target-libc.add
new file mode 100644
index 0000000000..e081abba77
--- /dev/null
+++ b/contrib/crossrpms/gcc/target-libc.add
@@ -0,0 +1,23 @@
+# ==============================================================
+# @tool_target@-libc
+# ==============================================================
+%package -n @rpmprefix@@tool_target@-libc
+Summary: C Library (newlib) for @tool_target@
+Group: %{rpmgroup}
+License: Distributable
+Version: %{newlib_version}
+Provides: @rpmprefix@@tool_target@-newlib = %{newlib_version}-%{release}
+
+%description -n @rpmprefix@@tool_target@-libc
+RTEMS is an open source operating system for embedded systems.
+
+This is the newlib C Library for @tool_target@.
+
+%files -n @rpmprefix@@tool_target@-libc -f build/files.libc
+%defattr(-,root,root)
+%if "%{_prefix}" != "/usr"
+%dir %{_prefix}
+%endif
+%dir %{_prefix}/@tool_target@
+%{_prefix}/@tool_target@/include
+
diff --git a/contrib/crossrpms/gcc/target-objc.add b/contrib/crossrpms/gcc/target-objc.add
new file mode 100644
index 0000000000..cdf97f89e3
--- /dev/null
+++ b/contrib/crossrpms/gcc/target-objc.add
@@ -0,0 +1,27 @@
+%if %build_objc
+# ==============================================================
+# @tool_target@-objc
+# ==============================================================
+%package -n @rpmprefix@@tool_target@-objc
+Summary: Objective C support for @tool_target@-gcc
+Group: %{rpmgroup}
+Version: %{gcc_version}
+License: GPL
+Requires: @rpmprefix@@tool_target@-gcc = %{gcc_version}-%{release}
+
+%description -n @rpmprefix@@tool_target@-objc
+RTEMS is an open source operating system for embedded systems.
+
+This is the gcc/objc compiler for @tool_target@.
+
+%files -n @rpmprefix@@tool_target@-objc -f build/files.objc
+%defattr(-,root,root)
+
+%dir %{gccexec}
+%dir %{gccexec}/@tool_target@
+%dir %{gccexec}/@tool_target@/%{gcc_version}
+%{gccexec}/@tool_target@/%{gcc_version}/cc1obj%{_exeext}
+
+%{gcclib}/@tool_target@/%{gcc_version}/include/objc
+%endif
+