summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2006-02-15 07:16:57 +0000
committerChris Lattner <sabre@nondot.org>2006-02-15 07:16:57 +0000
commitc38a9755f18430b54dd49b767b49208d837b7810 (patch)
tree7c009da728bc8b3e4e1cb5563985fae371fe2441
parent6db414e8de4926933c000dc69d1aea810ef95ba0 (diff)
downloadbcm5719-llvm-c38a9755f18430b54dd49b767b49208d837b7810.tar.gz
bcm5719-llvm-c38a9755f18430b54dd49b767b49208d837b7810.zip
Convert the bison-output-checked-into-cvs makefile handling stuff to work
like the flex stuff, which actually works when people do cvs updates and get conflicts in the updated checked in file. llvm-svn: 26205
-rw-r--r--llvm/Makefile.rules19
1 files changed, 16 insertions, 3 deletions
diff --git a/llvm/Makefile.rules b/llvm/Makefile.rules
index be173700ec0..943eaaaf628 100644
--- a/llvm/Makefile.rules
+++ b/llvm/Makefile.rules
@@ -1252,6 +1252,8 @@ ifneq ($(YaccFiles),)
.PRECIOUS: $(YaccOutput)
+all:: $(YaccFiles:%.l=$(PROJ_SRC_DIR)/%.cpp.cvs)
+
# Cancel built-in rules for yacc
%.c: %.y
%.cpp: %.y
@@ -1265,10 +1267,21 @@ $(PROJ_SRC_DIR)/%.cpp $(PROJ_SRC_DIR)/%.h : $(PROJ_SRC_DIR)/%.y
$(Verb) $(MV) -f $*.tab.h $(PROJ_SRC_DIR)/$*.h
$(Echo) "*** DON'T FORGET TO CHECK IN $*.cpp and $*.h (generated files)"
-YaccObjs := $(patsubst %.y,$(ObjDir)/%.o,$(YaccFiles))
-$(YaccObjs): $(ObjDir)/%.o : $(PROJ_SRC_DIR)/%.cpp
+# IFF the .y file has changed since it was last checked into CVS, copy the .y
+# file to .y.cvs and the generated .cpp/.h file to .cpp.cvs/.h.cvs. We use this
+# mechanism so that people without flex can build LLVM by copying the .cvs files
+# to the source location and building them.
+$(YaccFiles:%.y=$(PROJ_SRC_DIR)/%.cpp.cvs): \
+$(PROJ_SRC_DIR)/%.cpp.cvs: $(PROJ_SRC_DIR)/%.cpp
+ $(Verb) $(CMP) -s $@ $< || \
+ ($(CP) $< $@; \
+ $(CP) $(PROJ_SRC_DIR)/$*.l $(PROJ_SRC_DIR)/$*.l.cvs; \
+ $(CP) $(PROJ_SRC_DIR)/$*.h $(PROJ_SRC_DIR)/$*.h.cvs)
+
+
+$(YaccFiles:%.y=$(ObjDir)/%.o): $(ObjDir)/%.o : $(PROJ_SRC_DIR)/%.cpp
-YaccOutput := $(addprefix $(patsubst %.y,%,$(YaccFiles)),.output)
+YaccOutput := $(YaccFiles:%.y=%.output)
clean-local::
-$(Verb) $(RM) -f $(YaccOutput)
OpenPOWER on IntegriCloud