+# 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 --build=$(BUILD_TRIPLE) \
+ --host=$(BUILD_TRIPLE) --target=$(BUILD_TRIPLE); \
+ cd .. ; \
+ fi; \
+ ($(MAKE) -C BuildTools \
+ BUILD_DIRS_ONLY=1 \
+ UNIVERSAL= \
+ ENABLE_OPTIMIZED=$(ENABLE_OPTIMIZED) \
+ ENABLE_PROFILING=$(ENABLE_PROFILING) \
+ ENABLE_COVERAGE=$(ENABLE_COVERAGE) \
+ DISABLE_ASSERTIONS=$(DISABLE_ASSERTIONS) \
+ ENABLE_EXPENSIVE_CHECKS=$(ENABLE_EXPENSIVE_CHECKS) \
+ ) || exit 1;
+endif
+
+# Include the main makefile machinery.
+include $(LLVM_SRC_ROOT)/Makefile.rules
+
+# Specify options to pass to configure script when we're
+# running the dist-check target
+DIST_CHECK_CONFIG_OPTIONS = --with-llvmgccdir=$(LLVMGCCDIR)
+
+.PHONY: debug-opt-prof
+debug-opt-prof:
+ $(Echo) Building Debug Version
+ $(Verb) $(MAKE)
+ $(Echo)
+ $(Echo) Building Optimized Version
+ $(Echo)
+ $(Verb) $(MAKE) ENABLE_OPTIMIZED=1
+ $(Echo)
+ $(Echo) Building Profiling Version
+ $(Echo)
+ $(Verb) $(MAKE) ENABLE_PROFILING=1
+
+dist-hook::
+ $(Echo) Eliminating files constructed by configure
+ $(Verb) $(RM) -f \
+ $(TopDistDir)/include/llvm/Config/config.h \
+ $(TopDistDir)/include/llvm/Support/DataTypes.h \
+ $(TopDistDir)/include/llvm/Support/ThreadSupport.h
+
+clang-only: all