Patch rtems-rc-4.5.0-21.diff from Ralf Corsepius <corsepiu@faw.uni-ulm.de>

which splits the current monolithic specs files into a sequence of
subparts.  These can be concatenated togather to make a the whole .spec
file.  This cleans up the maintenance problem of having "all languages"
and a "C/C++ only" gccnewlib spec files.  Plus it should make it easier
to produce variants like the gdb-m68k-bdm which require special hackery. :)
Ralf's comments:

  It addresses the way *.spec.in get composed inside of the source
  tree.

  Changes:
    * Each spec.in is broken into several files (*.add), one *.add file
      per sub-package.
    * Each Makefile.am composes spec.ins from the *.add files
    * Removal of redundant automake support files.
    * Default value for BuildRoot changed to /tmp/<spec-file-name>
    * %clean stage added to *specs

  Advantages (IMHO).
    * The *.add files are easier to adminstrate and more flexible in
      comparison to the former *.specs.ins.
    * gccnewlib_c_only.spec.in now is composed from the same sources as
      gccnewlib.spec.in (less errors)
    * If using the default BuildRoot --clean now deletes all files that
      were generated while building.

  Notes:
    * rtems.spec.in has not yet been adapted to the scheme used for the
      other *spec.ins
    * Except for cosmetical changes the internals of the  *.spec files
      should not have changed.

  To Apply:
    cvs rm -f scripts/binutils/binutils.spec.in
    cvs rm -f scripts/gccnewlib/gccnewlib.spec.in
    cvs rm -f scripts/gccnewlib/gccnewlib_c_only.spec.in
    cvs rm -f scripts/gdb/gdb.spec.in
    cvs rm -f scripts/config.sub
    cvs rm -f scripts/config.guess
    cvs rm -f scripts/install-sh
    cvs rm -f scripts/mkinstalldirs
    cvs rm -f scripts/missing

    patch -p1 < rtems-rc-4.5.0-21.diff

    cvs add scripts/*/*.add
    cvs add scripts/*/README
This commit is contained in:
Joel Sherrill
2000-05-28 18:14:55 +00:00
parent 22095e222d
commit 63cf252f31
29 changed files with 785 additions and 3264 deletions

View File

@@ -6,6 +6,23 @@ AUTOMAKE_OPTIONS = foreign 1.4
MKGCCNEWLIBSPEC = $(SHELL) $(top_builddir)/mkgccnewlibspec
SUBPACKAGES = gccnewlib.add \
base-gcc.add target-gcc.add \
base-chill.add target-chill.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)/gccnewlib/gccnewlib_c_only.spec.in
MKGCCNEWLIBSPEC_DEPS = $(top_builddir)/mkgccnewlibspec gccnewlib.spec.in \
@@ -43,18 +60,14 @@ sh-rtemself-$(GCCNEWLIBVERS).spec: $(MKGCCNEWLIBSPEC_DEPS)
sparc-rtems-$(GCCNEWLIBVERS).spec: $(MKGCCNEWLIBSPEC_DEPS)
$(MKGCCNEWLIBSPEC) -cfg $(top_builddir)/setup.cache -o . sparc-rtems
TEMPLATES = gccnewlib.spec.in gccnewlib_c_only.spec.in
RPM_SPECS_DATA = hppa1.1-rtems-$(GCCNEWLIBVERS).spec \
i386-rtems-$(GCCNEWLIBVERS).spec i960-rtems-$(GCCNEWLIBVERS).spec \
m68k-rtems-$(GCCNEWLIBVERS).spec m68k-rtemself-$(GCCNEWLIBVERS).spec \
mips64orion-rtems-$(GCCNEWLIBVERS).spec \
powerpc-rtems-$(GCCNEWLIBVERS).spec sh-rtems-$(GCCNEWLIBVERS).spec \
sh-rtemself-$(GCCNEWLIBVERS).spec sparc-rtems-$(GCCNEWLIBVERS).spec
CLEANFILES += $(RPM_SPECS_DATA)
noinst_DATA = $(TEMPLATES)
EXTRA_DIST = $(SUBPACKAGES)
EXTRA_DIST = $(TEMPLATES)
CLEANFILES = $(RPM_SPECS_DATA)
include $(top_srcdir)/../automake/local.am

8
scripts/gccnewlib/README Normal file
View File

@@ -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.

View File

@@ -0,0 +1,38 @@
# ==============================================================
# rtems-base-chill
# ==============================================================
%package -n rtems-base-chill
Provides: rtems-base-chill
Summary: base package for rtems gcc/chill compiler.
Group: rtems
Requires: rtems-base-gcc
%description -n rtems-base-chill
RTEMS is an open source operating system for embedded systems.
This is the files for gcc/chill that are shared by all targets.
%files -n rtems-base-chill
%dir /opt/rtems/info
%doc /opt/rtems/info/chill.info*.gz
%post -n rtems-base-chill
if test -d $RPM_INSTALL_PREFIX/rtems/info;
then
rm -f $RPM_INSTALL_PREFIX/rtems/info/dir
f=`find $RPM_INSTALL_PREFIX/rtems/info -name '*.info.gz'`
test -n "$f" && for i in $f; do
install-info $i $RPM_INSTALL_PREFIX/rtems/info/dir
done
fi
%postun -n rtems-base-chill
if test -d $RPM_INSTALL_PREFIX/rtems/info;
then
rm -f $RPM_INSTALL_PREFIX/rtems/info/dir
f=`find $RPM_INSTALL_PREFIX/rtems/info -name '*.info.gz'`
test -n "$f" && for i in $f; do
install-info $i $RPM_INSTALL_PREFIX/rtems/info/dir
done
fi

View File

@@ -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 /opt/rtems/info
%doc /opt/rtems/info/g77.info*.gz
%dir /opt/rtems/man
%dir /opt/rtems/man/man1
%doc /opt/rtems/man/man1/@target_alias@-g77.1
%post -n rtems-base-g77
if test -d $RPM_INSTALL_PREFIX/rtems/info;
then
rm -f $RPM_INSTALL_PREFIX/rtems/info/dir
f=`find $RPM_INSTALL_PREFIX/rtems/info -name '*.info.gz'`
test -n "$f" && for i in $f; do
install-info $i $RPM_INSTALL_PREFIX/rtems/info/dir
done
fi
%postun -n rtems-base-g77
if test -d $RPM_INSTALL_PREFIX/rtems/info;
then
rm -f $RPM_INSTALL_PREFIX/rtems/info/dir
f=`find $RPM_INSTALL_PREFIX/rtems/info -name '*.info.gz'`
test -n "$f" && for i in $f; do
install-info $i $RPM_INSTALL_PREFIX/rtems/info/dir
done
fi

View File

@@ -0,0 +1,52 @@
# ==============================================================
# 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 /opt/rtems/info
%doc /opt/rtems/info/cpp.info*.gz
%doc /opt/rtems/info/gcc.info*.gz
%doc /opt/rtems/info/libc.info*.gz
%doc /opt/rtems/info/libm.info*.gz
%dir /opt/rtems/bin
/opt/rtems/bin/cpp@exe_ext@
/opt/rtems/bin/gcov@exe_ext@
%dir /opt/rtems/man
%dir /opt/rtems/man/man1
%doc /opt/rtems/man/man1/cccp.1
%dir /opt/rtems/include
/opt/rtems/include/g++-3
%post -n rtems-base-gcc
if test -d $RPM_INSTALL_PREFIX/rtems/info;
then
rm -f $RPM_INSTALL_PREFIX/rtems/info/dir
f=`find $RPM_INSTALL_PREFIX/rtems/info -name '*.info.gz'`
test -n "$f" && for i in $f; do
install-info $i $RPM_INSTALL_PREFIX/rtems/info/dir
done
fi
%postun -n rtems-base-gcc
if test -d $RPM_INSTALL_PREFIX/rtems/info;
then
rm -f $RPM_INSTALL_PREFIX/rtems/info/dir
f=`find $RPM_INSTALL_PREFIX/rtems/info -name '*.info&gz'`
test -n "$f" && for i in $f; do
install-info $i $RPM_INSTALL_PREFIX/rtems/info/dir
done
fi

View File

@@ -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 /opt/rtems/bin
/opt/rtems/bin/jcf-dump@exe_ext@
/opt/rtems/bin/jv-scan@exe_ext@
/opt/rtems/bin/gcjh@exe_ext@

View File

@@ -0,0 +1,132 @@
#
# spec file for building gcc for rtems
#
# Copyright (c) 1999,2000 OARCorp, Huntsville, AL
#
# please send bugfixes or comments to joel@OARcorp.com
#
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@
Source0: ftp://ftp.gnu.org/pub/gnu/gcc/gcc-@gcc_version@.tar.gz
Source1: ftp://sourceware.cygnus/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: /tmp/@target_alias@-gcc-newlib
#
# 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 @target_alias@-gcc-newlib -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
../gcc-@gcc_version@/configure --target=@target_alias@ \
--with-gnu-as --with-gnu-ld --with-newlib --verbose \
--enable-threads --prefix=/opt/rtems @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/opt/rtems/@target_alias@/bin
make prefix=$RPM_BUILD_ROOT/opt/rtems install
cd @target_alias@/newlib
make prefix=$RPM_BUILD_ROOT/opt/rtems install-info
# cd back to build/
cd ../..
# gzip info files
gzip -f $RPM_BUILD_ROOT/opt/rtems/info/*.info 2>/dev/null
gzip -f $RPM_BUILD_ROOT/opt/rtems/info/*.info-? 2>/dev/null
gzip -f $RPM_BUILD_ROOT/opt/rtems/info/*.info-?? 2>/dev/null
rm -f dirs ;
echo "%dir /opt/rtems/lib" >> dirs ;
echo "%dir /opt/rtems/lib/gcc-lib" >> dirs ;
echo "%dir /opt/rtems/lib/gcc-lib/@target_alias@" >> dirs ;
# Collect multilib subdirectories
TGTDIR="$RPM_BUILD_ROOT/opt/rtems/lib/gcc-lib/@target_alias@/@gcc_version@"
find $TGTDIR \
\( -type d -a ! -path "$TGTDIR/include*" \) -print | \
sed -e "s,^$RPM_BUILD_ROOT,%dir ,g" >> dirs
# Collect files to go into different packages
cp dirs files.chill
cp dirs files.gcc
cp dirs files.g77
cp dirs files.objc
cp dirs files.gcj
f=`find $TGTDIR ! -type d -print | sed -e "s,^$RPM_BUILD_ROOT,,g"`;
for i in $f; do
case $i in
*chill*) echo "$i" >> files.chill ;;
*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" = "/tmp/@target_alias@-gcc-newlib" && \
rm -rf $RPM_BUILD_ROOT

View File

@@ -1,391 +0,0 @@
#
# spec file for building gcc for rtems
#
# Copyright (c) 1999,2000 OARCorp, Huntsville, AL
#
# please send bugfixes or comments to joel@OARcorp.com
#
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
Provides: rtems-base-gcc @target_alias@-gcc
Provides: rtems-base-chill @target_alias@-chill
Provides: rtems-base-gcj @target_alias@-gcj
Provides: rtems-base-g77 @target_alias@-g77
Provides: @target_alias@-objc
Requires: @target_alias@-binutils
Autoreqprov: on
Packager: corsepiu@faw.uni-ulm.de and joel@OARcorp.com
Version: gcc@gcc_version@newlib@newlib_version@
Source0: ftp://ftp.gnu.org/pub/gnu/gcc/gcc-@gcc_version@.tar.gz
Source1: ftp://sourceware.cygnus/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: /tmp
#
# 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 @target_alias@-gcc-newlib -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
../gcc-@gcc_version@/configure --target=@target_alias@ \
--with-gnu-as --with-gnu-ld --with-newlib --verbose \
--enable-threads --prefix=/opt/rtems
# for now we are building all the languages
# '--enable-languages=c,c++'
make all
make info
# Since gcc now finds the RTEMS limits.h, this should not be needed
# cd gcc
# rm -f stmp-multilib
# find . -name "*.a" -print | xargs -e rm -f
#
# make all
# cd ..
%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/opt/rtems/@target_alias@/bin
make prefix=$RPM_BUILD_ROOT/opt/rtems install
cd @target_alias@/newlib
make prefix=$RPM_BUILD_ROOT/opt/rtems install-info
# cd back to build/
cd ../..
# gzip info files
gzip -f $RPM_BUILD_ROOT/opt/rtems/info/*.info 2>/dev/null
gzip -f $RPM_BUILD_ROOT/opt/rtems/info/*.info-? 2>/dev/null
gzip -f $RPM_BUILD_ROOT/opt/rtems/info/*.info-?? 2>/dev/null
rm -f dirs ;
echo "%dir /opt/rtems/lib" >> dirs ;
echo "%dir /opt/rtems/lib/gcc-lib" >> dirs ;
echo "%dir /opt/rtems/lib/gcc-lib/@target_alias@" >> dirs ;
# Collect multilib subdirectories
TGTDIR="$RPM_BUILD_ROOT/opt/rtems/lib/gcc-lib/@target_alias@/@gcc_version@"
find $TGTDIR \
\( -type d -a ! -path "$TGTDIR/include*" \) -print | \
sed -e "s,^$RPM_BUILD_ROOT,%dir ,g" >> dirs
# Collect files to go into different packages
cp dirs files.chill
cp dirs files.gcc
cp dirs files.g77
cp dirs files.objc
cp dirs files.gcj
f=`find $TGTDIR ! -type d -print | sed -e "s,^$RPM_BUILD_ROOT,,g"`;
for i in $f; do
case $i in
*chill*) echo "$i" >> files.chill ;;
*f771) ;;
*cc1obj) ;;
*libobjc*) echo "$i" >> files.objc ;;
*include/objc*) ;;
*jc1) ;;
*jvgenmain) ;;
*) echo "$i" >> files.gcc ;;
esac
done
# ==============================================================
# rtems-base-gcc
# ==============================================================
%package -n 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 /opt/rtems/info
%doc /opt/rtems/info/cpp.info*.gz
%doc /opt/rtems/info/gcc.info*.gz
%doc /opt/rtems/info/libc.info*.gz
%doc /opt/rtems/info/libm.info*.gz
%dir /opt/rtems/bin
/opt/rtems/bin/cpp@exe_ext@
/opt/rtems/bin/gcov@exe_ext@
%dir /opt/rtems/man
%dir /opt/rtems/man/man1
%doc /opt/rtems/man/man1/cccp.1
%dir /opt/rtems/include
/opt/rtems/include/g++-3
%post -n rtems-base-gcc
if test -d $RPM_INSTALL_PREFIX/rtems/info;
then
rm -f $RPM_INSTALL_PREFIX/rtems/info/dir
f=`find $RPM_INSTALL_PREFIX/rtems/info -name '*.info.gz'`
test -n "$f" && for i in $f; do
install-info $i $RPM_INSTALL_PREFIX/rtems/info/dir
done
fi
%postun -n rtems-base-gcc
if test -d $RPM_INSTALL_PREFIX/rtems/info;
then
rm -f $RPM_INSTALL_PREFIX/rtems/info/dir
f=`find $RPM_INSTALL_PREFIX/rtems/info -name '*.info.gz'`
test -n "$f" && for i in $f; do
install-info $i $RPM_INSTALL_PREFIX/rtems/info/dir
done
fi
# ==============================================================
# @target_alias@-gcc
# ==============================================================
%package -n @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 /opt/rtems/man/man1/@target_alias@-gcc.1
%doc /opt/rtems/man/man1/@target_alias@-g++.1
/opt/rtems/bin/@target_alias@-c++@exe_ext@
/opt/rtems/bin/@target_alias@-g++@exe_ext@
/opt/rtems/bin/@target_alias@-gcc@exe_ext@
/opt/rtems/bin/@target_alias@-protoize@exe_ext@
/opt/rtems/bin/@target_alias@-unprotoize@exe_ext@
%dir /opt/rtems/lib/gcc-lib/@target_alias@/@gcc_version@/include
/opt/rtems/@target_alias@
# ==============================================================
# rtems-base-chill
# ==============================================================
%package -n rtems-base-chill
Summary: base package for rtems gcc/chill compiler.
Group: rtems
Requires: rtems-base-gcc
%description -n rtems-base-chill
RTEMS is an open source operating system for embedded systems.
This is the files for gcc/chill that are shared by all targets.
%files -n rtems-base-chill
%dir /opt/rtems/info
%doc /opt/rtems/info/chill.info*.gz
%post -n rtems-base-chill
if test -d $RPM_INSTALL_PREFIX/rtems/info;
then
rm -f $RPM_INSTALL_PREFIX/rtems/info/dir
f=`find $RPM_INSTALL_PREFIX/rtems/info -name '*.info.gz'`
test -n "$f" && for i in $f; do
install-info $i $RPM_INSTALL_PREFIX/rtems/info/dir
done
fi
%postun -n rtems-base-chill
if test -d $RPM_INSTALL_PREFIX/rtems/info;
then
rm -f $RPM_INSTALL_PREFIX/rtems/info/dir
f=`find $RPM_INSTALL_PREFIX/rtems/info -name '*.info.gz'`
test -n "$f" && for i in $f; do
install-info $i $RPM_INSTALL_PREFIX/rtems/info/dir
done
fi
# ==============================================================
# @target_alias@-chill
# ==============================================================
%package -n @target_alias@-chill
Summary: gcc/chill compiler for @target_alias@
Group: rtems
Requires: rtems-base-chill @target_alias@-gcc
%description -n @target_alias@-chill
RTEMS is an open source operating system for embedded systems.
This is the gcc/chill compiler and support files for @target_alias@
%files -n @target_alias@-chill -f build/files.chill
%dir /opt/rtems/bin
/opt/rtems/bin/@target_alias@-chill
# ==============================================================
# rtems-base-gcj
# ==============================================================
%package -n 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 /opt/rtems/bin
/opt/rtems/bin/jcf-dump@exe_ext@
/opt/rtems/bin/jv-scan@exe_ext@
/opt/rtems/bin/gcjh@exe_ext@
# ==============================================================
# @target_alias@-gcj
# ==============================================================
%package -n @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 /opt/rtems/bin
/opt/rtems/bin/@target_alias@-gcj@exe_ext@
/opt/rtems/lib/gcc-lib/@target_alias@/@gcc_version@/jc1@exe_ext@
/opt/rtems/lib/gcc-lib/@target_alias@/@gcc_version@/jvgenmain@exe_ext@
# ==============================================================
# rtems-base-g77
# ==============================================================
%package -n 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 /opt/rtems/info
%doc /opt/rtems/info/g77.info*.gz
%dir /opt/rtems/man
%dir /opt/rtems/man/man1
%doc /opt/rtems/man/man1/@target_alias@-g77.1
%post -n rtems-base-g77
if test -d $RPM_INSTALL_PREFIX/rtems/info;
then
rm -f $RPM_INSTALL_PREFIX/rtems/info/dir
f=`find $RPM_INSTALL_PREFIX/rtems/info -name '*.info.gz'`
test -n "$f" && for i in $f; do
install-info $i $RPM_INSTALL_PREFIX/rtems/info/dir
done
fi
%postun -n rtems-base-g77
if test -d $RPM_INSTALL_PREFIX/rtems/info;
then
rm -f $RPM_INSTALL_PREFIX/rtems/info/dir
f=`find $RPM_INSTALL_PREFIX/rtems/info -name '*.info.gz'`
test -n "$f" && for i in $f; do
install-info $i $RPM_INSTALL_PREFIX/rtems/info/dir
done
fi
# ==============================================================
# @target_alias@-g77
# ==============================================================
%package -n @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 /opt/rtems/bin
/opt/rtems/bin/@target_alias@-g77@exe_ext@
/opt/rtems/lib/gcc-lib/@target_alias@/@gcc_version@/f771@exe_ext@
# ==============================================================
# @target_alias@-objc
# ==============================================================
%package -n @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
/opt/rtems/lib/gcc-lib/@target_alias@/@gcc_version@/cc1obj@exe_ext@
/opt/rtems/lib/gcc-lib/@target_alias@/@gcc_version@/include/objc

View File

@@ -1,202 +0,0 @@
#
# spec file for building gcc (C Only) for rtems
#
# Copyright (c) 1999 OARCorp, Huntsville, AL
#
# please send bugfixes or comments to joel@OARcorp.com
#
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
Provides: rtems-base-gcc @target_alias@-gcc
Requires: @target_alias@-binutils
Autoreqprov: on
Packager: corsepiu@faw.uni-ulm.de and joel@OARcorp.com
Version: gcc@gcc_version@newlib@newlib_version@
Source0: ftp://ftp.gnu.org/pub/gnu/gcc/gcc-@gcc_version@.tar.gz
Source1: ftp://sourceware.cygnus/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: /tmp
#
# 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/SOURCES directory ($RPM_SOURCE_DIR).
Or you can try the ftp options of rpm :-)
%package -n 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.
%package -n @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@.
%prep
# untar the sources inside @target_alias@-gcc-newlib
%setup -c -n @target_alias@-gcc-newlib -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
../gcc-@gcc_version@/configure --target=@target_alias@ \
--with-gnu-as --with-gnu-ld --with-newlib --verbose \
--enable-threads --prefix=/opt/rtems '--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/opt/rtems/@target_alias@/bin
make prefix=$RPM_BUILD_ROOT/opt/rtems install
cd @target_alias@/newlib
make prefix=$RPM_BUILD_ROOT/opt/rtems install-info
# cd back to build/
cd ../..
# gzip info files
gzip -f $RPM_BUILD_ROOT/opt/rtems/info/*.info 2>/dev/null
gzip -f $RPM_BUILD_ROOT/opt/rtems/info/*.info-? 2>/dev/null
gzip -f $RPM_BUILD_ROOT/opt/rtems/info/*.info-?? 2>/dev/null
rm -f dirs ;
echo "%dir /opt/rtems/lib" >> dirs ;
echo "%dir /opt/rtems/lib/gcc-lib" >> dirs ;
echo "%dir /opt/rtems/lib/gcc-lib/@target_alias@" >> dirs ;
# Collect multilib subdirectories
TGTDIR="$RPM_BUILD_ROOT/opt/rtems/lib/gcc-lib/@target_alias@/@gcc_version@"
find $TGTDIR \
\( -type d -a ! -path "$TGTDIR/include*" \) -print | \
sed -e "s,^$RPM_BUILD_ROOT,%dir ,g" >> dirs
# Collect files to go into different packages
cp dirs files.gcc
f=`find $TGTDIR ! -type d -print | sed -e "s,^$RPM_BUILD_ROOT,,g"`;
for i in $f; do
case $i in
# *chill*) echo "$i" >> files.chill ;;
# *f771) ;;
# *cc1obj) ;;
# *libobjc*) echo "$i" >> files.objc ;;
# *include/objc*) ;;
# *jc1) ;;
# *jvgenmain) ;;
*) echo "$i" >> files.gcc ;;
esac
done
%files -n rtems-base-gcc
%dir /opt/rtems/info
# %doc /opt/rtems/info/dir
%doc /opt/rtems/info/cpp.info*
%doc /opt/rtems/info/gcc.info*
%doc /opt/rtems/info/libc.info*
%doc /opt/rtems/info/libm.info*
%dir /opt/rtems/bin
/opt/rtems/bin/cpp@exe_ext@
/opt/rtems/bin/gcov@exe_ext@
%dir /opt/rtems/man
%dir /opt/rtems/man/man1
%doc /opt/rtems/man/man1/cccp.1
%dir /opt/rtems/include
/opt/rtems/include/g++-3
%files -n @target_alias@-gcc -f build/files.gcc
%doc /opt/rtems/man/man1/@target_alias@-gcc.1
%doc /opt/rtems/man/man1/@target_alias@-g++.1
/opt/rtems/bin/@target_alias@-c++@exe_ext@
/opt/rtems/bin/@target_alias@-g++@exe_ext@
/opt/rtems/bin/@target_alias@-gcc@exe_ext@
/opt/rtems/bin/@target_alias@-protoize@exe_ext@
/opt/rtems/bin/@target_alias@-unprotoize@exe_ext@
%dir /opt/rtems/lib/gcc-lib/@target_alias@/@gcc_version@/include
/opt/rtems/@target_alias@
%post
if test -d $RPM_INSTALL_PREFIX/rtems/info;
then
rm -f $RPM_INSTALL_PREFIX/rtems/info/dir
f=`find $RPM_INSTALL_PREFIX/rtems/info -name '*.info.gz'`
test -n "$f" && for i in $f; do
install-info $i $RPM_INSTALL_PREFIX/rtems/info/dir
done
fi
%postun
if test -d $RPM_INSTALL_PREFIX/rtems/info;
then
rm -f $RPM_INSTALL_PREFIX/rtems/info/dir
f=`find $RPM_INSTALL_PREFIX/rtems/info -name '*.info.gz'`
test -n "$f" && for i in $f; do
install-info $i $RPM_INSTALL_PREFIX/rtems/info/dir
done
fi

View File

@@ -0,0 +1,18 @@
# ==============================================================
# @target_alias@-chill
# ==============================================================
%package -n @target_alias@-chill
Provides: @target_alias@-chill
Summary: gcc/chill compiler for @target_alias@
Group: rtems
Requires: rtems-base-chill @target_alias@-gcc
%description -n @target_alias@-chill
RTEMS is an open source operating system for embedded systems.
This is the gcc/chill compiler and support files for @target_alias@
%files -n @target_alias@-chill -f build/files.chill
%dir /opt/rtems/bin
/opt/rtems/bin/@target_alias@-chill

View File

@@ -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 /opt/rtems/bin
/opt/rtems/bin/@target_alias@-g77@exe_ext@
/opt/rtems/lib/gcc-lib/@target_alias@/@gcc_version@/f771@exe_ext@

View File

@@ -0,0 +1,28 @@
# ==============================================================
# @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 /opt/rtems/man/man1/@target_alias@-gcc.1
%doc /opt/rtems/man/man1/@target_alias@-g++.1
/opt/rtems/bin/@target_alias@-c++@exe_ext@
/opt/rtems/bin/@target_alias@-g++@exe_ext@
/opt/rtems/bin/@target_alias@-gcc@exe_ext@
/opt/rtems/bin/@target_alias@-protoize@exe_ext@
/opt/rtems/bin/@target_alias@-unprotoize@exe_ext@
%dir /opt/rtems/lib/gcc-lib/@target_alias@/@gcc_version@/include
/opt/rtems/@target_alias@

View File

@@ -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 /opt/rtems/bin
/opt/rtems/bin/@target_alias@-gcj@exe_ext@
/opt/rtems/lib/gcc-lib/@target_alias@/@gcc_version@/jc1@exe_ext@
/opt/rtems/lib/gcc-lib/@target_alias@/@gcc_version@/jvgenmain@exe_ext@

View File

@@ -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
/opt/rtems/lib/gcc-lib/@target_alias@/@gcc_version@/cc1obj@exe_ext@
/opt/rtems/lib/gcc-lib/@target_alias@/@gcc_version@/include/objc