toplevel configure: simplify

Nathanael Nerode neroden@doctormoo.dyndns.org
Fri Oct 4 13:21:00 GMT 2002


'removing' doesn't work.  This script is never used in subdirectories any
more: $subdirs is always empty; $subdir is always '.'; $makesrcdir is always
$srcdir.  So I eliminated those variables, and consequently all logic
which always went one way.

This doesn't change the section for calling subconfigures.

Note that this eliminates a 'case' and a 'for' around most of the script.
A second patch contains the reformatting.

After this it's a *lot* easier to tell what's actually being done.

Tested by configuring on i686-pc-linux-gnu, no difference in generated files.

	* configure: Remove 'removing', which doesn't work.  Replace $subdir 
	with . everywhere.  Replace $subdirs with ''.  Replace $makesrcdir 
	with $srcdir.

--- configure.old	2002-10-04 16:09:31.000000000 -0400
+++ configure.mid	2002-10-04 16:06:50.000000000 -0400
@@ -79,13 +79,11 @@
 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
@@ -317,9 +315,6 @@
 		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"
@@ -639,7 +634,7 @@
 		${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
@@ -1078,56 +1073,14 @@
   all_build_modules='$(ALL_BUILD_MODULES_LIST)'
 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=. ;;
-        /* | [A-Za-z]:[\\/]* ) # 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=`${PWDCMD-pwd}`}/${subdir}" 1>&2
-                exit 1
-        fi
-    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
+        if [ -r ./config.status ] ; then
+                mv -f ./config.status ./config.back
         fi
         while [ -n "${files}" ] ; do
                 # set file to car of files, files to cdr of files
@@ -1168,14 +1121,14 @@
         # 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
+        if [ -r ${srcdir}/.gdbinit ] ; then
                 case ${srcdir} in
                 .) ;;
-                *) cat > ${subdir}/.gdbinit <<EOF
+                *) cat > ./.gdbinit <<EOF
 # ${NO_EDIT}
-dir ${makesrcdir}
+dir ${srcdir}
 dir .
-source ${makesrcdir}/.gdbinit
+source ${srcdir}/.gdbinit
 EOF
                         ;;
                 esac
@@ -1193,22 +1146,22 @@
         # the five makefile fragments MUST end up in the resulting Makefile in this order: 
         # package macros, target, host, site, and package rules.
 
-        if [ -f ${srcdir}/${subdir}/${Makefile_in} ] ; then
+        if [ -f ${srcdir}/${Makefile_in} ] ; then
 
             # Conditionalize the makefile for this package from "Makefile.in" (or whatever it's called) into Makefile.tem.
-            rm -f ${subdir}/${Makefile}.tem
+            rm -f ./${Makefile}.tem
             case "${package_makefile_rules_frag}" in
-              "") cp ${srcdir}/${subdir}/${Makefile_in} ${subdir}/Makefile.tem ;;
+              "") 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}/${subdir}/${Makefile_in} > ${Makefile}.tem
+                              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}/${subdir}/${Makefile_in} ${subdir}/Makefile.tem
+                              cp ${srcdir}/${Makefile_in} ./Makefile.tem
                       fi
             esac
             # working copy now in ${Makefile}.tem
@@ -1216,15 +1169,15 @@
             # Conditionalize for this site.
             rm -f ${Makefile}
               case "${site}" in
-              "") mv ${subdir}/Makefile.tem ${Makefile} ;;
+              "") mv ./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 \
+                              sed -e "/^####/  r ${site_makefile_frag}" ./Makefile.tem \
                                       > ${Makefile}
                       else
-                              mv ${subdir}/Makefile.tem ${Makefile}
+                              mv ./Makefile.tem ${Makefile}
                               site_makefile_frag=
                       fi
                       ;;
@@ -1232,35 +1185,35 @@
             # working copy now in ${Makefile}
 
             # Conditionalize the makefile for this host.
-            rm -f ${subdir}/Makefile.tem
+            rm -f ./Makefile.tem
             case "${host_makefile_frag}" in
-              "") mv ${Makefile} ${subdir}/Makefile.tem ;;
+              "") 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} > ${subdir}/Makefile.tem
+                              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} ${subdir}/Makefile.tem
+                              mv ${Makefile} ./Makefile.tem
                       fi
             esac
-            # working copy now in ${subdir)/Makefile.tem
+            # working copy now in ./Makefile.tem
 
             # Conditionalize the makefile for this target.
             rm -f ${Makefile}
             case "${target_makefile_frag}" in
-              "") mv ${subdir}/Makefile.tem ${Makefile} ;;
+              "") 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}" ${subdir}/Makefile.tem > ${Makefile}
+                              sed -e "/^####/  r ${target_makefile_frag}" ./Makefile.tem > ${Makefile}
                       else
-                              mv ${subdir}/Makefile.tem ${Makefile}
+                              mv ./Makefile.tem ${Makefile}
                               target_makefile_frag=
                       fi
                       ;;
@@ -1268,28 +1221,28 @@
             # working copy now in ${Makefile}
 
             # Emit the default values of this package's macros.
-            rm -f ${subdir}/Makefile.tem
+            rm -f ./Makefile.tem
             case "${package_makefile_frag}" in
-              "") mv ${Makefile} ${subdir}/Makefile.tem ;;
+              "") 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} > ${subdir}/Makefile.tem
+                              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} ${subdir}/Makefile.tem
+                              mv ${Makefile} ./Makefile.tem
                       fi
             esac
-            # real copy now in ${subdir}/Makefile.tem
+            # real copy now in ./Makefile.tem
 
             # prepend warning about editing, and a bunch of variables.
             rm -f ${Makefile}
             cat > ${Makefile} <<EOF
 # ${NO_EDIT}
-VPATH = ${makesrcdir}
+VPATH = ${srcdir}
 links = ${configlinks}
 host_alias = ${host_alias}
 host_cpu = ${host_cpu}
@@ -1316,23 +1269,23 @@
             case "${package_makefile_frag}" in
               "") ;;
               /* | [A-Za-z]:[\\/]* ) echo package_makefile_frag = ${package_makefile_frag} >>${Makefile} ;;
-              *)  echo package_makefile_frag = ${invsubdir}${package_makefile_frag} >>${Makefile} ;;
+              *)  echo package_makefile_frag = ${package_makefile_frag} >>${Makefile} ;;
             esac
 
             case "${target_makefile_frag}" in
               "") ;;
               /* | [A-Za-z]:[\\/]* ) echo target_makefile_frag = ${target_makefile_frag} >>${Makefile} ;;
-              *)  echo target_makefile_frag = ${invsubdir}${target_makefile_frag} >>${Makefile} ;;
+              *)  echo target_makefile_frag = ${target_makefile_frag} >>${Makefile} ;;
             esac
 
             case "${host_makefile_frag}" in
               "") ;;
               /* | [A-Za-z]:[\\/]* ) echo host_makefile_frag = ${host_makefile_frag} >>${Makefile} ;;
-              *)  echo host_makefile_frag = ${invsubdir}${host_makefile_frag} >>${Makefile} ;;
+              *)  echo host_makefile_frag = ${host_makefile_frag} >>${Makefile} ;;
             esac
 
             if [ "${site_makefile_frag}" != "" ] ; then
-                echo site_makefile_frag = ${invsubdir}${site_makefile_frag} >>${Makefile}
+                echo site_makefile_frag = ${site_makefile_frag} >>${Makefile}
             fi 
 
 	    echo enable_shared = ${enable_shared} >> ${Makefile}
@@ -1352,18 +1305,16 @@
 
             # reset prefix, exec_prefix, srcdir, SUBDIRS, NONSUBDIRS,
             # remove any form feeds.
-            if [ -z "${subdirs}" ]; then
-                rm -f ${subdir}/Makefile.tm2
+                rm -f ./Makefile.tm2
                 sedtemp=sed.$$
                 cat >$sedtemp <<EOF
 s:@configdirs@:${configdirs}:
 EOF
                 sed -f $sedtemp \
-                    ${subdir}/Makefile.tem > ${subdir}/Makefile.tm2
+                    ./Makefile.tem > ./Makefile.tm2
                 rm -f $sedtemp
-                rm -f ${subdir}/Makefile.tem
-                mv ${subdir}/Makefile.tm2 ${subdir}/Makefile.tem
-	    fi
+                rm -f ./Makefile.tem
+                mv ./Makefile.tm2 ./Makefile.tem
 	    sed     -e "s|@prefix@|${prefix}|" \
                     -e "s|@exec_prefix@|${exec_prefix}|" \
                     -e "s|@bindir@|${bindir}|" \
@@ -1408,7 +1359,7 @@
 			s%^CXXFLAGS[ 	]*=.*$%CXXFLAGS = ${CXXFLAGS}%
 			}" \
 		    -e "s|@config_shell@|${config_shell}|" \
-                    -e "s|@srcdir@|${makesrcdir}|" \
+                    -e "s|@srcdir@|${srcdir}|" \
                     -e "s///" \
                     -e "s:@program_transform_name@:${program_transform_name}:" \
                     -e "s|@tooldir@|${tooldir}|" \
@@ -1416,7 +1367,7 @@
 		    -e "s:@DEFAULT_YACC@:${DEFAULT_YACC}:" \
 		    -e "s:@DEFAULT_LEX@:${DEFAULT_LEX}:" \
 		    -e "s:@DEFAULT_M4@:${DEFAULT_M4}:" \
-                    ${subdir}/Makefile.tem >> ${Makefile}
+                    ./Makefile.tem >> ${Makefile}
   
 	    sed -e "s:@GDB_TK@:${GDB_TK}:" ${Makefile} >${Makefile}.tem
 	    mv -f ${Makefile}.tem ${Makefile}
@@ -1440,10 +1391,10 @@
             # final copy now in ${Makefile}
 
         else
-           echo "No Makefile.in found in ${srcdir}/${subdir}, unable to configure" 1>&2
+           echo "No Makefile.in found in ${srcdir}/., unable to configure" 1>&2
         fi
 
-        rm -f ${subdir}/Makefile.tem
+        rm -f ./Makefile.tem
 
         case "${host_makefile_frag}" in
         "") using= ;;
@@ -1476,30 +1427,16 @@
         *) ;;
         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
+# ${using}" > ./config.new
+        chmod a+x ./config.new
+        if [ -r ./config.back ] ; then
+                mv -f ./config.back ./config.status
         fi
-	${config_shell} ${moveifchange} ${subdir}/config.new ${subdir}/config.status
-        ;;
-
-    *)  rm -f ${Makefile} ${subdir}/config.status ${links} ;;
-    esac
-done
+	${config_shell} ${moveifchange} ./config.new ./config.status
 
 # If there are subdirectories, then recur.
 if [ -z "${norecursion}" ] && [ -n "${configdirs}" ] ; then 
@@ -1580,7 +1517,7 @@
 			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
+                	                ${srcdiroption} ${diroptions} ${program_prefixoption} ${program_suffixoption} ${program_transform_nameoption} ${site_option} ${withoptions} ${withoutoptions} ${enableoptions} ${disableoptions} ${floating_pointoption} ${cache_file_option} ${other_options} ${redirect} ; then
 	                                true
         	                else
 					echo Configure in `${PWDCMD-pwd}` failed, exiting. 1>&2



More information about the Gcc-patches mailing list