From afe5cac98d9c0ee11555901eca7ec671d98c8ea8 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Thu, 28 Mar 2002 18:17:40 +0000 Subject: 2001-03-28 Joel Sherrill * Per PR64 added support for gcc 3.x RPMs * Makefile.am, configure.ac, mkspec, setup, setup.def: Modified. * mkgcc3newlibspec.in: New file. * gcc3newlib: New subdirectory. * base-g77.add, base-gcc.add, base-gcj.add, gccnewlib.add, gccnewlib_c_only.spec.in, gccnewlib.spec.in, HISTORY, Makefile.am, README, target-g77.add, target-gcc.add, target-gcj.add, target-objc.add: New files. --- scripts/ChangeLog | 11 + scripts/Makefile.am | 4 +- scripts/configure.ac | 4 + scripts/gcc3newlib/HISTORY | 8 + scripts/gcc3newlib/Makefile.am | 83 +++++++ scripts/gcc3newlib/README | 8 + scripts/gcc3newlib/base-g77.add | 42 ++++ scripts/gcc3newlib/base-gcc.add | 60 +++++ scripts/gcc3newlib/base-gcj.add | 20 ++ scripts/gcc3newlib/gccnewlib.add | 154 ++++++++++++ scripts/gcc3newlib/gccnewlib.spec.in | 363 ++++++++++++++++++++++++++++ scripts/gcc3newlib/gccnewlib_c_only.spec.in | 244 +++++++++++++++++++ scripts/gcc3newlib/target-g77.add | 19 ++ scripts/gcc3newlib/target-gcc.add | 30 +++ scripts/gcc3newlib/target-gcj.add | 21 ++ scripts/gcc3newlib/target-objc.add | 17 ++ scripts/mkgcc3newlibspec.in | 73 ++++++ scripts/mkspec | 1 + scripts/setup | 20 ++ scripts/setup.def | 11 +- 20 files changed, 1188 insertions(+), 5 deletions(-) create mode 100644 scripts/gcc3newlib/HISTORY create mode 100644 scripts/gcc3newlib/Makefile.am create mode 100644 scripts/gcc3newlib/README create mode 100644 scripts/gcc3newlib/base-g77.add create mode 100644 scripts/gcc3newlib/base-gcc.add create mode 100644 scripts/gcc3newlib/base-gcj.add create mode 100644 scripts/gcc3newlib/gccnewlib.add create mode 100644 scripts/gcc3newlib/gccnewlib.spec.in create mode 100644 scripts/gcc3newlib/gccnewlib_c_only.spec.in create mode 100644 scripts/gcc3newlib/target-g77.add create mode 100644 scripts/gcc3newlib/target-gcc.add create mode 100644 scripts/gcc3newlib/target-gcj.add create mode 100644 scripts/gcc3newlib/target-objc.add create mode 100644 scripts/mkgcc3newlibspec.in diff --git a/scripts/ChangeLog b/scripts/ChangeLog index a2f5060c09..cf62b094c8 100644 --- a/scripts/ChangeLog +++ b/scripts/ChangeLog @@ -1,3 +1,14 @@ +2001-03-28 Joel Sherrill + + * Per PR64 added support for gcc 3.x RPMs + * Makefile.am, configure.ac, mkspec, setup, setup.def: Modified. + * mkgcc3newlibspec.in: New file. + * gcc3newlib: New subdirectory. + * base-g77.add, base-gcc.add, base-gcj.add, gccnewlib.add, + gccnewlib_c_only.spec.in, gccnewlib.spec.in, HISTORY, Makefile.am, + README, target-g77.add, target-gcc.add, target-gcj.add, + target-objc.add: New files. + 2001-03-28 Joel Sherrill * binutils/binutils.add: Commented out patch since binutils 2.12 diff --git a/scripts/Makefile.am b/scripts/Makefile.am index f41310964b..3f122d0e3e 100644 --- a/scripts/Makefile.am +++ b/scripts/Makefile.am @@ -3,10 +3,10 @@ ## -SUBDIRS = . binutils gccnewlib gdb rtems autotools +SUBDIRS = . binutils gccnewlib gcc3newlib gdb rtems autotools noinst_SCRIPTS = setup buildall buildalltar mkbinutilspec mkbspspec \ - mkgccnewlibspec mkgdbspec mkrpms mkspec + mkgccnewlibspec mkgcc3newlibspec mkgdbspec mkrpms mkspec TEMPLATES = diff --git a/scripts/configure.ac b/scripts/configure.ac index 3d3d5908b0..0a7e72e197 100644 --- a/scripts/configure.ac +++ b/scripts/configure.ac @@ -65,6 +65,8 @@ AC_MSG_RESULT($RPM_CPU) GCCNEWLIBVERS="gcc-${gcc_version}-newlib-${newlib_version}" AC_SUBST(GCCNEWLIBVERS) +GCC3NEWLIBVERS="gcc-${gcc3_version}-newlib-${gcc3newlib_version}" +AC_SUBST(GCC3NEWLIBVERS) BINUTILSVERS="binutils-${binutils_version}" AC_SUBST(BINUTILSVERS) GDBVERS="gdb-${gdb_version}" @@ -79,10 +81,12 @@ buildall buildalltar mkbinutilspec mkgccnewlibspec +mkgcc3newlibspec mkgdbspec mkbspspec binutils/Makefile gccnewlib/Makefile +gcc3newlib/Makefile gdb/Makefile rtems/Makefile autotools/Makefile diff --git a/scripts/gcc3newlib/HISTORY b/scripts/gcc3newlib/HISTORY new file mode 100644 index 0000000000..184ee2e736 --- /dev/null +++ b/scripts/gcc3newlib/HISTORY @@ -0,0 +1,8 @@ +# +# History of the gccnewlib RPMs +# +# $Id$ +# + +Created since gcc 2.95.x needed to be supported while still making +gcc 3.x RPMs available. diff --git a/scripts/gcc3newlib/Makefile.am b/scripts/gcc3newlib/Makefile.am new file mode 100644 index 0000000000..04f8764506 --- /dev/null +++ b/scripts/gcc3newlib/Makefile.am @@ -0,0 +1,83 @@ +## +## $Id$ +## + +MKGCCNEWLIBSPEC = $(SHELL) $(top_builddir)/mkgcc3newlibspec + +SUBPACKAGES = gccnewlib.add \ + base-gcc.add target-gcc.add \ + base-g77.add target-g77.add \ + base-gcj.add target-gcj.add \ + target-objc.add + +gccnewlib.spec.in: $(SUBPACKAGES) + cat $^ \ + | sed -e 's%@GCCLANGS@%%g' > $@ +CLEANFILES = gccnewlib.spec.in + +gccnewlib_c_only.spec.in: gccnewlib.add base-gcc.add target-gcc.add + cat $^ \ + | sed -e "s%@GCCLANGS@%\'--enable-languages=c,c++\'%g" > $@ +CLEANFILES += gccnewlib_c_only.spec.in + +C_ONLY_ARG = -a $(top_builddir)/gcc3newlib/gccnewlib_c_only.spec.in + +MKGCCNEWLIBSPEC_DEPS = $(top_builddir)/mkgcc3newlibspec gccnewlib.spec.in \ + $(top_builddir)/setup.cache +MKGCCNEWLIB_C_ONLY_SPEC_DEPS = $(top_builddir)/mkgcc3newlibspec \ + gccnewlib_c_only.spec.in $(top_builddir)/setup.cache + +arm-rtems-$(GCC3NEWLIBVERS).spec: $(MKGCCNEWLIBSPEC_DEPS) + $(MKGCCNEWLIBSPEC) $(C_ONLY_ARG) -cfg $(top_builddir)/setup.cache -o . arm-rtems + +c4x-rtems-$(GCC3NEWLIBVERS).spec: $(MKGCCNEWLIB_C_ONLY_SPEC_DEPS) + $(MKGCCNEWLIBSPEC) $(C_ONLY_ARG) -cfg $(top_builddir)/setup.cache -o . c4x-rtems + +h8300-rtems-$(GCC3NEWLIBVERS).spec: $(MKGCCNEWLIB_C_ONLY_SPEC_DEPS) + $(MKGCCNEWLIBSPEC) $(C_ONLY_ARG) -cfg $(top_builddir)/setup.cache -o . h8300-rtems + +hppa1.1-rtems-$(GCC3NEWLIBVERS).spec: $(MKGCCNEWLIBSPEC_DEPS) + $(MKGCCNEWLIBSPEC) $(C_ONLY_ARG) -cfg $(top_builddir)/setup.cache -o . hppa1.1-rtems + +i386-rtems-$(GCC3NEWLIBVERS).spec: $(MKGCCNEWLIBSPEC_DEPS) + $(MKGCCNEWLIBSPEC) $(C_ONLY_ARG) -cfg $(top_builddir)/setup.cache -o . i386-rtems + +i960-rtems-$(GCC3NEWLIBVERS).spec: $(MKGCCNEWLIB_C_ONLY_SPEC_DEPS) + $(MKGCCNEWLIBSPEC) $(C_ONLY_ARG) -cfg $(top_builddir)/setup.cache -o . i960-rtems + +m68k-rtems-$(GCC3NEWLIBVERS).spec: $(MKGCCNEWLIBSPEC_DEPS) + $(MKGCCNEWLIBSPEC) $(C_ONLY_ARG) -cfg $(top_builddir)/setup.cache -o . m68k-rtems + +mips64orion-rtems-$(GCC3NEWLIBVERS).spec: $(MKGCCNEWLIBSPEC_DEPS) + $(MKGCCNEWLIBSPEC) $(C_ONLY_ARG) -cfg $(top_builddir)/setup.cache -o . mips64orion-rtems + +mips-rtems-$(GCC3NEWLIBVERS).spec: $(MKGCCNEWLIBSPEC_DEPS) + $(MKGCCNEWLIBSPEC) $(C_ONLY_ARG) -cfg $(top_builddir)/setup.cache -o . mips-rtems + +powerpc-rtems-$(GCC3NEWLIBVERS).spec: $(MKGCCNEWLIBSPEC_DEPS) + $(MKGCCNEWLIBSPEC) $(C_ONLY_ARG) -cfg $(top_builddir)/setup.cache -o . powerpc-rtems + +sh-rtems-$(GCC3NEWLIBVERS).spec: $(MKGCCNEWLIBSPEC_DEPS) + $(MKGCCNEWLIBSPEC) $(C_ONLY_ARG) -cfg $(top_builddir)/setup.cache -o . sh-rtems + +sh-rtemself-$(GCC3NEWLIBVERS).spec: $(MKGCCNEWLIBSPEC_DEPS) + $(MKGCCNEWLIBSPEC) $(C_ONLY_ARG) -cfg $(top_builddir)/setup.cache -o . sh-rtemself + +sparc-rtems-$(GCC3NEWLIBVERS).spec: $(MKGCCNEWLIBSPEC_DEPS) + $(MKGCCNEWLIBSPEC) $(C_ONLY_ARG) -cfg $(top_builddir)/setup.cache -o . sparc-rtems + +RPM_SPECS_DATA = \ + arm-rtems-$(GCC3NEWLIBVERS).spec \ + c4x-rtems-$(GCC3NEWLIBVERS).spec \ + h8300-rtems-$(GCC3NEWLIBVERS).spec \ + hppa1.1-rtems-$(GCC3NEWLIBVERS).spec \ + i386-rtems-$(GCC3NEWLIBVERS).spec i960-rtems-$(GCC3NEWLIBVERS).spec \ + m68k-rtems-$(GCC3NEWLIBVERS).spec \ + mips-rtems-$(GCC3NEWLIBVERS).spec mips64orion-rtems-$(GCC3NEWLIBVERS).spec \ + powerpc-rtems-$(GCC3NEWLIBVERS).spec sh-rtems-$(GCC3NEWLIBVERS).spec \ + sh-rtemself-$(GCC3NEWLIBVERS).spec sparc-rtems-$(GCC3NEWLIBVERS).spec +CLEANFILES += $(RPM_SPECS_DATA) + +EXTRA_DIST = $(SUBPACKAGES) + +include $(top_srcdir)/../automake/local.am diff --git a/scripts/gcc3newlib/README b/scripts/gcc3newlib/README new file mode 100644 index 0000000000..db158b93c2 --- /dev/null +++ b/scripts/gcc3newlib/README @@ -0,0 +1,8 @@ +# +# $Id$ +# + +This directory contains RPM-spec file fragments (*.add) which are used to +compose the toolchain specs. + +Cf. Makefile.am for details on how the toolchain specs get composed. diff --git a/scripts/gcc3newlib/base-g77.add b/scripts/gcc3newlib/base-g77.add new file mode 100644 index 0000000000..1d75a55317 --- /dev/null +++ b/scripts/gcc3newlib/base-g77.add @@ -0,0 +1,42 @@ +# ============================================================== +# rtems-base-g77 +# ============================================================== +%package -n rtems-base-g77 +Provides: rtems-base-g77 +Summary: rtems base package for gcc/g77 compiler +Group: rtems +Requires: rtems-base-gcc + +%description -n rtems-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 rtems-base-g77 +%dir %{_prefix}/info +%doc %{_prefix}/info/g77.info*.gz + +%dir %{_prefix}/man +%dir %{_prefix}/man/man1 +%doc %{_prefix}/man/man1/@target_alias@-g77.1 + +%post -n rtems-base-g77 + if test -d $RPM_INSTALL_PREFIX%{_prefix}/info; + then + rm -f $RPM_INSTALL_PREFIX%{_prefix}/info/dir + f=`find $RPM_INSTALL_PREFIX%{_prefix}/info -name '*.info.gz'` + test -n "$f" && for i in $f; do + install-info $i $RPM_INSTALL_PREFIX%{_prefix}/info/dir + done + fi + +%postun -n rtems-base-g77 + if test -d $RPM_INSTALL_PREFIX%{_prefix}/info; + then + rm -f $RPM_INSTALL_PREFIX%{_prefix}/info/dir + f=`find $RPM_INSTALL_PREFIX%{_prefix}/info -name '*.info.gz'` + test -n "$f" && for i in $f; do + install-info $i $RPM_INSTALL_PREFIX%{_prefix}/info/dir + done + fi + diff --git a/scripts/gcc3newlib/base-gcc.add b/scripts/gcc3newlib/base-gcc.add new file mode 100644 index 0000000000..8ab4d49934 --- /dev/null +++ b/scripts/gcc3newlib/base-gcc.add @@ -0,0 +1,60 @@ +# ============================================================== +# rtems-base-gcc +# ============================================================== +%package -n rtems-base-gcc +Provides: rtems-base-gcc +Summary: base package for rtems gcc and newlib C Library +Group: rtems + +%description -n rtems-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 rtems-base-gcc +%dir %{_prefix}/info +%doc %{_prefix}/info/cpp.info*.gz +%doc %{_prefix}/info/cppinternals.info*.gz +%doc %{_prefix}/info/gcc.info*.gz +%doc %{_prefix}/info/libc.info*.gz +%doc %{_prefix}/info/libm.info*.gz +%doc %{_prefix}/info/libm.info*.gz + +%dir %{_prefix}/bin +%{_prefix}/bin/gcov@exe_ext@ +%{_prefix}/bin/gccbug@exe_ext@ + +%dir %{_prefix}/man +%dir %{_prefix}/man/man1 +%doc %{_prefix}/man/man1/cpp.1 +%doc %{_prefix}/man/man1/gcov.1 +# %doc %{_prefix}/man/man1/cccp.1 +%dir %{_prefix}/man/man7 +%doc %{_prefix}/man/man7/fsf-funding.7 +%doc %{_prefix}/man/man7/gfdl.7 +%doc %{_prefix}/man/man7/gpl.7 + +%dir %{_prefix}/include +%{_prefix}/include/g++-v3 + +%post -n rtems-base-gcc + if test -d $RPM_INSTALL_PREFIX%{_prefix}/info; + then + rm -f $RPM_INSTALL_PREFIX%{_prefix}/info/dir + f=`find $RPM_INSTALL_PREFIX%{_prefix}/info -name '*.info.gz'` + test -n "$f" && for i in $f; do + install-info $i $RPM_INSTALL_PREFIX%{_prefix}/info/dir + done + fi + +%postun -n rtems-base-gcc + if test -d $RPM_INSTALL_PREFIX%{_prefix}/info; + then + rm -f $RPM_INSTALL_PREFIX%{_prefix}/info/dir + f=`find $RPM_INSTALL_PREFIX%{_prefix}/info -name '*.info.gz'` + test -n "$f" && for i in $f; do + install-info $i $RPM_INSTALL_PREFIX%{_prefix}/info/dir + done + fi + diff --git a/scripts/gcc3newlib/base-gcj.add b/scripts/gcc3newlib/base-gcj.add new file mode 100644 index 0000000000..b3ff2a2608 --- /dev/null +++ b/scripts/gcc3newlib/base-gcj.add @@ -0,0 +1,20 @@ +# ============================================================== +# rtems-base-gcj +# ============================================================== +%package -n rtems-base-gcj +Provides: rtems-base-gcj +Summary: base package for rtems gcc/java compiler (gcj). +Group: rtems +Requires: rtems-base-gcc + +%description -n rtems-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 rtems-base-gcj +%dir %{_prefix}/bin +%{_prefix}/bin/jcf-dump@exe_ext@ +%{_prefix}/bin/jv-scan@exe_ext@ +%{_prefix}/bin/gcjh@exe_ext@ + diff --git a/scripts/gcc3newlib/gccnewlib.add b/scripts/gcc3newlib/gccnewlib.add new file mode 100644 index 0000000000..2e8fb89533 --- /dev/null +++ b/scripts/gcc3newlib/gccnewlib.add @@ -0,0 +1,154 @@ +# +# spec file for building gcc for rtems +# +# Copyright (c) 1999,2000,2001 OARCorp, Huntsville, AL +# +# please send bugfixes or comments to joel@OARcorp.com +# + +%define _prefix @prefix@ + +Vendor: OAR Corporation +Distribution: Linux +Name: @target_alias@-gcc-newlib +Summary: gcc and newlib C Library for @target_alias@. +Group: rtems +Release: @Release@ +License: gcc is GPL/LGPL ; newlib no has restrictions on run-time usage + +Autoreqprov: on +Packager: corsepiu@faw.uni-ulm.de and joel@OARcorp.com + +Version: gcc@gcc_version@newlib@newlib_version@ +# gcc 3.x and gcc 2.9 +# Source0: ftp://ftp.gnu.org/pub/gnu/gcc/gcc-@gcc_version@.tar.bz2 +# gcc 2.95.x +Source0: ftp://ftp.gnu.org/pub/gnu/gcc/gcc-@gcc_version@.tar.gz +Source1: ftp://sources.redhat.com/pub/newlib/newlib-@newlib_version@.tar.gz +Patch0: gcc-@gcc_version@-rtems-@gcc_patch_version@.diff +Patch1: newlib-@newlib_version@-rtems-@newlib_patch_version@.diff +Buildroot: %{_tmppath}/%{name} + +# +# The original sources are not included in the source RPM. +# If we included them, then the source RPMs for each target +# would duplicate MBs of source unnecessarily. This is +# a duplication of over 30 MBs of source for each of +# the more than 10 targets it is possible to build. +# +# You can get them yourself from the Internet and copy them to +# your /usr/src/redhat/SOURCES directory ($RPM_SOURCE_DIR). +# Or you can try the ftp options of rpm :-) +# +NoSource: 0 +NoSource: 1 + +%description +RTEMS is an open source operating system for embedded systems. + +This is gcc's and newlib C Library's sources with patches for RTEMS. + + The original sources are not included in the source RPM. + If we included them, then the source RPMs for each target + would duplicate MBs of source unnecessarily. This is + a duplication of over 30 MBs of source for each of + the more than 10 targets it is possible to build. + + You can get them yourself from the Internet and copy them to + your /usr/src/[redhat|packages]/SOURCES directory ($RPM_SOURCE_DIR). + Or you can try the ftp options of rpm :-) + +%prep +# untar the sources inside @target_alias@-gcc-newlib +%setup -c -n %{name} -a 0 -a 1 + +%patch0 -p0 +%patch1 -p0 + + # Copy the C library into gcc's source tree + ln -s ../newlib-@newlib_version@/newlib gcc-@gcc_version@ + test -d build || mkdir build + +%build + cd build + +# HACK: This should be %{target} != %{build}, but SuSE's rpm screws it. +# %if "%{target_os}" != "%{build_os}" +# CONFIGURE_ARGS="--build=%{_build} --host=%{_target}" +# %endif + + ../gcc-@gcc_version@/configure $CONFIGURE_ARGS --target=@target_alias@ \ + --with-gnu-as --with-gnu-ld --with-newlib --verbose \ + --enable-threads=rtems --prefix=%{_prefix} @GCCLANGS@ + + make all + make info + +%install + 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 @target_alias@/bin/gcc + ../gcc-@gcc_version@/mkinstalldirs \ + $RPM_BUILD_ROOT%{_prefix}/@target_alias@/bin + + make prefix=$RPM_BUILD_ROOT%{_prefix} install + cd @target_alias@/newlib + make prefix=$RPM_BUILD_ROOT%{_prefix} install-info + + # cd back to build/ + cd ../.. + + # 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%{_prefix}/bin/cpp@exe_ext@; + then + mv $RPM_BUILD_ROOT%{_prefix}/bin/cpp@exe_ext@ \ + $RPM_BUILD_ROOT%{_prefix}/bin/@target_alias@-cpp@exe_ext@ + fi + + # gzip info files + gzip -f $RPM_BUILD_ROOT%{_prefix}/info/*.info 2>/dev/null + gzip -f $RPM_BUILD_ROOT%{_prefix}/info/*.info-? 2>/dev/null + gzip -f $RPM_BUILD_ROOT%{_prefix}/info/*.info-?? 2>/dev/null + + rm -f dirs ; + echo "%dir %{_prefix}/lib" >> dirs ; + echo "%dir %{_prefix}/lib/gcc-lib" >> dirs ; + echo "%dir %{_prefix}/lib/gcc-lib/@target_alias@" >> dirs ; + + # Collect multilib subdirectories + TGTDIR="%{_prefix}/lib/gcc-lib/@target_alias@/@gcc_version@" + f=`gcc/xgcc --print-multi-lib | sed -e 's,;.*$,,'` + 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 files.gcc + cp dirs files.g77 + cp dirs files.objc + cp dirs files.gcj + + f=`find ${RPM_BUILD_ROOT}${TGTDIR} ! -type d -print | sed -e "s,^$RPM_BUILD_ROOT,,g"`; + for i in $f; do + case $i in + *f771) ;; + *cc1obj) ;; + *libobjc*) echo "$i" >> files.objc ;; + *include/objc*) ;; + *jc1) ;; + *jvgenmain) ;; + *) echo "$i" >> files.gcc ;; + esac + done + +%clean +# let rpm --clean remove BuildRoot iif using the default BuildRoot + test "$RPM_BUILD_ROOT" = "%{_tmppath}/%{name}" && \ + rm -rf $RPM_BUILD_ROOT + diff --git a/scripts/gcc3newlib/gccnewlib.spec.in b/scripts/gcc3newlib/gccnewlib.spec.in new file mode 100644 index 0000000000..6774c6bbda --- /dev/null +++ b/scripts/gcc3newlib/gccnewlib.spec.in @@ -0,0 +1,363 @@ +# +# spec file for building gcc for rtems +# +# Copyright (c) 1999,2000,2001 OARCorp, Huntsville, AL +# +# please send bugfixes or comments to joel@OARcorp.com +# + +%define _prefix @prefix@ + +Vendor: OAR Corporation +Distribution: Linux +Name: @target_alias@-gcc-newlib +Summary: gcc and newlib C Library for @target_alias@. +Group: rtems +Release: @Release@ +License: gcc is GPL/LGPL ; newlib no has restrictions on run-time usage + +Autoreqprov: on +Packager: corsepiu@faw.uni-ulm.de and joel@OARcorp.com + +Version: gcc@gcc_version@newlib@newlib_version@ +# gcc 3.x and gcc 2.9 +# Source0: ftp://ftp.gnu.org/pub/gnu/gcc/gcc-@gcc_version@.tar.bz2 +# gcc 2.95.x +Source0: ftp://ftp.gnu.org/pub/gnu/gcc/gcc-@gcc_version@.tar.gz +Source1: ftp://sources.redhat.com/pub/newlib/newlib-@newlib_version@.tar.gz +Patch0: gcc-@gcc_version@-rtems-@gcc_patch_version@.diff +Patch1: newlib-@newlib_version@-rtems-@newlib_patch_version@.diff +Buildroot: %{_tmppath}/%{name} + +# +# The original sources are not included in the source RPM. +# If we included them, then the source RPMs for each target +# would duplicate MBs of source unnecessarily. This is +# a duplication of over 30 MBs of source for each of +# the more than 10 targets it is possible to build. +# +# You can get them yourself from the Internet and copy them to +# your /usr/src/redhat/SOURCES directory ($RPM_SOURCE_DIR). +# Or you can try the ftp options of rpm :-) +# +NoSource: 0 +NoSource: 1 + +%description +RTEMS is an open source operating system for embedded systems. + +This is gcc's and newlib C Library's sources with patches for RTEMS. + + The original sources are not included in the source RPM. + If we included them, then the source RPMs for each target + would duplicate MBs of source unnecessarily. This is + a duplication of over 30 MBs of source for each of + the more than 10 targets it is possible to build. + + You can get them yourself from the Internet and copy them to + your /usr/src/[redhat|packages]/SOURCES directory ($RPM_SOURCE_DIR). + Or you can try the ftp options of rpm :-) + +%prep +# untar the sources inside @target_alias@-gcc-newlib +%setup -c -n %{name} -a 0 -a 1 + +%patch0 -p0 +%patch1 -p0 + + # Copy the C library into gcc's source tree + ln -s ../newlib-@newlib_version@/newlib gcc-@gcc_version@ + test -d build || mkdir build + +%build + cd build + +# HACK: This should be %{target} != %{build}, but SuSE's rpm screws it. +# %if "%{target_os}" != "%{build_os}" +# CONFIGURE_ARGS="--build=%{_build} --host=%{_target}" +# %endif + + ../gcc-@gcc_version@/configure $CONFIGURE_ARGS --target=@target_alias@ \ + --with-gnu-as --with-gnu-ld --with-newlib --verbose \ + --enable-threads=rtems --prefix=%{_prefix} + + make all + make info + +%install + 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 @target_alias@/bin/gcc + ../gcc-@gcc_version@/mkinstalldirs \ + $RPM_BUILD_ROOT%{_prefix}/@target_alias@/bin + + make prefix=$RPM_BUILD_ROOT%{_prefix} install + cd @target_alias@/newlib + make prefix=$RPM_BUILD_ROOT%{_prefix} install-info + + # cd back to build/ + cd ../.. + + # 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%{_prefix}/bin/cpp@exe_ext@; + then + mv $RPM_BUILD_ROOT%{_prefix}/bin/cpp@exe_ext@ \ + $RPM_BUILD_ROOT%{_prefix}/bin/@target_alias@-cpp@exe_ext@ + fi + + # gzip info files + gzip -f $RPM_BUILD_ROOT%{_prefix}/info/*.info 2>/dev/null + gzip -f $RPM_BUILD_ROOT%{_prefix}/info/*.info-? 2>/dev/null + gzip -f $RPM_BUILD_ROOT%{_prefix}/info/*.info-?? 2>/dev/null + + rm -f dirs ; + echo "%dir %{_prefix}/lib" >> dirs ; + echo "%dir %{_prefix}/lib/gcc-lib" >> dirs ; + echo "%dir %{_prefix}/lib/gcc-lib/@target_alias@" >> dirs ; + + # Collect multilib subdirectories + TGTDIR="%{_prefix}/lib/gcc-lib/@target_alias@/@gcc_version@" + f=`gcc/xgcc --print-multi-lib | sed -e 's,;.*$,,'` + 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 files.gcc + cp dirs files.g77 + cp dirs files.objc + cp dirs files.gcj + + f=`find ${RPM_BUILD_ROOT}${TGTDIR} ! -type d -print | sed -e "s,^$RPM_BUILD_ROOT,,g"`; + for i in $f; do + case $i in + *f771) ;; + *cc1obj) ;; + *libobjc*) echo "$i" >> files.objc ;; + *include/objc*) ;; + *jc1) ;; + *jvgenmain) ;; + *) echo "$i" >> files.gcc ;; + esac + done + +%clean +# let rpm --clean remove BuildRoot iif using the default BuildRoot + test "$RPM_BUILD_ROOT" = "%{_tmppath}/%{name}" && \ + rm -rf $RPM_BUILD_ROOT + +# ============================================================== +# rtems-base-gcc +# ============================================================== +%package -n rtems-base-gcc +Provides: rtems-base-gcc +Summary: base package for rtems gcc and newlib C Library +Group: rtems + +%description -n rtems-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 rtems-base-gcc +%dir %{_prefix}/info +%doc %{_prefix}/info/cpp.info*.gz +%doc %{_prefix}/info/cppinternals.info*.gz +%doc %{_prefix}/info/gcc.info*.gz +%doc %{_prefix}/info/libc.info*.gz +%doc %{_prefix}/info/libm.info*.gz +%doc %{_prefix}/info/libm.info*.gz + +%dir %{_prefix}/bin +%{_prefix}/bin/gcov@exe_ext@ +%{_prefix}/bin/gccbug@exe_ext@ + +%dir %{_prefix}/man +%dir %{_prefix}/man/man1 +%doc %{_prefix}/man/man1/cpp.1 +%doc %{_prefix}/man/man1/gcov.1 +# %doc %{_prefix}/man/man1/cccp.1 +%dir %{_prefix}/man/man7 +%doc %{_prefix}/man/man7/fsf-funding.7 +%doc %{_prefix}/man/man7/gfdl.7 +%doc %{_prefix}/man/man7/gpl.7 + +%dir %{_prefix}/include +%{_prefix}/include/g++-v3 + +%post -n rtems-base-gcc + if test -d $RPM_INSTALL_PREFIX%{_prefix}/info; + then + rm -f $RPM_INSTALL_PREFIX%{_prefix}/info/dir + f=`find $RPM_INSTALL_PREFIX%{_prefix}/info -name '*.info.gz'` + test -n "$f" && for i in $f; do + install-info $i $RPM_INSTALL_PREFIX%{_prefix}/info/dir + done + fi + +%postun -n rtems-base-gcc + if test -d $RPM_INSTALL_PREFIX%{_prefix}/info; + then + rm -f $RPM_INSTALL_PREFIX%{_prefix}/info/dir + f=`find $RPM_INSTALL_PREFIX%{_prefix}/info -name '*.info.gz'` + test -n "$f" && for i in $f; do + install-info $i $RPM_INSTALL_PREFIX%{_prefix}/info/dir + done + fi + +# ============================================================== +# @target_alias@-gcc +# ============================================================== +%package -n @target_alias@-gcc +Provides: @target_alias@-gcc +Summary: rtems gcc and newlib C Library for @target_alias@ +Group: rtems +Requires: @target_alias@-binutils rtems-base-gcc + +%description -n @target_alias@-gcc +RTEMS is an open source operating system for embedded systems. + +This is gcc and newlib C Library for @target_alias@. + +%files -n @target_alias@-gcc -f build/files.gcc +%doc %{_prefix}/man/man1/@target_alias@-gcc.1 +%doc %{_prefix}/man/man1/@target_alias@-g++.1 + +%{_prefix}/bin/@target_alias@-cpp@exe_ext@ +%{_prefix}/bin/@target_alias@-c++@exe_ext@ +%{_prefix}/bin/@target_alias@-g++@exe_ext@ +%{_prefix}/bin/@target_alias@-gcc@exe_ext@ +%{_prefix}/bin/@target_alias@-c++filt@exe_ext@ +# %{_prefix}/bin/@target_alias@-protoize@exe_ext@ +# %{_prefix}/bin/@target_alias@-unprotoize@exe_ext@ + +%dir %{_prefix}/lib/gcc-lib/@target_alias@/@gcc_version@/include + +%{_prefix}/@target_alias@ + +# ============================================================== +# rtems-base-g77 +# ============================================================== +%package -n rtems-base-g77 +Provides: rtems-base-g77 +Summary: rtems base package for gcc/g77 compiler +Group: rtems +Requires: rtems-base-gcc + +%description -n rtems-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 rtems-base-g77 +%dir %{_prefix}/info +%doc %{_prefix}/info/g77.info*.gz + +%dir %{_prefix}/man +%dir %{_prefix}/man/man1 +%doc %{_prefix}/man/man1/@target_alias@-g77.1 + +%post -n rtems-base-g77 + if test -d $RPM_INSTALL_PREFIX%{_prefix}/info; + then + rm -f $RPM_INSTALL_PREFIX%{_prefix}/info/dir + f=`find $RPM_INSTALL_PREFIX%{_prefix}/info -name '*.info.gz'` + test -n "$f" && for i in $f; do + install-info $i $RPM_INSTALL_PREFIX%{_prefix}/info/dir + done + fi + +%postun -n rtems-base-g77 + if test -d $RPM_INSTALL_PREFIX%{_prefix}/info; + then + rm -f $RPM_INSTALL_PREFIX%{_prefix}/info/dir + f=`find $RPM_INSTALL_PREFIX%{_prefix}/info -name '*.info.gz'` + test -n "$f" && for i in $f; do + install-info $i $RPM_INSTALL_PREFIX%{_prefix}/info/dir + done + fi + +# ============================================================== +# @target_alias@-g77 +# ============================================================== +%package -n @target_alias@-g77 +Provides: @target_alias@-g77 +Summary: gcc/g77 compiler for @target_alias@ +Group: rtems +Requires: rtems-base-g77 @target_alias@-gcc + +%description -n @target_alias@-g77 +RTEMS is an open source operating system for embedded systems. + +This is the gcc/g77 compiler for @target_alias@ + +%files -n @target_alias@-g77 -f build/files.g77 +%dir %{_prefix}/bin +%{_prefix}/bin/@target_alias@-g77@exe_ext@ + +%{_prefix}/lib/gcc-lib/@target_alias@/@gcc_version@/f771@exe_ext@ +# ============================================================== +# rtems-base-gcj +# ============================================================== +%package -n rtems-base-gcj +Provides: rtems-base-gcj +Summary: base package for rtems gcc/java compiler (gcj). +Group: rtems +Requires: rtems-base-gcc + +%description -n rtems-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 rtems-base-gcj +%dir %{_prefix}/bin +%{_prefix}/bin/jcf-dump@exe_ext@ +%{_prefix}/bin/jv-scan@exe_ext@ +%{_prefix}/bin/gcjh@exe_ext@ + +# ============================================================== +# @target_alias@-gcj +# ============================================================== +%package -n @target_alias@-gcj +Provides: @target_alias@-gcj +Summary: gcc/java compiler (gcj) for @target_alias@ +Group: rtems +Requires: rtems-base-gcj @target_alias@-gcc + +%description -n @target_alias@-gcj +RTEMS is an open source operating system for embedded systems. + +This is the gcc/java compiler for @target_alias@ + +%files -n @target_alias@-gcj -f build/files.gcj +%dir %{_prefix}/bin +%{_prefix}/bin/@target_alias@-gcj@exe_ext@ + +%{_prefix}/lib/gcc-lib/@target_alias@/@gcc_version@/jc1@exe_ext@ +%{_prefix}/lib/gcc-lib/@target_alias@/@gcc_version@/jvgenmain@exe_ext@ + +# ============================================================== +# @target_alias@-objc +# ============================================================== +%package -n @target_alias@-objc +Provides: @target_alias@-objc +Summary: gcc/objc compiler for @target_alias@ +Group: rtems +Requires: @target_alias@-gcc + +%description -n @target_alias@-objc +RTEMS is an open source operating system for embedded systems. + +This is the gcc/objc compiler for @target_alias@ + +%files -n @target_alias@-objc -f build/files.objc +%{_prefix}/lib/gcc-lib/@target_alias@/@gcc_version@/cc1obj@exe_ext@ +%{_prefix}/lib/gcc-lib/@target_alias@/@gcc_version@/include/objc diff --git a/scripts/gcc3newlib/gccnewlib_c_only.spec.in b/scripts/gcc3newlib/gccnewlib_c_only.spec.in new file mode 100644 index 0000000000..9c242a2582 --- /dev/null +++ b/scripts/gcc3newlib/gccnewlib_c_only.spec.in @@ -0,0 +1,244 @@ +# +# spec file for building gcc for rtems +# +# Copyright (c) 1999,2000,2001 OARCorp, Huntsville, AL +# +# please send bugfixes or comments to joel@OARcorp.com +# + +%define _prefix @prefix@ + +Vendor: OAR Corporation +Distribution: Linux +Name: @target_alias@-gcc-newlib +Summary: gcc and newlib C Library for @target_alias@. +Group: rtems +Release: @Release@ +License: gcc is GPL/LGPL ; newlib no has restrictions on run-time usage + +Autoreqprov: on +Packager: corsepiu@faw.uni-ulm.de and joel@OARcorp.com + +Version: gcc@gcc_version@newlib@newlib_version@ +# gcc 3.x and gcc 2.9 +# Source0: ftp://ftp.gnu.org/pub/gnu/gcc/gcc-@gcc_version@.tar.bz2 +# gcc 2.95.x +Source0: ftp://ftp.gnu.org/pub/gnu/gcc/gcc-@gcc_version@.tar.gz +Source1: ftp://sources.redhat.com/pub/newlib/newlib-@newlib_version@.tar.gz +Patch0: gcc-@gcc_version@-rtems-@gcc_patch_version@.diff +Patch1: newlib-@newlib_version@-rtems-@newlib_patch_version@.diff +Buildroot: %{_tmppath}/%{name} + +# +# The original sources are not included in the source RPM. +# If we included them, then the source RPMs for each target +# would duplicate MBs of source unnecessarily. This is +# a duplication of over 30 MBs of source for each of +# the more than 10 targets it is possible to build. +# +# You can get them yourself from the Internet and copy them to +# your /usr/src/redhat/SOURCES directory ($RPM_SOURCE_DIR). +# Or you can try the ftp options of rpm :-) +# +NoSource: 0 +NoSource: 1 + +%description +RTEMS is an open source operating system for embedded systems. + +This is gcc's and newlib C Library's sources with patches for RTEMS. + + The original sources are not included in the source RPM. + If we included them, then the source RPMs for each target + would duplicate MBs of source unnecessarily. This is + a duplication of over 30 MBs of source for each of + the more than 10 targets it is possible to build. + + You can get them yourself from the Internet and copy them to + your /usr/src/[redhat|packages]/SOURCES directory ($RPM_SOURCE_DIR). + Or you can try the ftp options of rpm :-) + +%prep +# untar the sources inside @target_alias@-gcc-newlib +%setup -c -n %{name} -a 0 -a 1 + +%patch0 -p0 +%patch1 -p0 + + # Copy the C library into gcc's source tree + ln -s ../newlib-@newlib_version@/newlib gcc-@gcc_version@ + test -d build || mkdir build + +%build + cd build + +# HACK: This should be %{target} != %{build}, but SuSE's rpm screws it. +# %if "%{target_os}" != "%{build_os}" +# CONFIGURE_ARGS="--build=%{_build} --host=%{_target}" +# %endif + + ../gcc-@gcc_version@/configure $CONFIGURE_ARGS --target=@target_alias@ \ + --with-gnu-as --with-gnu-ld --with-newlib --verbose \ + --enable-threads=rtems --prefix=%{_prefix} '--enable-languages=c,c++' + + make all + make info + +%install + 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 @target_alias@/bin/gcc + ../gcc-@gcc_version@/mkinstalldirs \ + $RPM_BUILD_ROOT%{_prefix}/@target_alias@/bin + + make prefix=$RPM_BUILD_ROOT%{_prefix} install + cd @target_alias@/newlib + make prefix=$RPM_BUILD_ROOT%{_prefix} install-info + + # cd back to build/ + cd ../.. + + # 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%{_prefix}/bin/cpp@exe_ext@; + then + mv $RPM_BUILD_ROOT%{_prefix}/bin/cpp@exe_ext@ \ + $RPM_BUILD_ROOT%{_prefix}/bin/@target_alias@-cpp@exe_ext@ + fi + + # gzip info files + gzip -f $RPM_BUILD_ROOT%{_prefix}/info/*.info 2>/dev/null + gzip -f $RPM_BUILD_ROOT%{_prefix}/info/*.info-? 2>/dev/null + gzip -f $RPM_BUILD_ROOT%{_prefix}/info/*.info-?? 2>/dev/null + + rm -f dirs ; + echo "%dir %{_prefix}/lib" >> dirs ; + echo "%dir %{_prefix}/lib/gcc-lib" >> dirs ; + echo "%dir %{_prefix}/lib/gcc-lib/@target_alias@" >> dirs ; + + # Collect multilib subdirectories + TGTDIR="%{_prefix}/lib/gcc-lib/@target_alias@/@gcc_version@" + f=`gcc/xgcc --print-multi-lib | sed -e 's,;.*$,,'` + 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 files.gcc + cp dirs files.g77 + cp dirs files.objc + cp dirs files.gcj + + f=`find ${RPM_BUILD_ROOT}${TGTDIR} ! -type d -print | sed -e "s,^$RPM_BUILD_ROOT,,g"`; + for i in $f; do + case $i in + *f771) ;; + *cc1obj) ;; + *libobjc*) echo "$i" >> files.objc ;; + *include/objc*) ;; + *jc1) ;; + *jvgenmain) ;; + *) echo "$i" >> files.gcc ;; + esac + done + +%clean +# let rpm --clean remove BuildRoot iif using the default BuildRoot + test "$RPM_BUILD_ROOT" = "%{_tmppath}/%{name}" && \ + rm -rf $RPM_BUILD_ROOT + +# ============================================================== +# rtems-base-gcc +# ============================================================== +%package -n rtems-base-gcc +Provides: rtems-base-gcc +Summary: base package for rtems gcc and newlib C Library +Group: rtems + +%description -n rtems-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 rtems-base-gcc +%dir %{_prefix}/info +%doc %{_prefix}/info/cpp.info*.gz +%doc %{_prefix}/info/cppinternals.info*.gz +%doc %{_prefix}/info/gcc.info*.gz +%doc %{_prefix}/info/libc.info*.gz +%doc %{_prefix}/info/libm.info*.gz +%doc %{_prefix}/info/libm.info*.gz + +%dir %{_prefix}/bin +%{_prefix}/bin/gcov@exe_ext@ +%{_prefix}/bin/gccbug@exe_ext@ + +%dir %{_prefix}/man +%dir %{_prefix}/man/man1 +%doc %{_prefix}/man/man1/cpp.1 +%doc %{_prefix}/man/man1/gcov.1 +# %doc %{_prefix}/man/man1/cccp.1 +%dir %{_prefix}/man/man7 +%doc %{_prefix}/man/man7/fsf-funding.7 +%doc %{_prefix}/man/man7/gfdl.7 +%doc %{_prefix}/man/man7/gpl.7 + +%dir %{_prefix}/include +%{_prefix}/include/g++-v3 + +%post -n rtems-base-gcc + if test -d $RPM_INSTALL_PREFIX%{_prefix}/info; + then + rm -f $RPM_INSTALL_PREFIX%{_prefix}/info/dir + f=`find $RPM_INSTALL_PREFIX%{_prefix}/info -name '*.info.gz'` + test -n "$f" && for i in $f; do + install-info $i $RPM_INSTALL_PREFIX%{_prefix}/info/dir + done + fi + +%postun -n rtems-base-gcc + if test -d $RPM_INSTALL_PREFIX%{_prefix}/info; + then + rm -f $RPM_INSTALL_PREFIX%{_prefix}/info/dir + f=`find $RPM_INSTALL_PREFIX%{_prefix}/info -name '*.info.gz'` + test -n "$f" && for i in $f; do + install-info $i $RPM_INSTALL_PREFIX%{_prefix}/info/dir + done + fi + +# ============================================================== +# @target_alias@-gcc +# ============================================================== +%package -n @target_alias@-gcc +Provides: @target_alias@-gcc +Summary: rtems gcc and newlib C Library for @target_alias@ +Group: rtems +Requires: @target_alias@-binutils rtems-base-gcc + +%description -n @target_alias@-gcc +RTEMS is an open source operating system for embedded systems. + +This is gcc and newlib C Library for @target_alias@. + +%files -n @target_alias@-gcc -f build/files.gcc +%doc %{_prefix}/man/man1/@target_alias@-gcc.1 +%doc %{_prefix}/man/man1/@target_alias@-g++.1 + +%{_prefix}/bin/@target_alias@-cpp@exe_ext@ +%{_prefix}/bin/@target_alias@-c++@exe_ext@ +%{_prefix}/bin/@target_alias@-g++@exe_ext@ +%{_prefix}/bin/@target_alias@-gcc@exe_ext@ +%{_prefix}/bin/@target_alias@-c++filt@exe_ext@ +# %{_prefix}/bin/@target_alias@-protoize@exe_ext@ +# %{_prefix}/bin/@target_alias@-unprotoize@exe_ext@ + +%dir %{_prefix}/lib/gcc-lib/@target_alias@/@gcc_version@/include + +%{_prefix}/@target_alias@ + diff --git a/scripts/gcc3newlib/target-g77.add b/scripts/gcc3newlib/target-g77.add new file mode 100644 index 0000000000..e2c576a469 --- /dev/null +++ b/scripts/gcc3newlib/target-g77.add @@ -0,0 +1,19 @@ +# ============================================================== +# @target_alias@-g77 +# ============================================================== +%package -n @target_alias@-g77 +Provides: @target_alias@-g77 +Summary: gcc/g77 compiler for @target_alias@ +Group: rtems +Requires: rtems-base-g77 @target_alias@-gcc + +%description -n @target_alias@-g77 +RTEMS is an open source operating system for embedded systems. + +This is the gcc/g77 compiler for @target_alias@ + +%files -n @target_alias@-g77 -f build/files.g77 +%dir %{_prefix}/bin +%{_prefix}/bin/@target_alias@-g77@exe_ext@ + +%{_prefix}/lib/gcc-lib/@target_alias@/@gcc_version@/f771@exe_ext@ diff --git a/scripts/gcc3newlib/target-gcc.add b/scripts/gcc3newlib/target-gcc.add new file mode 100644 index 0000000000..313d3d9b49 --- /dev/null +++ b/scripts/gcc3newlib/target-gcc.add @@ -0,0 +1,30 @@ +# ============================================================== +# @target_alias@-gcc +# ============================================================== +%package -n @target_alias@-gcc +Provides: @target_alias@-gcc +Summary: rtems gcc and newlib C Library for @target_alias@ +Group: rtems +Requires: @target_alias@-binutils rtems-base-gcc + +%description -n @target_alias@-gcc +RTEMS is an open source operating system for embedded systems. + +This is gcc and newlib C Library for @target_alias@. + +%files -n @target_alias@-gcc -f build/files.gcc +%doc %{_prefix}/man/man1/@target_alias@-gcc.1 +%doc %{_prefix}/man/man1/@target_alias@-g++.1 + +%{_prefix}/bin/@target_alias@-cpp@exe_ext@ +%{_prefix}/bin/@target_alias@-c++@exe_ext@ +%{_prefix}/bin/@target_alias@-g++@exe_ext@ +%{_prefix}/bin/@target_alias@-gcc@exe_ext@ +%{_prefix}/bin/@target_alias@-c++filt@exe_ext@ +# %{_prefix}/bin/@target_alias@-protoize@exe_ext@ +# %{_prefix}/bin/@target_alias@-unprotoize@exe_ext@ + +%dir %{_prefix}/lib/gcc-lib/@target_alias@/@gcc_version@/include + +%{_prefix}/@target_alias@ + diff --git a/scripts/gcc3newlib/target-gcj.add b/scripts/gcc3newlib/target-gcj.add new file mode 100644 index 0000000000..6a09abd423 --- /dev/null +++ b/scripts/gcc3newlib/target-gcj.add @@ -0,0 +1,21 @@ +# ============================================================== +# @target_alias@-gcj +# ============================================================== +%package -n @target_alias@-gcj +Provides: @target_alias@-gcj +Summary: gcc/java compiler (gcj) for @target_alias@ +Group: rtems +Requires: rtems-base-gcj @target_alias@-gcc + +%description -n @target_alias@-gcj +RTEMS is an open source operating system for embedded systems. + +This is the gcc/java compiler for @target_alias@ + +%files -n @target_alias@-gcj -f build/files.gcj +%dir %{_prefix}/bin +%{_prefix}/bin/@target_alias@-gcj@exe_ext@ + +%{_prefix}/lib/gcc-lib/@target_alias@/@gcc_version@/jc1@exe_ext@ +%{_prefix}/lib/gcc-lib/@target_alias@/@gcc_version@/jvgenmain@exe_ext@ + diff --git a/scripts/gcc3newlib/target-objc.add b/scripts/gcc3newlib/target-objc.add new file mode 100644 index 0000000000..c7eb2b1b7d --- /dev/null +++ b/scripts/gcc3newlib/target-objc.add @@ -0,0 +1,17 @@ +# ============================================================== +# @target_alias@-objc +# ============================================================== +%package -n @target_alias@-objc +Provides: @target_alias@-objc +Summary: gcc/objc compiler for @target_alias@ +Group: rtems +Requires: @target_alias@-gcc + +%description -n @target_alias@-objc +RTEMS is an open source operating system for embedded systems. + +This is the gcc/objc compiler for @target_alias@ + +%files -n @target_alias@-objc -f build/files.objc +%{_prefix}/lib/gcc-lib/@target_alias@/@gcc_version@/cc1obj@exe_ext@ +%{_prefix}/lib/gcc-lib/@target_alias@/@gcc_version@/include/objc diff --git a/scripts/mkgcc3newlibspec.in b/scripts/mkgcc3newlibspec.in new file mode 100644 index 0000000000..c3bbbed256 --- /dev/null +++ b/scripts/mkgcc3newlibspec.in @@ -0,0 +1,73 @@ +#!/bin/sh +# +# Usage: mktoolspec CPU +# + +RTEMS_DIR=`dirname $0`/@top_srcdir@ + +CFG=setup.cache +dst=@RPM_SPECSdir@ +exe_ext=@EXEEXT@ + +usage() +{ + echo "$0 [options] " + echo " options:" + echo " -cfg " + echo " -o " + exit 1 ; +} + +specsrc=${RTEMS_DIR}/gcc3newlib/gccnewlib.spec.in + +while test $# -ge 2; do +case $1 in +-cfg) + shift + CFG=$1 + shift + ;; +-o) + shift + dst=$1 + shift + ;; +-a) # alternate specs file + shift + specsrc=$1 + shift + ;; +-*) + echo "invalid option $1"; + usage + ;; +esac +done + +if test ! $# -eq 1; +then + echo "Invalid number of arguments" + usage +fi + +# target to build for +target_alias=$1 + +. ./$CFG + +specfile=${dst}/${target_alias}-gcc-${gcc3_version}-newlib-${gcc3newlib_version}.spec + +# note that the variables in the gcc3newlib directory are actually the same +sed -e "s%@Release\@%${gcc3newlib_rpm_release}%g" \ + -e "s%@target_alias\@%${target_alias}%g" \ + -e "s%@prefix\@%@prefix@%g" \ + -e "s%@rpm_build_root\@%${rpm_build_root}%g" \ + -e "s%@gcc_version\@%${gcc3_version}%g" \ + -e "s%@gcc_patch_version\@%${gcc3_patch_version}%g" \ + -e "s%@newlib_version\@%${gcc3newlib_version}%g" \ + -e "s%@newlib_patch_version\@%${gcc3newlib_patch_version}%g" \ + -e "s%@exe_ext\@%${exe_ext}%g" \ +< ${specsrc} \ +> ${specfile} + +echo Generated ${specfile}. diff --git a/scripts/mkspec b/scripts/mkspec index 12f024e7de..963ce0fe77 100755 --- a/scripts/mkspec +++ b/scripts/mkspec @@ -15,5 +15,6 @@ release=0 #${RTEMS_DIR}/scripts/mkgdbspec $target_alias ./mkbinutilspec $target_alias ./mkgccnewlibspec $target_alias +./mkgcc4newlibspec $target_alias ./mkgdbspec $target_alias diff --git a/scripts/setup b/scripts/setup index 2e631033d4..068ffe9a27 100755 --- a/scripts/setup +++ b/scripts/setup @@ -37,6 +37,11 @@ do echo "b rtems version : $rtems_version" echo "c rtems rpm release : $rtems_rpm_release" echo "d rpm build root : $rpm_build_root" + echo "e gcc3 version : $gcc3_version" + echo "f gcc3 patch version : $gcc3_patch_version" + echo "g gcc3 newlib version : $gcc3newlib_version" + echo "h gcc3 newlib patch version: $gcc3newlib_patch_version" + echo "i gcc3/newlib rpm release : $gcc3newlib_rpm_release" echo echo -n "[0-9a-d] or any other key to quit >" @@ -70,6 +75,16 @@ do read rtems_rpm_release ;; d) echo -n "RPM build root >" read rpm_build_root ;; + e) echo -n "GCC3 source >" + read gcc3_version ;; + f) echo -n "GCC3 patch version>" + read gcc3_patch_version ;; + g) echo -n "NEWLIB source >" + read newlib_version ;; + h) echo -n "NEWLIB patch version>" + read newlib_patch_version ;; + i) echo -n "GCC3/NEWLIB RPM release >" + read gcc3newlib_rpm_release ;; *) return 0 ;; esac @@ -96,6 +111,11 @@ echo "gdb_rpm_release=$gdb_rpm_release" >> $CFG echo "rtems_version=$rtems_version" >> $CFG echo "rtems_rpm_release=$rtems_rpm_release" >> $CFG echo "rpm_build_root=$rpm_build_root" >> $CFG +echo "gcc3newlib_version=$gcc3newlib_version" >> $CFG +echo "gcc3newlib_patch_version=$gcc3newlib_patch_version" >> $CFG +echo "gcc3_version=$gcc3_version" >> $CFG +echo "gcc3_patch_version=$gcc3_patch_version" >> $CFG +echo "gcc3newlib_rpm_release=$gcc3newlib_rpm_release" >> $CFG echo " done" test -f Makefile || ./configure diff --git a/scripts/setup.def b/scripts/setup.def index 463a767e7a..bf4c4c4c87 100644 --- a/scripts/setup.def +++ b/scripts/setup.def @@ -3,9 +3,9 @@ # # $Id$ # -binutils_version=2.12prer1 -binutils_patch_version=20010622 -binutils_rpm_release=3 +binutils_version=2.12 +binutils_patch_version=none +binutils_rpm_release=1 newlib_version=1.9.0 newlib_patch_version=20010622 gcc_version=2.95.3 @@ -17,3 +17,8 @@ gdb_rpm_release=5 rtems_version=ss-20000726 rtems_rpm_release=1 rpm_build_root=/tmp +gcc3newlib_version=1.10.0 +gcc3newlib_patch_version=20020322 +gcc3_version=3.0.4 +gcc3_patch_version=20020322 +gcc3newlib_rpm_release=1 -- cgit v1.2.3