summaryrefslogtreecommitdiffstats
path: root/scripts-ada/gnatnewlib
diff options
context:
space:
mode:
Diffstat (limited to 'scripts-ada/gnatnewlib')
-rw-r--r--scripts-ada/gnatnewlib/gnatnewlib.spec.in371
1 files changed, 235 insertions, 136 deletions
diff --git a/scripts-ada/gnatnewlib/gnatnewlib.spec.in b/scripts-ada/gnatnewlib/gnatnewlib.spec.in
index c82740befe..4557e9b3b5 100644
--- a/scripts-ada/gnatnewlib/gnatnewlib.spec.in
+++ b/scripts-ada/gnatnewlib/gnatnewlib.spec.in
@@ -10,22 +10,27 @@ Vendor: OAR Corporation
Distribution: Linux
Name: @target_alias@-gnat-newlib
Summary: gnat, gcc, and newlib C Library for @target_alias@.
-Group: rtems
+Group: gnatrtems
Release: @Release@
Copyright: 1999 OARCorp
Provides: rtems-base-gnat @target_alias@-gnat
-Requires: @target_alias@-binutils
+Provides: rtems-base-gnat-binutils @target_alias@-gnat-binutils
+# Requires: @target_alias@-binutils
Autoreqprov: on
Packager: corsepiu@faw.uni-ulm.de and joel@OARcorp.com
-Version: gnat@gnat_version@newlib@newlib_version@
+Version: gnat@gnat_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
-Source2: ftp://cs.nyu.edu/pub/gnat/gnat-@gnat_version@.tar.gz
-Patch0: gcc-@gcc_version@-gnatrtems-@gcc_patch_version@.diff
+Source2: ftp://cs.nyu.edu/pub/gnat/gnat-@gnat_version@-src.tar.gz
+Source3: ftp://ftp.gnu.org/pub/gnu/binutils/binutils-@binutils_version@.tar.gz
+Patch0: gcc-@gcc_version@-rtems-@gcc_patch_version@.diff
Patch1: newlib-@newlib_version@-rtems-@newlib_patch_version@.diff
+Patch2: gnat-@gnat_version@-src-rtems-@gnat_patch_version@.diff
+Patch3: binutils-@binutils_version@-rtems-@binutils_patch_version@.diff
+#
Buildroot: /tmp
#
@@ -39,7 +44,7 @@ Buildroot: /tmp
# your /usr/src/redhat/SOURCES directory ($RPM_SOURCE_DIR).
# Or you can try the ftp options of rpm :-)
#
-NoSource: 0, 1, 2
+NoSource: 0, 1, 2, 3
%description
RTEMS is an open source operating system for embedded systems.
@@ -56,6 +61,15 @@ This is gcc's and newlib C Library's sources with patches for RTEMS.
your /usr/src/redhat/SOURCES directory ($RPM_SOURCE_DIR).
Or you can try the ftp options of rpm :-)
+This version of GNAT/RTEMS RPMs is based on the following:
+
+ + gnat-@gnat_version@-src
+ + gcc-@gcc_version@
+ + newlib-@newlib_version@
+ + binutils-@binutils_version@
+
+with appropriate patches.
+
%package -n rtems-base-gnat
Summary: base package for rtems gnat, gcc, and newlib C Library
Group: rtems
@@ -66,69 +80,168 @@ RTEMS is an open source operating system for embedded systems.
This is the files for gnat, gcc, and newlib that are shared by all targets.
+%package -n rtems-base-gnat-binutils
+Summary: base package for rtems binutils
+Group: rtems
+
+%description -n rtems-base-gnat-binutils
+
+RTEMS is an open source operating system for embedded systems.
+
+This is the base for binutils regardless of target CPU.
+
+%package -n @target_alias@-gnat-binutils
+Summary: rtems binutils for @target_alias@
+Group: rtems
+Requires: rtems-base-gnat-binutils
+
+%description -n @target_alias@-gnat-binutils
+
+RTEMS is an open source operating system for embedded systems.
+
+This is the GNU binutils for RTEMS targetting @target_alias@.
+
%package -n @target_alias@-gnat
Summary: rtems gnat, gcc, and newlib C Library for @target_alias@
Group: rtems
-Requires: @target_alias@-binutils rtems-base-gcc
+Requires: @target_alias@-gnat-binutils rtems-base-gnat
%description -n @target_alias@-gnat
RTEMS is an open source operating system for embedded systems.
This is gnat, 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 -a 2
+# untar the sources inside @target_alias@-gnat-newlib
+%setup -c -n @target_alias@-gnat-newlib -a 0 -a 1 -a 2 -a 3
%patch0 -p0
%patch1 -p0
+%patch2 -p0
+%patch3 -p0
+
+ # this 281 needs to be a variable. :(
+ cd gcc-@gcc_version@
+ patch -p0 <../gnat-@gnat_version@-src/src/gcc-281.dif
+
+ mv ../gnat-@gnat_version@-src/src/ada .
+
+ cd ada
+ touch treeprs.ads a-[es]info.h nmake.ad[bs]
+ cd ../.. # now back at top
+
+ # Now we should be done patching everything.. build up a source tree
+
+ # this sequence is VERY dependent on the versions involved
+ # When the gcc gets updated to 2.95.x or newer, this HAS to change.
+
+ mkdir src
+ cd src
+ # configure scripts
+ for f in config config.guess config.sub configure configure.in \
+ config-ml.in include install-sh ltconfig ltmain.sh Makefile.in \
+ move-if-change mkinstalldirs libiberty
+ do
+ # some packages have more configure scripts than others
+ # our list is inclusive
+ test -r ../binutils-@binutils_version@/$f && \
+ mv ../binutils-@binutils_version@/$f .
+ done
- # Copy the C library into gcc's source tree
- ln -s ../newlib-@newlib_version@/newlib gcc-@gcc_version@
- test -d build || mkdir build
+ # link in gcc
+ mv ../gcc-@gcc_version@ gcc
+
+ # link in binutils
+ for f in bfd binutils gas gprof ld opcodes etc
+ do
+ mv ../binutils-@binutils_version@/$f .
+ done
- cp -r ../gnat-@gnat_version@-src/src/ada gcc-@gcc_version@
+ # link in newlib
+ mv ../newlib-@newlib_version@/newlib .
+ cd ..
-%patch2 -p0
+ # now we have a linked together source tree
+ test -d build || mkdir build
- touch gcc-@gcc_version@/ada/treeprs.ads
- touch gcc-@gcc_version@/ada/a-[es]info.h
- touch gcc-@gcc_version@/ada/nmake.ad[bs]
%build
cd build
- ../gcc-@gcc_version@/configure --target=@target_alias@ \
+ # after we switch off gcc 2.8.1, configure using gcc not a src directory
+ # and build binutils separately.
+ ../src/configure --target=@target_alias@ \
--with-gnu-as --with-gnu-ld --with-newlib --verbose \
--prefix=/opt/gnatrtems
# 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
+# # This is a hack that is only because gnat still uses gcc 2.8.1
+# test -d ${RPM_BUILD_ROOT}/opt/gnatrtems/@target_alias@ ||
+# mkdir -p ${RPM_BUILD_ROOT}/opt/gnatrtems/@target_alias@
+# for dir in ${RPM_BUILD_ROOT}/opt/gnatrtems/@target_alias@/include \
+# ${RPM_BUILD_ROOT}/opt/gnatrtems/@target_alias@/sys-include
+# do
+# test -d ${dir} || mkdir -p ${dir}
+# cp ../newlib-@newlib_version@/newlib/libc/sys/rtems/include/limits.h ${dir}
+# done
+
+ make CC=gcc CFLAGS="-O2" LANGUAGES="c" all
+ make CC=gcc CFLAGS="-O2" LANGUAGES="c" info
+ # must be installed in the real place to allow gnat to continue to build
+ make CC=gcc CFLAGS="-O2" LANGUAGES="c" install
+
+# When GNAT uses a gcc that finds the RTEMS limits.h, this will not
+# be needed. This should not be needed if the limits.h trick above works.
+# cd gcc
+# rm -f stmp-multilib
+# find . -name "*.a" -print | xargs -e rm -f
#
-# make all
-# cd ..
+# make all
+# cd ..
+
+#################### Ada from here down ###################
+
+ # Just so the log shows what directory we are in.
+ pwd
+ cd gcc
+ echo "Starting build of GNAT proper."
+ make prefix=$RPM_BUILD_ROOT/opt/gnatrtems \
+ CC=gcc CFLAGS="-O2" LANGUAGES="c ada"
+
+ echo "Starting build of cross GNAT tools"
+ make prefix=$RPM_BUILD_ROOT/opt/gnatrtems \
+ CC=gcc CFLAGS="-O2 -g" LANGUAGES="c ada" cross-gnattools
+
+ echo "Starting build of ada.all.cross"
+ make prefix=$RPM_BUILD_ROOT/opt/gnatrtems \
+ CC=gcc CFLAGS="-O2" LANGUAGES="c ada" ada.all.cross
+
+ # must have -gnato to pass validation
+ # may want CC=gcc GNATLIBCFLAGS="-O3" GNATLIBFLAGS="-gnatpgn" gnatliy
+ # NOTE: gnatlib is not multilib'ed -- serious embedded flaw
+ echo "Starting build of gnatlib"
+ make prefix=$RPM_BUILD_ROOT/opt/gnatrtems \
+ CC=gcc GNATLIBCFLAGS="-O2 -g" gnatlib
%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/gnatrtems/@target_alias@/bin
+ # ../gcc-@gcc_version@/mkinstalldirs \
+ # $RPM_BUILD_ROOT/opt/gnatrtems/@target_alias@/bin
+
+ cd gcc
+ echo "Starting install of gnat"
+ make prefix=$RPM_BUILD_ROOT/opt/gnatrtems \
+ CC=gcc CFLAGS="-O2 -g -gnata -gnatp" LANGUAGES="c ada" install
+ # GNAT has to be mostly installed to even build itself
- make prefix=$RPM_BUILD_ROOT/opt/gnatrtems install
- cd @target_alias@/newlib
make prefix=$RPM_BUILD_ROOT/opt/gnatrtems install-info
- # cd back to build/
- cd ../..
+ # cd go back to build/
+ pwd
+ cd ..
# gzip info files
gzip -f $RPM_BUILD_ROOT/opt/gnatrtems/info/*.info 2>/dev/null
@@ -140,6 +253,22 @@ This is gnat, gcc, and newlib C Library for @target_alias@.
echo "%dir /opt/gnatrtems/lib/gcc-lib" >> dirs ;
echo "%dir /opt/gnatrtems/lib/gcc-lib/@target_alias@" >> dirs ;
+ if test -f $RPM_BUILD_ROOT/opt/gnatrtems/info/configure.info.gz;
+ then
+# These common files are only present in binutils >= 2.9.5
+ find $RPM_BUILD_ROOT/opt/gnatrtems/info -name 'configure.*' | \
+ sed -e "s,^$RPM_BUILD_ROOT,,g" > ../files
+ else
+ touch ../files
+ fi
+# These target specific files are only present in binutils >= 2.9.5
+ if test -f /opt/gnatrtems/bin/@target_alias@-readelf@exe_ext@;
+ then
+ echo /opt/gnatrtems/bin/@target_alias@-readelf@exe_ext@ > ../files.target
+ else
+ touch ../files.target
+ fi
+
# Collect multilib subdirectories
TGTDIR="$RPM_BUILD_ROOT/opt/gnatrtems/lib/gcc-lib/@target_alias@/@gcc_version@"
find $TGTDIR \
@@ -147,130 +276,104 @@ This is gnat, gcc, and newlib C Library for @target_alias@.
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
+ # NOTE: This is left in as a place holder to move the 2.95.x code into.
+ 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 ;;
+ *) echo "$i" >> ../files.gcc ;;
esac
done
-%files -n @target_alias@-gcc -f build/files.gcc
+%files -n rtems-base-gnat-binutils -f files
%dir /opt/gnatrtems/info
%doc /opt/gnatrtems/info/dir
-%doc /opt/gnatrtems/info/cpp.info*
-%doc /opt/gnatrtems/info/gcc.info*
-%doc /opt/gnatrtems/info/libc.info*
-%doc /opt/gnatrtems/info/libm.info*
+%doc /opt/gnatrtems/info/as.info.gz
+%doc /opt/gnatrtems/info/as.info-?.gz
+%doc /opt/gnatrtems/info/bfd.info.gz
+%doc /opt/gnatrtems/info/bfd.info-?.gz
+%doc /opt/gnatrtems/info/binutils.info.gz
+%doc /opt/gnatrtems/info/binutils.info-?.gz
+%doc /opt/gnatrtems/info/ld.info.gz
+%doc /opt/gnatrtems/info/ld.info-?.gz
+%doc /opt/gnatrtems/info/gasp.info.gz
+%doc /opt/gnatrtems/info/standards.info.gz
%dir /opt/gnatrtems/man
%dir /opt/gnatrtems/man/man1
-%doc /opt/gnatrtems/man/man1/cccp.1
-%doc /opt/gnatrtems/man/man1/@target_alias@-gcc.1
-%doc /opt/gnatrtems/man/man1/@target_alias@-g++.1
-
-%dir /opt/gnatrtems/bin
-/opt/gnatrtems/bin/cpp@exe_ext@
-/opt/gnatrtems/bin/gcov@exe_ext@
-/opt/gnatrtems/bin/@target_alias@-c++@exe_ext@
-/opt/gnatrtems/bin/@target_alias@-g++@exe_ext@
-/opt/gnatrtems/bin/@target_alias@-gcc@exe_ext@
-/opt/gnatrtems/bin/@target_alias@-protoize@exe_ext@
-/opt/gnatrtems/bin/@target_alias@-unprotoize@exe_ext@
-
-%dir /opt/gnatrtems/lib/gcc-lib/@target_alias@/@gcc_version@/include
%dir /opt/gnatrtems/include
-/opt/gnatrtems/include/g++-3
-/opt/gnatrtems/@target_alias@
+/opt/gnatrtems/include/bfd.h
+/opt/gnatrtems/include/ansidecl.h
+/opt/gnatrtems/include/bfdlink.h
-%post -n @target_alias@-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
+%dir /opt/gnatrtems/lib
+/opt/gnatrtems/lib/libbfd*
+/opt/gnatrtems/lib/libiberty*
+/opt/gnatrtems/lib/libopcodes*
-%postun -n @target_alias@-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
+# %dir /opt/gnatrtems/share
+# %dir /opt/gnatrtems/share/locale
+%files -n @target_alias@-gnat-binutils -f files.target
+%doc /opt/gnatrtems/man/man1/@target_alias@-*.1
-%files -n @target_alias@-chill -f build/files.chill
%dir /opt/gnatrtems/bin
-/opt/gnatrtems/bin/@target_alias@-chill@exe_ext@
-
+/opt/gnatrtems/bin/@target_alias@-addr2line@exe_ext@
+/opt/gnatrtems/bin/@target_alias@-ar@exe_ext@
+/opt/gnatrtems/bin/@target_alias@-as@exe_ext@
+/opt/gnatrtems/bin/@target_alias@-c++filt@exe_ext@
+/opt/gnatrtems/bin/@target_alias@-gasp@exe_ext@
+/opt/gnatrtems/bin/@target_alias@-ld@exe_ext@
+/opt/gnatrtems/bin/@target_alias@-nm@exe_ext@
+/opt/gnatrtems/bin/@target_alias@-objcopy@exe_ext@
+/opt/gnatrtems/bin/@target_alias@-objdump@exe_ext@
+/opt/gnatrtems/bin/@target_alias@-ranlib@exe_ext@
+# readelf is not in older binutils so get it from file list
+# /opt/gnatrtems/bin/@target_alias@-readelf@exe_ext@
+/opt/gnatrtems/bin/@target_alias@-size@exe_ext@
+/opt/gnatrtems/bin/@target_alias@-strings@exe_ext@
+/opt/gnatrtems/bin/@target_alias@-strip@exe_ext@
+
+%dir /opt/gnatrtems/@target_alias@
+%dir /opt/gnatrtems/@target_alias@/bin
+/opt/gnatrtems/@target_alias@/bin/ar@exe_ext@
+/opt/gnatrtems/@target_alias@/bin/as@exe_ext@
+/opt/gnatrtems/@target_alias@/bin/ld@exe_ext@
+/opt/gnatrtems/@target_alias@/bin/nm@exe_ext@
+/opt/gnatrtems/@target_alias@/bin/ranlib@exe_ext@
+/opt/gnatrtems/@target_alias@/bin/strip@exe_ext@
+
+%dir /opt/gnatrtems/@target_alias@/lib
+/opt/gnatrtems/@target_alias@/lib/ldscripts
+%files -n rtems-base-gnat
%dir /opt/gnatrtems/info
-%doc /opt/gnatrtems/info/dir
-%doc /opt/gnatrtems/info/chill.info*
-
-%post -n @target_alias@-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 @target_alias@-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
-
-
-%files -n @target_alias@-gcj -f build/files.gcj
-%dir /opt/gnatrtems/bin
-/opt/gnatrtems/bin/jcf-dump@exe_ext@
-/opt/gnatrtems/bin/jv-scan@exe_ext@
-/opt/gnatrtems/bin/gcjh@exe_ext@
-/opt/gnatrtems/bin/@target_alias@-gcj@exe_ext@
-
-/opt/gnatrtems/lib/gcc-lib/@target_alias@/@gcc_version@/jc1@exe_ext@
-/opt/gnatrtems/lib/gcc-lib/@target_alias@/@gcc_version@/jvgenmain@exe_ext@
+# %doc /opt/gnatrtems/info/dir
+%doc /opt/gnatrtems/info/cpp.info*
+%doc /opt/gnatrtems/info/gcc.info*
+%doc /opt/gnatrtems/info/libc.info*
+%doc /opt/gnatrtems/info/libm.info*
+# %dir /opt/gnatrtems/man
+# %dir /opt/gnatrtems/man/man1
+%doc /opt/gnatrtems/man/man1/cccp.1
+%doc /opt/gnatrtems/man/man1/@target_alias@-gcc.1
-%files -n @target_alias@-g77 -f build/files.g77
%dir /opt/gnatrtems/bin
-/opt/gnatrtems/bin/@target_alias@-g77@exe_ext@
+# /opt/gnatrtems/bin/cpp@exe_ext@
+/opt/gnatrtems/bin/gcov@exe_ext@
+%dir /opt/gnatrtems/include
+# /opt/gnatrtems/include/g++-3
-%dir /opt/gnatrtems/info
-%doc /opt/gnatrtems/info/g77.info*
+%files -n @target_alias@-gnat -f files.gcc
+/opt/gnatrtems/bin/@target_alias@-gcc@exe_ext@
-%dir /opt/gnatrtems/man
-%dir /opt/gnatrtems/man/man1
-%doc /opt/gnatrtems/man/man1/@target_alias@-g77.1
+%dir /opt/gnatrtems/lib/gcc-lib/@target_alias@/@gcc_version@/include
-/opt/gnatrtems/lib/gcc-lib/@target_alias@/@gcc_version@/f771@exe_ext@
+/opt/gnatrtems/@target_alias@
-%post -n @target_alias@-g77
+%post -n @target_alias@-gnat
if test -d $RPM_INSTALL_PREFIX/rtems/info;
then
rm -f $RPM_INSTALL_PREFIX/rtems/info/dir
@@ -280,7 +383,7 @@ This is gnat, gcc, and newlib C Library for @target_alias@.
done
fi
-%postun -n @target_alias@-g77
+%postun -n @target_alias@-gnat
if test -d $RPM_INSTALL_PREFIX/rtems/info;
then
rm -f $RPM_INSTALL_PREFIX/rtems/info/dir
@@ -290,7 +393,3 @@ This is gnat, gcc, and newlib C Library for @target_alias@.
done
fi
-
-%files -n @target_alias@-objc -f build/files.objc
-/opt/gnatrtems/lib/gcc-lib/@target_alias@/@gcc_version@/cc1obj@exe_ext@
-/opt/gnatrtems/lib/gcc-lib/@target_alias@/@gcc_version@/include/objc