X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=Makefile.rules;h=23ffe3ea9609f9fdb9112bf20b9576290eb08a77;hb=957bffaeca6a0e2ccc684d753df1d87e8e053fe2;hp=948b88099f38dbfb24894096cf7367465613fc18;hpb=1119552a08ab0bd4b7dd07694ca4887cdc6f9c91;p=oota-llvm.git diff --git a/Makefile.rules b/Makefile.rules index 948b88099f3..23ffe3ea960 100644 --- a/Makefile.rules +++ b/Makefile.rules @@ -229,43 +229,46 @@ endif CPP.Defines := # OPTIMIZE_OPTION - The optimization level option we want to build LLVM with # this can be overridden on the make command line. -ifneq ($(OS),MingW) - OPTIMIZE_OPTION := -O3 -else - OPTIMIZE_OPTION := -O2 +ifndef OPTIMIZE_OPTION + ifneq ($(OS),MingW) + OPTIMIZE_OPTION := -O3 + else + OPTIMIZE_OPTION := -O2 + endif endif -ifdef ENABLE_PROFILING - BuildMode := Profile - CXX.Flags += $(OPTIMIZE_OPTION) -pg -g - C.Flags += $(OPTIMIZE_OPTION) -pg -g - LD.Flags += $(OPTIMIZE_OPTION) -pg -g - KEEP_SYMBOLS := 1 -else - ifeq ($(ENABLE_OPTIMIZED),1) - BuildMode := Release - # Don't use -fomit-frame-pointer on Darwin or FreeBSD. - ifneq ($(OS),FreeBSD) - ifneq ($(OS),Darwin) - OmitFramePointer := -fomit-frame-pointer - endif - endif +ifeq ($(ENABLE_OPTIMIZED),1) + BuildMode := Release + # Don't use -fomit-frame-pointer on Darwin or FreeBSD. + ifneq ($(OS),FreeBSD) + ifneq ($(OS),Darwin) + OmitFramePointer := -fomit-frame-pointer + endif + endif - # Darwin requires -fstrict-aliasing to be explicitly enabled. - ifeq ($(OS),Darwin) - EXTRA_OPTIONS += -fstrict-aliasing -Wstrict-aliasing - endif + # Darwin requires -fstrict-aliasing to be explicitly enabled. + # Avoid -fstrict-aliasing on Darwin for now, there are unresolved issues + # with -fstrict-aliasing and ipa-type-escape radr://6756684 + #ifeq ($(OS),Darwin) + # EXTRA_OPTIONS += -fstrict-aliasing -Wstrict-aliasing + #endif + CXX.Flags += $(OPTIMIZE_OPTION) $(OmitFramePointer) + C.Flags += $(OPTIMIZE_OPTION) $(OmitFramePointer) + LD.Flags += $(OPTIMIZE_OPTION) +else + BuildMode := Debug + CXX.Flags += -g + C.Flags += -g + LD.Flags += -g + KEEP_SYMBOLS := 1 +endif - CXX.Flags += $(OPTIMIZE_OPTION) $(OmitFramePointer) - C.Flags += $(OPTIMIZE_OPTION) $(OmitFramePointer) - LD.Flags += $(OPTIMIZE_OPTION) - else - BuildMode := Debug - CXX.Flags += -g - C.Flags += -g - LD.Flags += -g - KEEP_SYMBOLS := 1 - endif +ifeq ($(ENABLE_PROFILING),1) + BuildMode := $(BuildMode)+Profile + CXX.Flags := $(filter-out -fomit-frame-pointer,$(CXX.Flags)) -pg -g + C.Flags := $(filter-out -fomit-frame-pointer,$(C.Flags)) -pg -g + LD.Flags := $(filter-out -fomit-frame-pointer,$(LD.Flags)) -pg -g + KEEP_SYMBOLS := 1 endif #ifeq ($(ENABLE_VISIBILITY_INLINES_HIDDEN),1) @@ -293,6 +296,7 @@ endif # If DISABLE_ASSERTIONS=1 is specified (make command line or configured), # then disable assertions by defining the appropriate preprocessor symbols. ifdef DISABLE_ASSERTIONS + # Indicate that assertions are turned off using a minus sign BuildMode := $(BuildMode)-Asserts CPP.Defines += -DNDEBUG else @@ -334,6 +338,11 @@ ifeq ($(ENABLE_PIC),1) C.Flags += -fPIC endif endif +else + ifeq ($(OS),Darwin) + CXX.Flags += -mdynamic-no-pic + C.Flags += -mdynamic-no-pic + endif endif CXX.Flags += $(CXXFLAGS) -Woverloaded-virtual @@ -357,6 +366,21 @@ ifeq ($(ARCH),Alpha) LD.Flags += -Wl,--no-relax endif +ifeq ($(OS),MingW) + ifeq ($(LLVM_CROSS_COMPILING),1) + # Work around http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=525016 + ifdef TOOLNAME + LD.Flags += -Wl,--allow-multiple-definition + endif + endif +endif + +ifdef ENABLE_EXPENSIVE_CHECKS + # GNU libstdc++ uses RTTI if you define _GLIBCXX_DEBUG, which we did above. + # See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40160 + CXX.Flags := $(filter-out -fno-rtti,$(CXX.Flags)) +endif + #-------------------------------------------------------------------- # Directory locations #-------------------------------------------------------------------- @@ -413,13 +437,9 @@ ifndef LUPGRADE LUPGRADE := $(LLVMToolDir)/llvm-upgrade$(EXEEXT) endif ifeq ($(LLVMGCC_MAJVERS),3) -UPGRADE_MSG = $(Echo) "Upgrading $(1) assembly to latest." -UPGRADE_LL = $(Verb)$(LUPGRADE) $(1) -o $(1).up.tmp -f ; $(MV) $(1).up.tmp $(1) LLVMGCCWITHPATH := PATH="$(LLVMToolDir):$(PATH)" $(LLVMGCC) LLVMGXXWITHPATH := PATH="$(LLVMToolDir):$(PATH)" $(LLVMGXX) else -UPGRADE_MSG = -UPGRADE_LL = LLVMGCCWITHPATH := $(LLVMGCC) LLVMGXXWITHPATH := $(LLVMGXX) endif @@ -434,10 +454,10 @@ ifeq ($(OS),Darwin) DARWIN_VERSION := $(shell echo $(DARWIN_VERSION)| sed -E 's/(10.[0-9]).*/\1/') # Get "4" out of 10.4 for later pieces in the makefile. DARWIN_MAJVERS := $(shell echo $(DARWIN_VERSION)| sed -E 's/10.([0-9]).*/\1/') - - SharedLinkOptions=-Wl,-flat_namespace -Wl,-undefined -Wl,suppress -bundle \ - -mmacosx-version-min=$(DARWIN_VERSION) - CompileCommonOpts += -mmacosx-version-min=$(DARWIN_VERSION) + + SharedLinkOptions=-Wl,-flat_namespace -Wl,-undefined -Wl,suppress \ + -dynamiclib -mmacosx-version-min=$(DARWIN_VERSION) + TargetCommonOpts += -mmacosx-version-min=$(DARWIN_VERSION) else ifeq ($(OS),Cygwin) SharedLinkOptions=-shared -nostdlib -Wl,--export-all-symbols \ @@ -501,7 +521,10 @@ endif # Options To Invoke Tools #---------------------------------------------------------- -CompileCommonOpts += -pedantic -Wall -W -Wwrite-strings -Wno-long-long \ +ifndef NO_PEDANTIC +CompileCommonOpts += -pedantic +endif +CompileCommonOpts += -Wall -W -Wwrite-strings -Wno-long-long \ -Wunused -Wno-unused-parameter $(EXTRA_OPTIONS) ifeq ($(OS),HP-UX) @@ -536,10 +559,10 @@ ifdef UNIVERSAL else ifeq ($(OS),Darwin) ifeq ($(ARCH),x86_64) - CompileCommonOpts += -m64 + TargetCommonOpts = -m64 else ifeq ($(ARCH),x86) - CompileCommonOpts += -m32 + TargetCommonOpts = -m32 endif endif endif @@ -560,33 +583,35 @@ CPP.Flags += $(sort -I$(PROJ_OBJ_DIR) -I$(PROJ_SRC_DIR) \ ifeq ($(BUILD_COMPONENT), 1) Compile.C = $(BUILD_CC) $(CPP.Flags) $(C.Flags) $(C.Flags.NoRelink) \ - $(CompileCommonOpts) -c + $(TargetCommonOpts) $(CompileCommonOpts) -c Compile.CXX = $(BUILD_CXX) $(CPP.Flags) $(CXX.Flags) $(CXX.Flags.NoRelink) \ - $(CompileCommonOpts) -c - Preprocess.CXX= $(BUILD_CXX) $(CPP.Flags) $(CompileCommonOpts) $(CXX.Flags) \ - $(CXX.Flags.NoRelink) -E + $(TargetCommonOpts) $(CompileCommonOpts) -c + Preprocess.CXX= $(BUILD_CXX) $(CPP.Flags) $(TargetCommonOpts) \ + $(CompileCommonOpts) $(CXX.Flags) $(CXX.Flags.NoRelink) -E Link = $(BUILD_CXX) $(CPP.Flags) $(CXX.Flags) $(CXX.Flags.NoRelink) \ - $(CompileCommonOpts) $(LD.Flags) $(Strip) - Relink = $(BUILD_CXX) $(CPP.Flags) $(CXX.Flags) $(CompileCommonOpts) \ - $(Relink.Flags) + $(TargetCommonOpts) $(CompileCommonOpts) $(LD.Flags) $(Strip) + Relink = $(BUILD_CXX) $(CPP.Flags) $(CXX.Flags) $(TargetCommonOpts) \ + $(CompileCommonOpts) $(Relink.Flags) else Compile.C = $(CC) $(CPP.Flags) $(C.Flags) $(C.Flags.NoRelink) \ - $(CompileCommonOpts) -c + $(TargetCommonOpts) $(CompileCommonOpts) -c Compile.CXX = $(CXX) $(CPP.Flags) $(CXX.Flags) $(CXX.Flags.NoRelink) \ - $(CompileCommonOpts) -c - Preprocess.CXX= $(CXX) $(CPP.Flags) $(CompileCommonOpts) $(CXX.Flags) \ - $(CXX.Flags.NoRelink) -E + $(TargetCommonOpts) $(CompileCommonOpts) -c + Preprocess.CXX= $(CXX) $(CPP.Flags) $(TargetCommonOpts) \ + $(CompileCommonOpts) $(CXX.Flags) $(CXX.Flags.NoRelink) -E Link = $(CXX) $(CPP.Flags) $(CXX.Flags) $(CXX.Flags.NoRelink) \ - $(CompileCommonOpts) $(LD.Flags) $(Strip) - Relink = $(CXX) $(CPP.Flags) $(CXX.Flags) $(CompileCommonOpts) \ - $(Relink.Flags) + $(TargetCommonOpts) $(CompileCommonOpts) $(LD.Flags) $(Strip) + Relink = $(CXX) $(CPP.Flags) $(CXX.Flags) $(TargetCommonOpts) \ + $(CompileCommonOpts) $(Relink.Flags) endif -BCCompile.C = $(LLVMGCCWITHPATH) $(CPP.Flags) $(C.Flags) $(CompileCommonOpts) -Preprocess.C = $(CC) $(CPP.Flags) $(C.Flags) $(CompileCommonOpts) -E +BCCompile.C = $(LLVMGCCWITHPATH) $(CPP.Flags) $(C.Flags) \ + $(TargetCommonOpts) $(CompileCommonOpts) +Preprocess.C = $(CC) $(CPP.Flags) $(C.Flags) \ + $(TargetCommonOpts) $(CompileCommonOpts) -E BCCompile.CXX = $(LLVMGXXWITHPATH) $(CPP.Flags) $(CXX.Flags) \ - $(CompileCommonOpts) + $(TargetCommonOpts) $(CompileCommonOpts) ProgInstall = $(INSTALL) $(Install.StripFlag) -m 0755 ScriptInstall = $(INSTALL) -m 0755 @@ -999,7 +1024,7 @@ else BytecodeDestDir := $(PROJ_libdir) endif -DestBytecodeLib = $(BytecodeDestDir)/lib$(LIBRARYNAME).a +DestBytecodeLib = $(BytecodeDestDir)/lib$(LIBRARYNAME).bca install-bytecode-local:: $(DestBytecodeLib) @@ -1211,8 +1236,8 @@ ifndef DISABLE_AUTO_DEPENDENCIES DEPEND_OPTIONS = -MMD -MP -MF "$(ObjDir)/$*.d.tmp" \ -MT "$(ObjDir)/$*.o" -MT "$(ObjDir)/$*.d" -# If the build succeeded, move the dependency file over. If it failed, put an -# empty file there. +# If the build succeeded, move the dependency file over, otherwise +# remove it. DEPEND_MOVEFILE = then $(MV) -f "$(ObjDir)/$*.d.tmp" "$(ObjDir)/$*.d"; \ else $(RM) "$(ObjDir)/$*.d.tmp"; exit 1; fi @@ -1235,32 +1260,31 @@ $(ObjDir)/%.o: %.c $(ObjDir)/.dir $(BUILT_SOURCES) # Create .bc files in the ObjDir directory from .cpp .cc and .c files... #--------------------------------------------------------- +BC_DEPEND_OPTIONS = -MMD -MP -MF "$(ObjDir)/$*.bc.d.tmp" \ + -MT "$(ObjDir)/$*.ll" -MT "$(ObjDir)/$*.bc.d" + +# If the build succeeded, move the dependency file over, otherwise +# remove it. +BC_DEPEND_MOVEFILE = then $(MV) -f "$(ObjDir)/$*.bc.d.tmp" "$(ObjDir)/$*.bc.d"; \ + else $(RM) "$(ObjDir)/$*.bc.d.tmp"; exit 1; fi + $(ObjDir)/%.ll: %.cpp $(ObjDir)/.dir $(BUILT_SOURCES) $(LLVMGXX) $(Echo) "Compiling $*.cpp for $(BuildMode) build (bytecode)" - $(Verb) if $(BCCompile.CXX) -MD -MT $@ -MP -MF "$(ObjDir)/$*.BCCXXd" \ - $< -o $@ -S -emit-llvm ; \ - then $(MV) -f "$(ObjDir)/$*.BCCXXd" "$(ObjDir)/$*.d"; \ - else $(RM) -f "$(ObjDir)/$*.BCCXXd"; exit 1; fi - $(call UPGRADE_MSG,$@) - $(call UPGRADE_LL,$@) + $(Verb) if $(BCCompile.CXX) $(BC_DEPEND_OPTIONS) \ + $< -o $(ObjDir)/$*.ll -S -emit-llvm ; \ + $(BC_DEPEND_MOVEFILE) $(ObjDir)/%.ll: %.cc $(ObjDir)/.dir $(BUILT_SOURCES) $(LLVMGXX) $(Echo) "Compiling $*.cc for $(BuildMode) build (bytecode)" - $(Verb) if $(BCCompile.CXX) -MD -MT $@ -MP -MF "$(ObjDir)/$*.BCCXXd" \ - $< -o $@ -S -emit-llvm ; \ - then $(MV) -f "$(ObjDir)/$*.BCCXXd" "$(ObjDir)/$*.d"; \ - else $(RM) -f "$(ObjDir)/$*.BCCXXd"; exit 1; fi - $(call UPGRADE_MSG,$@) - $(call UPGRADE_LL,$@) + $(Verb) if $(BCCompile.CXX) $(BC_DEPEND_OPTIONS) \ + $< -o $(ObjDir)/$*.ll -S -emit-llvm ; \ + $(BC_DEPEND_MOVEFILE) $(ObjDir)/%.ll: %.c $(ObjDir)/.dir $(BUILT_SOURCES) $(LLVMGCC) $(Echo) "Compiling $*.c for $(BuildMode) build (bytecode)" - $(Verb) if $(BCCompile.C) -MD -MT $@ -MP -MF "$(ObjDir)/$*.BCCd" \ - $< -o $@ -S -emit-llvm ; \ - then $(MV) -f "$(ObjDir)/$*.BCCd" "$(ObjDir)/$*.d"; \ - else $(RM) -f "$(ObjDir)/$*.BCCd"; exit 1; fi - $(call UPGRADE_MSG,$@) - $(call UPGRADE_LL,$@) + $(Verb) if $(BCCompile.C) $(BC_DEPEND_OPTIONS) \ + $< -o $(ObjDir)/$*.ll -S -emit-llvm ; \ + $(BC_DEPEND_MOVEFILE) # Provide alternate rule sets if dependencies are disabled else @@ -1280,20 +1304,14 @@ $(ObjDir)/%.o: %.c $(ObjDir)/.dir $(BUILT_SOURCES) $(ObjDir)/%.ll: %.cpp $(ObjDir)/.dir $(BUILT_SOURCES) $(LLVMGXX) $(Echo) "Compiling $*.cpp for $(BuildMode) build (bytecode)" $(BCCompile.CXX) $< -o $@ -S -emit-llvm - $(call UPGRADE_MSG,$@) - $(call UPGRADE_LL,$@) $(ObjDir)/%.ll: %.cc $(ObjDir)/.dir $(BUILT_SOURCES) $(LLVMGXX) $(Echo) "Compiling $*.cc for $(BuildMode) build (bytecode)" $(BCCompile.CXX) $< -o $@ -S -emit-llvm - $(call UPGRADE_MSG,$@) - $(call UPGRADE_LL,$@) $(ObjDir)/%.ll: %.c $(ObjDir)/.dir $(BUILT_SOURCES) $(LLVMGCC) $(Echo) "Compiling $*.c for $(BuildMode) build (bytecode)" $(BCCompile.C) $< -o $@ -S -emit-llvm - $(call UPGRADE_MSG,@) - $(call UPGRADE_LL,@) endif @@ -1358,10 +1376,6 @@ ifdef LLVMC_BUILD_AUTOGENERATED_INC TABLEGEN_INC_FILES_COMMON = 1 endif -ifdef CLANG_BUILD_DIAGNOSTICS_INC -TABLEGEN_INC_FILES_COMMON = 1 -endif - ifdef TABLEGEN_INC_FILES_COMMON INCFiles := $(filter %.inc,$(BUILT_SOURCES)) @@ -1464,7 +1478,8 @@ endif # TARGET ifdef LLVMC_BUILD_AUTOGENERATED_INC -LLVMCPluginSrc := $(strip $(wildcard $(PROJ_SRC_DIR)/*.td)) +LLVMCPluginSrc := $(sort $(strip $(wildcard $(PROJ_SRC_DIR)/*.td)) \ + $(strip $(wildcard $(PROJ_OBJ_DIR)/*.td))) TDFiles := $(LLVMCPluginSrc) \ $(strip $(wildcard $(LLVM_SRC_ROOT)/include/llvm/CompilerDriver/*.td)) @@ -1476,15 +1491,6 @@ $(ObjDir)/AutoGenerated.inc.tmp: $(LLVMCPluginSrc) $(ObjDir)/.dir \ endif # LLVMC_BUILD_AUTOGENERATED_INC -ifdef CLANG_BUILD_DIAGNOSTICS_INC - -$(ObjDir)/Diagnostic%Kinds.inc.tmp : Diagnostic%Kinds.td Diagnostic.td $(TBLGEN) - $(Echo) "Building Clang $(