summaryrefslogblamecommitdiffstats
path: root/scripts/buildall.in
blob: cac75f6d4e4f9231660b4ad3bdc05751c7aeae27 (plain) (tree)
1
2
3
4
5
6
7
8
9
10





                                                               
                 
                  

                 




                                    



                                                          
                               



                              




               

                       



                                   






















                               





                                                                            







                                                              
                                                         

  
      





                               
              
 










                              
                                         









                                                              
                         

                             

                         





                                      



                                                              

                                  
















                                                       
                                         



                                        


                     




                                                                         

                                                                                                                      



                                                      
                                       








                                                              
                                         



                                             
                         



                                          













                                                 
                                         



                                   









                        
#! /bin/sh
#
#  Generate all the specs and then cycle through building them.
#

RTEMS_DIR=`dirname $0`
CFG=./setup.cache
dst=@RPM_SPECSdir@
target=@target@
rpm_cpu=@RPM_CPU@

usage()
{
  echo "$0 [options] <target_alias>"
  echo "  options:"
  echo "    -b                  -- build binutils"
  echo "    -g                  -- build gcc/newlib"
  echo "    -d                  -- build gdb"
  echo "    -t                  -- enable test/debug mode"
  echo "    -cfg <setup.cache>"
  echo "    -o <rpm-spec-dir>"
  exit 1 ;
}

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

while test $# -ge 1; do
  case $1 in
    -b) do_binutils=yes  ; shift;;
    -g) do_gccnewlib=yes ; shift;; 
    -d) do_gdb=yes       ; shift;; 
    -t) do_test=yes      ; shift;; 
    -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

if test ${do_binutils} = no -a ${do_gccnewlib} = no -a ${do_gdb} = no ; then
  echo "You must request building binutils, gcc/newlib, or gdb."
  usage
fi


# 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

#
#  Now get started
#
start=`date`

echo PATH=$PATH

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

installed_count=`rpm -q -g 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/${rpm_cpu}/rtems-base-binutils-${binutils}-${binutils_rpm_release}.${rpm_cpu}.rpm
    binutils_rpm=${dst}/../RPMS/${rpm_cpu}/${target}-binutils-${binutils}-${binutils_rpm_release}.${rpm_cpu}.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