X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=Makefile.rules;h=42c367a9499361bb0413c491d6389f697772f500;hb=422fa625d9bdc37ebba9fc8ce16f141ffa80fc58;hp=199602f38af201dcf9582245380a22bf2c5098f1;hpb=7dabf399b95aad4056985eac346451e134de9ebe;p=oota-llvm.git diff --git a/Makefile.rules b/Makefile.rules index 199602f38af..42c367a9499 100644 --- a/Makefile.rules +++ b/Makefile.rules @@ -206,21 +206,31 @@ else OPTIMIZE_OPTION := -O2 endif +# IF REQUIRES_EH=1 is specified then don't disable exceptions +#ifndef REQUIRES_EH +# CXX.Flags += -fno-exceptions +#endif + ifdef ENABLE_PROFILING BuildMode := Profile - CXX.Flags := $(OPTIMIZE_OPTION) -pg - C.Flags := $(OPTIMIZE_OPTION) -pg - LD.Flags := $(OPTIMIZE_OPTION) -pg + CXX.Flags := $(OPTIMIZE_OPTION) -pg -g + C.Flags := $(OPTIMIZE_OPTION) -pg -g + LD.Flags := $(OPTIMIZE_OPTION) -pg -g else ifdef ENABLE_OPTIMIZED BuildMode := Release - # Don't use -fomit-frame-pointer on FreeBSD + # Don't use -fomit-frame-pointer on Darwin or FreeBSD. ifneq ($(OS),FreeBSD) - # Don't use -fomit-frame-pointer on Darwin, it breaks backtraces. ifneq ($(OS),Darwin) OmitFramePointer := -fomit-frame-pointer endif endif + + # Darwin requires -fstrict-aliasing to be explicitly enabled. + ifeq ($(OS),Darwin) + EXTRA_OPTIONS += -fstrict-aliasing + endif + CXX.Flags := $(OPTIMIZE_OPTION) $(OmitFramePointer) C.Flags := $(OPTIMIZE_OPTION) $(OmitFramePointer) LD.Flags := $(OPTIMIZE_OPTION) @@ -228,7 +238,7 @@ else BuildMode := Debug CXX.Flags := -g C.Flags := -g - LD.Flags := -g + LD.Flags := -g KEEP_SYMBOLS := 1 endif endif @@ -251,10 +261,10 @@ LD.Flags += $(LDFLAGS) AR.Flags := cru LibTool.Flags := --tag=CXX -#Make Floating point ieee complient on alpha +# Make Floating point IEEE compliant on Alpha. ifeq ($(ARCH),Alpha) - CXX.Flags += -mieee - CPP.BaseFlags += -mieee + CXX.Flags += -mieee -fPIC + CPP.BaseFlags += -mieee -fPIC endif #-------------------------------------------------------------------- @@ -281,7 +291,11 @@ ifndef LLVMAS LLVMAS := $(LLVMToolDir)/llvm-as$(EXEEXT) endif ifndef TBLGEN -TBLGEN := $(LLVMToolDir)/tblgen$(EXEEXT) + ifeq ($(LLVM_CROSS_COMPILING),1) + TBLGEN := $(LLVMToolDir)/tblgen$(BUILD_EXEEXT) + else + TBLGEN := $(LLVMToolDir)/tblgen$(EXEEXT) + endif endif ifndef GCCAS GCCAS := $(LLVMToolDir)/gccas$(EXEEXT) @@ -314,12 +328,17 @@ LLVMGXXWITHPATH := PATH="$(LLVMToolDir):$(PATH)" $(LLVMGXX) # Adjust LD.Flags and Libtool.Flags depending on the kind of library that is # to be built. Note that if LOADABLE_MODULE is specified then the resulting -# shared library can be opened with dlopen +# shared library can be opened with dlopen. Also, LOADABLE_MODULE implies +# several other things so we force them to be defined/on. +ifdef LOADABLE_MODULE + SHARED_LIBRARY := 1 + DONT_BUILD_RELINKED := 1 + LINK_LIBS_IN_SHARED := 1 + LD.Flags += -module +endif + ifdef SHARED_LIBRARY LD.Flags += -rpath $(LibDir) - ifdef LOADABLE_MODULE - LD.Flags += -module - endif else LibTool.Flags += --tag=disable-shared endif @@ -395,11 +414,6 @@ ifdef UNIVERSAL DISABLE_AUTO_DEPENDENCIES=1 endif -# Temporary workaround for a Mac OSX compatibility issue. -ifeq ($(OS),Darwin) - CXX.Flags += -fno-use-cxa-atexit -endif - LD.Flags += -L$(LibDir) -L$(LLVMLibDir) CPP.BaseFlags += -D_GNU_SOURCE -D__STDC_LIMIT_MACROS # All -I flags should go here, so that they don't confuse llvm-config. @@ -421,10 +435,12 @@ LTCompile.CXX = $(LIBTOOL) $(LibTool.Flags) --mode=compile $(Compile.CXX) BCCompile.CXX = $(LLVMGXXWITHPATH) $(CPP.Flags) $(CompileCommonOpts) \ $(CXX.Flags) Preprocess.CXX= $(CXX) $(CPP.Flags) $(CompileCommonOpts) $(CXX.Flags) -E -Link = $(LIBTOOL) $(LibTool.Flags) --mode=link $(CXX) $(CPP.Flags) \ - $(CXX.Flags) $(CompileCommonOpts) $(LD.Flags) $(Strip) -Relink = $(LIBTOOL) $(LibTool.Flags) --mode=link $(CXX) $(CPP.Flags) \ - $(CXX.Flags) $(CompileCommonOpts) $(Relink.Flags) +Link = $(CXX) $(CPP.Flags) $(CXX.Flags) $(CompileCommonOpts) \ + $(LD.Flags) $(Strip) +LTLink = $(LIBTOOL) $(LibTool.Flags) --mode=link $(Link) +Relink = $(CXX) $(CPP.Flags) $(CXX.Flags) $(CompileCommonOpts) \ + $(Relink.Flags) +LTRelink = $(LIBTOOL) $(LibTool.Flags) --mode=link $(Relink) LTInstall = $(LIBTOOL) $(LibTool.Flags) --mode=install $(INSTALL) \ $(Install.Flags) ProgInstall = $(INSTALL) $(Install.StripFlag) -m 0755 @@ -492,6 +508,8 @@ $(PROJ_etcdir): $(PROJ_etcdir)/.dir SubDirs := ifdef DIRS SubDirs += $(DIRS) + +ifneq ($(PROJ_SRC_ROOT),$(PROJ_OBJ_ROOT)) $(RecursiveTargets):: $(Verb) for dir in $(DIRS); do \ if [ ! -f $$dir/Makefile ]; then \ @@ -500,6 +518,13 @@ $(RecursiveTargets):: fi; \ ($(MAKE) -C $$dir $@ ) || exit 1; \ done +else +$(RecursiveTargets):: + $(Verb) for dir in $(DIRS); do \ + ($(MAKE) -C $$dir $@ ) || exit 1; \ + done +endif + endif #--------------------------------------------------------- @@ -550,6 +575,7 @@ ifdef OPTIONAL_DIRS SubDirs += $(OPTIONAL_DIRS) +ifneq ($(PROJ_SRC_ROOT),$(PROJ_OBJ_ROOT)) $(RecursiveTargets):: $(Verb) for dir in $(OPTIONAL_DIRS); do \ if [ -d $(PROJ_SRC_DIR)/$$dir ]; then\ @@ -560,6 +586,12 @@ $(RecursiveTargets):: ($(MAKE) -C$$dir $@ ) || exit 1; \ fi \ done +else +$(RecursiveTargets):: + $(Verb) for dir in $(OPTIONAL_DIRS); do \ + ($(MAKE) -C$$dir $@ ) || exit 1; \ + done +endif endif #--------------------------------------------------------- @@ -609,7 +641,8 @@ ifeq ($(LLVMLIBS),JIT) Link += -dlopen self # Generic JIT libraries -JIT_LIBS := LLVMInterpreter LLVMJIT LLVMCodeGen LLVMExecutionEngine +JIT_LIBS := LLVMInterpreter LLVMJIT LLVMSelectionDAG.a LLVMCodeGen.a \ + LLVMExecutionEngine # You can enable the X86 JIT on a non-X86 host by setting the flag # ENABLE_X86_JIT on the make command line. If not, it will still be @@ -620,7 +653,7 @@ endif # What the X86 JIT requires ifdef ENABLE_X86_JIT - JIT_LIBS += LLVMX86 LLVMSelectionDAG + JIT_LIBS += LLVMX86 endif # You can enable the PowerPC JIT on a non-PowerPC host by setting the flag @@ -632,7 +665,7 @@ endif # What the PowerPC JIT requires ifdef ENABLE_PPC_JIT - JIT_LIBS += LLVMPowerPC LLVMSelectionDAG + JIT_LIBS += LLVMPowerPC endif # You can enable the Alpha JIT on a non-Alpha host by setting the flag @@ -644,7 +677,7 @@ endif # What the Alpha JIT requires ifdef ENABLE_ALPHA_JIT - JIT_LIBS += LLVMAlpha LLVMSelectionDAG + JIT_LIBS += LLVMAlpha endif LLVMLIBS := $(JIT_LIBS) LLVMScalarOpts.a LLVMTransformUtils.a LLVMAnalysis.a \ @@ -751,15 +784,21 @@ ifdef SHARED_LIBRARY all-local:: $(LibName.LA) ifdef LINK_LIBS_IN_SHARED +ifdef LOADABLE_MODULE +SharedLibKindMessage := "Lodable Module" +else +SharedLibKindMessage := "Shared Library" +endif $(LibName.LA): $(ObjectsLO) $(LibDir)/.dir - $(Echo) Linking $(BuildMode) Shared Library $(LIBRARYNAME)$(SHLIBEXT) - $(Verb) $(Link) -o $@ $(ObjectsLO) \ - $(ProjLibsOptions) $(LLVMLibsOptions) + $(Echo) Linking $(BuildMode) $(SharedLibKindMessage) \ + $(LIBRARYNAME)$(SHLIBEXT) + $(Verb) $(LTLink) -o $@ $(ObjectsLO) $(ProjLibsOptions) \ + $(LLVMLibsOptions) $(Verb) $(LTInstall) $@ $(LibDir) else $(LibName.LA): $(ObjectsLO) $(LibDir)/.dir $(Echo) Linking $(BuildMode) Shared Library $(LIBRARYNAME)$(SHLIBEXT) - $(Verb) $(Link) -o $@ $(ObjectsLO) + $(Verb) $(LTLink) -o $@ $(ObjectsLO) $(Verb) $(LTInstall) $@ $(LibDir) endif @@ -863,7 +902,7 @@ all-local:: $(LibName.O) $(LibName.O): $(ObjectsO) $(LibDir)/.dir $(Echo) Linking $(BuildMode) Object Library $(notdir $@) - $(Verb) $(Relink) -o $@ $(ObjectsO) + $(Verb) $(LTRelink) -o $@ $(ObjectsO) clean-local:: ifneq ($(strip $(LibName.O)),) @@ -962,7 +1001,7 @@ endif $(ToolBuildPath): $(ObjectsO) $(ProjLibsPaths) $(LLVMLibsPaths) $(Echo) Linking $(BuildMode) executable $(TOOLNAME) $(StripWarnMsg) - $(Verb) $(Link) -o $@ $(TOOLLINKOPTS) $(ObjectsO) $(ProjLibsOptions) \ + $(Verb) $(LTLink) -o $@ $(TOOLLINKOPTS) $(ObjectsO) $(ProjLibsOptions) \ $(LLVMLibsOptions) $(ExtraLibs) $(TOOLLINKOPTSB) $(LIBS) $(Echo) ======= Finished Linking $(BuildMode) Executable $(TOOLNAME) \ $(StripWarnMsg)