X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=configure;h=6b4d9b495623f5f4443c72b45c0809bd4a13c561;hb=b9195351adf2052661bbccd86509769a678b997c;hp=fbf5ab58479b1090d2f354f147b86caf3d47eb51;hpb=16ee897daa2d38e5cd63ba615d9856c4de9312b6;p=binutils-gdb.git diff --git a/configure b/configure index fbf5ab58479..6b4d9b49562 100755 --- a/configure +++ b/configure @@ -3,8 +3,8 @@ ### WARNING: this file contains embedded tabs. Do not run untabify on this file. # Configuration script -# Copyright (C) 1988, 90, 91, 92, 93, 94, 95, 96, 97, 98, 1999 -# Free Software Foundation, Inc. +# Copyright (C) 1988, 90, 91, 92, 93, 94, 95, 96, 97, 98, 1999, 2000, 2001, +# 2002 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -53,6 +53,9 @@ cache_file_option= configdirs= extraconfigdirs= diroptions= +enable_threads=no +enable_shared=no +enable_libstdcxx_v3=yes exec_prefix= exec_prefixoption= fatal= @@ -76,13 +79,11 @@ program_suffixoption= program_transform_name= program_transform_nameoption= redirect= -removing= site= site_makefile_frag= site_option= srcdir= srctrigger= -subdirs= target_alias=NOTARGET target_makefile_frag= undefs=NOUNDEFS @@ -149,16 +150,20 @@ NO_EDIT="This file was generated automatically by configure. Do not edit." progname=$0 # if PWD already has a value, it is probably wrong. -if [ -n "$PWD" ]; then PWD=`pwd`; fi +if [ -n "$PWD" ]; then PWD=`${PWDCMD-pwd}`; fi case "${progname}" in -/*) ;; +/* | [A-Za-z]:[\\/]* ) ;; */*) ;; *) - PATH=$PATH:${PWD=`pwd`} ; export PATH + PATH=$PATH:${PWD=`${PWDCMD-pwd}`} ; export PATH ;; esac +# Export original configure arguments for use by sub-configures. +TOPLEVEL_CONFIGURE_ARGUMENTS="$progname $@" +export TOPLEVEL_CONFIGURE_ARGUMENTS + # Loop over all args while : @@ -237,7 +242,7 @@ do esac enableopt=`echo ${option} | sed 's:^--::;s:=.*$::;s:-:_:g'` - eval "$enableopt='$optarg'" + eval "$enableopt=\$optarg" enableoptions="$enableoptions '$option'" ;; --exec-prefix* | --ex*) @@ -310,9 +315,6 @@ do program_transform_name="${program_transform_name} -e `echo ${optarg} | sed -e 's/\\\\/\\\\\\\\/g' -e 's/\\\$/$$/g'`" program_transform_nameoption="${program_transform_nameoption} --program-transform-name='$optarg'" ;; - --rm) - removing=--rm - ;; --sb*) sbindir=$optarg diroptions="$diroptions --sbindir=$optarg" @@ -370,7 +372,7 @@ do esac withopt=`echo ${option} | sed 's:^--::;s:=.*$::;s:-:_:g'` - eval $withopt="$optarg" + eval $withopt="\$optarg" withoptions="$withoptions $option" ;; --without-*) @@ -450,7 +452,7 @@ case "${fatal}" in fi ;; esac - echo "Configuring for a ${host_alias} host." 1>&2 + echo "Configuring for a ${host_alias} host." arguments="--host=$host_alias $arguments" else echo 'Config.guess failed to determine the host type. You need to specify one.' 1>&2 @@ -518,7 +520,8 @@ fi configsub=`echo ${progname} | sed 's/configure$/config.sub/'` moveifchange=`echo ${progname} | sed 's/configure$/move-if-change/'` -topsrcdir=`cd \`dirname ${progname}\`; pwd` +## the sed command below emulates the dirname command +topsrcdir=`cd \`echo ${progname} | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'\`; ${PWDCMD-pwd}` # this is a hack. sun4 must always be a valid host alias or this will fail. @@ -558,8 +561,8 @@ case "${srcdir}" in echo "Invalid source directory ${srcdir}" >&2 exit 1 fi - pwd=`pwd` - srcpwd=`cd ${srcdir} ; pwd` + pwd=`${PWDCMD-pwd}` + srcpwd=`cd ${srcdir} ; ${PWDCMD-pwd}` if [ "${pwd}" = "${srcpwd}" ] ; then srcdir=. fi @@ -571,40 +574,17 @@ case "${srcdir}" in ".") ;; *) if [ -f ${srcdir}/config.status ] ; then - echo '***' Cannot configure here in \"${PWD=`pwd`}\" when \"${srcdir}\" is currently configured. 1>&2 + echo '***' Cannot configure here in \"${PWD=`${PWDCMD-pwd}`}\" when \"${srcdir}\" is currently configured. 1>&2 exit 1 fi esac - # default exec_prefix case "${exec_prefixoption}" in "") exec_prefix="\$(prefix)" ;; *) ;; esac -# Define the trigger file to make sure configure will re-run whenever -# the gcc version number changes. -if [ "${with_gcc_version_trigger+set}" = set ]; then - gcc_version_trigger="$with_gcc_version_trigger" - gcc_version=`grep version_string ${with_gcc_version_trigger} | sed -e 's/.*\"\([^ \"]*\)[ \"].*/\1/'` -else - # If gcc's sources are available, define the trigger file. - if [ -f ${topsrcdir}/gcc/version.c ] ; then - gcc_version_trigger=${topsrcdir}/gcc/version.c - gcc_version=`grep version_string ${gcc_version_trigger} | sed -e 's/.*\"\([^ \"]*\)[ \"].*/\1/'` - case "$arguments" in - *--with-gcc-version-trigger=$gcc_version_trigger* ) - ;; - * ) - # Make sure configure.in knows about this. - arguments="--with-gcc-version-trigger=$gcc_version_trigger $arguments" - ;; - esac - withoptions="--with-gcc-version-trigger=$gcc_version_trigger $withoptions" - fi -fi - ### break up ${srcdir}/configure.in. case "`grep '^# per\-host:' ${srcdir}/configure.in`" in "") @@ -632,7 +612,7 @@ case "`grep '^# per\-host:' ${srcdir}/configure.in`" in ${program_transform_nameoption} ${site_option} \ ${withoptions} ${withoutoptions} \ ${enableoptions} ${disableoptions} ${floating_pointoption} \ - ${cache_file_option} ${removing} ${other_options} ${redirect} + ${cache_file_option} ${other_options} ${redirect} else echo '***' There is no configure script present though. 1>&2 fi @@ -656,13 +636,15 @@ case "${TMPDIR}" in esac # keep this filename short for &%*%$*# 14 char file names and 8+3 file names -tmpfile=${TMPDIR}/cNf$$ +tmpdir=${TMPDIR}/cNf$$ +mkdir ${tmpdir} || exit 1 +tmpfile=${tmpdir}/cNf$$ # Note that under many versions of sh a trap handler for 0 will *override* any # exit status you explicitly specify! At this point, the only non-error exit # is at the end of the script; these actions are duplicated there, minus # the "exit 1". Don't use "exit 0" anywhere after this without resetting the # trap handler, or you'll lose. -trap "rm -f Makefile.tem ${tmpfile}.com ${tmpfile}.tgt ${tmpfile}.hst ${tmpfile}.pos; exit 1" 0 1 2 15 +trap "rm -rf Makefile.tem ${tmpdir}; exit 1" 0 1 2 15 # split ${srcdir}/configure.in into common, per-host, per-target, # and post-target parts. Post-target is optional. @@ -678,28 +660,12 @@ fi ### do common part of configure.in -# If the language specific compiler does not exist, but the "gcc" directory does, -# we will skip this directory; in this case the sub-directory's common part -# of configure.in will create a small shell script "skip-this-dir" containing -# commands to completely clean up any temporary or created files. - . ${tmpfile}.com -if test -f skip-this-dir; then - # Perform the same cleanup as the trap handler, minus the "exit 1" of course, - # and reset the trap handler. - trap 0 - rm -f Makefile* ${tmpfile}.com ${tmpfile}.tgt ${tmpfile}.hst ${tmpfile}.pos - # Execute the final clean-up actions - ${config_shell} skip-this-dir - # and stop configuring this directory. - exit 0 -fi - # some sanity checks on configure.in case "${srctrigger}" in "") - echo '***' srctrigger not set in ${PWD=`pwd`}/configure.in. 1>&2 + echo '***' srctrigger not set in ${PWD=`${PWDCMD-pwd}`}/configure.in. 1>&2 exit 1 ;; *) ;; @@ -753,17 +719,6 @@ target_vendor=`echo $result | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` target_os=`echo $result | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` target=${target_cpu}-${target_vendor}-${target_os} -if [ x${target} != x${build} -a x${build} = x${host} ]; then - if [ x${gcc_version} != x -a ! -d ${prefix}/lib/gcc-lib/${target_alias}/${gcc_version} ]; then - echo "Please create the directory:" 1>&2 - echo 1>&2 - echo " ${prefix}/lib/gcc-lib/${target_alias}/${gcc_version}" 1>&2 - echo 1>&2 - echo "first for successful cross-compilation." 1>&2 - exit 1 - fi -fi - . ${tmpfile}.tgt # Find the source files, if location was not specified. @@ -780,8 +735,8 @@ esac if [ ! -r ${srcdir}/${srctrigger} ] ; then case "${srcdirdefaulted}" in - "") echo '***' "${progname}: Can't find ${srcname} sources in ${PWD=`pwd`}/${srcdir}" 1>&2 ;; - *) echo '***' "${progname}: Can't find ${srcname} sources in ${PWD=`pwd`}/. or ${PWD=`pwd`}/.." 1>&2 ;; + "") echo '***' "${progname}: Can't find ${srcname} sources in ${PWD=`${PWDCMD-pwd}`}/${srcdir}" 1>&2 ;; + *) echo '***' "${progname}: Can't find ${srcname} sources in ${PWD=`${PWDCMD-pwd}`}/. or ${PWD=`${PWDCMD-pwd}`}/.." 1>&2 ;; esac echo '***' \(At least ${srctrigger} is missing.\) 1>&2 @@ -913,19 +868,20 @@ do test -n "$DEFAULT_LEX" && break done + if [ "${build}" != "${host}" ]; then # If we are doing a Canadian Cross, in which the host and build systems # are not the same, we set reasonable default values for the tools. - tools="AR AR_FOR_TARGET AS AS_FOR_TARGET BISON CC_FOR_BUILD" - tools="${tools} CC_FOR_TARGET CXX_FOR_TARGET" - tools="${tools} DLLTOOL DLLTOOL_FOR_TARGET GCC_FOR_TARGET HOST_PREFIX" - tools="${tools} HOST_PREFIX_1 LD LD_FOR_TARGET LEX MAKEINFO NM" + tools="${tools} CC_FOR_TARGET CXX_FOR_TARGET GCJ_FOR_TARGET" + tools="${tools} DLLTOOL DLLTOOL_FOR_TARGET GCC_FOR_TARGET BUILD_PREFIX" + tools="${tools} BUILD_PREFIX_1 LD LD_FOR_TARGET LEX MAKEINFO NM" tools="${tools} NM_FOR_TARGET RANLIB RANLIB_FOR_TARGET" tools="${tools} WINDRES WINDRES_FOR_TARGET YACC" + tools="${tools} OBJCOPY OBJDUMP" for var in ${tools}; do - if [ -z "`eval 'echo $'"${var}"`" ] && [ -r Makefile ]; then + if eval [ -z \"\$${var}\" ] && [ -r Makefile ]; then sed -n -e ':loop /\\$/ N s/\\\n//g @@ -934,7 +890,7 @@ t loop < Makefile > Makefile.v t=`tail -1 Makefile.v` if [ -n "${t}" ]; then - eval "${var}='${t}'" + eval "${var}=\${t}" fi rm -f Makefile.v fi @@ -942,6 +898,7 @@ t loop AR=${AR-${host_alias}-ar} AR_FOR_TARGET=${AR_FOR_TARGET-${target_alias}-ar} + AR_FOR_TARGET=${AR_FOR_TARGET}${extra_arflags_for_target} AS=${AS-${host_alias}-as} AS_FOR_TARGET=${AS_FOR_TARGET-${target_alias}-as} BISON=${BISON-bison} @@ -952,20 +909,24 @@ t loop CC_FOR_BUILD=${CC_FOR_BUILD-gcc} CC_FOR_TARGET=${CC_FOR_TARGET-${target_alias}-gcc} CXX_FOR_TARGET=${CXX_FOR_TARGET-${target_alias}-c++} + GCJ_FOR_TARGET=${GCJ_FOR_TARGET-${target_alias}-gcj} DLLTOOL=${DLLTOOL-${host_alias}-dlltool} DLLTOOL_FOR_TARGET=${DLLTOOL_FOR_TARGET-${target_alias}-dlltool} GCC_FOR_TARGET=${GCC_FOR_TARGET-${CC_FOR_TARGET-${target_alias}-gcc}} - HOST_PREFIX=${build_alias}- - HOST_PREFIX_1=${build_alias}- + BUILD_PREFIX=${build_alias}- + BUILD_PREFIX_1=${build_alias}- LD=${LD-${host_alias}-ld} LD_FOR_TARGET=${LD_FOR_TARGET-${target_alias}-ld} MAKEINFO=${MAKEINFO-makeinfo} NM=${NM-${host_alias}-nm} NM_FOR_TARGET=${NM_FOR_TARGET-${target_alias}-nm} + NM_FOR_TARGET=${NM_FOR_TARGET}${extra_nmflags_for_target} RANLIB=${RANLIB-${host_alias}-ranlib} RANLIB_FOR_TARGET=${RANLIB_FOR_TARGET-${target_alias}-ranlib} WINDRES=${WINDRES-${host_alias}-windres} WINDRES_FOR_TARGET=${WINDRES_FOR_TARGET-${target_alias}-windres} + OBJCOPY=${OBJCOPY-${host_alias}-objcopy} + OBJDUMP=${OBJDUMP-${host_alias}-objdump} if [ -z "${YACC}" ]; then IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:" @@ -1016,7 +977,47 @@ t loop export NM export RANLIB export WINDRES + export OBJCOPY + export OBJDUMP else + # Set reasonable default values for some tools even if not Canadian. + # Of course, these are different reasonable default values, originally + # specified directly in the Makefile. + # We don't export, so that autoconf can do its job. + # Note that all these settings are above the fragment inclusion point + # in Makefile.in, so can still be overridden by fragments. + # This is all going to change when we autoconfiscate... + + tools="AR AR_FOR_TARGET AS AS_FOR_TARGET BISON CC_FOR_BUILD" + tools="${tools} DLLTOOL DLLTOOL_FOR_TARGET GCC_FOR_TARGET BUILD_PREFIX" + tools="${tools} BUILD_PREFIX_1 LD LD_FOR_TARGET LEX MAKEINFO NM" + tools="${tools} NM_FOR_TARGET RANLIB_FOR_TARGET" + tools="${tools} WINDRES WINDRES_FOR_TARGET YACC" + + AR=ar + AR_FOR_TARGET='\$(USUAL_AR_FOR_TARGET)' + AR_FOR_TARGET=${AR_FOR_TARGET}${extra_arflags_for_target} + AS=as + AS_FOR_TARGET='\$(USUAL_AS_FOR_TARGET)' + BISON='$(USUAL_BISON)' + CC_FOR_BUILD='\$(CC)' + DLLTOOL=dlltool + DLLTOOL_FOR_TARGET='\$(USUAL_DLLTOOL_FOR_TARGET)' + GCC_FOR_TARGET='\$(USUAL_GCC_FOR_TARGET)' + BUILD_PREFIX= + BUILD_PREFIX_1=loser- + LD=ld + LD_FOR_TARGET='\$(USUAL_LD_FOR_TARGET)' + MAKEINFO='\$(USUAL_MAKEINFO)' + NM=nm + NM_FOR_TARGET='\$(USUAL_NM_FOR_TARGET)' + NM_FOR_TARGET=${NM_FOR_TARGET}${extra_nmflags_for_target} + RANLIB_FOR_TARGET='\$(USUAL_RANLIB_FOR_TARGET)' + WINDRES=windres + WINDRES_FOR_TARGET='\$(USUAL_WINDRES_FOR_TARGET)' + LEX='\$(USUAL_LEX)' + YACC='\$(USUAL_YACC)' + # If CC is still not set, try to get gcc. if [ -z "${CC}" ]; then IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:" @@ -1068,548 +1069,312 @@ export CXX export CFLAGS export CXXFLAGS -# FIXME: This should be in configure.in, not configure -case "$host" in - *go32*) - enable_gdbtk=no ;; - *msdosdjgpp*) - enable_gdbtk=no ;; -esac +# FIXME Should this be done recursively ??? (Useful for e.g. gdbtest) +# Set up the list of links to be made. +# ${links} is the list of link names, and ${files} is the list of names to link to. -# FIXME: This should be in configure.in, not configure -# Determine whether gdb needs tk/tcl or not. -if [ "$enable_gdbtk" != "no" ]; then - GDB_TK="all-tcl all-tk all-itcl all-tix all-libgui" -else - GDB_TK="" +# Make the links. +configlinks="${links}" +if [ -r ./config.status ] ; then + mv -f ./config.status ./config.back fi - -for subdir in . ${subdirs} ; do - - # ${subdir} is relative path from . to the directory we're currently - # configuring. - # ${invsubdir} is inverse of ${subdir), *with* trailing /, if needed. - invsubdir=`echo ${subdir}/ | sed -e 's|\./||g' -e 's|[^/]*/|../|g'` - - ### figure out what to do with srcdir - case "${srcdir}" in - ".") # no -srcdir option. We're building in place. - makesrcdir=. ;; - /*) # absolute path - makesrcdir=`echo ${srcdir}/${subdir} | sed -e 's|/\.$||'` - ;; - *) # otherwise relative - case "${subdir}" in - .) makesrcdir=${srcdir} ;; - *) makesrcdir=${invsubdir}${srcdir}/${subdir} ;; - esac - ;; - esac - - if [ "${subdir}/" != "./" ] ; then - Makefile=${subdir}/Makefile - fi - - if [ ! -d ${subdir} ] ; then - if mkdir ${subdir} ; then - true - else - echo '***' "${progname}: could not make ${PWD=`pwd`}/${subdir}" 1>&2 - exit 1 - fi +while [ -n "${files}" ] ; do + # set file to car of files, files to cdr of files + set ${files}; file=$1; shift; files=$* + set ${links}; link=$1; shift; links=$* + + if [ ! -r ${srcdir}/${file} ] ; then + if [ ! -r ${file} ] ; then + echo '***' "${progname}: cannot create a link \"${link}\"," 1>&2 + echo '***' "since the file \"${srcdir}/${file}\" does not exist." 1>&2 + exit 1 + else + srcfile=${file} fi + else + srcfile=${srcdir}/${file} + fi - case "${removing}" in - "") - case "${subdir}" in - .) ;; - *) eval echo Building in ${subdir} ${redirect} ;; - esac - - # FIXME Should this be done recursively ??? (Useful for e.g. gdbtest) - # Set up the list of links to be made. - # ${links} is the list of link names, and ${files} is the list of names to link to. - - # Make the links. - configlinks="${links}" - if [ -r ${subdir}/config.status ] ; then - mv -f ${subdir}/config.status ${subdir}/config.back - fi - while [ -n "${files}" ] ; do - # set file to car of files, files to cdr of files - set ${files}; file=$1; shift; files=$* - set ${links}; link=$1; shift; links=$* - - if [ ! -r ${srcdir}/${file} ] ; then - if [ ! -r ${file} ] ; then - - echo '***' "${progname}: cannot create a link \"${link}\"," 1>&2 - echo '***' "since the file \"${srcdir}/${file}\" does not exist." 1>&2 - exit 1 - else - srcfile=${file} - fi - else - srcfile=${srcdir}/${file} - fi - - ${remove} -f ${link} - # Make a symlink if possible, otherwise try a hard link - if ${symbolic_link} ${srcfile} ${link} >/dev/null 2>&1 ; then - true - else - # We need to re-remove the file because Lynx leaves a - # very strange directory there when it fails an NFS symlink. - ${remove} -r -f ${link} - ${hard_link} ${srcfile} ${link} - fi - if [ ! -r ${link} ] ; then - echo '***' "${progname}: unable to link \"${link}\" to \"${srcfile}\"." 1>&2 - exit 1 - fi + ${remove} -f ${link} + # Make a symlink if possible, otherwise try a hard link + if ${symbolic_link} ${srcfile} ${link} >/dev/null 2>&1 ; then + true + else + # We need to re-remove the file because Lynx leaves a + # very strange directory there when it fails an NFS symlink. + ${remove} -r -f ${link} + ${hard_link} ${srcfile} ${link} + fi + if [ ! -r ${link} ] ; then + echo '***' "${progname}: unable to link \"${link}\" to \"${srcfile}\"." 1>&2 + exit 1 + fi - echo "Linked \"${link}\" to \"${srcfile}\"." - done + echo "Linked \"${link}\" to \"${srcfile}\"." +done - # Create a .gdbinit file which runs the one in srcdir - # and tells GDB to look there for source files. +# Create a .gdbinit file which runs the one in srcdir +# and tells GDB to look there for source files. - if [ -r ${srcdir}/${subdir}/.gdbinit ] ; then - case ${srcdir} in - .) ;; - *) cat > ${subdir}/.gdbinit < ./.gdbinit < ${Makefile}.tem - else - echo '***' Expected package makefile rules fragment \"${package_makefile_rules_frag}\" 1>&2 - echo '***' is missing in ${PWD=`pwd`}. 1>&2 - cp ${srcdir}/${subdir}/${Makefile_in} ${subdir}/Makefile.tem - fi - esac - # working copy now in ${Makefile}.tem - - # Conditionalize for this site. - rm -f ${Makefile} - case "${site}" in - "") mv ${subdir}/Makefile.tem ${Makefile} ;; - *) - site_makefile_frag=${srcdir}/config/ms-${site} - - if [ -f ${site_makefile_frag} ] ; then - sed -e "/^####/ r ${site_makefile_frag}" ${subdir}/Makefile.tem \ - > ${Makefile} - else - mv ${subdir}/Makefile.tem ${Makefile} - site_makefile_frag= - fi - ;; - esac - # working copy now in ${Makefile} - - # Conditionalize the makefile for this host. - rm -f ${subdir}/Makefile.tem - case "${host_makefile_frag}" in - "") mv ${Makefile} ${subdir}/Makefile.tem ;; - *) - if [ ! -f ${host_makefile_frag} ] ; then - host_makefile_frag=${srcdir}/${host_makefile_frag} - fi - if [ -f ${host_makefile_frag} ] ; then - sed -e "/^####/ r ${host_makefile_frag}" ${Makefile} > ${subdir}/Makefile.tem - else - echo '***' Expected host makefile fragment \"${host_makefile_frag}\" 1>&2 - echo '***' is missing in ${PWD=`pwd`}. 1>&2 - mv ${Makefile} ${subdir}/Makefile.tem - fi - esac - # working copy now in ${subdir)/Makefile.tem - - # Conditionalize the makefile for this target. - rm -f ${Makefile} - case "${target_makefile_frag}" in - "") mv ${subdir}/Makefile.tem ${Makefile} ;; - *) - if [ ! -f ${target_makefile_frag} ] ; then - target_makefile_frag=${srcdir}/${target_makefile_frag} - fi - if [ -f ${target_makefile_frag} ] ; then - sed -e "/^####/ r ${target_makefile_frag}" ${subdir}/Makefile.tem > ${Makefile} - else - mv ${subdir}/Makefile.tem ${Makefile} - target_makefile_frag= - fi - ;; - esac - # working copy now in ${Makefile} - - # Emit the default values of this package's macros. - rm -f ${subdir}/Makefile.tem - case "${package_makefile_frag}" in - "") mv ${Makefile} ${subdir}/Makefile.tem ;; - *) - if [ ! -f ${package_makefile_frag} ] ; then - package_makefile_frag=${srcdir}/${package_makefile_frag} - fi - if [ -f ${package_makefile_frag} ] ; then - sed -e "/^####/ r ${package_makefile_frag}" ${Makefile} > ${subdir}/Makefile.tem - else - echo '***' Expected package makefile fragment \"${package_makefile_rules_frag}\" 1>&2 - echo '***' is missing in ${PWD=`pwd`}. 1>&2 - mv ${Makefile} ${subdir}/Makefile.tem - fi - esac - # real copy now in ${subdir}/Makefile.tem - - # prepend warning about editting, and a bunch of variables. - rm -f ${Makefile} - cat > ${Makefile} <> ${Makefile} << EOF -build_alias = ${build_alias} -build_cpu = ${build_cpu} -build_vendor = ${build_vendor} -build_os = ${build_os} -build_canonical = ${build_cpu}-${build_vendor}-${build_os} -EOF - esac +# Install a makefile, and make it set VPATH +# if necessary so that the sources are found. +# Also change its value of srcdir. +# NOTE: Makefile generation constitutes the majority of the time in configure. Hence, this section has +# been somewhat optimized and is perhaps a bit twisty. - case "${package_makefile_frag}" in - "") ;; - /*) echo package_makefile_frag = ${package_makefile_frag} >>${Makefile} ;; - *) echo package_makefile_frag = ${invsubdir}${package_makefile_frag} >>${Makefile} ;; - esac - - case "${target_makefile_frag}" in - "") ;; - /*) echo target_makefile_frag = ${target_makefile_frag} >>${Makefile} ;; - *) echo target_makefile_frag = ${invsubdir}${target_makefile_frag} >>${Makefile} ;; - esac - - case "${host_makefile_frag}" in - "") ;; - /*) echo host_makefile_frag = ${host_makefile_frag} >>${Makefile} ;; - *) echo host_makefile_frag = ${invsubdir}${host_makefile_frag} >>${Makefile} ;; - esac - - if [ "${site_makefile_frag}" != "" ] ; then - echo site_makefile_frag = ${invsubdir}${site_makefile_frag} >>${Makefile} - fi - - # record if we want to build shared libs. - if test -z "${enable_shared}"; then - echo enable_shared = no >> ${Makefile} - else - echo enable_shared = ${enable_shared} >> ${Makefile} - fi - # record if we want to rumtime library stuff installed in libsubdir. - if test -z "${enable_version_specific_runtime_libs}"; then - echo enable_version_specific_runtime_libs = no >> ${Makefile} - else - echo enable_version_specific_runtime_libs = ${enable_version_specific_runtime_libs} >> ${Makefile} - fi +# code is order so as to try to sed the smallest input files we know. +# so do these separately because I don't trust the order of sed -e expressions. - # Emit a macro which describes the file containing gcc's - # version number. - echo gcc_version_trigger = ${gcc_version_trigger} >> ${Makefile} - # And emit a macro defining gcc's version number. - echo gcc_version = ${gcc_version} >> ${Makefile} - - # reset prefix, exec_prefix, srcdir, SUBDIRS, NONSUBDIRS, - # remove any form feeds. - if [ -z "${subdirs}" ]; then - rm -f ${subdir}/Makefile.tm2 - sed -e "s:^SUBDIRS[ ]*=.*$:SUBDIRS = ${configdirs}:" \ - -e "s:^NONSUBDIRS[ ]*=.*$:NONSUBDIRS = ${noconfigdirs}:" \ - ${subdir}/Makefile.tem > ${subdir}/Makefile.tm2 - rm -f ${subdir}/Makefile.tem - mv ${subdir}/Makefile.tm2 ${subdir}/Makefile.tem - fi - sed -e "s|^prefix[ ]*=.*$|prefix = ${prefix}|" \ - -e "s|^exec_prefix[ ]*=.*$|exec_prefix = ${exec_prefix}|" \ - -e "s|^bindir[ ]*=.*$|bindir = ${bindir}|" \ - -e "s|^sbindir[ ]*=.*$|sbindir = ${sbindir}|" \ - -e "s|^libexecdir[ ]*=.*$|libexecdir = ${libexecdir}|" \ - -e "s|^datadir[ ]*=.*$|datadir = ${datadir}|" \ - -e "s|^sysconfdir[ ]*=.*$|sysconfdir = ${sysconfdir}|" \ - -e "s|^sharedstatedir[ ]*=.*$|sharedstatedir = ${sharedstatedir}|" \ - -e "s|^localstatedir[ ]*=.*$|localstatedir = ${localstatedir}|" \ - -e "s|^libdir[ ]*=.*$|libdir = ${libdir}|" \ - -e "s|^includedir[ ]*=.*$|includedir = ${includedir}|" \ - -e "s|^oldincludedir[ ]*=.*$|oldincludedir = ${oldincludedir}|" \ - -e "s|^infodir[ ]*=.*$|infodir = ${infodir}|" \ - -e "s|^mandir[ ]*=.*$|mandir = ${mandir}|" \ - -e "/^CC[ ]*=/{ - :loop1 - /\\\\$/ N - s/\\\\\\n//g - t loop1 - s%^CC[ ]*=.*$%CC = ${CC}% - }" \ - -e "/^CXX[ ]*=/{ - :loop2 - /\\\\$/ N - s/\\\\\\n//g - t loop2 - s%^CXX[ ]*=.*$%CXX = ${CXX}% - }" \ - -e "/^CFLAGS[ ]*=/{ - :loop3 - /\\\\$/ N - s/\\\\\\n//g - t loop3 - s%^CFLAGS[ ]*=.*$%CFLAGS = ${CFLAGS}% - }" \ - -e "/^CXXFLAGS[ ]*=/{ - :loop4 - /\\\\$/ N - s/\\\\\\n//g - t loop4 - s%^CXXFLAGS[ ]*=.*$%CXXFLAGS = ${CXXFLAGS}% - }" \ - -e "s|^SHELL[ ]*=.*$|SHELL = ${config_shell}|" \ - -e "s|^srcdir[ ]*=.*$|srcdir = ${makesrcdir}|" \ - -e "s/ //" \ - -e "s:^program_prefix[ ]*=.*$:program_prefix = ${program_prefix}:" \ - -e "s:^program_suffix[ ]*=.*$:program_suffix = ${program_suffix}:" \ - -e "s:^program_transform_name[ ]*=.*$:program_transform_name = ${program_transform_name}:" \ - -e "s|^tooldir[ ]*=.*$|tooldir = ${tooldir}|" \ - -e "s:^DEFAULT_YACC[ ]*=.*$:DEFAULT_YACC = ${DEFAULT_YACC}:" \ - -e "s:^DEFAULT_LEX[ ]*=.*$:DEFAULT_LEX = ${DEFAULT_LEX}:" \ - -e "s:^DEFAULT_M4[ ]*=.*$:DEFAULT_M4 = ${DEFAULT_M4}:" \ - ${subdir}/Makefile.tem >> ${Makefile} - - sed -e "s:^GDB_TK[ ]*=.*$:GDB_TK = ${GDB_TK}:" ${Makefile} >${Makefile}.tem - mv -f ${Makefile}.tem ${Makefile} - - # If this is a Canadian Cross, preset the values of many more - # tools. - if [ "${build}" != "${host}" ]; then - for var in ${tools}; do - val=`eval 'echo $'"${var}"` - sed -e "/^${var}[ ]*=/{ - :loop1 - /\\\\$/ N - /\\\\$/ b loop1 - s/\\\\\\n//g - s%^${var}[ ]*=.*$%${var} = ${val}% - }" ${Makefile} > ${Makefile}.tem - mv -f ${Makefile}.tem ${Makefile} - done - fi +# the five makefile fragments MUST end up in the resulting Makefile in this order: +# package macros, target, host, site, and package rules. - # final copy now in ${Makefile} +if [ -f ${srcdir}/${Makefile_in} ] ; then - else - echo "No Makefile.in found in ${srcdir}/${subdir}, unable to configure" 1>&2 - fi + # Conditionalize the makefile for this package from "Makefile.in" (or whatever it's called) into Makefile.tem. + rm -f ./${Makefile}.tem + case "${package_makefile_rules_frag}" in + "") cp ${srcdir}/${Makefile_in} ./Makefile.tem ;; + *) + if [ ! -f ${package_makefile_rules_frag} ] ; then + package_makefile_rules_frag=${srcdir}/${package_makefile_rules_frag} + fi + if [ -f ${package_makefile_rules_frag} ] ; then + sed -e "/^####/ r ${package_makefile_rules_frag}" ${srcdir}/${Makefile_in} > ${Makefile}.tem + else + echo '***' Expected package makefile rules fragment \"${package_makefile_rules_frag}\" 1>&2 + echo '***' is missing in ${PWD=`${PWDCMD-pwd}`}. 1>&2 + cp ${srcdir}/${Makefile_in} ./Makefile.tem + fi + esac + # working copy now in ${Makefile}.tem + + # Conditionalize for this site. + rm -f ${Makefile} + case "${site}" in + "") mv ./Makefile.tem ${Makefile} ;; + *) + site_makefile_frag=${srcdir}/config/ms-${site} + + if [ -f ${site_makefile_frag} ] ; then + sed -e "/^####/ r ${site_makefile_frag}" ./Makefile.tem > ${Makefile} + else + mv ./Makefile.tem ${Makefile} + site_makefile_frag= + fi + ;; + esac + # working copy now in ${Makefile} + + # Conditionalize the makefile for this host. + rm -f ./Makefile.tem + case "${host_makefile_frag}" in + "") mv ${Makefile} ./Makefile.tem ;; + *) + if [ ! -f ${host_makefile_frag} ] ; then + host_makefile_frag=${srcdir}/${host_makefile_frag} + fi + if [ -f ${host_makefile_frag} ] ; then + sed -e "/^####/ r ${host_makefile_frag}" ${Makefile} > ./Makefile.tem + else + echo '***' Expected host makefile fragment \"${host_makefile_frag}\" 1>&2 + echo '***' is missing in ${PWD=`${PWDCMD-pwd}`}. 1>&2 + mv ${Makefile} ./Makefile.tem + fi + esac + # working copy now in ./Makefile.tem + + # Conditionalize the makefile for this target. + rm -f ${Makefile} + case "${target_makefile_frag}" in + "") mv ./Makefile.tem ${Makefile} ;; + *) + if [ ! -f ${target_makefile_frag} ] ; then + target_makefile_frag=${srcdir}/${target_makefile_frag} + fi + if [ -f ${target_makefile_frag} ] ; then + sed -e "/^####/ r ${target_makefile_frag}" ./Makefile.tem > ${Makefile} + else + mv ./Makefile.tem ${Makefile} + target_makefile_frag= + fi + ;; + esac + # working copy now in ${Makefile} + + # Emit the default values of this package's macros. + rm -f ./Makefile.tem + case "${package_makefile_frag}" in + "") mv ${Makefile} ./Makefile.tem ;; + *) + if [ ! -f ${package_makefile_frag} ] ; then + package_makefile_frag=${srcdir}/${package_makefile_frag} + fi + if [ -f ${package_makefile_frag} ] ; then + sed -e "/^####/ r ${package_makefile_frag}" ${Makefile} > ./Makefile.tem + else + echo '***' Expected package makefile fragment \"${package_makefile_rules_frag}\" 1>&2 + echo '***' is missing in ${PWD=`${PWDCMD-pwd}`}. 1>&2 + mv ${Makefile} ./Makefile.tem + fi + esac + # real copy now in ./Makefile.tem - rm -f ${subdir}/Makefile.tem + # record if we want runtime library stuff installed in libsubdir. + # Blank means no. + if test -z "${enable_version_specific_runtime_libs}"; then + enable_version_specific_runtime_libs=no + fi - case "${host_makefile_frag}" in - "") using= ;; - *) using="and \"${host_makefile_frag}\"" ;; - esac + sed -e "s|@configlinks@|${configlinks}|" \ + -e "s|@build_alias@|${build_alias}|" \ + -e "s|@build_cpu@|${build_cpu}|" \ + -e "s|@build_vendor@|${build_vendor}|" \ + -e "s|@build_os@|${build_os}|" \ + -e "s|@host_alias@|${host_alias}|" \ + -e "s|@host_cpu@|${host_cpu}|" \ + -e "s|@host_vendor@|${host_vendor}|" \ + -e "s|@host_os@|${host_os}|" \ + -e "s|@target_alias@|${target_alias}|" \ + -e "s|@target_cpu@|${target_cpu}|" \ + -e "s|@target_vendor@|${target_vendor}|" \ + -e "s|@target_os@|${target_os}|" \ + -e "s|@target_makefile_frag@|${target_makefile_frag}|" \ + -e "s|@host_makefile_frag@|${host_makefile_frag}|" \ + -e "s|@enable_shared@|${enable_shared}|" \ + -e "s|@enable_threads@|${enable_threads}|" \ + -e "s|@enable_version_specific_runtime_libs@|${enable_version_specific_runtime_libs}|" \ + -e "s|@gcc_version_trigger@|${gcc_version_trigger}|" \ + -e "s|@gcc_version@|${gcc_version}|" \ + ./Makefile.tem > ${Makefile} + mv -f ${Makefile} ./Makefile.tem + # Real copy now in Makefile.tem; no prologue. + + # reset prefix, exec_prefix, srcdir, SUBDIRS, NONSUBDIRS, + # remove any form feeds. + sed -e "s|@configdirs@|${configdirs}|" \ + -e "s|@prefix@|${prefix}|" \ + -e "s|@exec_prefix@|${exec_prefix}|" \ + -e "s|@bindir@|${bindir}|" \ + -e "s|@sbindir@|${sbindir}|" \ + -e "s|@libexecdir@|${libexecdir}|" \ + -e "s|@datadir@|${datadir}|" \ + -e "s|@sysconfdir@|${sysconfdir}|" \ + -e "s|@sharedstatedir@|${sharedstatedir}|" \ + -e "s|@localstatedir@|${localstatedir}|" \ + -e "s|@libdir@|${libdir}|" \ + -e "s|@includedir@|${includedir}|" \ + -e "s|@oldincludedir@|${oldincludedir}|" \ + -e "s|@infodir@|${infodir}|" \ + -e "s|@mandir@|${mandir}|" \ + -e "s|@CC@|${CC}|" \ + -e "s|@CXX@|${CXX}|" \ + -e "s|@CFLAGS@|${CFLAGS}|" \ + -e "s|@CXXFLAGS@|${CXXFLAGS}|" \ + -e "s|@config_shell@|${config_shell}|" \ + -e "s|@srcdir@|${srcdir}|" \ + -e "s/ //" \ + -e "s:@program_transform_name@:${program_transform_name}:" \ + -e "s|@tooldir@|${tooldir}|" \ + -e "s|@build_tooldir@|${tooldir}|" \ + -e "s:@DEFAULT_YACC@:${DEFAULT_YACC}:" \ + -e "s:@DEFAULT_LEX@:${DEFAULT_LEX}:" \ + -e "s:@DEFAULT_M4@:${DEFAULT_M4}:" \ + ./Makefile.tem > ${Makefile} + + # If this is a Canadian Cross, preset the values of many more + # tools. + if [ "${build}" != "${host}" ]; then + for var in ${tools}; do + eval val=\$${var} + sed -e "/^${var}[ ]*=/{ + :loop1 + /\\\\$/ N + /\\\\$/ b loop1 + s/\\\\\\n//g + s%^${var}[ ]*=.*$%${var} = ${val}% + }" ${Makefile} > ${Makefile}.tem + mv -f ${Makefile}.tem ${Makefile} + done + fi + # If this is NOT a Canadian Cross, preset the values of some more + # tools. The above line should get merged into this, but this + # substitutes *once* where the above substitutes *globally*; that + # needs to be worked out before the merger. The issue is in Makefile + # fragment elements (ick, yuck, ugh). + if [ "${build}" = "${host}" ]; then + for var in ${tools}; do + eval val=\$${var} + sed -e "s%@${var}@%${val}%" ${Makefile} > ${Makefile}.tem + mv -f ${Makefile}.tem ${Makefile} + done + fi - case "${target_makefile_frag}" in - "") ;; - *) using="${using} and \"${target_makefile_frag}\"" ;; - esac + # final copy now in ${Makefile} - case "${site_makefile_frag}" in - "") ;; - *) using="${using} and \"${site_makefile_frag}\"" ;; - esac +else + echo "No Makefile.in found in ${srcdir}/., unable to configure" 1>&2 +fi - newusing=`echo "${using}" | sed 's/and/using/'` - using=${newusing} - echo "Created \"${Makefile}\" in" ${PWD=`pwd`} ${using} +rm -f ./Makefile.tem - . ${tmpfile}.pos +case "${host_makefile_frag}" in + "") using= ;; + *) using="and \"${host_makefile_frag}\"" ;; +esac - # describe the chosen configuration in config.status. - # Make that file a shellscript which will reestablish - # the same configuration. Used in Makefiles to rebuild - # Makefiles. +case "${target_makefile_frag}" in + "") ;; + *) using="${using} and \"${target_makefile_frag}\"" ;; +esac - case "${norecursion}" in - "") arguments="${arguments} --norecursion" ;; - *) ;; - esac +case "${site_makefile_frag}" in + "") ;; + *) using="${using} and \"${site_makefile_frag}\"" ;; +esac - if [ ${subdir} = . ] ; then - echo "#!/bin/sh -# ${NO_EDIT} -# This directory was configured as follows: -${progname}" ${arguments} " -# ${using}" > ${subdir}/config.new - else - echo "#!/bin/sh -# ${NO_EDIT} -# This directory was configured as follows: -cd ${invsubdir} -${progname}" ${arguments} " -# ${using}" > ${subdir}/config.new - fi - chmod a+x ${subdir}/config.new - if [ -r ${subdir}/config.back ] ; then - mv -f ${subdir}/config.back ${subdir}/config.status - fi - ${config_shell} ${moveifchange} ${subdir}/config.new ${subdir}/config.status - ;; +newusing=`echo "${using}" | sed 's/and/using/'` +using=${newusing} +echo "Created \"${Makefile}\" in" ${PWD=`${PWDCMD-pwd}`} ${using} - *) rm -f ${Makefile} ${subdir}/config.status ${links} ;; - esac -done +. ${tmpfile}.pos -# If there are subdirectories, then recur. -if [ -z "${norecursion}" ] && [ -n "${configdirs}" ] ; then - for configdir in ${configdirs} ${extraconfigdirs} ; do - - # If configdir contains ',' it is - # srcdir,builddir,target_alias - # These come from extraconfigdirs. - case ${configdir} in - *,*) - eval `echo ${configdir} | sed -e 's/\([^,]*\),\([^,]*\),\(.*\)/cfg_dir=\1 bld_dir=\2 tgt_alias=\3/'` - ;; - *) - cfg_dir=${configdir} - bld_dir=${configdir} - tgt_alias=${target_alias} - ;; - esac +# describe the chosen configuration in config.status. +# Make that file a shellscript which will reestablish +# the same configuration. Used in Makefiles to rebuild +# Makefiles. - if [ -d ${srcdir}/${cfg_dir} ] ; then - eval echo Configuring ${configdir}... ${redirect} - case "${srcdir}" in - ".") ;; - *) - if [ ! -d ./${bld_dir} ] ; then - if mkdir ./${bld_dir} ; then - true - else - echo '***' "${progname}: could not make ${PWD=`pwd`}/${bld_dir}" 1>&2 - exit 1 - fi - fi - ;; - esac - - POPDIR=${PWD=`pwd`} - cd ${bld_dir} - -### figure out what to do with srcdir - case "${srcdir}" in - ".") newsrcdir=${srcdir} ;; # no -srcdir option. We're building in place. - /*) # absolute path - newsrcdir=${srcdir}/${cfg_dir} - srcdiroption="--srcdir=${newsrcdir}" - ;; - ?:*) # absolute path on win32 - newsrcdir=${srcdir}/${cfg_dir} - srcdiroption="--srcdir=${newsrcdir}" - ;; - *) # otherwise relative - newsrcdir=../${srcdir}/${cfg_dir} - srcdiroption="--srcdir=${newsrcdir}" - ;; - esac - - # Handle --cache-file=../XXX - case "${cache_file}" in - "") # empty - ;; - /*) # absolute path - cache_file_option="--cache-file=${cache_file}" - ;; - ?:*) # absolute path on win32 - cache_file_option="--cache-file=${cache_file}" - ;; - *) # relative path - cache_file_option="--cache-file=../${cache_file}" - ;; - esac - -### check for guested configure, otherwise fix possibly relative progname - if [ -f ${newsrcdir}/configure ] ; then - recprog=${newsrcdir}/configure - elif [ -f ${newsrcdir}/configure.in ] ; then - case "${progname}" in - /*) recprog=${progname} ;; - ?:*) recprog=${progname} ;; - *) recprog=../${progname} ;; - esac - else - eval echo No configuration information in ${cfg_dir} ${redirect} - recprog= - fi - -### The recursion line is here. - if [ ! -z "${recprog}" ] ; then - if eval ${config_shell} ${recprog} ${verbose} ${buildopt} --host=${host_alias} --target=${tgt_alias} \ - ${prefixoption} ${tmpdiroption} ${exec_prefixoption} \ - ${srcdiroption} ${diroptions} ${program_prefixoption} ${program_suffixoption} ${program_transform_nameoption} ${site_option} ${withoptions} ${withoutoptions} ${enableoptions} ${disableoptions} ${floating_pointoption} ${cache_file_option} ${removing} ${other_options} ${redirect} ; then - true - else - echo Configure in `pwd` failed, exiting. 1>&2 - exit 1 - fi - fi +case "${norecursion}" in + "") arguments="${arguments} --norecursion" ;; + *) ;; +esac - cd ${POPDIR} - fi - done +echo "#!/bin/sh +# ${NO_EDIT} +# This directory was configured as follows: +${progname}" ${arguments} " +# ${using}" > ./config.new +chmod a+x ./config.new +if [ -r ./config.back ] ; then + mv -f ./config.back ./config.status fi +${config_shell} ${moveifchange} ./config.new ./config.status # Perform the same cleanup as the trap handler, minus the "exit 1" of course, # and reset the trap handler. -rm -f ${tmpfile}.com ${tmpfile}.tgt ${tmpfile}.hst ${tmpfile}.pos +rm -rf ${tmpdir} trap 0 exit 0