Print P and [AR] files on update.
[oota-llvm.git] / Makefile.rules
index 3df4811bf89371a751f0e6963bd1c2f8d1a866c5..32477559769136eefa1e9afa22687c4194ca9ebf 100644 (file)
@@ -29,11 +29,7 @@ LOCAL_TARGETS     := all-local clean-local check-local install-local \
                     printvars uninstall-local
 TOPLEV_TARGETS    := dist dist-check dist-clean tags
 USER_TARGETS      := $(RECURSIVE_TARGETS) $(LOCAL_TARGETS) $(TOPLEV_TARGETS)
-INTERNAL_TARGETS  := preconditions \
-  install-config-dir install-shared-library install-bytecode-library \
-  install-archive-library install-relinked-library install-tool \
-  uninstall-config-dir uninstall-shared-library uninstall-bytecode-library \
-  uninstall-archive-library uninstall-relinked-library uninstall-tool
+INTERNAL_TARGETS  := preconditions
 
 ###############################################################################
 # INITIALIZATION: Basic things the makefile needs
@@ -61,8 +57,8 @@ $(USER_TARGETS)::
 # PRECONDITIONS: that which must be built/checked first
 ################################################################################
 
-SRCMKFILES    := $(filter-out Makefile.rules %.in,\
-                 $(wildcard $(BUILD_SRC_DIR)/Makefile.*))
+SRCMKFILES    := $(filter %Makefile %Makefile.rules %Makefile.tests \
+                          %Makefile.JIT,$(wildcard $(BUILD_SRC_DIR)/Makefile*))
 OBJMKFILES    := $(subst $(BUILD_SRC_DIR),$(BUILD_OBJ_DIR),$(SRCMKFILES))
 CONFIGURE     := $(LLVM_SRC_ROOT)/configure
 CONFIG_STATUS := $(LLVM_OBJ_ROOT)/config.status
@@ -82,6 +78,8 @@ ifneq ($(strip $(BUILT_SOURCES)),)
        $(VERB) $(RM) -f $(BUILT_SOURCES)
 endif
 
+$(BUILT_SOURCES) : $(BUILD_OBJ_ROOT)/Makefile
+
 #------------------------------------------------------------------------
 # Make sure we're not using a stale configuration
 #------------------------------------------------------------------------
@@ -89,6 +87,7 @@ endif
 $(CONFIG_STATUS): $(CONFIGURE)
        @$(ECHO) Reconfiguring with $<
        $(VERB) $(CONFIG_STATUS) --recheck $(CONFIGUREFLAGS)
+       $(VERB) $(CONFIG_STATUS)
 
 #------------------------------------------------------------------------
 # Make sure the configuration makefile is up to date
@@ -217,16 +216,7 @@ endif
 
 # Adjust linker flags for building an executable
 ifdef TOOLNAME
-  LDFLAGS += -rpath $(TOOLDIR) -export-dynamic $(TOOLLINKOPTS)
-endif
-
-# Use TOOLLINKOPTSB to pass options to the linker like library search 
-# path etc.
-# Note that this is different from TOOLLINKOPTS, these options
-# are passed to the linker *before* the USEDLIBS options are passed.
-# e.g. usage TOOLLINKOPTSB =  -L/home/xxx/lib
-ifdef TOOLLINKOPTSB
-LDFLAGS += $(TOOLLINKOPTSB)
+  LDFLAGS += -rpath $(TOOLDIR) -export-dynamic
 endif
 
 #----------------------------------------------------------
@@ -252,7 +242,8 @@ BCCompile.CXX = $(LLVMGXX) $(CPPFLAGS) $(CompileCommonOpts) $(CXXFLAGS) -c
 BCCompile.C   = $(LLVMGCC) $(CPPFLAGS) $(CompileCommonOpts) $(CFLAGS) -c
 Link          = $(LIBTOOL) --tag=CXX --mode=link $(CXX) $(CPPFLAGS) \
                $(CompileCommonOpts) $(LDFLAGS) $(STRIP)
-Relink        = $(LIBTOOL) --tag=CXX --mode=link $(CXX)
+Relink        = $(LIBTOOL) --tag=CXX --mode=link $(CXX) $(CPPFLAGS) \
+                $(CompileCommonOpts)
 BCLinkLib     = $(LLVMGCC) -shared -nostdlib
 Burg          = $(BURG) -I $(BUILD_SRC_DIR)
 TableGen      = $(TBLGEN) -I $(BUILD_SRC_DIR)
@@ -289,6 +280,24 @@ ObjectsBC := $(BASENAME_SOURCES:%=$(OBJDIR)/%.bc)
 # DIRECTORIES: Handle recursive descent of directory structure
 ###############################################################################
 
+#---------------------------------------------------------
+# Provide rules to make install dirs. This must be early
+# in the file so they get built before dependencies
+#---------------------------------------------------------
+
+$(bindir):
+       $(VERB) $(MKDIR) $(bindir)
+       
+$(libdir):
+       $(VERB) $(MKDIR) $(libdir)
+
+$(bytecode_libdir):
+       $(VERB) $(MKDIR) $(bytecode_libdir)
+
+$(sysconfdir):
+       $(VERB) $(MKDIR) $(sysconfdir)
+
+
 #---------------------------------------------------------
 # Handle the DIRS options for sequential construction
 #---------------------------------------------------------
@@ -370,38 +379,24 @@ endif
 #---------------------------------------------------------
 ifdef CONFIG_FILES
 
-install-local:: install-config-dir 
-
-install-config-dir: $(sysconfdir) $(CONFIG_FILES)
+install-local:: $(sysconfdir) $(CONFIG_FILES)
        $(VERB)$(ECHO) Installing Configuration Files To $(sysconfdir)
        $(VERB)for file in $(CONFIG_FILES); do \
                $(INSTALL) $(BUILD_SRC_DIR)/$${file} $(sysconfdir) ; \
        done
 
-uninstall-local:: uninstall-config-dir
-
-uninstall-config-dir:
+uninstall-local::
        $(VERB)$(ECHO) Uninstalling Configuration Files From $(sysconfdir)
        $(VERB)for file in $(CONFIG_FILES); do \
          $(RM) -f $(sysconfdir)/$${file} ; \
        done
 
-$(sysconfdir):
-       $(VERB) $(MKDIR) $(sysconfdir)
-
 endif
 
 ###############################################################################
 # Library Build Rules: Four ways to build a library
 ###############################################################################
 
-$(libdir):
-       $(VERB) $(MKDIR) $(libdir)
-
-$(bytecode_libdir):
-       $(VERB) $(MKDIR) $(bytecode_libdir)
-
-
 
 # if we're building a library ...
 ifdef LIBRARYNAME
@@ -434,18 +429,15 @@ ifneq ($(strip $(LIBNAME_LA)),)
 endif
 
 DestSharedLib = $(libdir)/lib$(LIBRARYNAME)$(SHLIBEXT)
-install-local:: install-shared-library
 
-install-shared-library: $(libdir) $(DestSharedLib)
+install-local:: $(DestSharedLib)
 
-$(DestSharedLib): $(LIBNAME_LA)
+$(DestSharedLib): $(libdir) $(LIBNAME_LA)
        @$(ECHO) Installing $(CONFIGURATION) Shared Library $(DestSharedLib)
        $(VERB) $(LIBTOOL) --mode=install $(INSTALL) $(LIBNAME_LA) $(DestSharedLib)
        $(VERB) $(LIBTOOL) --finish $(libdir)
 
-uninstall-local:: uninstall-shared-library
-
-uninstall-shared-library:
+uninstall-local:: 
        @$(ECHO) Uninstalling $(CONFIGURATION) Shared Library $(DestSharedLib)
        $(VERB) $(RM) -f $(DestSharedLib)
 
@@ -482,17 +474,13 @@ endif
 
 DestBytecodeLib = $(bytecode_libdir)/lib$(LIBRARYNAME).bc
 
-install-local:: install-bytecode-library
-
-install-bytecode-library: $(bytecode_libdir) $(DestBytecodeLib)
+install-local:: $(DestBytecodeLib)
 
-$(DestBytecodeLib): $(LIBNAME_BC) $(bytecode_libdir)
+$(DestBytecodeLib): $(bytecode_libdir) $(LIBNAME_BC) 
        @$(ECHO) Installing $(CONFIGURATION) Bytecode Library $(DestBytecodeLib)
-       $(VERB) $(INSTALL) $< $@
-
-uninstall-local:: uninstall-bytecode-library
+       $(VERB) $(INSTALL) $(LIBNAME_BC) $@
 
-uninstall-bytecode-library: 
+uninstall-local::
        @$(ECHO) Uninstalling $(CONFIGURATION) Bytecode Library $(DestBytecodeLib)
        $(VERB) $(RM) -f $(DestBytecodeLib)
 
@@ -513,18 +501,13 @@ endif
 
 DestRelinkedLib = $(libdir)/$(LIBRARYNAME).o
 
-install-local:: install-relinked-library 
-
-install-relinked-library: $(libdir) $(DestRelinkedLib)
+install-local:: $(DestRelinkedLib)
 
-$(DestRelinkedLib): $(LIBNAME_O)
+$(DestRelinkedLib): $(libdir) $(LIBNAME_O)
        @$(ECHO) Installing $(CONFIGURATION) Object Library $(DestRelinkedLib)
-       $(VERB) $(MKDIR) $(libdir)
        $(VERB) $(LIBTOOL) --mode=install $(INSTALL) $(LIBNAME_O) $(DestRelinkedLib)
 
-uninstall-local:: uninstall-relinked-library 
-
-uninstall-relinked-library: 
+uninstall-local::
        @$(ECHO) Uninstalling $(CONFIGURATION) Object Library $(DestRelinkedLib)
        $(VERB) $(RM) -f $(DestRelinkedLib)
 
@@ -547,17 +530,14 @@ endif
 
 DestArchiveLib := $(libdir)/lib$(LIBRARYNAME).a
 
-install-local:: install-archive-library
-
-install-archive-library: $(libdir) $(DestArchiveLib)
+install-local:: $(DestArchiveLib)
 
-$(DestArchiveLib): $(LIBNAME_A)
+$(DestArchiveLib): $(libdir) $(LIBNAME_A)
        @$(ECHO) Installing $(CONFIGURATION) Archive Library $(DestArchiveLib)
+       $(VERB) $(MKDIR) $(libdir)
        $(VERB) $(LIBTOOL) --mode=install $(INSTALL) $(LIBNAME_A) $(DestArchiveLib)
 
-uninstall-local:: uninstall-archive-library
-
-uninstall-archive-library: 
+uninstall-local::
        @$(ECHO) Uninstalling $(CONFIGURATION) Archive Library $(DestArchiveLib)
        $(VERB) $(RM) -f $(DestArchiveLib)
 
@@ -572,16 +552,6 @@ endif
 
 ifdef TOOLNAME
 
-#---------------------------------------------------------
-# TOOLLINKOPTSB to pass options to the linker like library search path etc
-# Note that this is different from TOOLLINKOPTS, these options
-# are passed to the linker *before* the USEDLIBS options are passed.
-# e.g. usage TOOLLINKOPTSB =  -L/home/xxx/lib
-#---------------------------------------------------------
-ifdef TOOLLINKOPTSB
-Link    += $(TOOLLINKOPTSB) 
-endif
-
 # TOOLEXENAME - This is the output filenames to generate
 TOOLEXENAME := $(TOOLDIR)/$(TOOLNAME)
 
@@ -597,9 +567,6 @@ LLVM_USED_LIBS    := $(patsubst %.a.o, lib%.a, $(addsuffix .o, $(LLVMLIBS)))
 PROJ_LIBS_PATHS   := $(addprefix $(LIBDIR)/,$(PROJ_USED_LIBS))
 LLVM_LIBS_PATHS   := $(addprefix $(LLVMLIBDIR)/,$(LLVM_USED_LIBS))
 
-# Concatenate all the optoins
-LINK_OPTS := $(TOOLLINKOPTS) $(PROJ_LIBS_OPTIONS) $(LLVM_LIBS_OPTIONS)
-
 # Handle compression libraries automatically
 ifeq ($(HAVE_BZIP2),1)
 LIBS += -lbz2
@@ -621,25 +588,19 @@ endif
 
 $(TOOLEXENAME): $(BUILT_SOURCES) $(ObjectsO) $(PROJ_LIBS_PATHS) $(LLVM_LIBS_PATHS) $(TOOLDIR)/.dir
        @$(ECHO) Linking $(CONFIGURATION) executable $(TOOLNAME) $(STRIP_WARN_MSG)
-       $(VERB) $(Link) -o $@ $(ObjectsO) $(PROJ_LIBS_OPTIONS) $(LLVM_LIBS_OPTIONS) $(LIBS)
+       $(VERB) $(Link) -o $@ $(TOOLLINKOPTS) $(ObjectsO) $(PROJ_LIBS_OPTIONS) \
+          $(LLVM_LIBS_OPTIONS) $(LIBS) $(TOOLLINKOPTSB)
        @$(ECHO) ======= Finished Linking $(CONFIGURATION) Executable $(TOOLNAME) $(STRIP_WARN_MSG) 
 
 DestTool = $(bindir)/$(TOOLNAME)
 
-install-local:: install-tool
+install-local:: $(DestTool)
 
-install-tool: $(bindir) $(DestTool)
-
-$(DestTool): $(TOOLEXENAME)
+$(DestTool): $(bindir) $(TOOLEXENAME)
        @$(ECHO) Installing $(CONFIGURATION) $(DestTool)
        $(VERB) $(INSTALL) $(TOOLEXENAME) $(DestTool)
 
-$(bindir):
-       $(VERB) $(MKDIR) $(bindir)
-       
-uninstall-local:: uninstall-tool
-
-uninstall-tool:
+uninstall-local::
        @$(ECHO) Uninstalling $(CONFIGURATION) $(DestTool)
        $(VERB) $(RM) -f $(DestTool)
 
@@ -732,47 +693,48 @@ $(OBJDIR)/%.bc: %.ll $(OBJDIR)/.dir $(LLVMAS)
 ifdef TARGET
 
 TDFILES := $(strip $(wildcard $(BUILD_SRC_DIR)/*.td) $(LLVM_SRC_ROOT)/lib/Target/Target.td)
+INCFILES := $(filter %.inc,$(BUILT_SOURCES))
 
-$(BUILT_SOURCES): $(TDFILES) 
+$(INCFILES) : $(TBLGEN) $(TDFILES)
 
-%GenRegisterNames.inc : %.td
-       @echo "Building $(<F) register names with tblgen"
+%GenRegisterNames.inc : %.td 
+       @$(ECHO) "Building $(<F) register names with tblgen"
        $(VERB) $(TableGen) -gen-register-enums -o $@ $<
 
-%GenRegisterInfo.h.inc : %.td
-       @echo "Building $(<F) register information header with tblgen"
+%GenRegisterInfo.h.inc : %.td 
+       @$(ECHO) "Building $(<F) register information header with tblgen"
        $(VERB) $(TableGen) -gen-register-desc-header -o $@ $<
 
 %GenRegisterInfo.inc : %.td
-       @echo "Building $(<F) register info implementation with tblgen"
+       @$(ECHO) "Building $(<F) register info implementation with tblgen"
        $(VERB) $(TableGen) -gen-register-desc -o $@ $<
 
 %GenInstrNames.inc : %.td
-       @echo "Building $(<F) instruction names with tblgen"
+       @$(ECHO) "Building $(<F) instruction names with tblgen"
        $(VERB) $(TableGen) -gen-instr-enums -o $@ $<
 
 %GenInstrInfo.inc : %.td
-       @echo "Building $(<F) instruction information with tblgen"
+       @$(ECHO) "Building $(<F) instruction information with tblgen"
        $(VERB) $(TableGen) -gen-instr-desc -o $@ $<
 
 %GenAsmWriter.inc : %.td
-       @echo "Building $(<F) assembly writer with tblgen"
+       @$(ECHO) "Building $(<F) assembly writer with tblgen"
        $(VERB) $(TableGen) -gen-asm-writer -o $@ $<
 
 %GenATTAsmWriter.inc : %.td
-       @echo "Building $(<F) AT&T assembly writer with tblgen"
+       @$(ECHO) "Building $(<F) AT&T assembly writer with tblgen"
        $(VERB) $(TableGen) -gen-asm-writer -o $@ $< 
 
 %GenIntelAsmWriter.inc : %.td
-       @echo "Building $(<F) Intel assembly writer with tblgen"
+       @$(ECHO) "Building $(<F) Intel assembly writer with tblgen"
        $(VERB) $(TableGen) -gen-asm-writer -asmwriternum=1 -o $@ $< 
 
 %GenInstrSelector.inc: %.td
-       @echo "Building $(<F) instruction selector with tblgen"
+       @$(ECHO) "Building $(<F) instruction selector with tblgen"
        $(VERB) $(TableGen) -gen-instr-selector -o $@ $< 
 
 %GenCodeEmitter.inc:: %.td
-       @echo "Building $(<F) code emitter with tblgen"
+       @$(ECHO) "Building $(<F) code emitter with tblgen"
        $(VERB) $(TableGen) -gen-emitter -o $@ $<
 
 clean-local::
@@ -800,25 +762,20 @@ YACC_OUTPUT = $(addprefix $(YACC_FILES:%.y=%), .h .cpp .output)
 %.cpp: %.l
        @$(ECHO) Flexing $<
        $(VERB) $(FLEX) -t $< | \
-       $(SED) '/^find_rule/d' | \
        $(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)/' \
-         > $@.tmp
-       $(VERB) cmp -s $@ $@.tmp > /dev/null || $(MV) -f $@.tmp $@
-       @# remove the output of flex if it didn't get moved over...
-       @rm -f $@.tmp
+         > $@
 
 # Rule for building the bison parsers...
 %.c: %.y     # Cancel built-in rules for yacc
+%.cpp: %.y   # Cancel built-in rules for yacc
 %.h: %.y     # Cancel built-in rules for yacc
 %.cpp %.h : %.y
        @$(ECHO) "Bisoning $*.y"
        $(VERB) $(BISON) -v -d -p $(<F:%Parser.y=%) -o $*.tab.c  $<
-       $(VERB) cmp -s $*.tab.c $*.cpp > /dev/null || $(MV) -f $*.tab.c $*.cpp
-       $(VERB) cmp -s $*.tab.h $*.h   > /dev/null || $(MV) -f $*.tab.h $*.h
-       @# If the files were not updated, don't leave them lying around...
-       @rm -f $*.tab.c $*.tab.h
+       $(VERB) $(MV) -f $*.tab.c $*.cpp
+       $(VERB) $(MV) -f $*.tab.h $*.h
 
 # To create the directories...
 %/.dir:
@@ -1000,7 +957,7 @@ distdir : $(DistSources)
            find $(DistDir) -type d ! -perm -200 -exec chmod u+w {} ';'  || \
              exit 1 ; \
          fi ; \
-         echo Removing $(DistDir) ; \
+         $(ECHO) Removing $(DistDir) ; \
          $(RM) -rf $(DistDir); \
        fi
        $(VERB) $(MKDIR) $(DistDir)