Add support for truncating integer casts from long.
[oota-llvm.git] / Makefile.rules
index f509058f8d996df62462d3cf78b87286c32a3867..d6ed2d531613a5234ce7a5ac6d023a6d63646449 100644 (file)
@@ -63,8 +63,9 @@ $(UserTargets)::
 SrcMakefiles       := $(filter %Makefile %Makefile.tests,\
                       $(wildcard $(BUILD_SRC_DIR)/Makefile*))
 ObjMakefiles       := $(subst $(BUILD_SRC_DIR),$(BUILD_OBJ_DIR),$(SrcMakefiles))
-ConfigureScript    := $(LLVM_SRC_ROOT)/configure
-ConfigStatusScript := $(LLVM_OBJ_ROOT)/config.status
+ConfigureScript    := $(BUILD_SRC_ROOT)/configure
+ConfigStatusScript := $(BUILD_OBJ_ROOT)/config.status
+LConfigStatusScript:= $(LLVM_OBJ_ROOT)/config.status
 MakefileConfigIn   := $(LLVM_SRC_ROOT)/Makefile.config.in
 MakefileConfig     := $(LLVM_OBJ_ROOT)/Makefile.config
 PreConditions      := $(ConfigStatusScript) $(MakefileConfig) $(ObjMakefiles)
@@ -83,14 +84,20 @@ endif
 
 ifneq ($(BUILD_OBJ_ROOT),$(BUILD_SRC_ROOT))
 spotless:
-       $(Echo) Wiping out $(BUILD_OBJ_ROOT) and rebuilding configuration.
        $(Verb) if test -x config.status ; then \
-         $(MV) config.status .. ; \
-         $(MV) mklib  .. ; \
+         $(EchoCmd) Wiping out $(BUILD_OBJ_ROOT) ; \
+         $(MKDIR) .spotless.save ; \
+         $(MV) config.status .spotless.save ; \
+         $(MV) mklib  .spotless.save ; \
+         $(MV) projects  .spotless.save ; \
          $(RM) -rf * ; \
-         $(MV) ../config.status . ; \
-         $(MV) ../mklib . ; \
-         ./config.status ; \
+         $(MV) .spotless.save/config.status . ; \
+         $(MV) .spotless.save/mklib . ; \
+         $(MV) .spotless.save/projects . ; \
+         $(RM) -rf .spotless.save ; \
+         $(EchoCmd) Rebuilding configuration of $(BUILD_OBJ_ROOT) ; \
+         $(ConfigStatusScript) --recheck $(ConfigureScriptFLAGS) && \
+         $(ConfigStatusScript) ; \
        else \
          $(EchoCmd) "make spotless" can only be run from $(BUILD_OBJ_ROOT); \
        fi
@@ -101,19 +108,31 @@ $(BUILT_SOURCES) : $(ObjMakefiles)
 #------------------------------------------------------------------------
 # Make sure we're not using a stale configuration
 #------------------------------------------------------------------------
+reconfigure:
+       $(Echo) Reconfiguring $(BUILD_OBJ_ROOT)
+       $(Verb) cd $(BUILD_OBJ_ROOT) && \
+         if test -w $(BUILD_OBJ_ROOT)/config.cache ; then \
+           $(RM) $(BUILD_OBJ_ROOT)/config.cache ; \
+         fi ; \
+         $(ConfigStatusScript) --recheck $(ConfigureScriptFLAGS) && \
+         $(ConfigStatusScript)
+
 .PRECIOUS: $(ConfigStatusScript)
 $(ConfigStatusScript): $(ConfigureScript)
        $(Echo) Reconfiguring with $<
        $(Verb) cd $(BUILD_OBJ_ROOT) && \
+         if test -w $(BUILD_OBJ_ROOT)/config.cache ; then \
+           $(RM) $(BUILD_OBJ_ROOT)/config.cache ; \
+         fi ; \
          $(ConfigStatusScript) --recheck $(ConfigureScriptFLAGS) && \
          $(ConfigStatusScript)
 
 #------------------------------------------------------------------------
 # Make sure the configuration makefile is up to date
 #------------------------------------------------------------------------
-$(MakefileConfig): $(MakefileConfigIn) $(ConfigStatusScript)
+$(MakefileConfig): $(MakefileConfigIn) $(LConfigStatusScript)
        $(Echo) Regenerating $@
-       $(Verb) cd $(LLVM_OBJ_ROOT) ; $(ConfigStatusScript) Makefile.config
+       $(Verb) cd $(LLVM_OBJ_ROOT) ; $(LConfigStatusScript) Makefile.config
 
 #------------------------------------------------------------------------
 # If the Makefile in the source tree has been updated, copy it over into the
@@ -124,7 +143,7 @@ ifneq ($(BUILD_OBJ_DIR),$(BUILD_SRC_DIR))
 Makefile: $(BUILD_SRC_DIR)/Makefile
        $(Echo) "Updating Makefile"
        $(Verb) $(MKDIR) $(@D)
-       $(Verb) cp -f $< $@
+       $(Verb) $(CP) -f $< $@
 
 # Copy the Makefile.* files unless we're in the root directory which avoids
 # the copying of Makefile.config.in or other things that should be explicitly
@@ -135,7 +154,7 @@ $(BUILD_OBJ_DIR)/Makefile% : $(BUILD_SRC_DIR)/Makefile%
           *.in) ;; \
           *) $(Echo) "Updating $(@F)" ; \
             $(MKDIR) $(@D) ; \
-            cp -f $< $@ ;; \
+            $(CP) -f $< $@ ;; \
        esac
          
 endif
@@ -161,6 +180,7 @@ install-bytecode:: install-bytecode-local
 # Variables derived from configuration we are building
 #--------------------------------------------------------------------
 
+
 ifdef ENABLE_PROFILING
   BuildMode := Profile
   CXX.Flags := -O3 -DNDEBUG -felide-constructors -finline-functions -pg
@@ -169,9 +189,13 @@ ifdef ENABLE_PROFILING
 else
   ifdef ENABLE_OPTIMIZED
     BuildMode := Release
-    CXX.Flags  := -O3 -DNDEBUG -finline-functions \
-                  -felide-constructors -fomit-frame-pointer
-    C.Flags    := -O3 -DNDEBUG -fomit-frame-pointer
+    # Don't use -fomit-frame-pointer on FreeBSD
+    ifneq ($(OS),FreeBSD)
+      OmitFramePointer := -fomit-frame-pointer
+    endif
+    CXX.Flags  := -O3 -DNDEBUG -finline-functions -felide-constructors \
+                  $(OmitFramePointer)
+    C.Flags    := -O3 -DNDEBUG $(OmitFramePointer)
     LD.Flags   := -O3 -DNDEBUG 
   else
     BuildMode := Debug
@@ -198,7 +222,8 @@ ToolDir     := $(BUILD_OBJ_ROOT)/$(BuildMode)/bin
 ExmplDir    := $(BUILD_OBJ_ROOT)/$(BuildMode)/examples
 LLVMLibDir  := $(LLVM_OBJ_ROOT)/$(BuildMode)/lib
 LLVMToolDir := $(LLVM_OBJ_ROOT)/$(BuildMode)/bin
-LExmplDir   := $(LLVM_OBJ_ROOT)/$(BuildMode)/examples
+LLVMExmplDir:= $(LLVM_OBJ_ROOT)/$(BuildMode)/examples
+CFERuntimeLibDir := $(LLVMGCCDIR)/lib
 
 #--------------------------------------------------------------------
 # Full Paths To Compiled Tools and Utilities
@@ -223,12 +248,6 @@ endif
 ifndef GCCLD
 GCCLD    := $(LLVMToolDir)/gccld$(EXEEXT)
 endif
-ifndef LLVMGCC
-LLVMGCC  := PATH=$(LLVMToolDir):$(PATH) $(LLVMGCCDIR)/bin/gcc
-endif
-ifndef LLVMGXX
-LLVMGXX  := PATH=$(LLVMToolDir):$(PATH) $(LLVMGCCDIR)/bin/g++
-endif
 ifndef LDIS
 LLVMDIS  := $(LLVMToolDir)/llvm-dis$(EXEEXT)
 endif
@@ -238,6 +257,8 @@ endif
 ifndef LOPT
 LOPT     := $(LLVMToolDir)/opt$(EXEEXT)
 endif
+LLVMGCCWITHPATH  := PATH="$(LLVMToolDir):$(PATH)" $(LLVMGCC)
+LLVMGXXWITHPATH  := PATH="$(LLVMToolDir):$(PATH)" $(LLVMGXX)
 
 #--------------------------------------------------------------------
 # Adjust to user's request
@@ -299,10 +320,12 @@ CPP.Flags += -I$(BUILD_OBJ_DIR) \
 
 Compile.C     = $(CC) $(CPP.Flags) $(CompileCommonOpts) -c $(C.Flags)
 LTCompile.C   = $(LIBTOOL) $(LibTool.Flags) --mode=compile $(Compile.C)
-BCCompile.C   = $(LLVMGCC) $(CPP.Flags) $(CompileCommonOpts) $(C.Flags) -c
+BCCompile.C   = $(LLVMGCCWITHPATH) $(CPP.Flags) $(CompileCommonOpts) \
+                $(C.Flags) -c
 Compile.CXX   = $(CXX) $(CPP.Flags) $(CompileCommonOpts) $(CXX.Flags) -c
 LTCompile.CXX = $(LIBTOOL) $(LibTool.Flags) --mode=compile $(Compile.CXX)
-BCCompile.CXX = $(LLVMGXX) $(CPP.Flags) $(CompileCommonOpts) $(CXX.Flags) -c
+BCCompile.CXX = $(LLVMGXXWITHPATH) $(CPP.Flags) $(CompileCommonOpts) \
+                $(CXX.Flags) -c
 Link          = $(LIBTOOL) $(LibTool.Flags) --mode=link $(CXX) $(CPP.Flags) \
                $(CompileCommonOpts) $(LD.Flags) $(Strip)
 Relink        = $(LIBTOOL) $(LibTool.Flags) --mode=link $(CXX) $(CPP.Flags) \
@@ -391,7 +414,7 @@ $(RecursiveTargets)::
        $(Verb) for dir in $(DIRS); do \
          if [ ! -f $$dir/Makefile ]; then \
            $(MKDIR) $$dir; \
-           cp $(BUILD_SRC_DIR)/$$dir/Makefile $$dir/Makefile; \
+           $(CP) $(BUILD_SRC_DIR)/$$dir/Makefile $$dir/Makefile; \
          fi; \
          if [ ! -f $$dir/LLVM_DO_NOT_BUILD ]; then \
            ($(MAKE) -C $$dir $@ ) || exit 1; \
@@ -408,7 +431,7 @@ $(RecursiveTargets)::
        $(Verb) for dir in $(EXPERIMENTAL_DIRS); do \
          if [ ! -f $$dir/Makefile ]; then \
            $(MKDIR) $$dir; \
-           cp $(BUILD_SRC_DIR)/$$dir/Makefile $$dir/Makefile; \
+           $(CP) $(BUILD_SRC_DIR)/$$dir/Makefile $$dir/Makefile; \
          fi; \
          if [ ! -f $$dir/LLVM_DO_NOT_BUILD ]; then \
            ($(MAKE) -C $$dir $@ ) || exit 0; \
@@ -436,7 +459,7 @@ ParallelTargets := $(foreach T,$(RecursiveTargets),%/.make$(T))
 $(ParallelTargets) :
        $(Verb) if [ ! -f $(@D)/Makefile ]; then \
          $(MKDIR) $(@D); \
-         cp $(BUILD_SRC_DIR)/$(@D)/Makefile $(@D)/Makefile; \
+         $(CP) $(BUILD_SRC_DIR)/$(@D)/Makefile $(@D)/Makefile; \
        fi; \
        if [ ! -f $$dir/LLVM_DO_NOT_BUILD ]; then \
          $(MAKE) -C $(@D) $(subst $(@D)/.make,,$@) ; \
@@ -456,7 +479,7 @@ $(RecursiveTargets)::
          if [ -d $(BUILD_SRC_DIR)/$$dir ]; then\
            if [ ! -f $$dir/Makefile ]; then \
              $(MKDIR) $$dir; \
-             cp $(BUILD_SRC_DIR)/$$dir/Makefile $$dir/Makefile; \
+             $(CP) $(BUILD_SRC_DIR)/$$dir/Makefile $$dir/Makefile; \
            fi; \
            if [ ! -f $$dir/LLVM_DO_NOT_BUILD ]; then \
              ($(MAKE) -C$$dir $@ ) || exit 1; \
@@ -505,7 +528,7 @@ endif
 ifdef MODULE_NAME
 
 Module     := $(LibDir)/$(MODULE_NAME).bc
-LinkModule := $(LLVMGCC) -shared -nostdlib
+LinkModule := $(LLVMGCCWITHPATH) -shared -nostdlib
 
 ifdef EXPORTED_SYMBOL_FILE
 LinkMOdule += -Xlinker -internalize-public-api-file=$(EXPORTED_SYMBOL_FILE)
@@ -603,7 +626,7 @@ BCCompile.CXX += -Wa,-strip-debug
 all-local:: $(LibName.BCA)
 
 ifdef EXPORTED_SYMBOL_FILE
-BCLinkLib = $(LLVMGCC) -shared -nostdlib -Xlinker \
+BCLinkLib = $(LLVMGCCWITHPATH) -shared -nostdlib -Xlinker \
            -internalize-public-api-file=$(EXPORTED_SYMBOL_FILE)
 
 $(LibName.BCA): $(ObjectsBC) $(LibDir)/.dir $(GCCLD) \
@@ -910,7 +933,7 @@ $(ObjDir)/%.lo $(ObjDir)/%.o: %.cpp $(ObjDir)/.dir $(BUILT_SOURCES)
        $(LTCompile.CXX) $< -o $@ 
 
 $(ObjDir)/%.lo $(ObjDir)/%.o: %.c $(ObjDir)/.dir $(BUILT_SOURCES)
-       $(Echo) "Compiling $*.cpp for $(BuildMode) build (PIC)"
+       $(Echo) "Compiling $*.c for $(BuildMode) build (PIC)"
        $(LTCompile.C) $< -o $@ 
 
 else
@@ -920,7 +943,7 @@ $(ObjDir)/%.o: %.cpp $(ObjDir)/.dir $(BUILT_SOURCES)
        $(Compile.CXX) $< -o $@ 
 
 $(ObjDir)/%.o: %.c $(ObjDir)/.dir $(BUILT_SOURCES)
-       $(Echo) "Compiling $*.cpp for $(BuildMode) build"
+       $(Echo) "Compiling $*.c for $(BuildMode) build"
        $(Compile.C) $< -o $@ 
 endif
 
@@ -963,7 +986,7 @@ $(INCTMPFiles) : $(TBLGEN) $(TDFiles)
 # dependencies of the .inc files are, unless the contents of the .inc file
 # changes.
 $(INCFiles) : %.inc : $(ObjDir)/%.inc.tmp
-       $(Verb) cmp -s $@ $< || cp $< $@
+       $(Verb) $(CMP) -s $@ $< || $(CP) $< $@
 
 $(TARGET:%=$(ObjDir)/%GenRegisterNames.inc.tmp): \
 $(ObjDir)/%GenRegisterNames.inc.tmp : %.td $(ObjDir)/.dir
@@ -1257,7 +1280,7 @@ dist-check:: $(DistTarGZip)
          gunzip -c $(DistTarGZip) | $(TAR) xf - && \
          cd build && \
          ../$(DistName)/configure --prefix="$(DistCheckDir)/install" \
-           --srcdir=../$(DistName) --with-llvmgccdir="$(LLVMGCCDIR)" && \
+           --srcdir=../$(DistName) && \
          $(MAKE) all && \
          $(MAKE) check && \
          $(MAKE) install && \
@@ -1323,13 +1346,13 @@ $(DistDir)/.makedistdir: $(DistSources)
          if test -d "$$from_dir/$$file"; then \
            if test -d "$(BUILD_SRC_DIR)/$$file" && \
               test "$$from_dir" != "$(BUILD_SRC_DIR)" ; then \
-             cp -pR "$(BUILD_SRC_DIR)/$$file" "$$to_dir" || exit 1; \
+             $(CP) -pR "$(BUILD_SRC_DIR)/$$file" "$$to_dir" || exit 1; \
            fi; \
-           cp -pR $$from_dir/$$file $$to_dir || exit 1; \
+           $(CP) -pR $$from_dir/$$file $$to_dir || exit 1; \
          elif test -f "$$from_dir/$$file" ; then \
-           cp -p "$$from_dir/$$file" "$(DistDir)/$$file" || exit 1; \
+           $(CP) -p "$$from_dir/$$file" "$(DistDir)/$$file" || exit 1; \
          elif test -L "$$from_dir/$$file" ; then \
-           cp -pd "$$from_dir/$$file" $(DistDir)/$$file || exit 1; \
+           $(CP) -pd "$$from_dir/$$file" $(DistDir)/$$file || exit 1; \
          elif echo "$(DistAlways)" | grep -v "$$file" >/dev/null ; then \
            $(EchoCmd) "===== WARNING: Distribution Source " \
              "$$from_dir/$$file Not Found!" ; \