Hi, I would like to propose a set of diffs to enable compilation of gcc without requiring flex/bison. I feel that this would greatly benefit the variety of users building gcc.
The only files which really need these are: gcc/gengtype-lex.l gcc/treelang/lex.l gcc/treelang/parse.y One more thing to note is that, in the toplevel directories: intl/ (for libintl) and libjava/ already ship with the bison-ed .y files (as plural.c and XQueryParser.java) respectively; They are also present in the svn repository. So I fell it wouldn't be against the rule to ship these as part of the core-distro as well. I wish that this same procedure is applied to the files I have mentioned above. Things to be done: 1. flex gcc/gengtype-lex.l into gcc/gengtype-lex.c 2. flex gcc/treelang/lex.l into gcc/treelang/lex.c 3. bison gcc/treelang/parse.y into gcc/treelang/parse.h, gcc/treelang/parse.c, gcc/treelang/parse.output (bison's output) And finally: 4. Cleanup gcc/Makefile.in, gcc/treelang/Make-lang.in, gcc/configure.ac 5. Rerun autoconf in gcc/. Because the version of flex/bison/autoconf on my build system may be newer than what is used by the maintainers, I am not unable to send patches for 1, 2, 3 and 5. I am sending the diffs for 4. If someone can help me with the rest/in submitting a diff, Please reply to this. I hereby request for comments/acknowledgments/suggestions; -- Karthik
--- gcc/configure.ac 2007-11-08 22:09:59.000000000 +0530 +++ ../configure.ac 2007-11-26 16:31:16.000000000 +0530 @@ -865,14 +865,6 @@ MISSING="${CONFIG_SHELL-/bin/sh} $ac_aux_dir/missing" -# How about lex? -dnl Don't use AC_PROG_LEX; we insist on flex. -dnl LEXLIB is not useful in gcc. -AC_CHECK_PROGS([FLEX], flex, [$MISSING flex]) - -# Bison? -AC_CHECK_PROGS([BISON], bison, [$MISSING bison]) - # Binutils are not build modules, unlike bison/flex/makeinfo. So we # check for build == host before using them.
--- gcc/Makefile.in 2007-11-13 19:23:33.000000000 +0530 +++ ../Makefile.in 2007-11-26 16:36:00.000000000 +0530 @@ -209,10 +209,6 @@ AWK = @AWK@ CC = @CC@ -BISON = @BISON@ -BISONFLAGS = -FLEX = @FLEX@ -FLEXFLAGS = AR = @AR@ AR_FLAGS = rc NM = @NM@ @@ -933,12 +929,8 @@ export slibdir FLAGS_TO_PASS = \ - "BISON=$(BISON)" \ - "BISONFLAGS=$(BISONFLAGS)" \ "CFLAGS=$(CFLAGS) $(WARN_CFLAGS)" \ "LDFLAGS=$(LDFLAGS)" \ - "FLEX=$(FLEX)" \ - "FLEXFLAGS=$(FLEXFLAGS)" \ "LN=$(LN)" \ "LN_S=$(LN_S)" \ "MAKEINFO=$(MAKEINFO)" \ --- gcc/Makefile.in 2007-11-13 19:23:33.000000000 +0530 +++ ../Makefile.in 2007-11-26 16:07:33.000000000 +0530 @@ -1718,8 +1718,7 @@ srcextra: gcc.srcextra lang.srcextra -gcc.srcextra: gengtype-lex.c - -cp -p $^ $(srcdir) +gcc.srcextra: c-incpath.o: c-incpath.c c-incpath.h $(CONFIG_H) $(SYSTEM_H) $(CPPLIB_H) \ intl.h prefix.h coretypes.h $(TM_H) cppdefault.h $(TARGET_H) \ @@ -3251,10 +3250,6 @@ build/gengtype$(build_exeext) : build/gengtype-lex.o build/gengtype-parse.o \ $(BUILD_ERRORS) -# Generated source files for gengtype. -gengtype-lex.c : gengtype-lex.l - -$(FLEX) $(FLEXFLAGS) -o$@ $< - # # Remake internationalization support. intl.o: intl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) intl.h Makefile
--- gcc/treelang/Make-lang.in 2007-11-22 21:52:14.000000000 +0530 +++ ../../gcc-mainline-dp/gcc/treelang/Make-lang.in 2007-11-26 16:50:21.000000000 +0530 @@ -53,7 +53,7 @@ # GCC_FOR_TREELANG = ./xgcc $(GCC_EXTRAS) -TREE_GENERATED = lex.c parse.c parse.h parse.output +TREE_GENERATED = # We need to use something other than treelang here because the directory # is called treelang TREE_EXES = gtreelang @@ -123,21 +123,6 @@ $(TM_H) $(DIAGNOSTIC_H) $(TREE_H) treelang/treelang.h input.h \ treelang/parse.h toplev.h -# generated files the files from lex and yacc are put into the source -# directory in case someone wants to build but does not have -# lex/yacc - -treelang.srcextra: treelang/parse.c treelang/parse.h treelang/lex.c - -cp -p $^ $(srcdir)/treelang - -treelang/lex.c: treelang/lex.l - -$(FLEX) $(FLEXFLAGS) -o$@ $< - -treelang/parse.c treelang/parse.h treelang/parse.output: treelang/parse.y - -$(BISON) $(BISONFLAGS) -v --defines --output=treelang/parse.c $< - -# -v - # # Build hooks: