+# Top-Level LLVM Build Stages:
+# 1. Build lib/Support, which is used by utils (tblgen).
+# 2. Build utils, which is used by VMCore.
+# 3. Build VMCore, which builds the Intrinsics.inc file used by libs.
+# 4. Build libs, which are needed by llvm-config.
+# 5. Build llvm-config, which determines inter-lib dependencies for tools.
+# 6. Build tools, runtime, docs.
+#
+# When cross-compiling, there are some things (tablegen) that need to
+# be build for the build system first.
+
+# If "RC_ProjectName" exists in the environment, and its value is
+# "llvmCore", then this is an "Apple-style" build; search for
+# "Apple-style" in the comments for more info. Anything else is a
+# normal build.
+ifneq ($(findstring llvmCore, $(RC_ProjectName)),llvmCore) # Normal build (not "Apple-style").
+
+ifeq ($(BUILD_DIRS_ONLY),1)
+ DIRS := lib/Support utils
+ OPTIONAL_DIRS :=
+else
+ DIRS := lib/Support utils lib/VMCore lib tools/llvm-shlib \
+ tools/llvm-config tools runtime docs unittests
+ OPTIONAL_DIRS := projects bindings
+endif
+
+ifeq ($(BUILD_EXAMPLES),1)
+ OPTIONAL_DIRS += examples
+endif
+
+EXTRA_DIST := test unittests llvm.spec include win32 Xcode
+
+include $(LEVEL)/Makefile.config
+
+ifneq ($(ENABLE_SHARED),1)
+ DIRS := $(filter-out tools/llvm-shlib, $(DIRS))
+endif