#!/bin/sh # Configuration script for GNU CHILL # Copyright (C) 1994 Free Software Foundation, Inc. #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. */ # # Shell script to create proper links to machine-dependent files in # preparation for compiling gcc. # # Options: --srcdir=DIR specifies directory where sources are. # --host=HOST specifies host configuration. # --target=TARGET specifies target configuration. # --build=TARGET specifies configuration of machine you are # using to compile GCC. # --prefix=DIR specifies directory to install in. # --local-prefix=DIR specifies directory to put local ./include in. # --exec-prefix=DIR specifies directory to install executables in. # --with-gnu-ld arrange to work with GNU ld. # --with-gnu-as arrange to work with GAS. # --with-stabs arrange to use stabs instead of host debug format. # --with-elf arrange to use elf instead of host debug format. # --nfp assume system has no FPU. # # If configure succeeds, it leaves its status in config.status. # If configure fails after disturbing the status quo, # config.status is removed. # progname=$0 # Configure the runtime and regression-test directories SUBDIRS="runtime utils" SUBDIRS="$SUBDIRS testsuite/compile" SUBDIRS="$SUBDIRS testsuite/execute" SUBDIRS="$SUBDIRS testsuite/execute/telebras" SUBDIRS="$SUBDIRS testsuite/noncompile" SUBDIRS="$SUBDIRS testsuite/examples" SUBDIRS="$SUBDIRS testsuite/execute/oe" SUBDIRS="$SUBDIRS testsuite/compile/elektra" SUBDIRS="$SUBDIRS testsuite/compile/votrics" # Default --srcdir to the directory where the script is found, # if a directory was specified. # The second sed call is to convert `.//configure' to `./configure'. srcdir=`echo $0 | sed 's|//|/|' | sed 's|/[^/]*$||'` if [ x$srcdir = x$0 ] then srcdir= fi host= # Default prefix to /usr/local. prefix=/usr/local # local_prefix specifies where to find the directory /usr/local/include # We don't use $(prefix) for this # because we always want GCC to search /usr/local/include # even if GCC is installed somewhere other than /usr/local. # Think THREE TIMES before specifying any other value for this! # DO NOT make this use $prefix! local_prefix=/usr/local # CYGNUS LOCAL: for our purposes, this must be prefix. This is apparently # only done for the benefit of glibc, and we don't use glibc. local_prefix='$(prefix)' # Default is to let the Makefile set exec_prefix from $(prefix) exec_prefix='$(prefix)' # CYGNUS LOCAL. Default to nothing. program_transform_name= program_transform_set= site= remove=rm hard_link=ln symbolic_link='ln -s' copy=cp # Record all the arguments, to write them in config.status. arguments=$* #for Test #remove="echo rm" #hard_link="echo ln" #symbolic_link="echo ln -s" target= host= build= for arg in $*; do case $next_arg in --srcdir) srcdir=$arg next_arg= ;; --host) host=$arg next_arg= ;; --target) target=$arg next_arg= ;; --build) build=$arg next_arg= ;; --prefix) prefix=$arg next_arg= ;; --local-prefix) local_prefix=$arg next_arg= ;; --exec-prefix) exec_prefix=$arg next_arg= ;; --program-transform-name) # CYGNUS LOCAL # Double any backslashes or dollar signs in the argument. if [ -n "${arg}" ] ; then program_transform_name="${program_transform_name} -e `echo ${arg} | sed -e 's/\\\\/\\\\\\\\/g' -e 's/\\\$/$$/g'`" fi program_transform_set=yes next_arg= ;; --program-prefix) # CYGNUS LOCAL if [ -n "${arg}" ]; then program_transform_name="${program_transform_name} -e s,^,`echo ${arg} | sed -e 's/\\\\/\\\\\\\\/g' -e 's/\\\$/$$/g'`," fi program_transform_set=yes next_arg= ;; --program-suffix) # CYGNUS LOCAL if [ -n "${arg}" ]; then program_transform_name="${program_transform_name} -e s,\$\$,`echo ${arg} | sed -e 's/\\\\/\\\\\\\\/g' -e 's/\\\$/$$/g'`," fi program_transform_set=yes next_arg= ;; --site) # CYGNUS LOCAL site=${arg} next_arg= ;; --x-*) next_arg= ;; *) case $arg in -srcdir | --srcdir | --srcdi | --srcd | --src | --sr | --s) next_arg=--srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=* | --s=*) srcdir=`echo $arg | sed 's/-*s[a-z]*=//'` ;; -host | --host | --hos | --ho | --h) next_arg=--host ;; -host=* | --host=* | --hos=* | --ho=* | --h=*) host=`echo $arg | sed 's/-*h[a-z]*=//'` ;; -target | --target | --targe | --targ | --tar | --ta | --t) next_arg=--target ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target=`echo $arg | sed 's/-*t[a-z]*=//'` ;; -build | --build | --buil | --bui | --bu | --b) next_arg=--build ;; -build=* | --build=* | --buil=* | --bui=* | --bu=* | --b=*) build=`echo $arg | sed 's/-*b[a-z]*=//'` ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) next_arg=--prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=`echo $arg | sed 's/-*p[a-z]*=//'` ;; -local-prefix | --local-prefix | --local-prefi | --local-pref | --local-pre \ | --local-pr | --local-p | --local- | --local | --loc | --lo | --l) next_arg=--local-prefix ;; -local-prefix=* | --local-prefix=* | --local-prefi=* | --local-pref=* \ | --local-pre=* | --local-pr=* | --local-p=* | --local-=* | --local=* \ | --loc=* | --lo=* | --l=*) local_prefix=`echo $arg | sed 's/-*l[-a-z]*=//'` ;; -exec-prefix | --exec-prefix | --exec-prefi | --exec-pref | --exec-pre \ | --exec-pr | --exec-p | --exec- | --exec | --exe | --ex | --e) next_arg=--exec-prefix ;; -exec-prefix=* | --exec-prefix=* | --exec-prefi=* | --exec-pref=* \ | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* | --exec=* \ | --exe=* | --ex=* | --e=*) exec_prefix=`echo $arg | sed 's/-*e[-a-z]*=//'` ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- | --program-transform \ | --program-transfor | --program-transfo | --program-transf \ | --program-trans | --program-tran | --program-tra \ | --program-tr | --program-t) next_arg=--program-transform-name # CYGNUS LOCAL ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* | --program-transfo=* \ | --program-transf=* | --program-trans=* | --program-tran=* \ | --program-tra=* | --program-tr=* | --program-t=*) # CYGNUS LOCAL arg=`echo ${arg} | sed -e 's/^[-a-z_]*=//'` # Double any \ or $ in the argument. if [ -n "${arg}" ] ; then program_transform_name="${program_transform_name} -e `echo ${arg} | sed -e 's/\\\\/\\\\\\\\/g' -e 's/\\\$/$$/g'`" fi program_transform_set=yes ;; -program-prefix | --program-prefix | --program-prefi \ | --program-pref | --program-pre | --program-pr \ | --program-p) next_arg=--program-prefix # CYGNUS LOCAL ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* \ | --program-p=*) # CYGNUS LOCAL arg=`echo ${arg} | sed -e 's/^[-a-z_]*=//'` if [ -n "${arg}" ]; then program_transform_name="${program_transform_name} -e s,^,`echo ${arg} | sed -e 's/\\\\/\\\\\\\\/g' -e 's/\\\$/$$/g'`," fi program_transform_set=yes ;; -program-suffix | --program-suffix | --program-suffi \ | --program-suff | --program-suf | --program-su \ | --program-s) next_arg=--program-suffix # CYGNUS LOCAL ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* \ | --program-s=*) # CYGNUS LOCAL arg=`echo ${arg} | sed -e 's/^[-a-z_]*=//'` if [ -n "${arg}" ]; then program_transform_name="${program_transform_name} -e s,\$\$,`echo ${arg} | sed -e 's/\\\\/\\\\\\\\/g' -e 's/\\\$/$$/g'`," fi program_transform_set=yes ;; -site | --site | --sit) # CYGNUS LOCAL next_arg=--site ;; -site=* | --site=* | --sit=* | --si=*) # CYGNUS LOCAL site=`echo ${arg} | sed 's/^[-a-z]*=//'` ;; -with-gnu-ld | --with-gnu-ld | --with-gnu-l) gnu_ld=yes ;; -gas | --gas | --ga | --g | -with-gnu-as | --with-gnu-as | -with-gnu-a) gas=yes ;; -nfp | --nfp | --nf | --n) nfp=yes ;; -with-stabs | -with-stab | -with-sta | -with-st | -with-s \ | --with-stabs | --with-stab | --with-sta | --with-st | --with-s \ | -stabs | -stab | -sta | -st \ | --stabs | --stab | --sta | --st) stabs=yes ;; -with-elf | -with-el | -with-se \ | --with-elf | --with-el | --with-e \ | -elf | -el | -e \ |--elf | --el | --e) elf=yes ;; -with-* | --with-*) ;; #ignored -without-* | --without-*) ;; #ignored -enable-* | --enable-*) ;; #ignored -x | --x) ;; # ignored -x-*=* | --x-*=*) ;; # ignored -x-* | --x-*) next_arg=--x-ignored # ignored ;; --he*) ;; # ignored for now (--help) --vers*) ;; # ignored for now (--version) -v | -verb* | --verb*) ;; # ignored for now (--verbose) --program-*) ;; #ignored (--program-prefix, --program-suffix) --c*) ;; #ignored (--cache-file) --q*) ;; #ignored (--quiet) --si*) ;; #ignored (--silent) -*) echo "Invalid option \`$arg'" 1>&2 exit 1 ;; *) # Allow configure HOST TARGET if [ x$host = x ] then host=$target fi target=$arg ;; esac esac done # Find the source files, if location was not specified. if [ x$srcdir = x ] then srcdirdefaulted=1 srcdir=. if [ ! -r tree.c ] then srcdir=.. fi fi if [ ! -r ${srcdir}/grant.c ] then if [ x$srcdirdefaulted = x ] then echo "$progname: Can't find CHILL frontend sources in \`${srcdir}'" 1>&2 else echo "$progname: Can't find CHILL frontend sources in \`.' or \`..'" 1>&2 fi exit 1 fi # Make sure that scripts are executable [ -w ${srcdir} -a -f ${srcdir}/regression.sh ] && \ chmod +x ${srcdir}/regression.sh [ -w ${srcdir} -a -f ${srcdir}/regression.prpt ] && \ chmod +x ${srcdir}/regression.prpt [ -w ${srcdir} -a -f ${srcdir}/regression.awk3 ] && \ chmod +x ${srcdir}/regression.awk3 if [ -r ${srcdir}/config.status ] && [ x$srcdir != x. ] then echo "$progname: \`configure' has been run in \`${srcdir}'" 1>&2 exit 1 fi host_xmake_file= host_truncate_target= # Complain if an arg is missing if [ x$build = x ] then # If host was specified, always use it for build also to avoid # confusion. If someone wants a cross compiler where build != host, # then they must specify build explicitly. Since this case is # extremely rare, it does not matter that it is slightly inconvenient. if [ x$host != x ] then build=$host # This way of testing the result of a command substitution is # defined by Posix.2 (section 3.9.1) as well as traditional shells. elif build=`${srcdir}/../config.guess` then echo "This appears to be a ${build} system." 1>&2 elif [ x$target != x ] then echo 'Config.guess failed to determine the host type. Defaulting to target.' build=$target else echo 'Config.guess failed to determine the host type. You need to specify one.' 1>&2 echo "\ Usage: `basename $progname` [--host=HOST] [--build=BUILD] [--prefix=DIR] [--gxx-include-dir=DIR] [--local-pref=DIR] [--exec-pref=DIR] [--with-gnu-as] [--with-gnu-ld] [--with-stabs] [--with-elf] [--nfp] TARGET" 1>&2 echo "Where HOST, TARGET and BUILD are three-part configuration names " 1>&2 if [ -r config.status ] then tail +2 config.status 1>&2 fi exit 1 fi fi # If $host was not specified, use $build. if [ x$host = x ] then host=$build fi # If $target was not specified, use $host. if [ x$target = x ] then target=$host fi # Validate the specs, and canonicalize them. canon_build=`/bin/sh $srcdir/../config.sub $build` || exit 1 canon_host=`/bin/sh $srcdir/../config.sub $host` || exit 1 canon_target=`/bin/sh $srcdir/../config.sub $target` || exit 1 rm -f config.bak if [ -f config.status ]; then mv -f config.status config.bak; fi # # For the current directory and all of the designated SUBDIRS, # do the rest of the script... # if [ ! -d testsuite ] ; then mkdir testsuite; fi _SUBDIRS= for d in $SUBDIRS; do [ -d $srcdir/$d ] && _SUBDIRS="$_SUBDIRS $d" done savesrcdir=$srcdir STARTDIR=`pwd` for subdir in $_SUBDIRS do tmake_file= host_xmake_file= oldsrcdir=$savesrcdir # ${invsubdir} is inverse of ${subdir), *with* trailing /, if needed. invsubdir=`echo ${subdir}/ | sed -e 's|\./||g' -e 's|[^/]*/|../|g'` # Re-adjust the path # Also create a .gdbinit file which runs the one in srcdir # and tells GDB to look there for source files. case $oldsrcdir in ".") srcdir=. ;; /*) # absolute path srcdir=${oldsrcdir}/${subdir} ;; *) # otherwise relative srcdir=${invsubdir}${oldsrcdir}/${subdir} ;; esac if [ -r ${oldsrcdir}/${subdir}/.gdbinit -a ${oldsrcdir} != "." ] ; then cat > ${subdir}/.gdbinit < Makefile.tem # Conditionalize the makefile for this host machine. if [ -f ${mainsrcdir}/config/${host_xmake_file} ] then rm -f Makefile.xx sed -e "/####host/ r ${mainsrcdir}/config/${host_xmake_file}" Makefile.tem > Makefile.xx echo "Merged ${host_xmake_file}." rm -f Makefile.tem mv Makefile.xx Makefile.tem else # Say in the makefile that there is no host_xmake_file, # by using a name which (when interpreted relative to $srcdir/config) # will duplicate another dependency: $srcdir/Makefile.in. host_xmake_file=../Makefile.in fi # Define variables host_canonical, build_canonical, and target_canonical # because some Cygnus local changes in the Makefile depend on them. echo host_canonical = ${canon_host} > Makefile.xx echo target_canonical = ${canon_target} >> Makefile.xx echo build_canonical = ${canon_build} >> Makefile.xx cat Makefile.tem >> Makefile.xx mv Makefile.xx Makefile.tem # Conditionalize the makefile for this target machine. if [ -f ${mainsrcdir}/config/${tmake_file} ] then rm -f Makefile.xx sed -e "/####target/ r ${mainsrcdir}/config/${tmake_file}" Makefile.tem > Makefile.xx echo "Merged ${tmake_file}." rm -f Makefile.tem mv Makefile.xx Makefile.tem else # Say in the makefile that there is no tmake_file, # by using a name which (when interpreted relative to $srcdir/config) # will duplicate another dependency: $srcdir/Makefile.in. tmake_file=../Makefile.in fi # CYGNUS LOCAL # Conditionalize the makefile for this site. if [ -f ${mainsrcdir}/config/ms-${site} ] then rm -f Makefile.xx sed -e "/####site/ r ${mainsrcdir}/config/ms-${site}" Makefile.tem > Makefile.xx echo "Merged ms-${site}." rm -f Makefile.tem mv Makefile.xx Makefile.tem fi # CYGNUS LOCAL # If this is a cross compilation, and we have newlib in the build # tree, then define inhibit_libc in LIBGCC2_CFLAGS. This will cause # __eprintf to be left out of libgcc.a, but that's OK because newlib # has its own version of assert.h. if [ x$host != x$target ]; then sed -e 's/^\(LIBGCC2_CFLAGS[ ]*=[ ]*\)/\1-Dinhibit_libc /' Makefile.tem > Makefile.tem2 rm -f Makefile.tem mv Makefile.tem2 Makefile.tem fi # Remove all formfeeds, since some Makes get confused by them. # Also arrange to give the variables `target', `host_xmake_file', # `tmake_file', `prefix', `local_prefix', `exec_prefix', `FIXINCLUDES' # and `INSTALL_HEADERS_DIR' values in the Makefile from the values # they have in this script. # CYGNUS LOCAL: FLOAT_H, CROSS_FLOAT_H, objdir rm -f Makefile.xx sed -e "s/ //" -e "s/^target=.*$/target=${target}/" \ -e "s|^xmake_file=.*$|xmake_file=${host_xmake_file}|" \ -e "s|^tmake_file=.*$|tmake_file=${tmake_file}|" \ -e "s|^version=.*$|version=${version}|" \ -e "s|^prefix[ ]*=.*|prefix = $prefix|" \ -e "s|^local_prefix[ ]*=.*|local_prefix = $local_prefix|" \ -e "s|^exec_prefix[ ]*=.*|exec_prefix = $exec_prefix|" \ -e "s|^objdir[ ]*=.*|objdir=`pwd`|" \ Makefile.tem > Makefile.xx rm -f Makefile.tem mv Makefile.xx Makefile.tem # Install Makefile for real, after making final changes. # Define macro CROSS_COMPILE in compilation if this is a cross-compiler. # Also use all.cross instead of all.internal, and add cross-make to Makefile. if [ x$canon_host = x$canon_target ] then rm -f Makefile if [ x$canon_host = x$canon_build ] then mv Makefile.tem Makefile else # When building gcc with a cross-compiler, we need to fix a # few things. echo "build= $build" > Makefile sed -e "/####build/ r ${mainsrcdir}/build-make" Makefile.tem >> Makefile rm -f Makefile.tem Makefile.xx fi else rm -f Makefile echo "CROSS=-DCROSS_COMPILE" > Makefile sed -e "/####cross/ r ${mainsrcdir}/cross-make" Makefile.tem >> Makefile rm -f Makefile.tem Makefile.xx fi echo "Created \`$subdir/Makefile'." if [ xx${vint} != xx ] then vintmsg=" (vint)" fi # Describe the chosen configuration in config.status. # Make that file a shellscript which will reestablish the same configuration. rm -f config.bak if [ -f config.status ]; then mv -f config.status config.bak; fi echo "#!/bin/sh # This directory was configured as follows: cd $invsubdir; ${progname}" $arguments > config.new echo echo host=$canon_host target=$canon_target build=$canon_build >> config.new chmod a+x config.new # If we aren't executing the configure script in . if [ x$subdir != x. ] then if [ -f $srcdir/configure ] then echo "Running \`${CONFIG_SHELL-sh} $srcdir/configure $arguments\'" ${CONFIG_SHELL-sh} $srcdir/configure $arguments echo "${srcdir}/configure" $arguments >> config.new echo echo host=$canon_host target=$canon_target build=$canon_build >> config.new fi fi if [ -f config.bak ] && cmp config.bak config.new >/dev/null 2>/dev/null; then mv -f config.bak config.status rm -f config.new else mv -f config.new config.status rm -f config.bak fi cd $STARTDIR done # end of current-dir SUBDIRS loop srcdir=$savesrcdir # Describe the chosen configuration in config.status. # Make that file a shellscript which will reestablish the same configuration. echo "#!/bin/sh # This directory was configured as follows: ${progname}" $arguments > config.new echo echo host=$canon_host target=$canon_target build=$canon_build >> config.new chmod a+x config.new if [ -f config.bak ] && cmp config.bak config.new >/dev/null 2>/dev/null; then mv -f config.bak config.status rm -f config.new else mv -f config.new config.status rm -f config.bak fi exit 0