ifneq ($(MakefileCommonIn),)
PreConditions += $(MakefileCommon)
endif
+
ifneq ($(MakefileConfigIn),)
PreConditions += $(MakefileConfig)
endif
C.Flags := $(OPTIMIZE_OPTION) -pg -g
LD.Flags := $(OPTIMIZE_OPTION) -pg -g
else
- ifdef ENABLE_OPTIMIZED
+ ifeq ($(ENABLE_OPTIMIZED),1)
BuildMode := Release
# Don't use -fomit-frame-pointer on Darwin or FreeBSD.
ifneq ($(OS),FreeBSD)
ifndef GCCLD
GCCLD := $(LLVMToolDir)/gccld$(EXEEXT)
endif
-ifndef LDIS
+ifndef LLVMDIS
LLVMDIS := $(LLVMToolDir)/llvm-dis$(EXEEXT)
endif
ifndef LLI
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)
+else
+UPGRADE_MSG =
+UPGRADE_LL =
+endif
LLVMGCCWITHPATH := PATH="$(LLVMToolDir):$(PATH)" $(LLVMGCC)
LLVMGXXWITHPATH := PATH="$(LLVMToolDir):$(PATH)" $(LLVMGXX)
# Options To Invoke Tools
#----------------------------------------------------------
-CompileCommonOpts := -Wall -W -Wwrite-strings -Wno-unused -Wno-long-long \
- -pedantic $(EXTRA_OPTIONS)
+CompileCommonOpts := -pedantic -Wall -W -Wwrite-strings -Wno-long-long \
+ -Wunused -Wno-unused-parameter $(EXTRA_OPTIONS)
ifeq ($(OS),HP-UX)
CompileCommonOpts := -D_REENTRANT -D_HPUX_SOURCE
-I$(LLVM_SRC_ROOT)/include \
$(CPP.BaseFlags)
-Compile.C = $(CC) $(CPP.Flags) $(CompileCommonOpts) -c $(C.Flags)
+Compile.C = $(CC) $(CPP.Flags) $(C.Flags) $(CompileCommonOpts) -c
LTCompile.C = $(LIBTOOL) $(LibTool.Flags) --mode=compile $(Compile.C)
-BCCompile.C = $(LLVMGCCWITHPATH) $(CPP.Flags) $(CompileCommonOpts) \
- $(C.Flags)
-Preprocess.C = $(CC) $(CPP.Flags) $(CompileCommonOpts) -E $(C.Flags)
+BCCompile.C = $(LLVMGCCWITHPATH) $(CPP.Flags) $(C.Flags) $(CompileCommonOpts)
+Preprocess.C = $(CC) $(CPP.Flags) $(C.Flags) $(CompileCommonOpts) -E
-Compile.CXX = $(CXX) $(CPP.Flags) $(CompileCommonOpts) $(CXX.Flags) -c
+Compile.CXX = $(CXX) $(CPP.Flags) $(CXX.Flags) $(CompileCommonOpts) -c
LTCompile.CXX = $(LIBTOOL) $(LibTool.Flags) --mode=compile $(Compile.CXX)
-BCCompile.CXX = $(LLVMGXXWITHPATH) $(CPP.Flags) $(CompileCommonOpts) \
- $(CXX.Flags)
+BCCompile.CXX = $(LLVMGXXWITHPATH) $(CPP.Flags) $(CXX.Flags) \
+ $(CompileCommonOpts)
+
Preprocess.CXX= $(CXX) $(CPP.Flags) $(CompileCommonOpts) $(CXX.Flags) -E
Link = $(CXX) $(CPP.Flags) $(CXX.Flags) $(CompileCommonOpts) \
$(LD.Flags) $(Strip)
# Set up variables for building libararies
###############################################################################
-#---------------------------------------------------------
-# Handle the special "JIT" value for LLVM_LIBS which is a
-# shorthand for a bunch of libraries that get the correct
-# JIT support for a library or a tool that runs JIT.
-#---------------------------------------------------------
-ifeq ($(firstword $(LLVMLIBS)),config)
-LLVMLIBS := $(shell $(LLVM_CONFIG) --libnames $(wordlist 2,9999,$(LLVMLIBS)))
-LLVMLIBS := $(patsubst lib%.a,%.a,$(LLVMLIBS))
-LLVMLIBS := $(patsubst %.o,%,$(LLVMLIBS))
-endif
-
-ifeq ($(LLVMLIBS),JIT)
-
-# Make sure we can get our own symbols in the tool
-Link += -dlopen self
-
-# Generic JIT libraries
-JIT_LIBS := LLVMInterpreter LLVMJIT
-
-# 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
-# enabled automagically on an X86 host.
-ifeq ($(ARCH), x86)
- ENABLE_X86_JIT = 1
-endif
-
-# What the X86 JIT requires
-ifdef ENABLE_X86_JIT
- JIT_LIBS += LLVMX86
-endif
-
-# You can enable the PowerPC JIT on a non-PowerPC host by setting the flag
-# ENABLE_PPC_JIT on the make command line. If not, it will still be
-# enabled automagically on an PowerPC host.
-ifeq ($(ARCH), PowerPC)
- ENABLE_PPC_JIT = 1
-endif
-
-# What the PowerPC JIT requires
-ifdef ENABLE_PPC_JIT
- JIT_LIBS += LLVMPowerPC
-endif
-
-# You can enable the Alpha JIT on a non-Alpha host by setting the flag
-# ENABLE_ALPHA_JIT on the make command line. If not, it will still be
-# enabled automagically on an Alpha host.
-ifeq ($(ARCH), Alpha)
- ENABLE_ALPHA_JIT = 1
-endif
-
-# What the Alpha JIT requires
-ifdef ENABLE_ALPHA_JIT
- JIT_LIBS += LLVMAlpha
-endif
-
-JIT_LIBS += LLVMTarget.a LLVMSelectionDAG.a LLVMCodeGen.a LLVMExecutionEngine
-
-LLVMLIBS := $(JIT_LIBS) LLVMScalarOpts.a LLVMTransformUtils.a LLVMAnalysis.a \
- LLVMBCReader.a LLVMCore.a LLVMSupport.a LLVMbzip2.a \
- LLVMSystem.a $(PLATFORMLIBDL)
-endif
-
#---------------------------------------------------------
# Define various command line options pertaining to the
# libraries needed when linking. There are "Proj" libs
LLVMLibsPaths := $(addprefix $(LLVMLibDir)/,$(LLVMUsedLibs))
endif
-ifneq ($(strip($(filter-out clean clean-local dist-clean,$(MAKECMDGOALS)))),)
+ifeq ($(strip $(filter clean clean-local dist-clean,$(MAKECMDGOALS))),)
ifdef LINK_COMPONENTS
-ProjLibsOptions := $(shell $(LLVM_CONFIG) --libs $(LINK_COMPONENTS))
-ProjLibsPaths := $(shell $(LLVM_CONFIG) --libfiles $(LINK_COMPONENTS))
+
+# If LLVM_CONFIG doesn't exist, build it. This can happen if you do a make
+# clean in tools, then do a make in tools (instead of at the top level).
+$(LLVM_CONFIG):
+ @echo "*** llvm-config doesn't exist - rebuilding it."
+ @$(MAKE) -C $(PROJ_OBJ_ROOT)/tools/llvm-config
+
+$(ToolDir)/$(strip $(TOOLNAME))$(EXEEXT): $(LLVM_CONFIG)
+
+ProjLibsOptions = $(shell $(LLVM_CONFIG) --libs $(LINK_COMPONENTS))
+ProjLibsPaths = $(LLVM_CONFIG) \
+ $(shell $(LLVM_CONFIG) --libfiles $(LINK_COMPONENTS))
endif
endif
ifdef LINK_LIBS_IN_SHARED
ifdef LOADABLE_MODULE
-SharedLibKindMessage := "Lodable Module"
+SharedLibKindMessage := "Loadable Module"
else
SharedLibKindMessage := "Shared Library"
endif
ToolBuildPath := $(ToolDir)/$(strip $(TOOLNAME))$(EXEEXT)
endif
-#---------------------------------------------------------
-# Tell make that we need to rebuild subdirectories before
-# we can link the tool. This affects things like LLI which
-# has library subdirectories.
-#---------------------------------------------------------
-$(ToolBuildPath): $(addsuffix /.makeall, $(PARALLEL_DIRS))
-
#---------------------------------------------------------
# Provide targets for building the tools
#---------------------------------------------------------
$< -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)
$(Echo) "Compiling $*.cc for $(BuildMode) build (bytecode)"
$< -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)
$(Echo) "Compiling $*.c for $(BuildMode) build (bytecode)"
$< -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
$(ObjDir)/%.ll: %.cpp $(ObjDir)/.dir $(BUILT_SOURCES)
$(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)
$(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)
$(Echo) "Compiling $*.c for $(BuildMode) build (bytecode)"
$(BCCompile.C) $< -o $@ -S -emit-llvm
+ $(call UPGRADE_MSG,@)
+ $(call UPGRADE_LL,@)
endif
TDFiles := $(strip $(wildcard $(PROJ_SRC_DIR)/*.td) \
$(LLVM_SRC_ROOT)/lib/Target/Target.td \
$(LLVM_SRC_ROOT)/lib/Target/TargetSelectionDAG.td \
- $(LLVM_SRC_ROOT)/include/llvm/CodeGen/ValueTypes.td)
+ $(LLVM_SRC_ROOT)/include/llvm/CodeGen/ValueTypes.td) \
+ $(wildcard $(LLVM_SRC_ROOT)/include/llvm/Intrinsics*.td)
INCFiles := $(filter %.inc,$(BUILT_SOURCES))
INCTMPFiles := $(INCFiles:%=$(ObjDir)/%.tmp)
.PRECIOUS: $(INCTMPFiles) $(INCFiles)
ifndef DISABLE_AUTO_DEPENDENCIES
# If its not one of the cleaning targets
-ifneq ($(strip($(filter-out clean clean-local dist-clean,$(MAKECMDGOALS)))),)
+ifneq ($(strip $(filter-out clean clean-local dist-clean,$(MAKECMDGOALS)))),)
# Get the list of dependency files
DependFiles := $(basename $(filter %.cpp %.c %.cc, $(Sources)))