changeset 5531:c4f36c5ece61

(creating src/Makefile): Put code inside 2nd arg to AC_OUTPUT as it should be; hopefully noone will again see fit to gratuitously break this and not make a change log entry. Optimized sed processing of Makefile.in and cpp output; now preserves comments previously removed from the cpp input. Eliminated temp file for cpp output. Generate -U switches to undefine all identifiers that appear in the directory name ${srcdir}; pass these to cpp.
author Roland McGrath <roland@gnu.org>
date Sun, 09 Jan 1994 00:36:27 +0000
parents 7ff479a8e8bf
children 9c86c71e879d
files configure1.in
diffstat 1 files changed, 28 insertions(+), 46 deletions(-) [+]
line wrap: on
line diff
--- a/configure1.in	Sat Jan 08 23:22:33 1994 +0000
+++ b/configure1.in	Sun Jan 09 00:36:27 1994 +0000
@@ -1431,50 +1431,32 @@
 test -n "${exec_prefix}" &&
   exec_prefix=`echo "${exec_prefix}" | sed 's,\([^/]\)/*$,\1,'`
 ]
-AC_OUTPUT(Makefile lib-src/Makefile oldXMenu/Makefile src/Makefile.in) [
+AC_OUTPUT(Makefile lib-src/Makefile oldXMenu/Makefile src/Makefile.in, [
 # Build src/Makefile from ${srcdir}/src/Makefile.in.  This must be done
-# after src/config.h is built, since we rely on that file.  Only do the
-# build if "config.status" is present, since it's non-presence indicates
-# an error occured.
-status=$?
-if [ ! -f ./config.status ]; then
-   exit $status
-fi
-topsrcdir=${srcdir}
-  # We discard all lines in Makefile.in that start with `# Generated' or /**/#
-  # because some cpps get confused by them.
-  # Really we should preserve them somehow into Makefile,
-  # but that is beyond my level of shell programming.
-makefile_command='echo "creating src/Makefile";
-  topsrcdir='"${topsrcdir}"';
-( cd ./src;
-  rm -f junk.c;
-  sed -e '\''s/^# Generated.*//'\'' -e '\''s%/\*\*/#.*%%'\'' < Makefile.in > junk.c;
-  eval `echo ${CPP} -I. -I${topsrcdir}/src ${CPPFLAGS} junk.c \>junk.cpp`;
-  < junk.cpp							'\
-'    sed -e '\''s/^#.*//'\''					'\
-'	-e '\''s/^[ \f\t][ \f\t]*$//'\''			'\
-'	-e '\''s/^ /	/'\'' 					'\
-'	| sed -n -e '\''/^..*$/p'\''				'\
-'	> Makefile.new;
-    chmod 444 Makefile.new;
-    mv -f Makefile.new Makefile;
-    rm -f junk.c junk.cpp;
-)'
-eval `echo $makefile_command`
-# AC-OUTPUT has created `config.status' already.  We need to add the above
-# commands to re-create `src/Makefile', and we need to insert them before
-# the final "exit 0" which appears at the end of `config.status'.
-<config.status sed -e 's/^exit 0$//' >config.new
-echo $makefile_command >>config.new
-echo exit 0 >>config.new
-mv -f config.new config.status
-chmod +x config.status
-# Don't let the fact that we just rewrote config.status make Makefile think
-# that it is now newer.  We have just rewritten all of the Makefiles as well.
-MFS="Makefile src/Makefile src/Makefile.in lib-src/Makefile oldXMenu/Makefile"
-for file in $MFS; do
-   chmod a+w $file; touch $file; chmod 444 $file
-done
-exit 0
-]
+# after src/config.h is built, since we rely on that file.
+
+changequote(,)dnl The horror, the horror.
+# Now get this: Some word that is part of the ${srcdir} directory name
+# might, just might, happen to be an identifier like `i386' or something,
+# and be predefined by the C preprocessor to some helpful value like 1, or
+# maybe the empty string.  Needless to say consequent macro substitutions
+# are less than conducive to the makefile finding the correct directory.
+srcdir_undefs="`echo $top_srcdir | 
+sed -e 's/[^a-zA-Z0-9_]/ /g' -e 's/  */ -U/g'  \
+    -e 's/ -U$//' -e 's/^[^ ]/-U/' \
+    -e 's/-U[0-9][^ ]*//' \
+`"
+changequote([,])dnl
+
+echo creating src/Makefile
+( cd src
+  rm -f junk.c
+  sed -e 's@^# \(Generated.*\)$@/* \1 */@' \
+      -e 's@/\*\*/#\(.*\)$@/* \1 */@' \
+      < Makefile.in > junk.c
+  $CPP $srcdir_undefs -I. -I$top_srcdir/src $CPPFLAGS junk.c |
+  sed -e 's/^ /	/' -e '/^#/d' -e '/^[ 	][ 	]*$/d' > Makefile.new
+  rm -f junk.c
+  chmod 444 Makefile.new;
+  mv -f Makefile.new Makefile;
+)])