# Variables derived from configuration we are building
#--------------------------------------------------------------------
-
ifdef ENABLE_PROFILING
BuildMode := Profile
- CXX.Flags := -O3 -DNDEBUG -felide-constructors -finline-functions -pg
- C.Flags := -O3 -DNDEBUG -pg
- LD.Flags := -O3 -DNDEBUG -pg
+ CXX.Flags := -O3 -felide-constructors -finline-functions -pg
+ C.Flags := -O3 -pg
+ LD.Flags := -O3 -pg
else
ifdef ENABLE_OPTIMIZED
BuildMode := Release
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
+ CXX.Flags := -O3 -finline-functions -felide-constructors $(OmitFramePointer)
+ C.Flags := -O3 $(OmitFramePointer)
+ LD.Flags := -O3
else
BuildMode := Debug
- CXX.Flags := -g -D_DEBUG
- C.Flags := -g -D_DEBUG
- LD.Flags := -g -D_DEBUG
+ CXX.Flags := -g
+ C.Flags := -g
+ LD.Flags := -g
KEEP_SYMBOLS := 1
+ # Assertions default to ON for debug builds.
+ ENABLE_ASSERTIONS := 1
endif
endif
-CXX.Flags += $(CXXFLAGS)
-C.Flags += $(CFLAGS)
-CPP.Flags += $(CPPFLAGS)
-LD.Flags += $(LDFLAGS)
-AR.Flags := cru
+# If this is a debug build or if ENABLE_ASSERTIONS=1 is specified on the make
+# command line, enable assertions.
+ifdef ENABLE_ASSERTIONS
+ CXX.Flags += -D_DEBUG
+ C.Flags += -D_DEBUG
+else
+ CXX.Flags += -DNDEBUG
+ C.Flags += -DNDEBUG
+endif
+
+CXX.Flags += $(CXXFLAGS)
+C.Flags += $(CFLAGS)
+CPP.BaseFlags += $(CPPFLAGS)
+LD.Flags += $(LDFLAGS)
+AR.Flags := cru
LibTool.Flags := --tag=CXX
#Make Floating point ieee complient on alpha
ifeq ($(ARCH),Alpha)
- CXX.Flags += -mieee
- CPP.Flags += -mieee
+ CXX.Flags += -mieee
+ CPP.BaseFlags += -mieee
endif
#--------------------------------------------------------------------
CompileCommonOpts := -D_REENTRANT -D_HPUX_SOURCE
endif
-LD.Flags += -L$(LibDir) -L$(LLVMLibDir)
-CPP.Flags += -I$(PROJ_OBJ_DIR) -I$(PROJ_SRC_DIR) \
- -I$(PROJ_OBJ_ROOT)/include \
- -I$(PROJ_SRC_ROOT)/include \
- -I$(LLVM_OBJ_ROOT)/include \
- -I$(LLVM_SRC_ROOT)/include \
- -D_GNU_SOURCE -D__STDC_LIMIT_MACROS
+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.
+CPP.Flags += -I$(PROJ_OBJ_DIR) -I$(PROJ_SRC_DIR) \
+ -I$(PROJ_OBJ_ROOT)/include \
+ -I$(PROJ_SRC_ROOT)/include \
+ -I$(LLVM_OBJ_ROOT)/include \
+ -I$(LLVM_SRC_ROOT)/include \
+ $(CPP.BaseFlags)
Compile.C = $(CC) $(CPP.Flags) $(CompileCommonOpts) -c $(C.Flags)
LTCompile.C = $(LIBTOOL) $(LibTool.Flags) --mode=compile $(Compile.C)
LTInstall = $(LIBTOOL) $(LibTool.Flags) --mode=install $(INSTALL) \
$(Install.Flags)
ProgInstall = $(INSTALL) $(Install.StripFlag) -m 0755
+ScriptInstall = $(INSTALL) -m 0755
DataInstall = $(INSTALL) -m 0644
Burg = $(BURG) -I $(PROJ_SRC_DIR)
TableGen = $(TBLGEN) -I $(PROJ_SRC_DIR) -I$(PROJ_SRC_ROOT)/include
# 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)
+LLVM_CONFIG := $(LLVM_SRC_ROOT)/utils/llvm-config/llvm-config
+LLVMLIBS := $(shell $(LLVM_CONFIG) $(wordlist 2,9999,$(LLVMLIBS)))
+LLVMLIBS := $(patsubst $(PROJ_libdir)/%,%,$(LLVMLIBS))
+LLVMLIBS := $(patsubst %.o,%,$(LLVMLIBS))
+LLVMLIBS := $(patsubst -l%,%.a,$(LLVMLIBS))
+endif
+
ifeq ($(LLVMLIBS),JIT)
# Make sure we can get our own symbols in the tool
ifeq ($(ARCH),Alpha)
USEDLIBS := $(subst LLVMCore, LLVMCore.a, $(USEDLIBS))
LLVMLIBS := $(subst LLVMCore, LLVMCore.a, $(LLVMLIBS))
+CORE_IS_ARCHIVE := 1
+else
+CORE_IS_ARCHIVE := 0
endif
ProjLibsOptions := $(patsubst %.a.o, -l%, $(addsuffix .o, $(USEDLIBS)))