Simplify and correct rules for building lex/yacc files. Make sure to delete
authorChris Lattner <sabre@nondot.org>
Thu, 16 Jan 2003 22:44:19 +0000 (22:44 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 16 Jan 2003 22:44:19 +0000 (22:44 +0000)
output upon make clean

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5347 91177308-0d34-0410-b5e6-96231b3b80d8

Makefile.common
Makefile.rules

index eb5b4b661dc8ad7ef2f43b458811a52563d1a17b..43048f7eb7b451549d9859c3f6785bea5af7b02c 100644 (file)
@@ -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...
index eb5b4b661dc8ad7ef2f43b458811a52563d1a17b..43048f7eb7b451549d9859c3f6785bea5af7b02c 100644 (file)
@@ -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...