Add support for a marker byte that indicates that we shouldn't add the user
[oota-llvm.git] / Makefile.rules
index 9bc8d5b220e7514445fdc648a319ee813ce4aff8..43402330acc61d1a141868961254a410bb9adb1e 100644 (file)
@@ -28,13 +28,6 @@ TopLevelTargets  := check dist dist-check dist-clean tags dist-gzip dist-bzip2 \
 UserTargets      := $(RecursiveTargets) $(LocalTargets) $(TopLevelTargets)
 InternalTargets  := preconditions distdir dist-hook
 
-FilesToConfig := \
-  include/llvm/Config/config.h \
-  include/llvm/Support/DataTypes.h \
-  include/llvm/ADT/hash_map \
-  include/llvm/ADT/hash_set \
-  include/llvm/ADT/iterator
-
 ################################################################################
 # INITIALIZATION: Basic things the makefile needs
 ################################################################################
@@ -84,10 +77,7 @@ ifneq ($(MakefileConfigIn),)
 PreConditions      += $(MakefileConfig)
 endif
 
-FilesToConfigPATH  := $(addprefix $(LLVM_OBJ_ROOT)/,$(FilesToConfig))
-PreConditions      += $(FilesToConfigPATH)
-
-preconditions : $(PreConditions)
+preconditions: $(PreConditions)
 
 #------------------------------------------------------------------------
 # Make sure the BUILT_SOURCES are built first
@@ -144,16 +134,6 @@ $(ConfigStatusScript): $(ConfigureScript)
          $(ConfigStatusScript) --recheck $(ConfigureScriptFLAGS) && \
          $(ConfigStatusScript)
 
-#------------------------------------------------------------------------
-# If we're buildilng LLVM, then make sure the generated headers are Up2Dt
-#------------------------------------------------------------------------
-ifeq ($(LLVM_OBJ_ROOT),$(PROJ_OBJ_ROOT))
-.PRECIOUS: $(FilesToConfigPATH)
-$(FilesToConfigPATH) : $(LLVM_OBJ_ROOT)/% : $(LLVM_SRC_ROOT)/%.in 
-       $(Echo) Regenerating $*
-       $(Verb) cd $(LLVM_OBJ_ROOT) && $(ConfigStatusScript) $*
-endif
-
 #------------------------------------------------------------------------
 # Make sure the configuration makefile is up to date
 #------------------------------------------------------------------------
@@ -1160,6 +1140,12 @@ $(ObjDir)/%GenCodeEmitter.inc.tmp: %.td $(ObjDir)/.dir
        $(Echo) "Building $(<F) code emitter with tblgen"
        $(Verb) $(TableGen) -gen-emitter -o $@ $<
 
+$(TARGET:%=$(ObjDir)/%GenDAGISel.inc.tmp): \
+$(ObjDir)/%GenDAGISel.inc.tmp : %.td $(ObjDir)/.dir
+       $(Echo) "Building $(<F) instruction selector implementation with tblgen"
+       $(Verb) $(TableGen) -gen-dag-isel -o $@ $<
+
+
 clean-local::
        -$(Verb) $(RM) -f $(INCFiles)
 
@@ -1178,9 +1164,9 @@ LexFiles  := $(filter %.l,$(Sources))
 
 ifneq ($(LexFiles),)
 
-LexOutput := $(strip $(patsubst %.l,%.cpp,$(LexFiles)))
-
-.PRECIOUS: $(LexOutput)
+# Cancel built-in rules for lex
+%.c: %.l
+%.cpp: %.l
 
 # Note the extra sed filtering here, used to cut down on the warnings emited 
 # by GCC.  The last line is a gross hack to work around flex aparently not 
@@ -1188,13 +1174,17 @@ LexOutput := $(strip $(patsubst %.l,%.cpp,$(LexFiles)))
 # uninitialized string buffers in LLVM we can generate very long tokens, so 
 # this is a hack around it.
 # FIXME.  (f.e. char Buffer[10000] )
-%.cpp: %.l
+$(PROJ_SRC_DIR)/%.cpp: $(PROJ_SRC_DIR)/%.l
        $(Echo) Flexing $*.l
-       $(Verb) $(FLEX) -t $< | \
+       $(Verb) $(FLEX) -t $(PROJ_SRC_DIR)/$*.l | \
        $(SED) 's/void yyunput/inline void yyunput/' | \
        $(SED) 's/void \*yy_flex_realloc/inline void *yy_flex_realloc/' | \
        $(SED) 's/#define YY_BUF_SIZE 16384/#define YY_BUF_SIZE (16384*64)/' \
-         > $@
+         > $(PROJ_SRC_DIR)/$*.cpp
+       $(Echo) "*** DON'T FORGET TO CHECK IN $*.cpp (generated file)"
+
+LexObjs := $(patsubst %.l,$(ObjDir)/%.o,$(LexFiles))
+$(LexObjs): $(ObjDir)/%.o : $(PROJ_SRC_DIR)/%.cpp
 
 clean-local::
        -$(Verb) $(RM) -f $(LexOutput)
@@ -1209,7 +1199,7 @@ endif
 
 YaccFiles  := $(filter %.y,$(Sources))
 ifneq ($(YaccFiles),)
-YaccOutput := $(addprefix $(patsubst %.y,%,$(YaccFiles)),.h .cpp .output)
+YaccOutput := $(addprefix $(patsubst %.y,%,$(YaccFiles)),.output)
 
 .PRECIOUS: $(YaccOutput)
 
@@ -1219,14 +1209,14 @@ YaccOutput := $(addprefix $(patsubst %.y,%,$(YaccFiles)),.h .cpp .output)
 %.h: %.y
 
 # Rule for building the bison parsers...
-%.cpp %.h : %.y
+$(PROJ_SRC_DIR)/%.cpp $(PROJ_SRC_DIR)/%.h : $(PROJ_SRC_DIR)/%.y
        $(Echo) "Bisoning $*.y"
-       $(Verb) $(BISON) -v -d -p $(<F:%Parser.y=%) -o $*.tab.c  $<
-       $(Verb) $(MV) -f $*.tab.c $*.cpp
-       $(Verb) $(MV) -f $*.tab.h $*.h
+       $(Verb) $(BISON) -v -d -p $(<F:%Parser.y=%) -o $*.tab.c $<
+       $(Verb) $(MV) -f $*.tab.c $(PROJ_SRC_DIR)/$*.cpp
+       $(Verb) $(MV) -f $*.tab.h $(PROJ_SRC_DIR)/$*.h
+       $(Echo) "*** DON'T FORGET TO CHECK IN $*.cpp and $*.h (generated files)"
 
 clean-local::
-       -$(Verb) $(RM) -f $(YaccOutput)
        $(Verb) $(RM) -f $(YaccOutput)
 endif