OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /or1k/trunk/rtems/scripts-ada
    from Rev 208 to Rev 1765
    Reverse comparison

Rev 208 → Rev 1765

/mkinstalldirs
0,0 → 1,40
#! /bin/sh
# mkinstalldirs --- make directory hierarchy
# Author: Noah Friedman <friedman@prep.ai.mit.edu>
# Created: 1993-05-16
# Public domain
 
# $Id: mkinstalldirs,v 1.2 2001-09-27 12:02:52 chris Exp $
 
errstatus=0
 
for file
do
set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
shift
 
pathcomp=
for d
do
pathcomp="$pathcomp$d"
case "$pathcomp" in
-* ) pathcomp=./$pathcomp ;;
esac
 
if test ! -d "$pathcomp"; then
echo "mkdir $pathcomp"
 
mkdir "$pathcomp" || lasterr=$?
 
if test ! -d "$pathcomp"; then
errstatus=$lasterr
fi
fi
 
pathcomp="$pathcomp/"
done
done
 
exit $errstatus
 
# mkinstalldirs ends here
mkinstalldirs Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: configure.in =================================================================== --- configure.in (nonexistent) +++ configure.in (revision 1765) @@ -0,0 +1,52 @@ +## $Id: configure.in,v 1.2 2001-09-27 12:02:52 chris Exp $ + +AC_INIT(binutils) +AM_INIT_AUTOMAKE(rtems-scripts_ada,20000125-0,no) + +AC_EXEEXT + +test -f ./setup.cache || cp ${srcdir}/setup.def ./setup.cache +. ./setup.cache + +# Some linux distributions use /usr/src/packages +# redhat uses /usr/src/redhat +# others might use /usr/src +AC_MSG_CHECKING(for rpm SPECS directory) +if test -d /usr/src/packages/SPECS; +then + RPM_SPECSdir=/usr/src/packages/SPECS; +elif test -d /usr/src/redhat/SPECS; +then + RPM_SPECSdir=/usr/src/redhat/SPECS; +elif test -d /usr/src/SPECS/; +then + RPM_SPECSdir=/usr/src/SPECS; +fi +if test x"$RPM_SPECSdir" = x"" ; then +AC_MSG_ERROR(not found) +fi +AC_MSG_RESULT($RPM_SPECSdir) +AC_SUBST(RPM_SPECSdir) + +GNATNEWLIBVERS="gnat-${gnat_version}-newlib-${newlib_version}" +AC_SUBST(GNATNEWLIBVERS) +BINUTILSVERS="gnat-${gnat_version}-binutils-${binutils_version}" +AC_SUBST(BINUTILSVERS) +GDBVERS="gnat-${gnat_version}-gdb-${gdb_version}" +AC_SUBST(GDBVERS) +BSPVERS="${rtems_version}" +AC_SUBST(RTEMS_VERSION) +AC_SUBST(BSPVERS) + +AC_OUTPUT( +Makefile +buildall +mkbinutilspec +mkgnatnewlibspec +mkgdbspec +mkbspspec +binutils/Makefile +gnatnewlib/Makefile +gdb/Makefile,, +chmod 755 buildall +) Index: binutils/Makefile.am =================================================================== --- binutils/Makefile.am (nonexistent) +++ binutils/Makefile.am (revision 1765) @@ -0,0 +1,24 @@ +## +## $Id: Makefile.am,v 1.2 2001-09-27 12:02:52 chris Exp $ +## + +AUTOMAKE_OPTIONS = foreign 1.4 + +MKBINUTILSSPEC = $(SHELL) $(top_builddir)/mkbinutilspec + +MKBINUTILSSPEC_DEPS = $(top_builddir)/mkbinutilspec binutils.spec.in \ + $(top_builddir)/setup.cache + +sparc-rtems-$(BINUTILSVERS).spec: $(MKBINUTILSSPEC_DEPS) + $(MKBINUTILSSPEC) -cfg $(top_builddir)/setup.cache -o . sparc-rtems + +TEMPLATES = binutils.spec.in + +RPM_SPECS_DATA = sparc-rtems-$(BINUTILSVERS).spec + +noinst_DATA = $(TEMPLATES) + +EXTRA_DIST = $(TEMPLATES) + +CLEANFILES = $(RPM_SPECS_DATA) +include $(top_srcdir)/../automake/local.am Index: binutils/binutils.spec.in =================================================================== --- binutils/binutils.spec.in (nonexistent) +++ binutils/binutils.spec.in (revision 1765) @@ -0,0 +1,197 @@ +# +# spec file for binutils package targetting 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-binutils-collection +Summary: binutils for target @target_alias@ +Group: gnatrtems +Release: @Release@ +License: GPL/LGPL + +Provides: rtems-base-gnat-binutils @target_alias@-gnat-binutils + +Autoreqprov: on +Packager: corsepiu@faw.uni-ulm.de and joel@OARcorp.com +Prefix: /opt + +Version: @binutils_version@ +Source0: ftp://ftp.gnu.org/pub/gnu/binutils/binutils-@binutils_version@.tar.gz +Patch0: binutils-@binutils_version@-rtems-@binutils_patch_version@.diff +# +# 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 + +%description + +RTEMS is an open source operating system for embedded systems. + +This is binutils sources with patches for RTEMS. + +%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@. + +Authors: +-------- + Joel Sherrill (joel@oarcorp.com) + ... + +%prep +# untar the sources inside @target_alias@-gnat-binutils +%setup -c -n @target_alias@-gnat-binutils -a 0 + +%patch0 -p0 + test -d build || mkdir build + +%build + cd build + ../binutils-@binutils_version@/configure --target=@target_alias@ \ + --verbose --prefix=/opt/gnatrtems + + make all + make info + +%install + cd build + make prefix=$RPM_BUILD_ROOT/opt/gnatrtems install + make prefix=$RPM_BUILD_ROOT/opt/gnatrtems install-info +# A bug in binutils: binutils does not install share/locale +# however it uses it + ../binutils-@binutils_version@/mkinstalldirs \ + $RPM_BUILD_ROOT/opt/gnatrtems/share/locale + +# gzip info files + gzip -f $RPM_BUILD_ROOT/opt/gnatrtems/info/*.info 2>/dev/null + gzip -f $RPM_BUILD_ROOT/opt/gnatrtems/info/*.info-? 2>/dev/null + + 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 + + + +%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 x"$f" != x"" && 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 x"$f" != x"" && for i in $f; do + install-info $i $RPM_INSTALL_PREFIX/rtems/info/dir + done + fi + +%files -n rtems-base-gnat-binutils -f files +%dir /opt/gnatrtems/info +%doc /opt/gnatrtems/info/dir +%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 + +%dir /opt/gnatrtems/include +/opt/gnatrtems/include/bfd.h +/opt/gnatrtems/include/ansidecl.h +/opt/gnatrtems/include/bfdlink.h + +%dir /opt/gnatrtems/lib +/opt/gnatrtems/lib/libbfd* +/opt/gnatrtems/lib/libiberty* +/opt/gnatrtems/lib/libopcodes* + +%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 + +%dir /opt/gnatrtems/bin +/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 Index: binutils =================================================================== --- binutils (nonexistent) +++ binutils (revision 1765)
binutils Property changes : Added: svn:ignore ## -0,0 +1,4 ## +*.spec +Makefile +Makefile.in +binutils.spec Index: gnatnewlib/Makefile.am =================================================================== --- gnatnewlib/Makefile.am (nonexistent) +++ gnatnewlib/Makefile.am (revision 1765) @@ -0,0 +1,26 @@ +## $Id: Makefile.am,v 1.2 2001-09-27 12:02:53 chris Exp $ + +AUTOMAKE_OPTIONS = foreign 1.4 + +MKGNATNEWLIBSPEC = $(SHELL) $(top_builddir)/mkgnatnewlibspec + +MKGNATNEWLIBSPEC_DEPS = $(top_builddir)/mkgnatnewlibspec gnatnewlib.spec.in \ + $(top_builddir)/setup.cache + +powerpc-rtems-$(GNATNEWLIBVERS).spec: $(MKGNATNEWLIBSPEC_DEPS) + $(MKGNATNEWLIBSPEC) -cfg $(top_builddir)/setup.cache -o . powerpc-rtems + +sparc-rtems-$(GNATNEWLIBVERS).spec: $(MKGNATNEWLIBSPEC_DEPS) + $(MKGNATNEWLIBSPEC) -cfg $(top_builddir)/setup.cache -o . sparc-rtems + +TEMPLATES = gnatnewlib.spec.in + +RPM_SPECS_DATA = powerpc-rtems-$(GNATNEWLIBVERS).spec \ + sparc-rtems-$(GNATNEWLIBVERS).spec + +noinst_DATA = $(TEMPLATES) + +EXTRA_DIST = $(TEMPLATES) + +CLEANFILES = $(RPM_SPECS_DATA) +include $(top_srcdir)/../automake/local.am Index: gnatnewlib/gnatnewlib.spec.in =================================================================== --- gnatnewlib/gnatnewlib.spec.in (nonexistent) +++ gnatnewlib/gnatnewlib.spec.in (revision 1765) @@ -0,0 +1,401 @@ +# +# 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-newlib +Summary: gnat, gcc, and newlib C Library for @target_alias@. +Group: gnatrtems +Release: @Release@ +License: gcc is GPL/LGPL ; newlib no has restrictions on run-time usage + +Provides: rtems-base-gnat @target_alias@-gnat +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@ +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@-src.tar.gz +Source3: ftp://ftp.gnu.org/pub/gnu/binutils/binutils-@binutils_version@.tar.gz +Patch0: gcc-@gcc_version@-rtems-gnat-@gnat_version@-@gcc_patch_version@.diff +Patch1: newlib-@newlib_version@-rtems-@newlib_patch_version@.diff +Patch2: gnat-@gnat_version@-rtems-@gnat_patch_version@.diff +Patch3: binutils-@binutils_version@-rtems-gnat-@gnat_version@-@binutils_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 +NoSource: 2 +NoSource: 3 + +%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 :-) + +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 + +%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 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@-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@-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 + + # 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 + + # link in newlib + mv ../newlib-@newlib_version@/newlib . + cd .. + + # now we have a linked together source tree + test -d build || mkdir build + + +%build + cd build + # 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++' + +# # 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 to allow gnat to continue to build + make CC=gcc CFLAGS="-O2" LANGUAGES="c" install install-info + make prefix=$RPM_BUILD_ROOT/opt/gnatrtems \ + CC=gcc CFLAGS="-O2" LANGUAGES="c" install install-info + +# 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 .. + +#################### 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 + + 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-info + + # cd go back to build/ + pwd + cd .. + + # gzip info files + gzip -f $RPM_BUILD_ROOT/opt/gnatrtems/info/*.info 2>/dev/null + gzip -f $RPM_BUILD_ROOT/opt/gnatrtems/info/*.info-? 2>/dev/null + gzip -f $RPM_BUILD_ROOT/opt/gnatrtems/info/*.info-?? 2>/dev/null + + rm -f dirs ; + echo "%dir /opt/gnatrtems/lib" >> dirs ; + echo "%dir /opt/gnatrtems/lib/gcc-lib" >> dirs ; + echo "%dir /opt/gnatrtems/lib/gcc-lib/@target_alias@" >> dirs ; + + touch ../files + # 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 \ + \( -type d -a ! -path "$TGTDIR/include*" \) -print | \ + sed -e "s,^$RPM_BUILD_ROOT,%dir ,g" >> dirs + + # Collect files to go into different packages + # 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 + *) echo "$i" >> ../files.gcc ;; + esac + done + +%files -n rtems-base-gnat-binutils -f files +%dir /opt/gnatrtems/info +# %doc /opt/gnatrtems/info/dir +# %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 + +%dir /opt/gnatrtems/include +/opt/gnatrtems/include/bfd.h +/opt/gnatrtems/include/ansidecl.h +/opt/gnatrtems/include/bfdlink.h + +%dir /opt/gnatrtems/lib +/opt/gnatrtems/lib/libbfd* +/opt/gnatrtems/lib/libiberty* +/opt/gnatrtems/lib/libopcodes* + +# %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 + +%dir /opt/gnatrtems/bin +/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/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 + +%dir /opt/gnatrtems/bin +# /opt/gnatrtems/bin/cpp@exe_ext@ +# /opt/gnatrtems/bin/gcov@exe_ext@ +%dir /opt/gnatrtems/include +# /opt/gnatrtems/include/g++-3 + +%files -n @target_alias@-gnat -f files.gcc +/opt/gnatrtems/bin/@target_alias@-gcc@exe_ext@ + +%dir /opt/gnatrtems/lib/gcc-lib/@target_alias@/@gcc_version@/include + +/opt/gnatrtems/@target_alias@ + +%post -n @target_alias@-gnat + 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@-gnat + 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 + Index: gnatnewlib =================================================================== --- gnatnewlib (nonexistent) +++ gnatnewlib (revision 1765)
gnatnewlib Property changes : Added: svn:ignore ## -0,0 +1,4 ## +*.spec +Makefile +Makefile.in +gnatnewlib.spec Index: gdb/Makefile.am =================================================================== --- gdb/Makefile.am (nonexistent) +++ gdb/Makefile.am (revision 1765) @@ -0,0 +1,27 @@ +## +## $Id: Makefile.am,v 1.2 2001-09-27 12:02:53 chris Exp $ +## + +AUTOMAKE_OPTIONS = foreign 1.4 + +MKGDBSPEC = $(SHELL) $(top_builddir)/mkgdbspec + +MKGDBSPEC_DEPS = $(top_builddir)/mkgdbspec gdb.spec.in \ + $(top_builddir)/setup.cache + +powerpc-rtems-$(GDBVERS).spec: $(MKGDBSPEC_DEPS) + $(MKGDBSPEC) -cfg $(top_builddir)/setup.cache -o . powerpc-rtems + +sparc-rtems-$(GDBVERS).spec: $(MKGDBSPEC_DEPS) + $(MKGDBSPEC) -cfg $(top_builddir)/setup.cache -o . sparc-rtems + +TEMPLATES = gdb.spec.in + +RPM_SPECS_DATA = powerpc-rtems-$(GDBVERS).spec sparc-rtems-$(GDBVERS).spec + +noinst_DATA = $(TEMPLATES) + +EXTRA_DIST = $(TEMPLATES) + +CLEANFILES = $(RPM_SPECS_DATA) +include $(top_srcdir)/../automake/local.am Index: gdb/gdb.spec.in =================================================================== --- gdb/gdb.spec.in (nonexistent) +++ gdb/gdb.spec.in (revision 1765) @@ -0,0 +1,151 @@ +# +# spec file for package rtems +# +# Copyright (c) 1999 OARCorp, Huntsville, AL +# +# please send bugfixes or comments to joel@OARcorp.com +# + +# neededforbuild -- nothing + +Vendor: OAR Corporation +Distribution: Linux +Name: @target_alias@-gnat-gdb-collection +Release: @Release@ +License: GPL/LGPL +Group: gnatrtems +Provides: rtems-base-gnat-gdb @target_alias@-gnat-gdb + +Autoreqprov: on +Packager: corsepiu@faw.uni-ulm.de and joel@OARcorp.com + +Version: @gdb_version@ +Summary: gdb for target @target_alias@ +Source0: ftp://ftp.gnu.org/pub/gnu/gdb-@gdb_version@.tar.gz +Source1: ftp://cs.nyu.edu/pub/gnat/gnat-@gnat_version@-src.tar.gz +Patch0: gdb-@gdb_version@-rtems-gnat-@gnat_version@-@gdb_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 + +%description +RTEMS is an open source operating system for embedded systems. + +This is the GNU gdb for RTEMS targetting @target_alias@. + +%package -n rtems-base-gnat-gdb +Summary: base package for rtems gdb +Group: rtems + +%description -n rtems-base-gnat-gdb + +RTEMS is an open source operating system for embedded systems. + +This is the base for gdb regardless of target CPU. + +%package -n @target_alias@-gnat-gdb +Summary: rtems gdb for @target_alias@ +Group: rtems +Requires: rtems-base-gnat-gdb + +%description -n @target_alias@-gnat-gdb + +RTEMS is an open source operating system for embedded systems. + +This is the GNU gdb for RTEMS targetting @target_alias@. + +Authors: +-------- + Joel Sherrill (joel@oarcorp.com) + ... + + +%prep +echo RPM_BUILD_ROOT=${RPM_BUILD_ROOT} +# untar the sources inside @target_alias@-gnat-gdb +%setup -c -n @target_alias@-gnat-gdb -a 0 -a 1 + + cd gdb-@gdb_version@ + patch -p0 <../gnat-@gnat_version@-src/src/gdb-@gdb_version@.gnat.diff + +%patch0 -p1 + +%build +test -d build || mkdir build + cd build + ../gdb-@gdb_version@/configure --target=@target_alias@ \ + --verbose --prefix=/opt/gnatrtems @extra_configure_arguments@ + + make CC=gcc CFLAGS="-O2 -g -DRTEMS_TARGET" all + make info + +%install + cd build + make prefix=$RPM_BUILD_ROOT/opt/gnatrtems install + make prefix=$RPM_BUILD_ROOT/opt/gnatrtems install-info + + # gzip info files + find $RPM_BUILD_ROOT/opt/gnatrtems/info -name "*.info*" | \ + grep -v "\.gz$" | xargs -e gzip -f 2>/dev/null + # gzip -f $RPM_BUILD_ROOT/opt/gnatrtems/info/*.info 2>/dev/null + # gzip -f $RPM_BUILD_ROOT/opt/gnatrtems/info/*.info-? 2>/dev/null + # gzip -f $RPM_BUILD_ROOT/opt/gnatrtems/info/*.info-?? 2>/dev/null + +%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 + +%files -n rtems-base-gnat-gdb + +%dir /opt/gnatrtems/info +%doc /opt/gnatrtems/info/gdb.info* +%doc /opt/gnatrtems/info/mmalloc.info* +# %doc /opt/gnatrtems/info/readline.info* + +%dir /opt/gnatrtems/man +%dir /opt/gnatrtems/man/man1 + +%dir /opt/gnatrtems/include +# We install libbfd from binutils +# /opt/gnatrtems/include/bfd.h +# /opt/gnatrtems/include/bfdlink.h + +%dir /opt/gnatrtems/lib +# We install libbfd from binutils +# /opt/gnatrtems/lib/libbfd* +# We use libiberty from gcc +# /opt/gnatrtems/lib/libiberty* + +%files -n @target_alias@-gnat-gdb +%doc /opt/gnatrtems/man/man1/@target_alias@-gdb.1 + +%dir /opt/gnatrtems/bin +/opt/gnatrtems/bin/@target_alias@-gdb@exe_ext@ + Index: gdb =================================================================== --- gdb (nonexistent) +++ gdb (revision 1765)
gdb Property changes : Added: svn:ignore ## -0,0 +1,4 ## +*.spec +Makefile +Makefile.in +gdb.spec Index: README =================================================================== --- README (nonexistent) +++ README (revision 1765) @@ -0,0 +1,28 @@ +# +# $Id: README,v 1.2 2001-09-27 12:02:52 chris Exp $ +# + +This directory contains the scripts used to build RPMS for GNAT/RTEMS. + +The scripts are close but do not work completely right yet. I have +commented out the info related items in gnatnewlib.in to get the +RPMS to build. + +The binutils directory should be ignored for now. In order to +build the toolset at all, I had to merge building binutils +into the build of gcc, gnat, and newlib. gdb is still built separately. +When gnat is based off a more recent gcc version, we can go +to the more proper method of building binutils first and +separately. + +There is the more general issue that the gcc 2.8.1 RTEMS targets +were not always the same object format that the gcc 2.95.x ones +are. Thus some BSPs (m68k and i386 in particular) are now ELF +based and assume crti.o/crtn.o is installed. The gcc 2.8.1 +configurations were not ELF and thus it is likely that programs +will not link on certain configurations. + +Another more general issue is that GNAT gdb support is at +4.17 while remote debugging of RTEMS applications via +TCP/IP is in 4.18. + Index: TODO =================================================================== --- TODO (nonexistent) +++ TODO (revision 1765) @@ -0,0 +1,6 @@ +# +# $Id: TODO,v 1.2 2001-09-27 12:02:52 chris Exp $ +# + +There is plenty left to do on this :) + Index: Makefile.am =================================================================== --- Makefile.am (nonexistent) +++ Makefile.am (revision 1765) @@ -0,0 +1,25 @@ +## +## $Id: Makefile.am,v 1.2 2001-09-27 12:02:52 chris Exp $ +## + +AUTOMAKE_OPTIONS = foreign 1.4 +ACLOCAL_AMFLAGS = -I $(RTEMS_TOPdir)/aclocal + +SUBDIRS = . gnatnewlib gdb + +noinst_SCRIPTS = setup buildall mkbinutilspec mkbspspec mkgnatnewlibspec \ + mkgdbspec mkrpms mkspec + +TEMPLATES = + +noinst_DATA = setup.def $(TEMPLATES) + +EXTRA_DIST = $(noinst_DATA) $(noinst_SCRIPTS) + +CONFIGURE_DEPENDENCIES = setup.cache +setup.cache: setup.def + cp setup.def $@ + +DISTCLEANFILES = setup.cache +include $(top_srcdir)/../automake/subdirs.am +include $(top_srcdir)/../automake/local.am Index: mkspec =================================================================== --- mkspec (nonexistent) +++ mkspec (revision 1765) @@ -0,0 +1,19 @@ +#!/bin/sh +# + +RTEMS_DIR=`dirname $0` +RTEMS_VERSION=`grep Version ${RTEMS_DIR}/../VERSION | \ +sed -e 's%RTEMS[ ]*Version[ ]*\(.*\)[ ]*%\1%g'` + +target_alias=$1 +bsp=$2 +release=0 + +#${RTEMS_DIR}/scripts/mkbspspec $bsp $target_alias +#${RTEMS_DIR}/scripts/mkbinutilspec $target_alias +#${RTEMS_DIR}/scripts/mkgnatnewlibspec $target_alias +#${RTEMS_DIR}/scripts/mkgdbspec $target_alias +./mkbinutilspec $target_alias +./mkgnatnewlibspec $target_alias +./mkgdbspec $target_alias + Index: mkbspspec.in =================================================================== --- mkbspspec.in (nonexistent) +++ mkbspspec.in (revision 1765) @@ -0,0 +1,62 @@ +#!/bin/sh +# + +RTEMS_DIR=`dirname $0`/@top_srcdir@ +RTEMS_VERSION=@RTEMS_VERSION@ + +CFG=setup.cache +dst=@RPM_SPECSdir@ +exe_ext=@EXEEXT@ + +usage() +{ + echo "$0 [options] " + echo " options:" + echo " -cfg " + echo " -o " + exit 1 ; +} + +while test $# -ge 3; do +case $1 in +-cfg) + shift + CFG=$1 + shift + ;; +-o) + shift + dst=$1 + shift + ;; +-*) + echo "invalid option $1"; + usage + ;; +esac +done + +if test ! $# -eq 2; +then + echo "Invalid number of arguments" + usage +fi + +# target to build for +target_alias=$1 +bsp=$2 + +. ./$CFG + +specfile=${dst}/${target_alias}-gnat-${bsp}-${rtems_version}.spec + +sed -e "s%@Release@%${rtems_rpm_release}%g" \ + -e "s%@bsp@%${bsp}%g" \ + -e "s%@rtems_version@%${rtems_version}%g" \ + -e "s%@rpm_build_root@%${rpm_build_root}%g" \ + -e "s%@target_alias@%${target_alias}%g" \ + -e "s%@exe_ext@%${exe_ext}%g" \ +< ${RTEMS_DIR}/rtems/rtems.spec.in \ +> ${specfile} + +echo Generated ${specfile} Index: setup.def =================================================================== --- setup.def (nonexistent) +++ setup.def (revision 1765) @@ -0,0 +1,18 @@ +# RTEMS tools setup +binutils_version=2.9.1 +binutils_patch_version=20000429 +binutils_rpm_release=2 +newlib_version=1.8.2 +newlib_patch_version=20000606 +gcc_version=2.8.1 +gcc_patch_version=20000429 +gnat_version=3.12p +gnat_patch_version=20000429 +gnatnewlib_rpm_release=5 +gdb_version=4.17 +gdb_patch_version=20000429 +gdb_rpm_release=2 +# RTEMS version is unused as RTEMS RPMS are not currently built. +rtems_version=4.5.0 +rtems_rpm_release=1 +rpm_build_root=/tmp Index: buildall.in =================================================================== --- buildall.in (nonexistent) +++ buildall.in (revision 1765) @@ -0,0 +1,193 @@ +#! /bin/sh +# +# Generate all the specs and then cycle through building them. +# + +RTEMS_DIR=`dirname $0` +CFG=./setup.cache +dst=@RPM_SPECSdir@ + +usage() +{ + echo "$0 [options] " + echo " options:" + echo " -cfg " + echo " -o " + exit 1 ; +} + +while test $# -ge 1; do + case $1 in + -cfg) + test $# -ge 2 || usage + shift + CFG=$1 + shift + ;; + -o) + test $# -ge 2 || usage + shift + dst=$1 + shift + ;; + -*) + echo "invalid option $1"; + usage + ;; + *) + TARGETS="${TARGETS} $1" + shift + ;; + esac +done + +# This is the full list .. hppa1.1 does not build now. +#ALL_TARGETS="hppa1.1-rtems i386-rtems i960-rtems m68k-rtems \ +# m68k-rtemself mips64orion-rtems \ +# powerpc-rtems sh-rtems sh-rtemself sparc-rtems" + +# This is the full buildable set. +if [ "X${TARGETS}" = "X" ] ; then + TARGETS="i386-rtems i960-rtems m68k-rtems \ + mips64orion-rtems powerpc-rtems sh-rtems sparc-rtems" +fi + +. $CFG + +binutils=${binutils_version} +gcc=${gcc_version} +gnat=${gnat_version} +gdb=${gdb_version} +newlib=${newlib_version} +# also use binutils_rpm_release +buildroot=/tmp + +testing=no +do_binutils=no # binutils included in gnatnewlib +do_gnatnewlib=yes +do_gdb=yes + +# +# Now get started +# +start=`date` + +echo PATH=$PATH + +if [ ${testing} = yes ] ; then + ECHO=echo +fi + +installed_count=`rpm -q -g gnatrtems | wc -l` +if [ ${installed_count} -ne 0 ] ; then + echo This script should be run with NO rtems RPMs installed. + echo It appears that the following rtems RPMs are installed: + echo + rpm -qa | grep rtems + echo + echo Please remove these and restart this script. + exit 1 +fi + +echo Copying specs files. +if [ ${testing} = no ] ; then + cd ${RTEMS_DIR} + + # ./configure || exit 1 + make || exit 1 + + # Now generate all the specs + for target in ${TARGETS} + do + tspecs=`find . -name "${target}*"` + if [ "X${tspecs}" = "X" ] ; then + echo RPM specifications were not generated for ${tspec}. + exit 1 + fi + ${ECHO} cp -r ${tspecs} ${dst} + done +fi + +# clean up a bit before we start +cd ${dst} +test -d log || mkdir log + +# do all the tools +for target in ${TARGETS} +do + if [ ${do_binutils} = yes ] ; then + logfile=log/${target}-binutils + specfile=${dst}/${target}-gnat-${gnat}-binutils-${binutils}.spec + echo "rpm -ba ${specfile} >${logfile} 2>&1" + if [ ${testing} = no ] ; then + rpm -ba ${specfile} >${logfile} 2>&1 + fi + ${ECHO} rm -rf ${dst}/../BUILD/${target}-binutils* + ${ECHO} rm -rf ${buildroot}/opt/gnatrtems + else + echo Skipping binutils for ${target} + fi + + # + # build gcc/newlib + # + + if [ ${do_gnatnewlib} = yes ] ; then + # now build gcc/newlib + # NOTE: This requires having binutils installed and we immediately + # remove it once finished. + # base_binutils_rpm=${dst}/../RPMS/i386/rtems-base-binutils-${binutils}-${binutils_rpm_release}.i386.rpm + # binutils_rpm=${dst}/../RPMS/i386/${target}-binutils-${binutils}-${binutils_rpm_release}.i386.rpm + # if [ ! -f ${binutils_rpm} ] ; then + # echo There is no RPM for binutils for ${target}. + # echo Looked for ${binutils_rpm}. + # fi + # ${ECHO} rpm -i ${base_binutils_rpm} + # ${ECHO} rpm -i ${binutils_rpm} + + logfile=log/${target}-gnatnewlib + specfile=${dst}/${target}-gnat-${gnat}-newlib-${newlib}.spec + echo "rpm -ba ${specfile} >${logfile} 2>&1" + if [ ${testing} = no ] ; then + rpm -ba ${specfile} >${logfile} 2>&1 + fi + ${ECHO} rm -rf ${dst}/../BUILD/${target}-gcc* + ${ECHO} rm -rf ${buildroot}/opt/gnatrtems + + # echo uninstalling binutils for ${target} + # if [ ${testing} = no ] ; then + # rpm -e `rpm -qa | grep rtems` + # rm -rf /opt/gnatrtems/* + # fi + else + echo Skipping gcc/newlib for ${target} + fi + + # + # build gdb + # + + if [ ${do_gdb} = yes ] ; then + # now build gdb + logfile=log/${target}-gdb + specfile=${dst}/${target}-gnat-${gnat}-gdb-${gdb}.spec + echo "rpm -ba ${specfile} >${logfile} 2>&1" + if [ ${testing} = no ] ; then + rpm -ba ${specfile} >${logfile} 2>&1 + fi + ${ECHO} rm -rf ${dst}/../BUILD/${target}-gdb* + ${ECHO} rm -rf ${buildroot}/opt/gnatrtems + else + echo Skipping gdb for ${target} + fi + +done + +# Now we are done + +stop=`date` + +echo +echo "Started: " $start +echo "Finished: " $stop +exit 0 Index: setup =================================================================== --- setup (nonexistent) +++ setup (revision 1765) @@ -0,0 +1,104 @@ +#!/bin/bash + +CFG=setup.cache + +# RTEMS tools setup + +if test ! -f ./$CFG; +then + echo -n "restoring default setup.cache .." + cp ./setup.def ./$CFG + echo " done" +fi + +echo -n "loading setup from ./$CFG .." +. ./$CFG +echo " done" +echo + +menu_setup() +{ +while true; +do + echo + echo " GNAT/RTEMS Source packages setup" + echo + echo "0 binutils version : $binutils_version" + echo "1 binutils patch version : $binutils_patch_version" + echo "2 binutils rpm release : $binutils_rpm_release" + echo "3 gcc version : $gcc_version" + echo "4 gcc patch version : $gcc_patch_version" + echo "5 gnat version : $gnat_version" + echo "6 gnat patch version : $gnat_patch_version" + echo "7 newlib version : $newlib_version" + echo "8 newlib patch version : $newlib_patch_version" + echo "9 gnat/newlib rpm release : $gnatnewlib_rpm_release" + echo "a gdb version : $gdb_version" + echo "b gdb patch version : $gdb_patch_version" + echo "c gdb rpm release : $gdb_rpm_release" + echo "d rtems version : $rtems_version" + echo "e rtems rpm release : $rtems_rpm_release" + echo "f rpm build root : $rpm_build_root" + echo + + echo -n "[0-9a-f] or any other key to quit >" + read sel + case $sel in + 0) echo -n "BINUTILS source >" ; read binutils_version ;; + 1) echo -n "BINUTILS patch version >" ; read binutils_patch_version ;; + 2) echo -n "BINUTILS RPM release >" ; read binutils_rpm_release ;; + 3) echo -n "GCC source >" ; read gcc_version ;; + 4) echo -n "GCC patch version>" ; read gcc_patch_version ;; + 5) echo -n "GNAT source >" ; read gnat_version ;; + 6) echo -n "GNAT patch version>" ; read gnat_patch_version ;; + 7) echo -n "NEWLIB source >" ; read newlib_version ;; + 8) echo -n "NEWLIB patch version>" ; read newlib_patch_version ;; + 9) echo -n "GNAT/NEWLIB RPM release >" ; read gnatnewlib_rpm_release ;; + a) echo -n "GDB source >" ; read gdb_version ;; + b) echo -n "GDB patch version>" ; read gdb_patch_version ;; + c) echo -n "GDB RPM release >" ; read gdb_rpm_release ;; + d) echo -n "RTEMS source >" ; read rtems_version ;; + e) echo -n "RTEMS RPM release >" ; read rtems_rpm_release ;; + f) echo -n "RPM build root >" ; read rpm_build_root ;; + *) + return 0 ;; + esac +done +} + + +save_setup() +{ +echo -n "saving setup to $CFG .." + +echo "# RTEMS tools setup" > $CFG +echo "binutils_version=$binutils_version" >> $CFG +echo "binutils_patch_version=$binutils_patch_version" >> $CFG +echo "binutils_rpm_release=$binutils_rpm_release" >> $CFG +echo "newlib_version=$newlib_version" >> $CFG +echo "newlib_patch_version=$newlib_patch_version" >> $CFG +echo "gcc_version=$gcc_version" >> $CFG +echo "gcc_patch_version=$gcc_patch_version" >> $CFG +echo "gnat_version=$gnat_version" >> $CFG +echo "gnat_patch_version=$gnat_patch_version" >> $CFG +echo "gnatnewlib_rpm_release=$gnatnewlib_rpm_release" >> $CFG +echo "gdb_version=$gdb_version" >> $CFG +echo "gdb_patch_version=$gdb_patch_version" >> $CFG +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 " done" +test -f Makefile || ./configure +} + +menu_setup + +echo +echo -n "Save setup [y|n] >" +read sel +case $sel in +''|y*|Y*) save_setup ;; +*) ;; +esac
setup Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: mkgnatnewlibspec.in =================================================================== --- mkgnatnewlibspec.in (nonexistent) +++ mkgnatnewlibspec.in (revision 1765) @@ -0,0 +1,75 @@ +#!/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}/gnatnewlib/gnatnewlib.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}-gnat-${gnat_version}-newlib-${newlib_version}.spec + +sed -e "s%@Release@%${gnatnewlib_rpm_release}%g" \ + -e "s%@target_alias@%${target_alias}%g" \ + -e "s%@rpm_build_root@%${rpm_build_root}%g" \ + -e "s%@binutils_version@%${binutils_version}%g" \ + -e "s%@binutils_patch_version@%${binutils_patch_version}%g" \ + -e "s%@gcc_version@%${gcc_version}%g" \ + -e "s%@gcc_patch_version@%${gcc_patch_version}%g" \ + -e "s%@gnat_version@%${gnat_version}%g" \ + -e "s%@gnat_patch_version@%${gnat_patch_version}%g" \ + -e "s%@newlib_version@%${newlib_version}%g" \ + -e "s%@newlib_patch_version@%${newlib_patch_version}%g" \ + -e "s%@exe_ext@%${exe_ext}%g" \ +< ${specsrc} \ +> ${specfile} + +echo Generated ${specfile}. Index: mkgdbspec.in =================================================================== --- mkgdbspec.in (nonexistent) +++ mkgdbspec.in (revision 1765) @@ -0,0 +1,90 @@ +#!/bin/sh +# +# Usage: mkgdbspec 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 ; +} + +while test $# -ge 2; do +case $1 in +-cfg) + shift + CFG=$1 + shift + ;; +-o) + shift + dst=$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}-gnat-${gnat_version}-gdb-${gdb_version}.spec + +case ${target_alias} in + powerpc*) + extra_configure_arguments="--enable-sim --enable-sim-powerpc --enable-sim-timebase --enable-sim-hardware" + # Enabling this causes the program image to be huge and causes + # some gcc/hosts combinations to run out of memory. + # --enable-sim-inline + ;; + sparc*) + extra_configure_arguments="--enable-sim" + ;; + *) + ;; +esac + +sed -e "s%@Release@%${gdb_rpm_release}%g" \ + -e "s%@rpm_build_root@%${rpm_build_root}%g" \ + -e "s%@target_alias@%${target_alias}%g" \ + -e "s%@gdb_version@%${gdb_version}%g" \ + -e "s%@gdb_patch_version@%${gdb_patch_version}%g" \ + -e "s%@gnat_version@%${gnat_version}%g" \ + -e "s%@gnat_patch_version@%${gnat_patch_version}%g" \ + -e "s%@extra_configure_arguments@%${extra_configure_arguments}%g" \ + -e "s%@exe_ext@%${exe_ext}%g" \ +< ${RTEMS_DIR}/gdb/gdb.spec.in \ +> ${specfile} + +case ${target_alias} in + powerpc*) + echo "/opt/gnatrtems/bin/${target_alias}-run${exe_ext}" + ;; + sparc*) + echo "/opt/gnatrtems/bin/${target_alias}-run${exe_ext}" + echo "/opt/gnatrtems/bin/${target_alias}-sis${exe_ext}" + ;; + *) ;; +esac >> ${specfile} + +echo Generated ${specfile} Index: mkrpms =================================================================== --- mkrpms (nonexistent) +++ mkrpms (revision 1765) @@ -0,0 +1,32 @@ +#!/bin/sh + +# +# A simple shell script to build several rpms in a row. +# +# Used for testing rtems.spec.in +# + +# Some linux distributions use /usr/src/packages +# redhat uses /usr/src/redhat +# others might use /usr/src +if test -d /usr/src/packages/SPECS; +then +dst=/usr/src/packages/SPECS; +elif test -d /usr/src/redhat/SPECS; + then +dst=/usr/src/redhat/SPECS; +elif test -d /usr/src/SPECS/; +then +dst=/usr/src/SPECS; +fi + +./mkspec pc386 i386-rtems +rpm -ba $dst/rtems-i386-rtems-pc386.spec + +./mkspec gensh1 sh-rtemself +rpm -ba $dst/rtems-sh-rtemself-gensh1.spec + +./mkspec mcp750 powerpc-rtems +rpm -ba $dst/rtems-powerpc-rtems-mcp750.spec + + Index: missing =================================================================== --- missing (nonexistent) +++ missing (revision 1765) @@ -0,0 +1,190 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. +# Copyright (C) 1996, 1997 Free Software Foundation, Inc. +# Franc,ois Pinard , 1996. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +case "$1" in + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an +error status if there is no known handling for PROGRAM. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + +Supported PROGRAM values: + aclocal touch file \`aclocal.m4' + autoconf touch file \`configure' + autoheader touch file \`config.h.in' + automake touch all \`Makefile.in' files + bison create \`y.tab.[ch]', if possible, from existing .[ch] + flex create \`lex.yy.c', if possible, from existing .c + lex create \`lex.yy.c', if possible, from existing .c + makeinfo touch the output file + yacc create \`y.tab.[ch]', if possible, from existing .[ch]" + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing - GNU libit 0.0" + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + + aclocal) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`acinclude.m4' or \`configure.in'. You might want + to install the \`Automake' and \`Perl' packages. Grab them from + any GNU archive site." + touch aclocal.m4 + ;; + + autoconf) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`configure.in'. You might want to install the + \`Autoconf' and \`GNU m4' packages. Grab them from any GNU + archive site." + touch configure + ;; + + autoheader) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`acconfig.h' or \`configure.in'. You might want + to install the \`Autoconf' and \`GNU m4' packages. Grab them + from any GNU archive site." + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' configure.in` + test -z "$files" && files="config.h" + touch_files= + for f in $files; do + case "$f" in + *:*) touch_files="$touch_files "`echo "$f" | + sed -e 's/^[^:]*://' -e 's/:.*//'`;; + *) touch_files="$touch_files $f.in";; + esac + done + touch $touch_files + ;; + + automake) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`configure.in'. + You might want to install the \`Automake' and \`Perl' packages. + Grab them from any GNU archive site." + find . -type f -name Makefile.am -print | + sed 's/\.am$/.in/' | + while read f; do touch "$f"; done + ;; + + bison|yacc) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.y' file. You may need the \`Bison' package + in order for those modifications to take effect. You can get + \`Bison' from any GNU archive site." + rm -f y.tab.c y.tab.h + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if [ ! -f y.tab.h ]; then + echo >y.tab.h + fi + if [ ! -f y.tab.c ]; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex|flex) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.l' file. You may need the \`Flex' package + in order for those modifications to take effect. You can get + \`Flex' from any GNU archive site." + rm -f lex.yy.c + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if [ ! -f lex.yy.c ]; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + makeinfo) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.texi' or \`.texinfo' file, or any other file + indirectly affecting the aspect of the manual. The spurious + call might also be the consequence of using a buggy \`make' (AIX, + DU, IRIX). You might want to install the \`Texinfo' package or + the \`GNU make' package. Grab either from any GNU archive site." + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` + fi + touch $file + ;; + + *) + echo 1>&2 "\ +WARNING: \`$1' is needed, and you do not seem to have it handy on your + system. You might have modified some files without having the + proper tools for further handling them. Check the \`README' file, + it often tells you about the needed prerequirements for installing + this package. You may also peek at any GNU archive site, in case + some other package would contain this missing \`$1' program." + exit 1 + ;; +esac + +exit 0
missing Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: mkbinutilspec.in =================================================================== --- mkbinutilspec.in (nonexistent) +++ mkbinutilspec.in (revision 1765) @@ -0,0 +1,62 @@ +#!/bin/sh +# +# Usage: mkbinutilspec 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 ; +} + +while test $# -ge 2; do +case $1 in +-cfg) + shift + CFG=$1 + shift + ;; +-o) + shift + dst=$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}-gnat-${gnat_version}-binutils-${binutils_version}.spec + +sed -e "s%@Release@%${binutils_rpm_release}%g" \ + -e "s%@rpm_build_root@%${rpm_build_root}%g" \ + -e "s%@target_alias@%${target_alias}%g" \ + -e "s%@binutils_version@%${binutils_version}%g" \ + -e "s%@binutils_patch_version@%${binutils_patch_version}%g" \ + -e "s%@exe_ext@%${exe_ext}%g" \ +< ${RTEMS_DIR}/binutils/binutils.spec.in \ +> ${specfile} + +echo Generated ${specfile} Index: install-sh =================================================================== --- install-sh (nonexistent) +++ install-sh (revision 1765) @@ -0,0 +1,251 @@ +#!/bin/sh +# +# install - install a program, script, or datafile +# This comes from X11R5 (mit/util/scripts/install.sh). +# +# Copyright 1991 by the Massachusetts Institute of Technology +# +# Permission to use, copy, modify, distribute, and sell this software and its +# documentation for any purpose is hereby granted without fee, provided that +# the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation, and that the name of M.I.T. not be used in advertising or +# publicity pertaining to distribution of the software without specific, +# written prior permission. M.I.T. makes no representations about the +# suitability of this software for any purpose. It is provided "as is" +# without express or implied warranty. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +transformbasename="" +transform_arg="" +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd="" +chgrpcmd="" +stripcmd="" +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src="" +dst="" +dir_arg="" + +while [ x"$1" != x ]; do + case $1 in + -c) instcmd="$cpprog" + shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + -s) stripcmd="$stripprog" + shift + continue;; + + -t=*) transformarg=`echo $1 | sed 's/-t=//'` + shift + continue;; + + -b=*) transformbasename=`echo $1 | sed 's/-b=//'` + shift + continue;; + + *) if [ x"$src" = x ] + then + src=$1 + else + # this colon is to work around a 386BSD /bin/sh bug + : + dst=$1 + fi + shift + continue;; + esac +done + +if [ x"$src" = x ] +then + echo "install: no input file specified" + exit 1 +else + true +fi + +if [ x"$dir_arg" != x ]; then + dst=$src + src="" + + if [ -d $dst ]; then + instcmd=: + chmodcmd="" + else + instcmd=mkdir + fi +else + +# Waiting for this to be detected by the "$instcmd $src $dsttmp" command +# might cause directories to be created, which would be especially bad +# if $src (and thus $dsttmp) contains '*'. + + if [ -f $src -o -d $src ] + then + true + else + echo "install: $src does not exist" + exit 1 + fi + + if [ x"$dst" = x ] + then + echo "install: no destination specified" + exit 1 + else + true + fi + +# If destination is a directory, append the input filename; if your system +# does not like double slashes in filenames, you may need to add some logic + + if [ -d $dst ] + then + dst="$dst"/`basename $src` + else + true + fi +fi + +## this sed command emulates the dirname command +dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + +# Make sure that the destination directory exists. +# this part is taken from Noah Friedman's mkinstalldirs script + +# Skip lots of stat calls in the usual case. +if [ ! -d "$dstdir" ]; then +defaultIFS=' +' +IFS="${IFS-${defaultIFS}}" + +oIFS="${IFS}" +# Some sh's can't handle IFS=/ for some reason. +IFS='%' +set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` +IFS="${oIFS}" + +pathcomp='' + +while [ $# -ne 0 ] ; do + pathcomp="${pathcomp}${1}" + shift + + if [ ! -d "${pathcomp}" ] ; + then + $mkdirprog "${pathcomp}" + else + true + fi + + pathcomp="${pathcomp}/" +done +fi + +if [ x"$dir_arg" != x ] +then + $doit $instcmd $dst && + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi +else + +# If we're going to rename the final executable, determine the name now. + + if [ x"$transformarg" = x ] + then + dstfile=`basename $dst` + else + dstfile=`basename $dst $transformbasename | + sed $transformarg`$transformbasename + fi + +# don't allow the sed command to completely eliminate the filename + + if [ x"$dstfile" = x ] + then + dstfile=`basename $dst` + else + true + fi + +# Make a temp file name in the proper directory. + + dsttmp=$dstdir/#inst.$$# + +# Move or copy the file name to the temp name + + $doit $instcmd $src $dsttmp && + + trap "rm -f ${dsttmp}" 0 && + +# and set any options; do chmod last to preserve setuid bits + +# If any of these fail, we abort the whole thing. If we want to +# ignore errors from any of these, just make sure not to ignore +# errors from the above "$doit $instcmd $src $dsttmp" command. + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && + +# Now rename the file to the real destination. + + $doit $rmcmd -f $dstdir/$dstfile && + $doit $mvcmd $dsttmp $dstdir/$dstfile + +fi && + + +exit 0
install-sh Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: . =================================================================== --- . (nonexistent) +++ . (revision 1765)
. Property changes : Added: svn:ignore ## -0,0 +1,16 ## +Makefile +Makefile.in +aclocal.m4 +buildall +config.cache +config.guess +config.log +config.status +config.sub +configure +depcomp +mkbinutilspec +mkbspspec +mkgdbspec +mkgnatnewlibspec +setup.cache

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.