From b9faa6b6c7dc89badb3a079033d6e5e766da66de Mon Sep 17 00:00:00 2001 From: Mark Mitchell Date: Sun, 16 Jul 2000 18:05:46 +0000 Subject: * gcc_build: New script. From-SVN: r35060 --- contrib/gcc_build | 295 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 295 insertions(+) create mode 100755 contrib/gcc_build (limited to 'contrib/gcc_build') diff --git a/contrib/gcc_build b/contrib/gcc_build new file mode 100755 index 0000000..a5bf864 --- /dev/null +++ b/contrib/gcc_build @@ -0,0 +1,295 @@ +#! /bin/sh + +######################################################################## +# +# File: build-gcc.sh +# Author: Mark Mitchell +# Date: 07/10/2000 +# +# Contents: +# Script to automatically download and build GCC. +# +# Copyright (c) 2000 Free Software Foundation. +# +# This file is part of GNU CC. +# +# GNU CC 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) +# any later version. +# +# GNU CC 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. +# +######################################################################## + +######################################################################## +# 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. + +######################################################################## +# Functions +######################################################################## + +# Issue the error message given by $1 and exit with a non-zero +# exit code. + +error() { + echo "build-gcc.sh: error: $1" + exit 1 +} + +# Issue a usage message explaining how to use this script. + +usage() { +cat <&1 || \ + error "Could not configure the compiler" + + # Bootstrap the compiler + (eval make ${MAKE_OPTIONS} bootstrap | + tee -a ${LOGFILE}) 2>&1 || \ + error "Could not build 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." + (make -k check | tee -a ${LOGFILE}) 2>&1 + (${DESTINATION}/contrib/test_summary | tee -a ${LOGFILE}) +} + +# Export the GCC source tree. + +export_gcc() { + # Go to the source directory. + changedir ${DESTINATION} + # Go up one level. + changedir .. + # Build a tarbal off the source directory. + tar czf ${TARFILE} \ + --exclude=${OBJDIR} \ + --exclude=CVS \ + --exclude='.#*' \ + --exclude='*~' \ + `basename ${DESTINATION}` +} + +# Install GCC. + +install_gcc() { + # Go to the source directory. + changedir ${DESTINATION} + # Go to the object directory. + changedir ${OBJDIR} + + make install > ${LOGFILE} 2>&1 || \ + error "Installation failed" +} + +######################################################################## +# Initialization +######################################################################## + +# The CVS server containing the GCC repository. +CVS_SERVER="gcc.gnu.org" +# The path to the repository on that server. +CVS_REPOSITORY="/cvs/gcc" +# The CVS protocol to use. +CVS_PROTOCOL="pserver" +# The username to use when connecting to the server. +CVS_USERNAME="anoncvs" + +# 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 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= + +# Modes of operation +BUILD=0 +CHECKOUT=0 +EXPORT=0 +INSTALL=0 +TEST=0 +UPDATE=0 + +######################################################################## +# Main Program +######################################################################## + +# Parse the options. +while getopts "c:d:m:t:" 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}";; + \?) usage;; + esac +done +shift `expr ${OPTIND} - 1` + +# Handle the major modes. +while [ $# -ne 0 ]; do + case $1 in + build) BUILD=1;; + checkout) CHECKOUT=1;; + export) EXPORT=1;; + install) INSTALL=1;; + test) TEST=1;; + update) UPDATE=1;; + *) usage;; + esac + shift +done + +# Check the arguments for sanity. +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}" + +# Checkout the tree. +if [ ${CHECKOUT} -ne 0 ]; then + checkout_gcc +elif [ ${UPDATE} -ne 0 ]; then + update_gcc +fi + +# Build the compiler. +if [ ${BUILD} -ne 0 ]; then + build_gcc +fi + +# Test the compiler +if [ ${TEST} -ne 0 ]; then + test_gcc +fi + +# Install the compiler. +if [ ${INSTALL} -ne 0 ]; then + install_gcc +fi + +# Export the sources +if [ ${EXPORT} -ne 0 ]; then + export_gcc +fi -- cgit v1.1