X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=contrib%2Fgcc_build;h=6713066d7ce89f799b3b4d923afcfc4f15c6b7c0;hb=a995daf5e646e9b465f1d06686a8006d5696e5ed;hp=a5bf8649c92a98034c1f7b35c969e9bcab1b479b;hpb=275d96ed69ea00d499d81a503da76d77fd4b5365;p=pf3gnuchains%2Fgcc-fork.git diff --git a/contrib/gcc_build b/contrib/gcc_build index a5bf8649c92..6713066d7ce 100755 --- a/contrib/gcc_build +++ b/contrib/gcc_build @@ -2,31 +2,33 @@ ######################################################################## # -# File: build-gcc.sh +# File: gcc_build # Author: Mark Mitchell -# Date: 07/10/2000 +# Date: 2000-07-10 +# +# Adapted to Subversion by Ben Elliston , 2005-07-14. # # Contents: # Script to automatically download and build GCC. # -# Copyright (c) 2000 Free Software Foundation. +# Copyright (c) 2000, 2001, 2003, 2005 Free Software Foundation. # -# This file is part of GNU CC. +# This file is part of GCC. # -# GNU CC is free software; you can redistribute it and/or modify +# GCC 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) +# the Free Software Foundation; either version 3, or (at your option) # any later version. # -# GNU CC is distributed in the hope that it will be useful, +# GCC 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 GNU CC; see the file COPYING. If not, write to -# the Free Software Foundation, 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. +# along with GCC; see the file COPYING. If not, write to +# the Free Software Foundation, 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. # ######################################################################## @@ -34,8 +36,11 @@ # Notes ######################################################################## -# If you are using password-based CVS, you must manually log in, and -# not log out from, the CVS server before running this script. +# You can set the following variables in the environment. They +# have no corresponding command-line options because they should +# only be needed infrequently: +# +# MAKE The path to `make'. ######################################################################## # Functions @@ -45,7 +50,7 @@ # exit code. error() { - echo "build-gcc.sh: error: $1" + echo "gcc_build: error: $1" exit 1 } @@ -53,14 +58,19 @@ error() { usage() { cat <&1 || \ + echo "Configuring: ${DESTINATION}/configure ${CONFIGURE_OPTIONS}" + eval ${DESTINATION}/configure ${CONFIGURE_OPTIONS} || \ error "Could not configure the compiler" +} + +# Bootstrap GCC. Assume configuration has already occurred. + +bootstrap_gcc() { + # Go to the source directory. + changedir ${DESTINATION} + # Go to the object directory. + changedir ${OBJDIR} # Bootstrap the compiler - (eval make ${MAKE_OPTIONS} bootstrap | - tee -a ${LOGFILE}) 2>&1 || \ - error "Could not build the compiler" + echo "Building: ${MAKE} ${MAKE_BOOTSTRAP_OPTIONS} bootstrap" + eval ${MAKE} ${MAKE_BOOTSTRAP_OPTIONS} bootstrap || \ + error "Could not bootstrap the compiler" } # Test GCC. @@ -156,8 +159,8 @@ test_gcc() { changedir ${OBJDIR} echo "Running tests... This will take a while." - (make -k check | tee -a ${LOGFILE}) 2>&1 - (${DESTINATION}/contrib/test_summary | tee -a ${LOGFILE}) + eval \${MAKE} -k ${MAKE_CHECK_OPTIONS} check + ${DESTINATION}/contrib/test_summary } # Export the GCC source tree. @@ -167,10 +170,10 @@ export_gcc() { changedir ${DESTINATION} # Go up one level. changedir .. - # Build a tarbal off the source directory. + # Build a tarball of the source directory. tar czf ${TARFILE} \ --exclude=${OBJDIR} \ - --exclude=CVS \ + --exclude=.svn \ --exclude='.#*' \ --exclude='*~' \ `basename ${DESTINATION}` @@ -184,22 +187,27 @@ install_gcc() { # Go to the object directory. changedir ${OBJDIR} - make install > ${LOGFILE} 2>&1 || \ - error "Installation failed" + ${MAKE} install || error "Installation failed" } ######################################################################## # Initialization ######################################################################## -# The CVS server containing the GCC repository. -CVS_SERVER="gcc.gnu.org" +# SVN command +GCC_SVN=${GCC_SVN-${SVN-svn}} +# The SVN server containing the GCC repository. +SVN_SERVER="gcc.gnu.org" # The path to the repository on that server. -CVS_REPOSITORY="/cvs/gcc" -# The CVS protocol to use. -CVS_PROTOCOL="pserver" +SVN_REPOSITORY="/svn/gcc/" +# The branch to check out from that server. +# Defaults to trunk if no branch is defined with -b. +SVN_BRANCH="" +# The SVN protocol to use. +SVN_PROTOCOL="svn" # The username to use when connecting to the server. -CVS_USERNAME="anoncvs" +# An empty string means anonymous. +SVN_USERNAME="" # The directory where the checked out GCC will be placed. DESTINATION="${HOME}/dev/gcc" @@ -207,19 +215,22 @@ DESTINATION="${HOME}/dev/gcc" # object directory. OBJDIR="objdir" -# The file where information will be logged. -LOGFILE=${HOME}/build-gcc.$$.log # The file where the tarred up sources will be placed. TARFILE="${HOME}/dev/gcc.tgz" # Options to pass to configure. CONFIGURE_OPTIONS= -# Options to pass to make. -MAKE_OPTIONS= +# The `make' program. +MAKE=${MAKE:-make} +# Options to pass to "make bootstrap". +MAKE_BOOTSTRAP_OPTIONS= +# Options to pass to "make check". +MAKE_CHECK_OPTIONS= # Modes of operation -BUILD=0 +BOOTSTRAP=0 CHECKOUT=0 +CONFIGURE=0 EXPORT=0 INSTALL=0 TEST=0 @@ -229,15 +240,21 @@ UPDATE=0 # Main Program ######################################################################## +# Issue usage if no parameters are given. +test $# -eq 0 && usage + # Parse the options. -while getopts "c:d:m:t:" ARG; do +while getopts "c:d:m:o:p:t:b:u:x:" ARG; do case $ARG in c) CONFIGURE_OPTIONS="${OPTARG}";; d) DESTINATION="${OPTARG}";; - m) MAKE_OPTIONS="${OPTARG}";; - u) CVS_USERNAME="${OPTARG}";; - p) CVS_PROTOCOL="${OPTARG}";; - t) CVS_TARGFILE="${OPTARG}";; + m) MAKE_BOOTSTRAP_OPTIONS="${OPTARG}";; + o) OBJDIR="${OPTARG}";; + p) SVN_PROTOCOL="${OPTARG}";; + t) TARFILE="${OPTARG}";; + x) MAKE_CHECK_OPTIONS="${OPTARG}";; + b) SVN_BRANCH="${OPTARG}";; + u) SVN_USERNAME="${OPTARG}";; \?) usage;; esac done @@ -246,8 +263,10 @@ shift `expr ${OPTIND} - 1` # Handle the major modes. while [ $# -ne 0 ]; do case $1 in - build) BUILD=1;; + bootstrap) BOOTSTRAP=1;; + build) CONFIGURE=1; BOOTSTRAP=1;; checkout) CHECKOUT=1;; + configure) CONFIGURE=1;; export) EXPORT=1;; install) INSTALL=1;; test) TEST=1;; @@ -262,10 +281,16 @@ if [ ${CHECKOUT} -ne 0 ] && [ ${UPDATE} -ne 0 ]; then error "Cannot checkout and update simultaneously" fi -# Remove any old logfiles. -rm -f ${LOGFILE} -# Tell the user where to find the logfile. -echo "build-gcc.sh: The logfile for this run is ${LOGFILE}" +if [ ${CHECKOUT} -eq 0 ] && test -n "${SVN_BRANCH}"; then + error "Branch argument only makes sense when doing a checkout" +fi + +# Validate the branch name. +if test -n "${SVN_BRANCH}"; then + SVN_BRANCH="branches/${SVN_BRANCH}"; +else + SVN_BRANCH="trunk"; +fi # Checkout the tree. if [ ${CHECKOUT} -ne 0 ]; then @@ -274,9 +299,14 @@ elif [ ${UPDATE} -ne 0 ]; then update_gcc fi -# Build the compiler. -if [ ${BUILD} -ne 0 ]; then - build_gcc +# Configure to build the tree. +if [ ${CONFIGURE} -ne 0 ]; then + configure_gcc +fi + +# Bootstrap the compiler. +if [ ${BOOTSTRAP} -ne 0 ]; then + bootstrap_gcc fi # Test the compiler