From 64ab2e9eeb87a3ea1c48cea6d74647155f5e0e44 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Wed, 26 Jan 2000 19:56:54 +0000 Subject: First cut at adding RPM scripts for building GNAT/RTEMS RPMs. --- scripts-ada/gnatnewlib/Makefile.am | 61 ++++++ scripts-ada/gnatnewlib/gnatnewlib.spec.in | 296 ++++++++++++++++++++++++++++++ 2 files changed, 357 insertions(+) create mode 100644 scripts-ada/gnatnewlib/Makefile.am create mode 100644 scripts-ada/gnatnewlib/gnatnewlib.spec.in (limited to 'scripts-ada/gnatnewlib') diff --git a/scripts-ada/gnatnewlib/Makefile.am b/scripts-ada/gnatnewlib/Makefile.am new file mode 100644 index 0000000000..60d7f0cc93 --- /dev/null +++ b/scripts-ada/gnatnewlib/Makefile.am @@ -0,0 +1,61 @@ +## $Id$ + +AUTOMAKE_OPTIONS = foreign + +MKGNATNEWLIBSPEC = $(SHELL) $(top_builddir)/mkgnatnewlibspec + +MKGNATNEWLIBSPEC_DEPS = \ + $(top_builddir)/mkgnatnewlibspec gnatnewlib.spec.in $(top_builddir)/setup.cache + +hppa1.1-rtems-$(GNATNEWLIBVERS).spec: $(MKGNATNEWLIBSPEC_DEPS) + $(MKGNATNEWLIBSPEC) -cfg $(top_builddir)/setup.cache -o . hppa1.1-rtems + +i386-rtems-$(GNATNEWLIBVERS).spec: $(MKGNATNEWLIBSPEC_DEPS) + $(MKGNATNEWLIBSPEC) -cfg $(top_builddir)/setup.cache -o . i386-rtems + +i960-rtems-$(GNATNEWLIBVERS).spec: $(MKGNATNEWLIBSPEC_DEPS) + $(MKGNATNEWLIBSPEC) -cfg $(top_builddir)/setup.cache -o . i960-rtems + +m68k-rtems-$(GNATNEWLIBVERS).spec: $(MKGNATNEWLIBSPEC_DEPS) + $(MKGNATNEWLIBSPEC) -cfg $(top_builddir)/setup.cache -o . m68k-rtems + +m68k-rtemself-$(GNATNEWLIBVERS).spec: $(MKGNATNEWLIBSPEC_DEPS) + $(MKGNATNEWLIBSPEC) -cfg $(top_builddir)/setup.cache -o . m68k-rtemself + +mips64orion-rtems-$(GNATNEWLIBVERS).spec: $(MKGNATNEWLIBSPEC_DEPS) + $(MKGNATNEWLIBSPEC) -cfg $(top_builddir)/setup.cache -o . mips64orion-rtems + +powerpc-rtems-$(GNATNEWLIBVERS).spec: $(MKGNATNEWLIBSPEC_DEPS) + $(MKGNATNEWLIBSPEC) -cfg $(top_builddir)/setup.cache -o . powerpc-rtems + +sh-rtems-$(GNATNEWLIBVERS).spec: $(MKGNATNEWLIBSPEC_DEPS) + $(MKGNATNEWLIBSPEC) -cfg $(top_builddir)/setup.cache -o . sh-rtems + +sh-rtemself-$(GNATNEWLIBVERS).spec: $(MKGNATNEWLIBSPEC_DEPS) + $(MKGNATNEWLIBSPEC) -cfg $(top_builddir)/setup.cache -o . sh-rtemself + +sparc-rtems-$(GNATNEWLIBVERS).spec: $(MKGNATNEWLIBSPEC_DEPS) + $(MKGNATNEWLIBSPEC) -cfg $(top_builddir)/setup.cache -o . sparc-rtems + +TEMPLATES = \ +gnatnewlib.spec.in + +RPM_SPECS_DATA = \ +hppa1.1-rtems-$(GNATNEWLIBVERS).spec \ +i386-rtems-$(GNATNEWLIBVERS).spec \ +i960-rtems-$(GNATNEWLIBVERS).spec \ +m68k-rtems-$(GNATNEWLIBVERS).spec \ +m68k-rtemself-$(GNATNEWLIBVERS).spec \ +mips64orion-rtems-$(GNATNEWLIBVERS).spec \ +powerpc-rtems-$(GNATNEWLIBVERS).spec \ +sh-rtems-$(GNATNEWLIBVERS).spec \ +sh-rtemself-$(GNATNEWLIBVERS).spec \ +sparc-rtems-$(GNATNEWLIBVERS).spec + +noinst_DATA = \ +$(TEMPLATES) + +EXTRA_DIST = \ +$(TEMPLATES) + +CLEANFILES = $(RPM_SPECS_DATA) diff --git a/scripts-ada/gnatnewlib/gnatnewlib.spec.in b/scripts-ada/gnatnewlib/gnatnewlib.spec.in new file mode 100644 index 0000000000..dae219949f --- /dev/null +++ b/scripts-ada/gnatnewlib/gnatnewlib.spec.in @@ -0,0 +1,296 @@ +# +# spec file for building gcc 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@-gnat-gcc-newlib +Summary: gnat, gcc, and newlib C Library for @target_alias@. +Group: rtems +Release: @Release@ +Copyright: 1999 OARCorp + +Provides: rtems-base-gnat @target_alias@-gnat +Requires: @target_alias@-binutils + +Autoreqprov: on +Packager: corsepiu@faw.uni-ulm.de and joel@OARcorp.com + +Version: gnat@gnat_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 +Source2: ftp://cs.nyu.edu/pub/gnat/gnat-@gnat_version@.tar.gz +Patch0: gcc-@gcc_version@-gnatrtems-@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, 1, 2 + +%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-gnat +Summary: base package for rtems gnat, gcc, and newlib C Library +Group: rtems + +%description -n rtems-base-gnat + +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 @target_alias@-gnat +Summary: rtems gnat, gcc, and newlib C Library for @target_alias@ +Group: rtems +Requires: @target_alias@-binutils rtems-base-gcc + +%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 + +%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 + + cp -r ../gnat-@gnat_version@-src/src/ada gcc-@gcc_version@ + +%patch2 -p0 + + 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@ \ + --with-gnu-as --with-gnu-ld --with-newlib --verbose \ + --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 + +%files -n @target_alias@-gcc -f build/files.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/man +%dir /opt/rtems/man/man1 +%doc /opt/rtems/man/man1/cccp.1 +%doc /opt/rtems/man/man1/@target_alias@-gcc.1 +%doc /opt/rtems/man/man1/@target_alias@-g++.1 + +%dir /opt/rtems/bin +/opt/rtems/bin/cpp@exe_ext@ +/opt/rtems/bin/gcov@exe_ext@ +/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 + +%dir /opt/rtems/include +/opt/rtems/include/g++-3 +/opt/rtems/@target_alias@ + +%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 + +%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 + + +%files -n @target_alias@-chill -f build/files.chill +%dir /opt/rtems/bin +/opt/rtems/bin/@target_alias@-chill@exe_ext@ + +%dir /opt/rtems/info +%doc /opt/rtems/info/dir +%doc /opt/rtems/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/rtems/bin +/opt/rtems/bin/jcf-dump@exe_ext@ +/opt/rtems/bin/jv-scan@exe_ext@ +/opt/rtems/bin/gcjh@exe_ext@ +/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@ + + +%files -n @target_alias@-g77 -f build/files.g77 +%dir /opt/rtems/bin +/opt/rtems/bin/@target_alias@-g77@exe_ext@ + +%dir /opt/rtems/info +%doc /opt/rtems/info/g77.info* + +%dir /opt/rtems/man +%dir /opt/rtems/man/man1 +%doc /opt/rtems/man/man1/@target_alias@-g77.1 + +/opt/rtems/lib/gcc-lib/@target_alias@/@gcc_version@/f771@exe_ext@ + +%post -n @target_alias@-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 @target_alias@-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 + + +%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 -- cgit v1.2.3