X-Git-Url: https://oss.titaniummirror.com/gitweb?a=blobdiff_plain;f=contrib%2Fgcc_build;h=6713066d7ce89f799b3b4d923afcfc4f15c6b7c0;hb=6fed43773c9b0ce596dca5686f37ac3fc0fa11c0;hp=4d0eea30b6b1a5f0d17df09330760404098781d1;hpb=27b11d56b743098deb193d510b337ba22dc52e5c;p=msp430-gcc.git diff --git a/contrib/gcc_build b/contrib/gcc_build index 4d0eea30..6713066d 100755 --- a/contrib/gcc_build +++ b/contrib/gcc_build @@ -4,29 +4,31 @@ # # 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, 2001 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,9 +36,6 @@ # 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: @@ -63,9 +62,11 @@ gcc_build [-c configure_options] [-d destination_directory] [-m make_boot_options] [-o objdir] + [-b branch_name] [-u username] [-p protocol] [-t tarfile] + [-x make_check_options] [bootstrap] [build] [checkout] @@ -85,49 +86,33 @@ changedir() { error "Could not change directory to $1" } -# Set up CVS environment variables - -cvs_setup() { - CVSROOT=":${CVS_PROTOCOL}:${CVS_USERNAME}@" - CVSROOT="${CVSROOT}${CVS_SERVER}:${CVS_REPOSITORY}" - export CVSROOT -} - # Checkout a fresh copy of the GCC build tree. checkout_gcc() { - # Tell CVS where to find everything. - cvs_setup - # If the destination already exists, don't risk destroying it. test -e ${DESTINATION} && \ error "${DESTINATION} already exists" - # CVS doesn't allow an absolute path for the destination directory. - DESTINATION_PARENT=`dirname ${DESTINATION}` - test -d ${DESTINATION_PARENT} || \ - error "${DESTINATION_PARENT} is not a directory" - changedir ${DESTINATION_PARENT} - # Checkout the tree - cvs -z 9 co -d `basename ${DESTINATION}` gcc || \ + test -n "${SVN_USERNAME}" && SVN_USERNAME="${SVN_USERNAME}@" + SVNROOT="${SVN_PROTOCOL}://${SVN_USERNAME}${SVN_SERVER}${SVN_REPOSITORY}${SVN_BRANCH}" + + $GCC_SVN co $SVNROOT ${DESTINATION} || \ error "Could not check out GCC" } # Update GCC. update_gcc() { - # Tell CVS where to find everything - cvs_setup - # If the destination does not already exist, complain. test -d ${DESTINATION} || \ - error "{$DESTINATION} does not exist" + error "${DESTINATION} does not exist" + # Enter the destination directory. changedir ${DESTINATION} # Update the tree - ./contrib/gcc_update -d || \ + ./contrib/gcc_update || \ error "Could not update GCC" } @@ -174,7 +159,7 @@ test_gcc() { changedir ${OBJDIR} echo "Running tests... This will take a while." - ${MAKE} -k check + eval \${MAKE} -k ${MAKE_CHECK_OPTIONS} check ${DESTINATION}/contrib/test_summary } @@ -188,7 +173,7 @@ export_gcc() { # Build a tarball of the source directory. tar czf ${TARFILE} \ --exclude=${OBJDIR} \ - --exclude=CVS \ + --exclude=.svn \ --exclude='.#*' \ --exclude='*~' \ `basename ${DESTINATION}` @@ -209,14 +194,20 @@ install_gcc() { # 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" @@ -231,8 +222,10 @@ TARFILE="${HOME}/dev/gcc.tgz" CONFIGURE_OPTIONS= # The `make' program. MAKE=${MAKE:-make} -# Options to pass to make. +# Options to pass to "make bootstrap". MAKE_BOOTSTRAP_OPTIONS= +# Options to pass to "make check". +MAKE_CHECK_OPTIONS= # Modes of operation BOOTSTRAP=0 @@ -247,16 +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:o:p:t:u:" 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_BOOTSTRAP_OPTIONS="${OPTARG}";; o) OBJDIR="${OPTARG}";; - p) CVS_PROTOCOL="${OPTARG}";; - t) CVS_TARGFILE="${OPTARG}";; - u) CVS_USERNAME="${OPTARG}";; + p) SVN_PROTOCOL="${OPTARG}";; + t) TARFILE="${OPTARG}";; + x) MAKE_CHECK_OPTIONS="${OPTARG}";; + b) SVN_BRANCH="${OPTARG}";; + u) SVN_USERNAME="${OPTARG}";; \?) usage;; esac done @@ -283,6 +281,17 @@ if [ ${CHECKOUT} -ne 0 ] && [ ${UPDATE} -ne 0 ]; then error "Cannot checkout and update simultaneously" fi +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 checkout_gcc