From: Chris Lattner Date: Thu, 16 Jan 2003 22:44:19 +0000 (+0000) Subject: Simplify and correct rules for building lex/yacc files. Make sure to delete X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=e899678ffdd669338b6d71f429bb76eec0b85b11;p=oota-llvm.git Simplify and correct rules for building lex/yacc files. Make sure to delete output upon make clean git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5347 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/Makefile.common b/Makefile.common index eb5b4b661dc..43048f7eb7b 100644 --- a/Makefile.common +++ b/Makefile.common @@ -451,6 +451,15 @@ $(BUILD_ROOT)/Debug/%.o: %.cpp $(BUILD_ROOT)/Debug/.dir $(BUILD_ROOT)/Debug/%.o: %.c $(BUILD_ROOT)/Debug/.dir $(VERB) $(CompileCG) $< -o $@ +# +# Rules for building lex/yacc files +# +LEX_FILES = $(filter %.l, $(Source)) +LEX_OUTPUT = $(LEX_FILES:%.l=%.cpp) +YACC_FILES = $(filter %.y, $(Source)) +YACC_OUTPUT = $(addprefix $(YACC_FILES:%.y=%), .h .cpp .output) +.PRECIOUS: $(LEX_OUTPUT) $(YACC_OUTPUT) + # Create a .cpp source file from a flex input file... this uses sed to cut down # on the warnings emited by GCC... %.cpp: %.l @@ -459,13 +468,13 @@ $(BUILD_ROOT)/Debug/%.o: %.c $(BUILD_ROOT)/Debug/.dir # Rule for building the bison parsers... %.cpp %.h : %.y - $(VERB) $(BISON) -v -d -p $(<:%Parser.y=%) $(basename $@).y - $(VERB) mv -f $(basename $@).tab.c $(basename $@).cpp - $(VERB) mv -f $(basename $@).tab.h $(basename $@).h + $(VERB) $(BISON) -v -d -p $(<:%Parser.y=%) $*.y + $(VERB) mv -f $*.tab.c $*.cpp + $(VERB) mv -f $*.tab.h $*.h # To create the directories... %/.dir: - $(VERB) mkdir -p $(@D) + $(VERB) mkdir -p $* @date > $@ # To create postscript files from dot files... @@ -476,6 +485,7 @@ $(BUILD_ROOT)/Debug/%.o: %.c $(BUILD_ROOT)/Debug/.dir clean:: $(VERB) rm -rf $(BUILD_ROOT)/Debug $(BUILD_ROOT)/Release $(BUILD_ROOT)/Profile $(BUILD_ROOT)/Depend $(VERB) rm -f core core.[0-9][0-9]* *.o *.d *.so *~ *.flc + $(VERB) rm -f $(LEX_OUTPUT) $(YACC_OUTPUT) # If dependancies were generated for the file that included this file, # include the dependancies now... diff --git a/Makefile.rules b/Makefile.rules index eb5b4b661dc..43048f7eb7b 100644 --- a/Makefile.rules +++ b/Makefile.rules @@ -451,6 +451,15 @@ $(BUILD_ROOT)/Debug/%.o: %.cpp $(BUILD_ROOT)/Debug/.dir $(BUILD_ROOT)/Debug/%.o: %.c $(BUILD_ROOT)/Debug/.dir $(VERB) $(CompileCG) $< -o $@ +# +# Rules for building lex/yacc files +# +LEX_FILES = $(filter %.l, $(Source)) +LEX_OUTPUT = $(LEX_FILES:%.l=%.cpp) +YACC_FILES = $(filter %.y, $(Source)) +YACC_OUTPUT = $(addprefix $(YACC_FILES:%.y=%), .h .cpp .output) +.PRECIOUS: $(LEX_OUTPUT) $(YACC_OUTPUT) + # Create a .cpp source file from a flex input file... this uses sed to cut down # on the warnings emited by GCC... %.cpp: %.l @@ -459,13 +468,13 @@ $(BUILD_ROOT)/Debug/%.o: %.c $(BUILD_ROOT)/Debug/.dir # Rule for building the bison parsers... %.cpp %.h : %.y - $(VERB) $(BISON) -v -d -p $(<:%Parser.y=%) $(basename $@).y - $(VERB) mv -f $(basename $@).tab.c $(basename $@).cpp - $(VERB) mv -f $(basename $@).tab.h $(basename $@).h + $(VERB) $(BISON) -v -d -p $(<:%Parser.y=%) $*.y + $(VERB) mv -f $*.tab.c $*.cpp + $(VERB) mv -f $*.tab.h $*.h # To create the directories... %/.dir: - $(VERB) mkdir -p $(@D) + $(VERB) mkdir -p $* @date > $@ # To create postscript files from dot files... @@ -476,6 +485,7 @@ $(BUILD_ROOT)/Debug/%.o: %.c $(BUILD_ROOT)/Debug/.dir clean:: $(VERB) rm -rf $(BUILD_ROOT)/Debug $(BUILD_ROOT)/Release $(BUILD_ROOT)/Profile $(BUILD_ROOT)/Depend $(VERB) rm -f core core.[0-9][0-9]* *.o *.d *.so *~ *.flc + $(VERB) rm -f $(LEX_OUTPUT) $(YACC_OUTPUT) # If dependancies were generated for the file that included this file, # include the dependancies now...