From 08f224b0d041902be56c1ac251c0c37e8881e9ad Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Tue, 22 Jan 2002 15:38:43 +0000 Subject: 2001-01-22 Joel Sherrill * buildalltar.in: Modified to support Canadian cross builds. It was testing using a RedHat 7.2 host to build *-rtems tools that run on an i386-cygwin host. --- scripts/buildalltar.in | 239 +++++++++++++++++++++++++++++-------------------- 1 file changed, 143 insertions(+), 96 deletions(-) (limited to 'scripts/buildalltar.in') diff --git a/scripts/buildalltar.in b/scripts/buildalltar.in index f72c7fd1c1..5ee08a7307 100644 --- a/scripts/buildalltar.in +++ b/scripts/buildalltar.in @@ -17,16 +17,35 @@ usage() echo " -b -- build binutils" echo " -g -- build gcc/newlib" echo " -d -- build gdb" + echo " -C HOST -- build canadian cross for HOST " echo " -t -- enable test/debug mode" echo " -cfg " echo " -o " exit 1 ; } +# +# Checks the status returned by executables and exits if it is non-zero. +# +check_fatal() +{ + if [ $1 -ne 0 ] ; then + shift + echo "ERROR: $*" >&2 + exit 1 + fi + #echo + #echo "End of $*" + #echo -n "Press return to continue> " + #echo + #read line +} + testing=no do_binutils=no do_gccnewlib=no do_gdb=no +cdn_cross=no while test $# -ge 1; do case $1 in @@ -46,6 +65,18 @@ while test $# -ge 1; do dst=$1 shift ;; + -C) + test $# -ge 2 || usage + shift + build=$1 + shift + if ! test -x ${RTEMS_DIR}/../config.guess ; then + echo "Missing ${RTEMS_DIR}/../config.guess!" + exit 1 + fi + CDN_ARGS="--build=`${RTEMS_DIR}/../config.guess` --host=${build}" + cdn_cross=yes + ;; -*) echo "invalid option $1"; usage @@ -130,38 +161,54 @@ fi cd ${dst} test -d log || mkdir log +if [ "X${rpm_build_root}" = "X" ] ; then + echo rpm_build_root NOT set! + exit 1 +fi + +CWD=`pwd` +test -d tarballs || mkdir tarballs + +OUT=${CWD}/tarballs + # do all the tools for target in ${TARGETS} do - bintarfile=${PWD}/${target}-binutils-${binutils}-${binutils_rpm_release}.tar + bintarfile=${OUT}/${target}-binutils-${binutils}-${binutils_rpm_release}.tar if [ ${do_binutils} = yes ] ; then - # this part is for RPMS - 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* - - + logfile=${CWD}/log/${target}-binutils # this part is for tar.bz2 - PWD=`pwd` - mkdir b-${target} - cd b-${target} - ../binutils-${binutils}/configure --target=${target} \ - --verbose --prefix=/opt/rtems - make all - make info - make prefix=${rpm_build_root}/opt/rtems install - make prefix=${rpm_build_root}/opt/rtems install-info + cd ${CWD} + if [ ! -d binutils-${binutils} ] ; then + echo Could not find binutils-${binutils}! + exit 1 + fi + rm -rf b-${target}-bin + mkdir b-${target}-bin + cd b-${target}-bin + echo "Building binutils-${binutils} for ${target}" + ../binutils-${binutils}/configure ${CDN_ARGS} --target=${target} \ + --verbose --prefix=/opt/rtems >${logfile} 2>&1 + check_fatal $? "binutils configure" + + make all >>${logfile} 2>&1 + check_fatal $? "make all" + + make info >>${logfile} 2>&1 + check_fatal $? "make info" + + make prefix=${rpm_build_root}/opt/rtems install >>${logfile} 2>&1 + check_fatal $? "make install" + + make prefix=${rpm_build_root}/opt/rtems install-info >>${logfile} 2>&1 + check_fatal $? "make install-info" + cd ${buildroot} - tar cf ${PWD}/${target}-binutils-${binutils}-${binutils_rpm_release}.tar opt - cd ${PWD} - bzip2 -9 ${target}-binutils-${binutils}.tar + tar cjf ${bintarfile}.bz2 opt + cd ${CWD} + rm -rf b-${target}-bin ${ECHO} rm -rf ${rpm_build_root}/opt - rm -rf ${rpm_build_root}/opt/rtems - rm -rf b-${target} + #rm -rf ${rpm_build_root}/opt else echo Skipping binutils for ${target} fi @@ -171,62 +218,55 @@ do # if [ ${do_gccnewlib} = yes ] ; then + logfile=${CWD}/log/${target}-gccnewlib # 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 - # this part is for tar.bz2 - PWD=`pwd` - - gcctarfile=${PWD}/${target}-gcc-${gcc}-newlib-${newlib}-${gccnewlib_rpm_release}.tar - bintarfile=${dst}/binaries/binutils-${binutils}-${binutils_rpm_release}/${target}-binutils-${binutils}-${binutils_rpm_release}.tar - cd / - rm -rf /opt/* - bzcat ${bintarfile}.bz2 | tar xf - - - cd ${PWD} - rm -rf b-${target} - mkdir b-${target} - cd b-${target} - ../gcc-${gcc}/configure --target=${target} \ - --with-gnu-as --with-gnu-ld --with-newlib --verbose \ - --enable-threads --prefix=/opt/rtems '--enable-languages=c,c++' - make all - make info - make prefix=${rpm_build_root}/opt/rtems install - make prefix=${rpm_build_root}/opt/rtems install-info + + gcctarfile=${OUT}/${target}-gcc-${gcc}-newlib-${newlib}-${gccnewlib_rpm_release}.tar + if [ ${cdn_cross} = "no" ] ; then + bintarfile=${dst}/binaries/binutils-${binutils}-${binutils_rpm_release}/${target}-binutils-${binutils}-${binutils_rpm_release}.tar + cd / + rm -rf /opt/* + tar xjf ${bintarfile}.bz2 + fi + + cd ${CWD} + if [ ! -d gcc-${gcc} ] ; then + echo Could not find gcc-${gcc}! + exit 1 + fi + if [ ! -d gcc-${gcc}/newlib ] ; then + echo Could not find gcc-${gcc}/newlib! + exit 1 + fi + rm -rf b-${target}-gccnewlib + mkdir b-${target}-gccnewlib + cd b-${target}-gccnewlib + echo "Building gcc-${gcc} for ${target}" + ../gcc-${gcc}/configure ${CDN_ARGS} --target=${target} \ + --with-gnu-as --with-gnu-ld --with-newlib --verbose --enable-threads \ + --prefix=/opt/rtems '--enable-languages=c,c++' >${logfile} 2>&1 + check_fatal $? "gcc configure" + + make all >>${logfile} 2>&1 + check_fatal $? "make all" + + make info >>${logfile} 2>&1 + check_fatal $? "make info" + + make prefix=${rpm_build_root}/opt/rtems install >>${logfile} 2>&1 + check_fatal $? "make install" + cd ${target}/newlib - make prefix=${rpm_build_root}/opt/rtems install-info + make prefix=${rpm_build_root}/opt/rtems install-info >>${logfile} 2>&1 + check_fatal $? "newlib make install-info" + cd ${buildroot} - tar cf ${gcctarfile} opt - cd ${PWD} - bzip2 -9 ${gcctarfile} + tar cjf ${gcctarfile}.bz2 opt + cd ${CWD} rm -rf ${rpm_build_root}/opt rm -rf ${rpm_build_root}/opt/rtems - rm -rf b-${target} + rm -rf b-${target}-gccnewlib else echo Skipping gcc/newlib for ${target} fi @@ -237,20 +277,17 @@ do 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 + gdbtarfile=${OUT}/${target}-gdb-${gdb}-${gdb_rpm_release}.tar + logfile=${CWD}/log/${target}-gdb # this part is for tar.bz2 - PWD=`pwd` - mkdir b-${target} - cd b-${target} + if [ ! -d gdb-${gdb} ] ; then + echo Could not find gdb-${gdb}! + exit 1 + fi + mkdir b-${target}-gdb + cd b-${target}-gdb case ${target} in arm* | d10v* | d30v* | erc32* | fr30* | h8300* | h8500* | i960* | \ m32r* | mcore* | mips* | mn10200* | mn10300* | sh* | sparc*| v850* | \ @@ -266,19 +303,29 @@ do *) ;; esac - ../gdb-${gdb}/configure --target=${target} \ - ${extra_configure_arguments} --verbose --prefix=/opt/rtems - make all - make info - make prefix=${rpm_build_root}/opt/rtems install - make prefix=${rpm_build_root}/opt/rtems install-info + echo "Building gdb-${gdb}/configure ${CDN_ARGS} --target=${target}" + ../gdb-${gdb}/configure ${CDN_ARGS} --target=${target} \ + ${extra_configure_arguments} --verbose --prefix=/opt/rtems >${logfile} 2>&1 + check_fatal $? "make info" + + make all >>${logfile} 2>&1 + check_fatal $? "make all" + + make info >>${logfile} 2>&1 + check_fatal $? "make info" + + make prefix=${rpm_build_root}/opt/rtems install >>${logfile} 2>&1 + check_fatal $? "make install" + + make prefix=${rpm_build_root}/opt/rtems install-info >>${logfile} 2>&1 + check_fatal $? "make install-info" + cd ${buildroot} - tar cf ${PWD}/${target}-gdb-${gdb}-${gdb_rpm_release}.tar opt - cd ${PWD} - bzip2 -9 ${target}-gdb-${gdb}.tar + tar cjf ${gdbtarfile}.bz2 opt + cd ${CWD} ${ECHO} rm -rf ${rpm_build_root}/opt rm -rf ${rpm_build_root}/opt/rtems - rm -rf b-${target} + rm -rf b-${target}-gdb else echo Skipping gdb for ${target} fi -- cgit v1.2.3