summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@oarcorp.com>2013-01-08 13:38:03 -0600
committerJoel Sherrill <joel.sherrill@oarcorp.com>2013-01-08 13:40:38 -0600
commit4659dc5af5dbf93b0a17f6f3705f93815c3bcdb3 (patch)
tree8d87eeb40eb7f4dc6777086c4356a6fd3b7b4d80 /gcc
parent96edb09bc3ee8cd663c7a3aabb29ab9f8a9d2b1e (diff)
gcc/do_one: Various rework
+ Separate secondary language options + Remove support for unarchiving gdb and binutils RPMs + Rework argument checking for native/cross + Add -B n for controlling number of parallel jobs Now assume that if gcc support libraries like mpc, mpfr, isl, etc are needed, they will be symbolically linked into the gcc source tree.
Diffstat (limited to 'gcc')
-rwxr-xr-xgcc/do_one400
1 files changed, 176 insertions, 224 deletions
diff --git a/gcc/do_one b/gcc/do_one
index 459215c..87b9735 100755
--- a/gcc/do_one
+++ b/gcc/do_one
@@ -31,12 +31,10 @@ source ${vfile}
######################## Set defaults #############################
# Remove Build Directories
do_cleanup=no
-# Install Binutils (from rpm or source)
+# Install Binutils
do_binutils=no
- do_binutils_method=source
-# Install GDB (from rpm or source)
+# Install GDB
do_gdb=no
- do_gdb_method=source
# Build the native compiler?
do_native=no
do_native_ada=yes
@@ -57,7 +55,7 @@ do_gccgo=no
do_gcj=no
do_gcj_multilib=yes
# Build the GCC FORTRAN language cross compiler.
-do_fortran=yes
+do_fortran=no
do_fortran_multilib=yes
# Build RTEMS for a particular CPU/BSP combination
do_rtems=no
@@ -79,32 +77,39 @@ usage()
{
cat <<EOF
do_one [options] CPU BSP
- -A - binutils, stage 1, C++, C/C++ multilib, Ada, GCC Go, ObjC, RTEMS
- -T - run GCC, Ada, GCC Go, and ObjC tests
- -A - binutils, stage 1, C++, C/C++ multilib, Ada, GCC Go, GCJ, RTEMS
- -T - run GCC, Ada, GCC Go and GCJ tests
- -b - install binutils (from source or copy installed RPM contents)
- -D - install gdb (from source or copy installed RPM contents)
- -n - native compiler
- -1 - stage 1 C/C++ compiler
- -c - do not include C++
- -m - do not build multilib
- -a - stage 2 Ada compiler
- -G - stage 2 GCC Go compiler
- -J - stage 2 GCC Java compiler
- -f - stage 2 GCC FORTRAN compiler
- -F - run FORTRAN tests
- -r - build RTEMS
- -g - run GCC C/C++ tests
- -C - run ACATS
- -d - do not clean up (delete build directories) (default=no)
- -v - verbose
- -M - do NOT email test results to gcc-testresults
- -O - Build Objective-C
- -P - Run Objective-C Tests
- -o - run GCC Go tests
- -t - run libgo tests
- -j - run libjava tests
+ -A - binutils, stage 1, C++, C/C++ multilib, RTEMS
+ -S - enable secondary languages of Ada, GCC Go, ObjC, FORTRAN
+ -T - run GCC tests for languages enabled
+ -B n - build jobs in parallel (e.g. make -j N)
+ -n - native compiler
+ -d - do not clean up (delete build directories) (default=no)
+ -M - do NOT email test results to gcc-testresults
+ -v - verbose
+
+ Cross Compilation Options (Base and Primary Languages)
+ ======================================================
+ -b - install binutils
+ -D - install gdb
+ -1 - stage 1 C/C++ compiler
+ -c - do not include C++
+ -m - do not build multilib
+ -r - build RTEMS
+ -g - run GCC C/C++ tests
+
+
+ Cross Compilation Options (Secondary Languages)
+ ===============================================
+ -a - enable stage 2 Ada compiler
+ -G - enable stage 2 GCC Go compiler
+ -J - enable stage 2 GCC Java compiler
+ -f - enable stage 2 GCC FORTRAN compiler
+ -F - run FORTRAN tests
+ -C - run ACATS
+ -O - Build Objective-C
+ -P - Run Objective-C Tests
+ -o - run GCC Go tests
+ -t - run libgo tests
+ -j - run libjava tests
EOF
}
@@ -123,7 +128,7 @@ toggle()
esac
}
-while getopts bdDnv1cmargiotCfFAJTMGOP OPT
+while getopts bdDnv1cmargiotB:CfFAJTMGOPS OPT
do
case "$OPT" in
A) do_binutils="yes"
@@ -131,21 +136,24 @@ do
do_stage1="yes"
do_cxx="yes"
do_multilib="yes"
+ do_rtems="yes"
+ ;;
+ S) # Secondary languages need to be explicitly turned on
do_ada="yes"
do_gccgo="yes"
do_gcj="yes"
do_objc="yes"
do_fortran="yes"
- do_rtems="yes"
;;
+ B) MAKEJOBS="-j$OPTARG" ;;
d) do_cleanup=`toggle ${do_cleanup}` ;;
D) do_gdb=`toggle ${do_gdb}` ;;
T) run_gcctests="yes"
run_objctests="yes"
run_acats="yes"
run_gccgotests="yes"
+ run_fortrantests="yes"
;;
- # unrpm binutils
b) do_binutils=`toggle ${do_binutils}` ;;
# Build the native
n) do_native=`toggle ${do_native}` ;;
@@ -176,68 +184,114 @@ do
done
run_libgotests=$run_gccgotests
-########################### Grab CPU/BSP ###########################
+########################### Grab CPU/BSP ###########################
shiftcount=`expr $OPTIND - 1`
shift $shiftcount
-
cpu=${1}
bsp=${2}
-# Which CPUs do not support C++
-if [ ${do_cxx} = "yes" ] ; then
- case ${cpu} in
- avr|h8300|m32c)
- do_cxx=no
- echo ${cpu} does not support C++
- ;;
- *);;
- esac
-fi
+needBSP=no
+needCPU=no
-# Which CPUs do not support Ada
-if [ ${do_ada} = "yes" ] ; then
- case ${cpu} in
- avr|h8300|m32c|sh)
- do_ada=no
- run_acats=no
- echo ${cpu} does not support Ada
- ;;
- *);;
- esac
-fi
+# If native or cross, check things differently
+if [ ${do_native} = yes ] ; then
+ if [ ${do_gccgo} = yes ] ; then
+ echo "Warning! Go requires native C++ to build."
+ do_cxx=yes
+ fi
-# Which CPUs do not support Go
-if [ ${do_gccgo} = "yes" ] ; then
- case ${cpu} in
- avr|h8300|m32c)
- do_gccgo=no
- echo ${cpu} does not support Go
- ;;
- *);;
- esac
-fi
+ if [ ${do_gcj} = yes ] ; then
+ echo "Warning! GCJ requires native C++ to build."
+ do_cxx=yes
+ fi
+else # NOT NATIVE - build for RTEMS
+ # Should the user have specified a CPU and/or BSP?
+ if [ ${do_binutils} = yes -o ${do_gdb} = yes -o \
+ ${do_stage1} = yes -o ${do_ada} = yes -o \
+ ${do_gccgo} = yes -o ${do_gcj} = yes -o \
+ ${do_fortran} = yes ] ; then
+ needCPU=yes
+ fi
-# Which CPUs do not support GCJ
-if [ ${do_gcj} = "yes" ] ; then
- case ${cpu} in
- avr|h8300|m32c)
- do_gcj=no
- echo ${cpu} does not support GCJ
- ;;
- *);;
- esac
-fi
+ if [ ${do_rtems} = yes -o ${run_gcctests} = yes -o \
+ ${run_acats} = yes -o ${run_gccgotests} = yes -o \
+ ${run_libjavatests} = yes ] ; then
+ needBSP=yes
+ needCPU=yes
+ if [ x${bsp} = x ] ; then
+ echo "BSP NOT SET"
+ fatal
+ fi
+ fi
-# Which CPUs do not support FORTRAN
-if [ ${do_fortran} = "yes" ] ; then
- case ${cpu} in
- arm|i386|m68k|mips|powerpc|sparc) ;;
- *)
- do_fortran=no
- echo ${cpu} does not support Ada
- ;;
- esac
+ if [ ${needCPU} = yes -a x${cpu} = x ] ; then
+ echo "CPU NOT SET"
+ fatal
+ fi
+
+ if [ ${needBSP} = yes -a x${bsp} = x ] ; then
+ echo "BSP NOT SET"
+ fatal
+ fi
+
+ TARGET=${cpu}-rtems${RTEMS_VERSION}
+
+ # Which CPUs do not support C++
+ if [ ${do_cxx} = "yes" ] ; then
+ case ${cpu} in
+ avr|h8300|m32c)
+ do_cxx=no
+ echo ${cpu} does not support C++
+ ;;
+ *);;
+ esac
+ fi
+
+ # Which CPUs do not support Ada
+ if [ ${do_ada} = "yes" ] ; then
+ case ${cpu} in
+ avr|h8300|m32c|sh)
+ do_ada=no
+ run_acats=no
+ echo ${cpu} does not support Ada
+ ;;
+ *);;
+ esac
+ fi
+
+ # Which CPUs do not support Go
+ if [ ${do_gccgo} = "yes" ] ; then
+ case ${cpu} in
+ avr|h8300|m32c)
+ do_gccgo=no
+ echo ${cpu} does not support Go
+ ;;
+ *);;
+ esac
+ fi
+
+ # Which CPUs do not support GCJ
+ if [ ${do_gcj} = "yes" ] ; then
+ case ${cpu} in
+ avr|h8300|m32c)
+ do_gcj=no
+ echo ${cpu} does not support GCJ
+ ;;
+ *);;
+ esac
+ fi
+
+ # Which CPUs do not support FORTRAN
+ if [ ${do_fortran} = "yes" ] ; then
+ case ${cpu} in
+ arm|i386|m68k|mips|powerpc|sparc) ;;
+ *)
+ do_fortran=no
+ echo ${cpu} does not support Ada
+ ;;
+ esac
+ fi
fi
# When verbose, print settings
@@ -246,6 +300,7 @@ if [ ${verbose} = yes ] ; then
echo "BSP : " ${bsp}
echo "Binutils : " ${do_binutils}
echo "GDB : " ${do_gdb}
+ echo "Make Jobs : " ${MAKEJOBS}
echo "Build Native : " ${do_native}
echo "Build Stage 1 : " ${do_stage1}
echo " C++ : " ${do_cxx}
@@ -273,50 +328,6 @@ if [ ${verbose} = yes ] ; then
echo "Clean up : " ${do_cleanup}
fi
-# Should the user have specified a CPU and/or BSP?
-needBSP=no
-needCPU=no
-
-if [ ${do_binutils} = yes -o ${do_gdb} = yes -o \
- ${do_stage1} = yes -o ${do_ada} = yes -o \
- ${do_gccgo} = yes -o ${do_gcj} = yes -o \
- ${do_fortran} = yes ] ; then
- needCPU=yes
-fi
-
-if [ ${do_native} = yes -a ${do_gccgo} = yes ] ; then
- echo "Warning! Go requires native C++ to build."
- do_cxx=yes
-fi
-
-if [ ${do_native} = yes -a ${do_gcj} = yes ] ; then
- echo "Warning! GCJ requires native C++ to build."
- do_cxx=yes
-fi
-
-if [ ${do_rtems} = yes -o ${run_gcctests} = yes -o \
- ${run_acats} = yes -o ${run_gccgotests} = yes -o \
- ${run_libjavatests} = yes ] ; then
- needBSP=yes
- needCPU=yes
- if [ x${bsp} = x ] ; then
- echo "BSP NOT SET"
- fatal
- fi
-fi
-
-if [ ${needCPU} = yes -a x${cpu} = x ] ; then
- echo "CPU NOT SET"
- fatal
-fi
-
-if [ ${needBSP} = yes -a x${bsp} = x ] ; then
- echo "BSP NOT SET"
- fatal
-fi
-
-TARGET=${cpu}-rtems${RTEMS_VERSION}
-
# Do we accept an alternate name for the BSP?
if [ x${bsp} = xqemu ] ; then
BSP_BUILT=pc386
@@ -325,7 +336,6 @@ else
fi
######### Consistency check installation of source
-
if [ ! -d ${GCCDIR}/newlib ] ; then
echo "${GCCDIR}/newlib not present"
exit 1
@@ -393,51 +403,22 @@ j_binutils()
cd ${INSTALL}/..
- case ${do_binutils_method} in
- rpm)
- if [ ! -r /opt/rtems-${RTEMS_VERSION}/bin/${TARGET}-as ] ; then
- echo "Binutils RPMs not installed"
- exit 0
- fi
-
- echo "Extracting binutils from installed RPMs"
- DIR=`pwd`
- mkdir tmp-unrpm
- cd tmp-unrpm
- cd /
- for cpu in $*
- do
- pkg=`rpm -qf /opt/rtems-${RTEMS_VERSION}/bin/${TARGET}-as`
- rpm -ql $pkg | cpio -pvdum ${DIR}/tmp-unrpm
- done
- cd ${DIR}/tmp-unrpm/opt/rtems-${RTEMS_VERSION}
- find . | cpio -pdum ${INSTALL}
- cd ${DIR}
- rm -rf tmp-unrpm
- ;;
- source)
- echo "Building Binutils from source"
- rm -rf ${BUILDDIR}/b-${cpu}-binutils
- mkdir ${BUILDDIR}/b-${cpu}-binutils
- cd ${BUILDDIR}/b-${cpu}-binutils
- (${BINUTILSDIR}/configure --target=${TARGET} --prefix=$INSTALL \
- --disable-werror && \
- make ${MAKEJOBS} && make install) >${LOGDIR}/${cpu}-binutils.log 2>&1
- if [ $? -ne 0 ] ; then
- echo "Failed to build Binutils from source"
- exit 1
- fi
- echo "Checking Binutils "
- make check >${LOGDIR}/${cpu}-binutils-check.log 2>&1
- grep ^FAIL ${LOGDIR}/${cpu}-binutils-check.log
- cd ..
- test ${do_cleanup} = "yes" && rm -rf ${BUILDDIR}/b-${cpu}-binutils
- ;;
- *)
- echo "Where do I get the binutils from?"
- exit 1
- ;;
- esac
+ echo "Building Binutils from source"
+ rm -rf ${BUILDDIR}/b-${cpu}-binutils
+ mkdir ${BUILDDIR}/b-${cpu}-binutils
+ cd ${BUILDDIR}/b-${cpu}-binutils
+ (${BINUTILSDIR}/configure --target=${TARGET} --prefix=$INSTALL \
+ --disable-werror && \
+ make ${MAKEJOBS} && make install) >${LOGDIR}/${cpu}-binutils.log 2>&1
+ if [ $? -ne 0 ] ; then
+ echo "Failed to build Binutils from source"
+ exit 1
+ fi
+ echo "Checking Binutils "
+ make check >${LOGDIR}/${cpu}-binutils-check.log 2>&1
+ grep ^FAIL ${LOGDIR}/${cpu}-binutils-check.log
+ cd ..
+ test ${do_cleanup} = "yes" && rm -rf ${BUILDDIR}/b-${cpu}-binutils
}
if [ ${do_binutils} = yes ] ; then
@@ -457,51 +438,22 @@ j_gdb()
*) GDBTARGET=${TARGET} ;;
esac
- case ${do_gdb_method} in
- rpm)
- if [ ! -r /opt/rtems-${RTEMS_VERSION}/bin/${GDBTARGET}-gdb ] ; then
- echo "Binutils RPMs not installed"
- exit 0
- fi
-
- echo "Extracting gdb from installed RPMs"
- DIR=`pwd`
- mkdir tmp-unrpm
- cd tmp-unrpm
- cd /
- for cpu in $*
- do
- pkg=`rpm -qf /opt/rtems-${RTEMS_VERSION}/bin/${GDBTARGET}-gdb`
- rpm -ql $pkg | cpio -pvdum ${DIR}/tmp-unrpm
- done
- cd ${DIR}/tmp-unrpm/opt/rtems-${RTEMS_VERSION}
- find . | cpio -pdum ${INSTALL}
- cd ${DIR}
- rm -rf tmp-unrpm
- ;;
- source)
- echo "Building GDB from source"
- cd ${BASEDIR}
- rm -rf ${BUILDDIR}/b-${cpu}-gdb
- mkdir ${BUILDDIR}/b-${cpu}-gdb
- cd ${BUILDDIR}/b-${cpu}-gdb
- (${GDBDIR}/configure --target=${GDBTARGET} \
- --enable-sim --enable-sim-hardware \
- --disable-werror \
- --enable-timebase --enable-sim-trace --prefix=$INSTALL && \
- make ${MAKEJOBS} && make install) >${LOGDIR}/${cpu}-gdb.log 2>&1
- if [ $? -ne 0 ] ; then
- echo "Failed to build gdb from source"
- exit 1
- fi
- cd ..
- test ${do_cleanup} = "yes" && rm -rf ${BUILDDIR}/b-${cpu}-gdb
- ;;
- *)
- echo "Where do I get the gdb from?"
- exit 1
- ;;
- esac
+ echo "Building GDB from source"
+ cd ${BASEDIR}
+ rm -rf ${BUILDDIR}/b-${cpu}-gdb
+ mkdir ${BUILDDIR}/b-${cpu}-gdb
+ cd ${BUILDDIR}/b-${cpu}-gdb
+ (${GDBDIR}/configure --target=${GDBTARGET} \
+ --enable-sim --enable-sim-hardware \
+ --disable-werror \
+ --enable-timebase --enable-sim-trace --prefix=$INSTALL && \
+ make ${MAKEJOBS} && make install) >${LOGDIR}/${cpu}-gdb.log 2>&1
+ if [ $? -ne 0 ] ; then
+ echo "Failed to build gdb from source"
+ exit 1
+ fi
+ cd ..
+ test ${do_cleanup} = "yes" && rm -rf ${BUILDDIR}/b-${cpu}-gdb
}
if [ ${do_gdb} = yes ] ; then
@@ -573,9 +525,9 @@ j_gcc()
${GCCDIR}/configure \
${GCC_EXTRA_ARGS} \
--disable-werror \
- --enable-threads=rtems --with-gnu-as ${multilib} \
- --enable-newlib-mb --enable-newlib-iconv \
- --with-gnu-ld --with-newlib --verbose --with-system-zlib --disable-nls \
+ --enable-threads=rtems --with-gnu-as ${multilib} \
+ --enable-newlib-mb --enable-newlib-iconv \
+ --with-gnu-ld --with-newlib --verbose --with-system-zlib --disable-nls \
--enable-version-specific-runtime-libs \
--enable-languages=c${cxx} --target=$TARGET --prefix=$INSTALL
if [ $? -ne 0 ] ; then