aboutsummaryrefslogtreecommitdiff
path: root/Makefile.rules
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile.rules')
-rw-r--r--Makefile.rules72
1 files changed, 55 insertions, 17 deletions
diff --git a/Makefile.rules b/Makefile.rules
index d0d83c038b..a9a8c34cb8 100644
--- a/Makefile.rules
+++ b/Makefile.rules
@@ -302,13 +302,24 @@ endif
#--------------------------------------------------------------------
# Directory locations
#--------------------------------------------------------------------
-ObjDir := $(PROJ_OBJ_DIR)/$(BuildMode)
-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
+TargetMode :=
+ifeq ($(LLVM_CROSS_COMPILING),1)
+ ifeq ($(BUILD_COMPONENT),1)
+ TargetMode := Build
+ else
+ TargetMode := Host
+ endif
+ BuildLLVMToolDir := $(LLVM_OBJ_ROOT)/$(BuildMode)/Build/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
CFERuntimeLibDir := $(LLVMGCCDIR)/lib
#--------------------------------------------------------------------
@@ -324,7 +335,7 @@ LLVMAS := $(LLVMToolDir)/llvm-as$(EXEEXT)
endif
ifndef TBLGEN
ifeq ($(LLVM_CROSS_COMPILING),1)
- TBLGEN := $(LLVMToolDir)/tblgen$(BUILD_EXEEXT)
+ TBLGEN := $(BuildLLVMToolDir)/tblgen$(EXEEXT)
else
TBLGEN := $(LLVMToolDir)/tblgen$(EXEEXT)
endif
@@ -468,22 +479,33 @@ CPP.Flags += $(sort -I$(PROJ_OBJ_DIR) -I$(PROJ_SRC_DIR) \
$(LLVM_OBJ_ROOT) $(LLVM_SRC_ROOT))) \
$(CPP.BaseFlags)
-Compile.C = $(CC) $(CPP.Flags) $(C.Flags) $(CompileCommonOpts) -c
+ ifeq ($(BUILD_COMPONENT), 1)
+ Compile.C = $(BUILD_CC) $(CPP.Flags) $(C.Flags) $(CompileCommonOpts) -c
+ Compile.CXX = $(BUILD_CXX) $(CPP.Flags) $(CXX.Flags) $(CompileCommonOpts) -c
+ Preprocess.CXX= $(BUILD_CXX) $(CPP.Flags) $(CompileCommonOpts) $(CXX.Flags) -E
+ Link = $(BUILD_CXX) $(CPP.Flags) $(CXX.Flags) $(CompileCommonOpts) \
+ $(LD.Flags) $(Strip)
+ Relink = $(BUILD_CXX) $(CPP.Flags) $(CXX.Flags) $(CompileCommonOpts) \
+ $(Relink.Flags)
+else
+ Compile.C = $(CC) $(CPP.Flags) $(C.Flags) $(CompileCommonOpts) -c
+ Compile.CXX = $(CXX) $(CPP.Flags) $(CXX.Flags) $(CompileCommonOpts) -c
+ Preprocess.CXX= $(CXX) $(CPP.Flags) $(CompileCommonOpts) $(CXX.Flags) -E
+ Link = $(CXX) $(CPP.Flags) $(CXX.Flags) $(CompileCommonOpts) \
+ $(LD.Flags) $(Strip)
+ Relink = $(CXX) $(CPP.Flags) $(CXX.Flags) $(CompileCommonOpts) \
+ $(Relink.Flags)
+endif
+
LTCompile.C = $(LIBTOOL) $(LibTool.Flags) --mode=compile $(Compile.C)
BCCompile.C = $(LLVMGCCWITHPATH) $(CPP.Flags) $(C.Flags) $(CompileCommonOpts)
Preprocess.C = $(CC) $(CPP.Flags) $(C.Flags) $(CompileCommonOpts) -E
-Compile.CXX = $(CXX) $(CPP.Flags) $(CXX.Flags) $(CompileCommonOpts) -c
LTCompile.CXX = $(LIBTOOL) $(LibTool.Flags) --mode=compile $(Compile.CXX)
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)
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)
@@ -560,6 +582,16 @@ ifdef DIRS
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 \
@@ -569,6 +601,12 @@ $(RecursiveTargets)::
($(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; \
@@ -1451,8 +1489,8 @@ endif
# very conservative approach ensuring that empty variables do not cause
# errors or disastrous removal.
clean-local::
-ifneq ($(strip $(ObjDir)),)
- -$(Verb) $(RM) -rf $(ObjDir)
+ifneq ($(strip $(ObjRootDir)),)
+ -$(Verb) $(RM) -rf $(ObjRootDir)
endif
-$(Verb) $(RM) -f core core.[0-9][0-9]* *.o *.d *~ *.flc
ifneq ($(strip $(SHLIBEXT)),) # Extra paranoia - make real sure SHLIBEXT is set