X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=Makefile.rules;h=142b62e421ef424056967bdf8e830fc396c114d2;hb=12d3a9138694541f8b2443501def6b72fedfa86b;hp=a8b1b8056df2b203b15736e8134b40db29fcf80a;hpb=ac90d5e50b327476dcb468668f8e0eec3fb923d0;p=oota-llvm.git diff --git a/Makefile.rules b/Makefile.rules index a8b1b8056df..142b62e421e 100644 --- a/Makefile.rules +++ b/Makefile.rules @@ -85,7 +85,7 @@ preconditions: $(PreConditions) #------------------------------------------------------------------------ $(filter-out clean clean-local,$(UserTargets)):: $(BUILT_SOURCES) -clean-local:: +clean-all-local:: ifneq ($(strip $(BUILT_SOURCES)),) -$(Verb) $(RM) -f $(BUILT_SOURCES) endif @@ -255,6 +255,11 @@ else C.Flags += -D_DEBUG endif +ifeq ($(ENABLE_PIC),1) + CXX.Flags += -fPIC + C.Flags += -fPIC +endif + CXX.Flags += $(CXXFLAGS) -Woverloaded-virtual C.Flags += $(CFLAGS) CPP.BaseFlags += $(CPPFLAGS) @@ -264,8 +269,16 @@ LibTool.Flags := --tag=CXX # Make Floating point IEEE compliant on Alpha. ifeq ($(ARCH),Alpha) - CXX.Flags += -mieee -fPIC - CPP.BaseFlags += -mieee -fPIC + CXX.Flags += -mieee + CPP.BaseFlags += -mieee +ifeq ($(ENABLE_PIC),0) + CXX.Flags += -fPIC + CPP.BaseFlags += -fPIC +endif +endif + +ifeq ($(ARCH),Alpha) + LD.Flags += -Wl,--no-relax endif #-------------------------------------------------------------------- @@ -299,11 +312,8 @@ ifndef TBLGEN endif endif LLVM_CONFIG := $(LLVMToolDir)/llvm-config -ifndef GCCAS -GCCAS := $(LLVMToolDir)/gccas$(EXEEXT) -endif -ifndef GCCLD -GCCLD := $(LLVMToolDir)/gccld$(EXEEXT) +ifndef LLVMLD +LLVMLD := $(LLVMToolDir)/llvm-ld$(EXEEXT) endif ifndef LLVMDIS LLVMDIS := $(LLVMToolDir)/llvm-dis$(EXEEXT) @@ -320,9 +330,20 @@ endif ifndef LBUGPOINT LBUGPOINT := $(LLVMToolDir)/bugpoint$(EXEEXT) endif - +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 #-------------------------------------------------------------------- # Adjust to user's request @@ -566,7 +587,7 @@ $(ParallelTargets) : $(MKDIR) $(@D); \ $(CP) $(PROJ_SRC_DIR)/$(@D)/Makefile $(@D)/Makefile; \ fi; \ - $(MAKE) -C $(@D) $(subst $(@D)/.make,,$@) ; + $(MAKE) -C $(@D) $(subst $(@D)/.make,,$@) endif #--------------------------------------------------------- @@ -601,6 +622,12 @@ endif #--------------------------------------------------------- ifdef CONFIG_FILES +ifdef NO_INSTALL +install-local:: + $(Echo) Install circumvented with NO_INSTALL +uninstall-local:: + $(Echo) UnInstall circumvented with NO_INSTALL +else install-local:: $(PROJ_etcdir) $(CONFIG_FILES) $(Echo) Installing Configuration Files To $(PROJ_etcdir) $(Verb)for file in $(CONFIG_FILES); do \ @@ -618,6 +645,7 @@ uninstall-local:: $(Verb)for file in $(CONFIG_FILES); do \ $(RM) -f $(PROJ_etcdir)/$${file} ; \ done +endif endif @@ -657,8 +685,8 @@ $(LLVM_CONFIG): $(ToolDir)/$(strip $(TOOLNAME))$(EXEEXT): $(LLVM_CONFIG) -ProjLibsOptions = $(shell $(LLVM_CONFIG) --libs $(LINK_COMPONENTS)) -ProjLibsPaths = $(LLVM_CONFIG) \ +ProjLibsOptions += $(shell $(LLVM_CONFIG) --libs $(LINK_COMPONENTS)) +ProjLibsPaths += $(LLVM_CONFIG) \ $(shell $(LLVM_CONFIG) --libfiles $(LINK_COMPONENTS)) endif endif @@ -681,14 +709,14 @@ $(warning Modules require llvm-gcc but no llvm-gcc is available ****) else Module := $(LibDir)/$(MODULE_NAME).bc -LinkModule := $(GCCLD) -L$(CFERuntimeLibDir) +LinkModule := $(LLVMLD) -L$(CFERuntimeLibDir) ifdef EXPORTED_SYMBOL_FILE LinkModule += -internalize-public-api-file=$(EXPORTED_SYMBOL_FILE) endif -$(Module): $(BUILT_SOURCES) $(ObjectsBC) $(LibDir)/.dir $(GCCLD) +$(Module): $(BUILT_SOURCES) $(ObjectsBC) $(LibDir)/.dir $(LLVMLD) $(Echo) Building $(BuildMode) Bytecode Module $(notdir $@) $(Verb) $(LinkModule) -o $@ $(ObjectsBC) @@ -705,6 +733,12 @@ else ModuleDestDir := $(PROJ_libdir) endif +ifdef NO_INSTALL +install-local:: + $(Echo) Install circumvented with NO_INSTALL +uninstall-local:: + $(Echo) Uninstall circumvented with NO_INSTALL +else DestModule := $(ModuleDestDir)/$(MODULE_NAME).bc install-module:: $(DestModule) @@ -717,6 +751,7 @@ $(DestModule): $(ModuleDestDir) $(Module) uninstall-local:: $(Echo) Uninstalling $(BuildMode) Bytecode Module $(DestModule) -$(Verb) $(RM) -f $(DestModule) +endif endif endif @@ -769,6 +804,12 @@ ifneq ($(strip $(LibName.LA)),) -$(Verb) $(RM) -f $(LibName.LA) endif +ifdef NO_INSTALL +install-local:: + $(Echo) Install circumvented with NO_INSTALL +uninstall-local:: + $(Echo) Uninstall circumvented with NO_INSTALL +else DestSharedLib = $(PROJ_libdir)/lib$(LIBRARYNAME)$(SHLIBEXT) install-local:: $(DestSharedLib) @@ -781,7 +822,7 @@ $(DestSharedLib): $(PROJ_libdir) $(LibName.LA) uninstall-local:: $(Echo) Uninstalling $(BuildMode) Shared Library $(DestSharedLib) -$(Verb) $(RM) -f $(PROJ_libdir)/lib$(LIBRARYNAME).* - +endif endif #--------------------------------------------------------- @@ -798,10 +839,10 @@ else all-local:: $(LibName.BCA) ifdef EXPORTED_SYMBOL_FILE -BCLinkLib = $(GCCLD) -L$(CFERuntimeLibDir) \ +BCLinkLib = $(LLVMLD) -L$(CFERuntimeLibDir) \ -internalize-public-api-file=$(EXPORTED_SYMBOL_FILE) -$(LibName.BCA): $(ObjectsBC) $(LibDir)/.dir $(GCCLD) \ +$(LibName.BCA): $(ObjectsBC) $(LibDir)/.dir $(LLVMLD) \ $(LLVMToolDir)/llvm-ar $(Echo) Building $(BuildMode) Bytecode Archive $(notdir $@) \ "(internalize)" @@ -832,6 +873,12 @@ DestBytecodeLib = $(BytecodeDestDir)/lib$(LIBRARYNAME).a install-bytecode-local:: $(DestBytecodeLib) +ifdef NO_INSTALL +install-local:: + $(Echo) Install circumvented with NO_INSTALL +uninstall-local:: + $(Echo) Uninstall circumvented with NO_INSTALL +else install-local:: $(DestBytecodeLib) $(DestBytecodeLib): $(BytecodeDestDir) $(LibName.BCA) @@ -841,7 +888,7 @@ $(DestBytecodeLib): $(BytecodeDestDir) $(LibName.BCA) uninstall-local:: $(Echo) Uninstalling $(BuildMode) Bytecode Archive $(DestBytecodeLib) -$(Verb) $(RM) -f $(DestBytecodeLib) - +endif endif endif @@ -871,6 +918,12 @@ ifneq ($(strip $(LibName.O)),) -$(Verb) $(RM) -f $(LibName.O) endif +ifdef NO_INSTALL +install-local:: + $(Echo) Install circumvented with NO_INSTALL +uninstall-local:: + $(Echo) Uninstall circumvented with NO_INSTALL +else DestRelinkedLib = $(PROJ_libdir)/$(LIBRARYNAME).o install-local:: $(DestRelinkedLib) @@ -882,7 +935,7 @@ $(DestRelinkedLib): $(PROJ_libdir) $(LibName.O) uninstall-local:: $(Echo) Uninstalling $(BuildMode) Object Library $(DestRelinkedLib) -$(Verb) $(RM) -f $(DestRelinkedLib) - +endif endif #--------------------------------------------------------- @@ -905,6 +958,12 @@ ifneq ($(strip $(LibName.A)),) -$(Verb) $(RM) -f $(LibName.A) endif +ifdef NO_INSTALL +install-local:: + $(Echo) Install circumvented with NO_INSTALL +uninstall-local:: + $(Echo) Uninstall circumvented with NO_INSTALL +else DestArchiveLib := $(PROJ_libdir)/lib$(LIBRARYNAME).a install-local:: $(DestArchiveLib) @@ -917,7 +976,7 @@ $(DestArchiveLib): $(PROJ_libdir) $(LibName.A) uninstall-local:: $(Echo) Uninstalling $(BuildMode) Archive Library $(DestArchiveLib) -$(Verb) $(RM) -f $(DestArchiveLib) - +endif endif # endif LIBRARYNAME @@ -961,6 +1020,12 @@ $(ToolBuildPath): $(ObjectsO) $(ProjLibsPaths) $(LLVMLibsPaths) $(Echo) ======= Finished Linking $(BuildMode) Executable $(TOOLNAME) \ $(StripWarnMsg) +ifdef NO_INSTALL +install-local:: + $(Echo) Install circumvented with NO_INSTALL +uninstall-local:: + $(Echo) Uninstall circumvented with NO_INSTALL +else DestTool = $(PROJ_bindir)/$(TOOLNAME) install-local:: $(DestTool) @@ -972,7 +1037,7 @@ $(DestTool): $(PROJ_bindir) $(ToolBuildPath) uninstall-local:: $(Echo) Uninstalling $(BuildMode) $(DestTool) -$(Verb) $(RM) -f $(DestTool) - +endif endif ############################################################################### @@ -1022,26 +1087,32 @@ $(ObjDir)/%.lo $(ObjDir)/%.o: %.c $(ObjDir)/.dir $(BUILT_SOURCES) # Create .bc files in the ObjDir directory from .cpp .cc and .c files... #--------------------------------------------------------- -$(ObjDir)/%.ll: %.cpp $(ObjDir)/.dir $(BUILT_SOURCES) +$(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,$@) -$(ObjDir)/%.ll: %.cc $(ObjDir)/.dir $(BUILT_SOURCES) +$(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,$@) -$(ObjDir)/%.ll: %.c $(ObjDir)/.dir $(BUILT_SOURCES) +$(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,$@) # Provide alternate rule sets if dependencies are disabled else @@ -1058,17 +1129,23 @@ $(ObjDir)/%.lo $(ObjDir)/%.o: %.c $(ObjDir)/.dir $(BUILT_SOURCES) $(Echo) "Compiling $*.c for $(BuildMode) build" $(PIC_FLAG) $(MAYBE_PIC_Compile.C) $< -o $@ -$(ObjDir)/%.ll: %.cpp $(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) +$(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) +$(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 @@ -1082,7 +1159,7 @@ $(BuildMode)/%.ii: %.cc $(ObjDir)/.dir $(BUILT_SOURCES) $(Echo) "Compiling $*.cc for $(BuildMode) build to .ii file" $(Verb) $(Preprocess.CXX) $< -o $@ - $(BuildMode)/%.i: %.c $(ObjDir)/.dir $(BUILT_SOURCES) +$(BuildMode)/%.i: %.c $(ObjDir)/.dir $(BUILT_SOURCES) $(Echo) "Compiling $*.c for $(BuildMode) build to .i file" $(Verb) $(Preprocess.C) $< -o $@ @@ -1099,10 +1176,19 @@ $(ObjDir)/%.s: %.c $(ObjDir)/.dir $(BUILT_SOURCES) $(Echo) "Compiling $*.c to asm for $(BuildMode) build" $(PIC_FLAG) $(MAYBE_PIC_Compile.C) $< -o $@ -S + # make the C and C++ compilers strip debug info out of bytecode libraries. -$(ObjectsBC): $(ObjDir)/%.bc: $(ObjDir)/%.ll $(GCCAS) +ifdef DEBUG_RUNTIME +$(ObjectsBC): $(ObjDir)/%.bc: $(ObjDir)/%.ll $(LLVMAS) $(LOPT) $(Echo) "Compiling $*.ll to $*.bc for $(BuildMode) build (bytecode)" - $(Verb) $(GCCAS) -strip-debug $< -o $@ + $(Verb) $(LLVMAS) $< -o - | $(LOPT) -std-compile-opts -o $@ -f +else +$(ObjectsBC): $(ObjDir)/%.bc: $(ObjDir)/%.ll $(LLVMAS) $(LOPT) + $(Echo) "Compiling $*.ll to $*.bc for $(BuildMode) build (bytecode)" + $(Verb) $(LLVMAS) $< -o - | \ + $(LOPT) -std-compile-opts -strip-debug -o $@ -f +endif + #--------------------------------------------------------- # Provide rule to build .bc files from .ll sources, @@ -1120,6 +1206,7 @@ ifdef TARGET TDFiles := $(strip $(wildcard $(PROJ_SRC_DIR)/*.td) \ $(LLVM_SRC_ROOT)/lib/Target/Target.td \ + $(LLVM_SRC_ROOT)/lib/Target/TargetCallingConv.td \ $(LLVM_SRC_ROOT)/lib/Target/TargetSelectionDAG.td \ $(LLVM_SRC_ROOT)/include/llvm/CodeGen/ValueTypes.td) \ $(wildcard $(LLVM_SRC_ROOT)/include/llvm/Intrinsics*.td) @@ -1189,6 +1276,11 @@ $(ObjDir)/%GenSubtarget.inc.tmp : %.td $(ObjDir)/.dir $(Echo) "Building $(