summaryrefslogblamecommitdiffstats
path: root/scripts/buildall.in
blob: 81df764d042deacf0bdb8391d9ddcc3be6b3dd76 (plain) (tree)
1
2
3
4
5
6
7





                                                               
                 





                                    
                               




































                                                              
                                                         

  
      





                               
              
 
          


                






















                                                              
                         

                             

                         





                                      



                                                              

                                  
















                                                       
                                         



                                        


                     




                                                                         
                                                                                                          




                                                                                                    
                                       








                                                              
                                         



                                             
                         



                                          













                                                 
                                         



                                   









                        
#! /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] <target_alias>"
  echo "  options:"
  echo "    -cfg <setup.cache>"
  echo "    -o <rpm-spec-dir>"
  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}
gdb=${gdb_version}
newlib=${newlib_version}
# also use binutils_rpm_release
buildroot=/tmp

testing=no
do_binutils=yes
do_gccnewlib=yes
do_gdb=yes

#
#  Now get started
#
start=`date`

echo PATH=$PATH

if [ ${testing} = yes ] ; then
  ECHO=echo
fi

installed_count=`rpm -qa | grep rtems | 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}-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/rtems
  else
    echo Skipping binutils for ${target}
  fi

  #
  #  build gcc/newlib
  #

  if [ ${do_gccnewlib} = 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}-gccnewlib
    specfile=${dst}/${target}-gcc-${gcc}-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/rtems

    echo uninstalling binutils for ${target} 
    if [ ${testing} = no ] ; then
      rpm -e `rpm -qa | grep rtems`
      rm -rf /opt/rtems/*
    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}-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/rtems
  else
    echo Skipping gdb for ${target}
  fi

done

# Now we are done

stop=`date`

echo
echo "Started:  " $start
echo "Finished: " $stop
exit 0