$(UserTargets):: $(PreConditions)
all:: all-local
-clean:: clean-local
+clean:: clean-local
clean-all:: clean-local clean-all-local
install:: install-local
uninstall:: uninstall-local
# VARIABLES: Set up various variables based on configuration data
###############################################################################
+# Variable for if this make is for a "cleaning" target
+ifneq ($(strip $(filter clean clean-local dist-clean,$(MAKECMDGOALS))),)
+ IS_CLEANING_TARGET=1
+endif
+
#--------------------------------------------------------------------
# Variables derived from configuration we are building
#--------------------------------------------------------------------
# appropriate preprocessor symbols.
ifdef ENABLE_EXPENSIVE_CHECKS
BuildMode := $(BuildMode)+Checks
- CPP.Defines += -D_GLIBCXX_DEBUG
+ CPP.Defines += -D_GLIBCXX_DEBUG -DXDEBUG
endif
ifeq ($(ENABLE_PIC),1)
#--------------------------------------------------------------------
TargetMode :=
ifeq ($(LLVM_CROSS_COMPILING),1)
- ifeq ($(BUILD_COMPONENT),1)
- TargetMode := Build
- else
- TargetMode := Host
- endif
- BuildLLVMToolDir := $(LLVM_OBJ_ROOT)/$(BuildMode)/Build/bin
+ BuildLLVMToolDir := $(LLVM_OBJ_ROOT)/BuildTools/$(BuildMode)/bin
endif
ObjRootDir := $(PROJ_OBJ_DIR)/$(BuildMode)
-ObjDir := $(ObjRootDir)/$(TargetMode)
-LibDir := $(PROJ_OBJ_ROOT)/$(BuildMode)/$(TargetMode)/lib
-ToolDir := $(PROJ_OBJ_ROOT)/$(BuildMode)/$(TargetMode)/bin
-ExmplDir := $(PROJ_OBJ_ROOT)/$(BuildMode)/$(TargetMode)/examples
-LLVMLibDir := $(LLVM_OBJ_ROOT)/$(BuildMode)/$(TargetMode)/lib
-LLVMToolDir := $(LLVM_OBJ_ROOT)/$(BuildMode)/$(TargetMode)/bin
-LLVMExmplDir:= $(LLVM_OBJ_ROOT)/$(BuildMode)/$(TargetMode)/examples
+ObjDir := $(ObjRootDir)
+LibDir := $(PROJ_OBJ_ROOT)/$(BuildMode)/lib
+ToolDir := $(PROJ_OBJ_ROOT)/$(BuildMode)/bin
+ExmplDir := $(PROJ_OBJ_ROOT)/$(BuildMode)/examples
+LLVMLibDir := $(LLVM_OBJ_ROOT)/$(BuildMode)/lib
+LLVMToolDir := $(LLVM_OBJ_ROOT)/$(BuildMode)/bin
+LLVMExmplDir:= $(LLVM_OBJ_ROOT)/$(BuildMode)/examples
CFERuntimeLibDir := $(LLVMGCCDIR)/lib
#--------------------------------------------------------------------
endif
ifndef TBLGEN
ifeq ($(LLVM_CROSS_COMPILING),1)
- TBLGEN := $(BuildLLVMToolDir)/tblgen$(EXEEXT)
+ TBLGEN := $(BuildLLVMToolDir)/tblgen$(BUILD_EXEEXT)
else
TBLGEN := $(LLVMToolDir)/tblgen$(EXEEXT)
endif
endif
LD.Flags += -L$(LibDir) -L$(LLVMLibDir)
-CPP.BaseFlags += -D_GNU_SOURCE -D__STDC_LIMIT_MACROS
+CPP.BaseFlags += -D_GNU_SOURCE -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS
# All -I flags should go here, so that they don't confuse llvm-config.
CPP.Flags += $(sort -I$(PROJ_OBJ_DIR) -I$(PROJ_SRC_DIR) \
$(patsubst %,-I%/include,\
SubDirs += $(DIRS)
ifneq ($(PROJ_SRC_ROOT),$(PROJ_OBJ_ROOT))
-ifdef BUILD_TARGET_DIRS
-$(RecursiveTargets)::
- $(Verb) for dir in $(BUILD_TARGET_DIRS); do \
- if [ ! -f $$dir/Makefile ]; then \
- $(MKDIR) $$dir; \
- $(CP) $(PROJ_SRC_DIR)/$$dir/Makefile $$dir/Makefile; \
- fi; \
- ($(MAKE) -C $$dir $@ BUILD_COMPONENT=1 NO_INSTALL=1 ) || exit 1; \
- done
-endif
$(RecursiveTargets)::
$(Verb) for dir in $(DIRS); do \
if [ ! -f $$dir/Makefile ]; then \
($(MAKE) -C $$dir $@ ) || exit 1; \
done
else
-ifdef BUILD_TARGET_DIRS
-$(RecursiveTargets)::
- $(Verb) for dir in $(BUILD_TARGET_DIRS); do \
- ($(MAKE) -C $$dir $@ BUILD_COMPONENT=1 NO_INSTALL=1 ) || exit 1; \
- done
-endif
$(RecursiveTargets)::
$(Verb) for dir in $(DIRS); do \
($(MAKE) -C $$dir $@ ) || exit 1; \
LLVMLibsPaths := $(addprefix $(LLVMLibDir)/,$(LLVMUsedLibs))
endif
-ifeq ($(strip $(filter clean clean-local dist-clean,$(MAKECMDGOALS))),)
+ifndef IS_CLEANING_TARGET
ifdef LINK_COMPONENTS
# If LLVM_CONFIG doesn't exist, build it. This can happen if you do a make
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/Target/Target.td \
+ $(LLVM_SRC_ROOT)/include/llvm/Target/TargetCallingConv.td \
+ $(LLVM_SRC_ROOT)/include/llvm/Target/TargetSchedule.td \
+ $(LLVM_SRC_ROOT)/include/llvm/Target/TargetSelectionDAG.td \
$(LLVM_SRC_ROOT)/include/llvm/CodeGen/ValueTypes.td) \
$(wildcard $(LLVM_SRC_ROOT)/include/llvm/Intrinsics*.td)
INCFiles := $(filter %.inc,$(BUILT_SOURCES))
# INCFiles rule: All of the tblgen generated files are emitted to
# $(ObjDir)/%.inc.tmp, instead of emitting them directly to %.inc. This allows
# us to only "touch" the real file if the contents of it change. IOW, if
-# tblgen is modified, all of the .inc.tmp files are regereated, but no
+# tblgen is modified, all of the .inc.tmp files are regenerated, but no
# dependencies of the .inc files are, unless the contents of the .inc file
# changes.
$(INCFiles) : %.inc : $(ObjDir)/%.inc.tmp
ifndef DISABLE_AUTO_DEPENDENCIES
# If its not one of the cleaning targets
-ifneq ($(strip $(filter-out clean clean-local dist-clean,$(MAKECMDGOALS))),)
+ifndef IS_CLEANING_TARGET
# Get the list of dependency files
DependFiles := $(basename $(filter %.cpp %.c %.cc, $(Sources)))