Configuration/Makefile cleanups

Zack Weinberg zackw@Stanford.EDU
Thu Nov 9 09:06:00 GMT 2000


On Wed, Nov 08, 2000 at 02:04:02PM -0800, Zack Weinberg wrote:
> This patch expunges some of the nastier Makefile and configuration
> messes.  There's more where this came from, but I'd like feedback on
> the general approach.

This is a revised patch which insists on bison and flex.  Turns out to
be quite a bit shorter this way.

zw

	* configure.in: Remove AC_PROG_LEX and AC_PROG_YACC.  Look for
	flex and bison, specifically, first in a unified build and
	then installed on the system.
	* Makefile.in: Set BISON to @BISON@, FLEX to @FLEX@.  Rename
	LEXFLAGS to FLEXFLAGS.  Adjust ORDINARY_FLAGS_TO_PASS to
	match.

	(collect2.o, gcc.o, prefix.o, toplev.o, alloca.o, intl.o,
	cppdefault.o): Remove pointless sed munging of source file
	name.

f:
	* Make-lang.in (f/fini.o, f/proj-h.o): Remove pointless sed
	munging of source file name.
	($(srcdir)/f/intdoc.texi): Break up into several rules each of
	which builds just one thing.  Don't mess with $(LANGUAGES).
	(f/ansify.o, f/intdoc.o): Remove unnecessary rules.

===================================================================
Index: configure.in
--- configure.in	2000/11/09 07:45:13	1.445
+++ configure.in	2000/11/09 17:00:36
@@ -422,12 +422,10 @@ AC_C_INLINE
 
 # Find some useful tools
 AC_PROG_AWK
-AC_PROG_LEX
 gcc_AC_PROG_LN
 gcc_AC_PROG_LN_S
 gcc_AC_C_VOLATILE
 AC_PROG_RANLIB
-AC_PROG_YACC
 gcc_AC_PROG_INSTALL
 
 AC_HEADER_STDC
@@ -468,6 +466,23 @@ if test $gcc_cv_prog_makeinfo_modern = n
 else
   BUILD_INFO=info		AC_SUBST(BUILD_INFO)
   INSTALL_INFO=install-info	AC_SUBST(INSTALL_INFO)
+fi
+
+# How about lex?
+dnl Don't use AC_PROG_LEX; we insist on flex.
+dnl LEXLIB is not useful in gcc.
+if test -f $srcdir/../flex/skel.c; then
+  FLEX='$(objdir)/../flex/flex'
+else
+  AC_CHECK_PROG(FLEX, flex, flex, false)
+fi
+
+# Bison?
+# The -L switch is so bison can find its skeleton file.
+if test -f $srcdir/../bison/bison.simple; then
+  BISON='$(objdir)/../bison/bison -L $(srcdir)/../bison/'
+else
+  AC_CHECK_PROG(BISON, bison, bison, false)
 fi
 
 # See if the stage1 system preprocessor understands the ANSI C
===================================================================
Index: Makefile.in
--- Makefile.in	2000/11/05 10:35:30	1.535
+++ Makefile.in	2000/11/09 17:00:36
@@ -106,16 +106,10 @@ T_CPPFLAGS =
 
 AWK = @AWK@
 CC = @CC@
-# srcdir might be a relative pathname which won't be valid in a subdirectory,
-# so we must use objdir/srcdir instead to make it safe.  objdir is always
-# a full pathname.
-BISON = `if [ -f $(objdir)/../bison/bison ] ; then case $(srcdir) in \
-	/*) echo $(objdir)/../bison/bison -L $(srcdir)/../bison/ ;; \
-	*) echo $(objdir)/../bison/bison -L $(objdir)/$(srcdir)/../bison/ ;; \
-	esac; else echo bison ; fi`
+BISON = @BISON@
 BISONFLAGS =
-LEX = `if [ -f $(objdir)/../flex/flex ] ; then echo $(objdir)/../flex/flex ; else echo flex ; fi`
-LEXFLAGS =
+FLEX = @FLEX@
+FLEXFLAGS =
 AR = ar
 AR_FLAGS = rc
 DLLTOOL = dlltool
@@ -678,8 +672,8 @@ ORDINARY_FLAGS_TO_PASS = \
 	"CLIB=$(CLIB)" \
 	"GCC_FOR_TARGET=$(GCC_FOR_TARGET)" \
 	"LDFLAGS=$(LDFLAGS)" \
-	"LEX=$(LEX)" \
-	"LEXFLAGS=$(LEXFLAGS)" \
+	"FLEX=$(FLEX)" \
+	"FLEXFLAGS=$(FLEXFLAGS)" \
 	"LN=$(LN)" \
 	"LN_S=$(LN_S)" \
 	"MAKEINFO=$(MAKEINFO)" \
@@ -1173,7 +1167,7 @@ collect2.o : collect2.c $(CONFIG_H) syst
 	$(OBSTACK_H) $(DEMANGLE_H) collect2.h version.h
 	$(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES)  \
 	-DTARGET_MACHINE=\"$(target_alias)\" $(MAYBE_USE_COLLECT2) \
-	-c `echo $(srcdir)/collect2.c | sed 's,^\./,,'`
+	-c $(srcdir)/collect2.c
 
 tlink.o: tlink.c $(DEMANGLE_H) hash.h $(CONFIG_H) system.h collect2.h intl.h
 hash.o: hash.c hash.h system.h toplev.h
@@ -1229,7 +1223,7 @@ gcc.o: gcc.c $(CONFIG_H) system.h intl.h
     Makefile $(lang_specs_files) prefix.h $(GCC_H)
 	$(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
   $(DRIVER_DEFINES) \
-  -c `echo $(srcdir)/gcc.c | sed 's,^\./,,'`
+  -c $(srcdir)/gcc.c
 
 gccspec.o: gccspec.c $(CONFIG_H) system.h $(GCC_H)
 cppspec.o: cppspec.c $(CONFIG_H) system.h $(GCC_H)
@@ -1273,7 +1267,7 @@ obstack.o: $(srcdir)/../libiberty/obstac
 prefix.o: prefix.c $(CONFIG_H) system.h Makefile prefix.h
 	$(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
 	-DPREFIX=\"$(prefix)\" \
-	  -c `echo $(srcdir)/prefix.c | sed 's,^\./,,'`
+	  -c $(srcdir)/prefix.c
 
 convert.o: convert.c $(CONFIG_H) system.h $(TREE_H) flags.h convert.h toplev.h
 
@@ -1294,7 +1288,7 @@ toplev.o : toplev.c $(CONFIG_H) system.h
    graph.h $(LOOP_H) except.h $(REGS_H) $(TIMEVAR_H) $(lang_options_files) ssa.h
 	$(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(MAYBE_USE_COLLECT2) \
 	  -DTARGET_NAME=\"$(target_alias)\" \
-	  -c `echo $(srcdir)/toplev.c | sed 's,^\./,,'`
+	  -c $(srcdir)/toplev.c
 
 rtl.o : rtl.c $(CONFIG_H) system.h $(RTL_H) bitmap.h $(GGC_H) toplev.h
 
@@ -1487,7 +1481,7 @@ alloca.o:	$(srcdir)/../libiberty/alloca.
 	rm -f alloca.c
 	$(LN_S) $(srcdir)/../libiberty/alloca.c alloca.c
 	$(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(ALLOCA_FLAGS) \
-	  -c `echo alloca.c | sed 's,^\./,,'`
+	  -c alloca.c
 	$(ALLOCA_FINISH)
 #
 # Generate header and source files from the machine description,
@@ -1807,7 +1801,7 @@ $(HOST_PREFIX_1)ggc-none.o: ggc-none.c
 intl.o: intl.c intl.h gansidecl.h Makefile
 	$(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
 	  -DLOCALEDIR=\"$(localedir)\" \
-	  -c `echo $(srcdir)/intl.c | sed 's,^\./,,'`
+	  -c $(srcdir)/intl.c
 
 $(top_builddir)/intl/libintl.a: intl.all
 
@@ -1865,7 +1859,7 @@ cppinit.o:  cppinit.c  $(CONFIG_H) $(LIB
 cppdefault.o: cppdefault.c $(CONFIG_H) system.h cppdefault.h Makefile
 	$(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
 	  $(PREPROCESSOR_DEFINES) \
-	  -c `echo $(srcdir)/cppdefault.c | sed 's,^\./,,'`
+	  -c $(srcdir)/cppdefault.c
 
 mkdeps.o: mkdeps.c $(CONFIG_H) system.h mkdeps.h
 
===================================================================
Index: f/Make-lang.in
--- f/Make-lang.in	2000/11/05 10:35:32	1.69
+++ f/Make-lang.in	2000/11/09 17:00:37
@@ -141,14 +141,14 @@ f/fini: f/fini.o f/proj-h.o
 		f/fini.o f/proj-h.o
 
 f/fini.o:
-	$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) \
-	      `echo $(srcdir)/f/fini.c | sed 's,^\./,,'` -o $@
+	$(HOST_CC) $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) \
+	      -c $(srcdir)/f/fini.c $(OUTPUT_OPTION)
 
 # Like proj.o, but depends on hconfig.h instead of config.h.
 f/proj-h.o: f/proj.c f/proj.h $(HCONFIG_H) $(SYSTEM_H) $(ASSERT_H) $(GLIMITS_H)
-	$(HOST_CC) -c -DUSE_HCONFIG \
+	$(HOST_CC) -DUSE_HCONFIG \
 		$(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) \
-		`echo $(srcdir)/f/proj.c | sed 's,^\./,,'` -o $@
+		-c $(srcdir)/f/proj.c $(OUTPUT_OPTION)
 
 #
 # Build hooks:
@@ -213,21 +213,21 @@ f/g77.dvi: $(srcdir)/f/g77.texi $(srcdir
 # itself, which uses f/intrin.def; in fact, many bugs in f/intrin.def have
 # been found only upon reading the documentation that was automatically
 # produced from it.
-$(srcdir)/f/intdoc.texi: f/intdoc.c f/intdoc.in f/ansify.c \
-		f/intrin.def f/intrin.h
-	case "$(LANGUAGES)" in \
-	  *[fF]77*) touch lang-f77;; \
-	  *) rm -f lang-f77;; \
-	esac
-	if [ -f lang-f77 ]; then \
+
+$(srcdir)/f/intdoc.texi: f/intdoc$(build_exeext)
+	f/intdoc$(build_exeext) > $(srcdir)/f/intdoc.texi
+
+f/intdoc: f/intdoc.c f/intdoc.h0 f/intrin.h f/intrin.def hconfig.h system.h
 	  $(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) $(INCLUDES) \
-	   `echo $(srcdir)/f/ansify.c | sed 's,^\./,,'` -o f/ansify; \
-	  f/ansify <$(srcdir)/f/intdoc.in >f/intdoc.h0 $(srcdir)/f/intdoc.in; \
-	  $(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) $(INCLUDES) -I./f \
-	   `echo $(srcdir)/f/intdoc.c | sed 's,^\./,,'` -o f/intdoc; \
-	  f/intdoc > $(srcdir)/f/intdoc.texi; \
-	  rm f/intdoc$(build_exeext) f/ansify$(build_exeext) f/intdoc.h0; \
-	else true; fi
+		  $(srcdir)/f/intdoc.c -o f/intdoc
+
+f/intdoc.h0: f/intdoc.in f/ansify$(build_exeext)
+	f/ansify$(build_exeext) $(srcdir)/f/intdoc.in \
+		< $(srcdir)/f/intdoc.in > f/intdoc.h0
+
+f/ansify$(build_exeext): f/ansify.c hconfig.h system.h
+	  $(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) $(INCLUDES) \
+	  	$(srcdir)/f/ansify.c -o f/ansify$(build_exeext)
 
 $(srcdir)/f/BUGS: f/bugs0.texi f/bugs.texi f/root.texi
 	cd $(srcdir)/f; $(MAKEINFO) -D BUGSONLY --no-header --no-split \
@@ -388,7 +388,6 @@ f77.stage4: stage4-start
 #
 # .o: .h dependencies.
 
-f/ansify.o: f/ansify.c hconfig.h system.h
 f/bad.o: f/bad.c f/proj.h $(CONFIG_H) system.h f/bad.h f/bad.def f/where.h \
  glimits.h f/top.h f/malloc.h flags.h f/com.h f/com-rt.def $(TREE_H) f/bld.h \
  f/bld-op.def f/bit.h f/info.h f/info-b.def f/info-k.def f/info-w.def \
@@ -437,8 +436,6 @@ f/implic.o: f/implic.c f/proj.h $(CONFIG
 f/info.o: f/info.c f/proj.h $(CONFIG_H) system.h f/info.h f/info-b.def \
  f/info-k.def f/info-w.def f/target.h $(TREE_H) f/bad.h f/bad.def f/where.h \
  glimits.h f/top.h f/malloc.h f/lex.h f/type.h
-f/intdoc.o: f/intdoc.c hconfig.h system.h f/intrin.h f/intrin.def \
- f/intdoc.h0 f/intdoc.h0
 f/intrin.o: f/intrin.c f/proj.h $(CONFIG_H) system.h f/intrin.h \
  f/intrin.def f/bld.h f/bld-op.def f/bit.h f/malloc.h f/com.h f/com-rt.def \
  $(TREE_H) f/info.h f/info-b.def f/info-k.def f/info-w.def f/target.h f/bad.h \


More information about the Gcc-patches mailing list