Add support for truncating integer casts from long.
[oota-llvm.git] / Makefile.rules
index 37cb1c5a94b45250fe2a1f6abf0ff357724197c0..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
@@ -104,6 +111,9 @@ $(BUILT_SOURCES) : $(ObjMakefiles)
 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)
 
@@ -111,15 +121,18 @@ reconfigure:
 $(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
@@ -167,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
@@ -175,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
@@ -204,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
@@ -229,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
@@ -244,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
@@ -305,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) \
@@ -511,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)
@@ -609,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) \
@@ -1263,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 && \