diff options
author | Ralf Corsepius <ralf.corsepius@rtems.org> | 2006-02-15 15:24:13 +0000 |
---|---|---|
committer | Ralf Corsepius <ralf.corsepius@rtems.org> | 2006-02-15 15:24:13 +0000 |
commit | b3a8c23bd0576f0162378eca358af3a76d9b5b9f (patch) | |
tree | c4829c03e30ebfacf928f82bef31761186038750 | |
parent | Backup. (diff) | |
download | rtems-b3a8c23bd0576f0162378eca358af3a76d9b5b9f.tar.bz2 |
New (From rtems/scripts)
-rw-r--r-- | contrib/crossrpms/gcc/base-g77.add | 35 | ||||
-rw-r--r-- | contrib/crossrpms/gcc/base-gcc.add | 69 | ||||
-rw-r--r-- | contrib/crossrpms/gcc/base-gcj.add | 68 | ||||
-rw-r--r-- | contrib/crossrpms/gcc/base-gfortran.add | 34 | ||||
-rw-r--r-- | contrib/crossrpms/gcc/base-gnat.add | 40 | ||||
-rw-r--r-- | contrib/crossrpms/gcc/gccnewlib.add | 256 | ||||
-rw-r--r-- | contrib/crossrpms/gcc/install.add | 158 | ||||
-rw-r--r-- | contrib/crossrpms/gcc/rpm-install.add | 48 | ||||
-rw-r--r-- | contrib/crossrpms/gcc/target-c++.add | 38 | ||||
-rw-r--r-- | contrib/crossrpms/gcc/target-g77.add | 29 | ||||
-rw-r--r-- | contrib/crossrpms/gcc/target-gcc.add | 45 | ||||
-rw-r--r-- | contrib/crossrpms/gcc/target-gcj.add | 53 | ||||
-rw-r--r-- | contrib/crossrpms/gcc/target-gfortran.add | 33 | ||||
-rw-r--r-- | contrib/crossrpms/gcc/target-gnat.add | 34 | ||||
-rw-r--r-- | contrib/crossrpms/gcc/target-libc.add | 23 | ||||
-rw-r--r-- | contrib/crossrpms/gcc/target-objc.add | 27 |
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 + |