mirror of
https://github.com/RPCS3/llvm.git
synced 2024-11-24 12:20:00 +00:00
Proper way of doing llvm canadian-cross compilation.
Patch by Jim Grosbach! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58981 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
22a8e9e511
commit
569c45cab2
38
Makefile
38
Makefile
@ -17,20 +17,21 @@ LEVEL := .
|
||||
# 5. Build llvm-config, which determines inter-lib dependencies for tools.
|
||||
# 6. Build tools, runtime, docs.
|
||||
#
|
||||
DIRS := lib/System lib/Support utils lib/VMCore lib tools/llvm-config \
|
||||
tools runtime docs
|
||||
# When cross-compiling, there are some things (tablegen) that need to
|
||||
# be build for the build system first.
|
||||
ifeq ($(BUILD_DIRS_ONLY),1)
|
||||
DIRS := lib/System lib/Support utils
|
||||
OPTIONAL_DIRS :=
|
||||
else
|
||||
DIRS := lib/System lib/Support utils lib/VMCore lib tools/llvm-config \
|
||||
tools runtime docs
|
||||
OPTIONAL_DIRS := examples projects bindings
|
||||
endif
|
||||
|
||||
OPTIONAL_DIRS := examples projects bindings
|
||||
EXTRA_DIST := test llvm.spec include win32 Xcode
|
||||
|
||||
include $(LEVEL)/Makefile.config
|
||||
|
||||
# When cross-compiling, there are some things (tablegen) that need to
|
||||
# be build for the build system.
|
||||
ifeq ($(LLVM_CROSS_COMPILING),1)
|
||||
BUILD_TARGET_DIRS := lib/System lib/Support utils
|
||||
endif
|
||||
|
||||
# llvm-gcc4 doesn't need runtime libs. llvm-gcc4 is the only supported one.
|
||||
# FIXME: Remove runtime entirely once we have an understanding of where
|
||||
# libprofile etc should go.
|
||||
@ -60,6 +61,23 @@ ifeq ($(MAKECMDGOALS),install)
|
||||
OPTIONAL_DIRS := $(filter bindings, $(OPTIONAL_DIRS))
|
||||
endif
|
||||
|
||||
# If we're cross-compiling, build the build-hosted tools first
|
||||
ifeq ($(LLVM_CROSS_COMPILING),1)
|
||||
all:: cross-compile-build-tools
|
||||
|
||||
clean::
|
||||
$(Verb) rm -rf BuildTools
|
||||
|
||||
cross-compile-build-tools:
|
||||
$(Verb) if [ ! -f BuildTools/Makefile ]; then \
|
||||
$(MKDIR) BuildTools; \
|
||||
cd BuildTools ; \
|
||||
$(PROJ_SRC_DIR)/configure ; \
|
||||
cd .. ; \
|
||||
fi; \
|
||||
($(MAKE) -C BuildTools BUILD_DIRS_ONLY=1 ) || exit 1;
|
||||
endif
|
||||
|
||||
# Include the main makefile machinery.
|
||||
include $(LLVM_SRC_ROOT)/Makefile.rules
|
||||
|
||||
@ -114,6 +132,7 @@ $(FilesToConfigPATH) : $(LLVM_OBJ_ROOT)/% : $(LLVM_SRC_ROOT)/%.in
|
||||
|
||||
# NOTE: This needs to remain as the last target definition in this file so
|
||||
# that it gets executed last.
|
||||
ifneq ($(BUILD_DIRS_ONLY),1)
|
||||
all::
|
||||
$(Echo) '*****' Completed $(BuildMode)$(AssertMode) Build
|
||||
ifeq ($(BuildMode),Debug)
|
||||
@ -122,6 +141,7 @@ ifeq ($(BuildMode),Debug)
|
||||
$(Echo) '*****' make an optimized build. Alternatively you can
|
||||
$(Echo) '*****' configure with --enable-optimized.
|
||||
endif
|
||||
endif
|
||||
|
||||
check-llvm2cpp:
|
||||
$(Verb)$(MAKE) check TESTSUITE=Feature RUNLLVM2CPP=1
|
||||
|
@ -184,7 +184,7 @@ endif
|
||||
$(UserTargets):: $(PreConditions)
|
||||
|
||||
all:: all-local
|
||||
clean:: clean-local
|
||||
clean:: clean-local
|
||||
clean-all:: clean-local clean-all-local
|
||||
install:: install-local
|
||||
uninstall:: uninstall-local
|
||||
@ -309,29 +309,17 @@ endif
|
||||
#--------------------------------------------------------------------
|
||||
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)
|
||||
# It is very important that ObjDir not have an extra trailing
|
||||
# slash. This ends up changing the rules so that dependency file (.d)
|
||||
# information is not used at all!
|
||||
ifeq ($(TargetMode),)
|
||||
ObjDir := $(ObjRootDir)
|
||||
else
|
||||
ObjDir := $(ObjRootDir)/$(TargetMode)
|
||||
endif
|
||||
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
|
||||
|
||||
#--------------------------------------------------------------------
|
||||
@ -347,7 +335,7 @@ LLVMAS := $(LLVMToolDir)/llvm-as$(EXEEXT)
|
||||
endif
|
||||
ifndef TBLGEN
|
||||
ifeq ($(LLVM_CROSS_COMPILING),1)
|
||||
TBLGEN := $(BuildLLVMToolDir)/tblgen$(EXEEXT)
|
||||
TBLGEN := $(BuildLLVMToolDir)/tblgen$(BUILD_EXEEXT)
|
||||
else
|
||||
TBLGEN := $(LLVMToolDir)/tblgen$(EXEEXT)
|
||||
endif
|
||||
@ -594,16 +582,6 @@ 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 \
|
||||
@ -613,12 +591,6 @@ $(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; \
|
||||
|
Loading…
Reference in New Issue
Block a user