summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile38
-rw-r--r--Makefile.rules48
2 files changed, 39 insertions, 47 deletions
diff --git a/Makefile b/Makefile
index 58a5fe5e18..cfb4c1258e 100644
--- a/Makefile
+++ b/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
diff --git a/Makefile.rules b/Makefile.rules
index 3fdae66c41..849c70bc04 100644
--- a/Makefile.rules
+++ b/Makefile.rules
@@ -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; \