diff options
Diffstat (limited to 'Makefile.rules')
-rw-r--r-- | Makefile.rules | 72 |
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 |