URL
                    https://opencores.org/ocsvn/openrisc/openrisc/trunk
                
            Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [contrib/] [gcc_build] - Rev 780
Go to most recent revision | Compare with Previous | Blame | View Log
#! /bin/sh########################################################################## File: gcc_build# Author: Mark Mitchell# Date: 2000-07-10## Adapted to Subversion by Ben Elliston <bje@au.ibm.com>, 2005-07-14.## Contents:# Script to automatically download and build GCC.## Copyright (c) 2000, 2001, 2003, 2005 Free Software Foundation.## This file is part of GCC.## 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 3, or (at your option)# any later version.## 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 GCC; see the file COPYING. If not, write to# the Free Software Foundation, 51 Franklin Street, Fifth Floor,# Boston, MA 02110-1301, USA.################################################################################################################################################## Notes######################################################################### 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######################################################################### Issue the error message given by $1 and exit with a non-zero# exit code.error() {echo "gcc_build: error: $1"exit 1}# Issue a usage message explaining how to use this script.usage() {cat <<EOFgcc_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][configure][export][install][test][update]EOFexit 1}# Change to the directory given by $1.changedir() {cd $1 || \error "Could not change directory to $1"}# Checkout a fresh copy of the GCC build tree.checkout_gcc() {# If the destination already exists, don't risk destroying it.test -e ${DESTINATION} && \error "${DESTINATION} already exists"# Checkout the treetest -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() {# If the destination does not already exist, complain.test -d ${DESTINATION} || \error "${DESTINATION} does not exist"# Enter the destination directory.changedir ${DESTINATION}# Update the tree./contrib/gcc_update || \error "Could not update GCC"}# Configure for a build of GCC.configure_gcc() {# Go to the source directory.changedir ${DESTINATION}# Remove the object directory.rm -rf ${OBJDIR}# Create it again.mkdir ${OBJDIR} || \error "Could not create ${OBJDIR}"# Enter it.changedir ${OBJDIR}# Configure the tree.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 compilerecho "Building: ${MAKE} ${MAKE_BOOTSTRAP_OPTIONS} bootstrap"eval ${MAKE} ${MAKE_BOOTSTRAP_OPTIONS} bootstrap || \error "Could not bootstrap the compiler"}# Test GCC.test_gcc() {# Go to the source directory.changedir ${DESTINATION}# Go to the object directory.changedir ${OBJDIR}echo "Running tests... This will take a while."eval \${MAKE} -k ${MAKE_CHECK_OPTIONS} check${DESTINATION}/contrib/test_summary}# Export the GCC source tree.export_gcc() {# Go to the source directory.changedir ${DESTINATION}# Go up one level.changedir ..# Build a tarball of the source directory.tar czf ${TARFILE} \--exclude=${OBJDIR} \--exclude=.svn \--exclude='.#*' \--exclude='*~' \`basename ${DESTINATION}`}# Install GCC.install_gcc() {# Go to the source directory.changedir ${DESTINATION}# Go to the object directory.changedir ${OBJDIR}${MAKE} install || error "Installation failed"}######################################################################### Initialization######################################################################### SVN commandGCC_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.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.# An empty string means anonymous.SVN_USERNAME=""# The directory where the checked out GCC will be placed.DESTINATION="${HOME}/dev/gcc"# The relative path from the top of the source tree to the# object directory.OBJDIR="objdir"# The file where the tarred up sources will be placed.TARFILE="${HOME}/dev/gcc.tgz"# Options to pass to configure.CONFIGURE_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 operationBOOTSTRAP=0CHECKOUT=0CONFIGURE=0EXPORT=0INSTALL=0TEST=0UPDATE=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:b:u:x:" ARG; docase $ARG inc) CONFIGURE_OPTIONS="${OPTARG}";;d) DESTINATION="${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;;esacdoneshift `expr ${OPTIND} - 1`# Handle the major modes.while [ $# -ne 0 ]; docase $1 inbootstrap) BOOTSTRAP=1;;build) CONFIGURE=1; BOOTSTRAP=1;;checkout) CHECKOUT=1;;configure) CONFIGURE=1;;export) EXPORT=1;;install) INSTALL=1;;test) TEST=1;;update) UPDATE=1;;*) usage;;esacshiftdone# Check the arguments for sanity.if [ ${CHECKOUT} -ne 0 ] && [ ${UPDATE} -ne 0 ]; thenerror "Cannot checkout and update simultaneously"fiif [ ${CHECKOUT} -eq 0 ] && test -n "${SVN_BRANCH}"; thenerror "Branch argument only makes sense when doing a checkout"fi# Validate the branch name.if test -n "${SVN_BRANCH}"; thenSVN_BRANCH="branches/${SVN_BRANCH}";elseSVN_BRANCH="trunk";fi# Checkout the tree.if [ ${CHECKOUT} -ne 0 ]; thencheckout_gccelif [ ${UPDATE} -ne 0 ]; thenupdate_gccfi# Configure to build the tree.if [ ${CONFIGURE} -ne 0 ]; thenconfigure_gccfi# Bootstrap the compiler.if [ ${BOOTSTRAP} -ne 0 ]; thenbootstrap_gccfi# Test the compilerif [ ${TEST} -ne 0 ]; thentest_gccfi# Install the compiler.if [ ${INSTALL} -ne 0 ]; theninstall_gccfi# Export the sourcesif [ ${EXPORT} -ne 0 ]; thenexport_gccfi
Go to most recent revision | Compare with Previous | Blame | View Log

