opt orbit 0 "get MIR where it belongs - everywhere; most importantly, in orbit"
opt codegen-tests 1 "run the src/test/codegen tests"
opt option-checking 1 "complain about unrecognized options in this configure script"
+opt ninja 0 "build LLVM using the Ninja generator (for MSVC, requires building in the correct environment)"
# Optimization and debugging options. These may be overridden by the release channel, etc.
opt_nosave optimize 1 "build optimized rust code"
probe CFG_GDB gdb
probe CFG_LLDB lldb
+if [ -n "$CFG_ENABLE_NINJA" ]
+then
+ probe CFG_NINJA ninja
+ if [ -z "$CFG_NINJA" ]
+ then
+ # On Debian and Fedora, the `ninja` binary is an IRC bot, so the build tool was
+ # renamed. Handle this case.
+ probe CFG_NINJA ninja-build
+ fi
+fi
+
# For building LLVM
probe_need CFG_CMAKE cmake
fi
# We need the generator later on for compiler-rt even if LLVM's not built
- if [ ${is_msvc} -ne 0 ]
+ if [ -n "$CFG_NINJA" ]
+ then
+ generator="Ninja"
+ elif [ ${is_msvc} -ne 0 ]
then
case "$CFG_MSVC_ROOT" in
*14.0*)
$$(LLVM_DONE_$(1)): $$(LLVM_DEPS_TARGET_$(1)) $$(LLVM_STAMP_$(1))
@$$(call E, cmake: llvm)
-ifeq ($$(findstring msvc,$(1)),msvc)
+ifneq ($$(CFG_NINJA),)
+ $$(Q)$$(CFG_NINJA) -C $$(CFG_LLVM_BUILD_DIR_$(1))
+else ifeq ($$(findstring msvc,$(1)),msvc)
$$(Q)$$(CFG_CMAKE) --build $$(CFG_LLVM_BUILD_DIR_$(1)) \
--config $$(LLVM_BUILD_CONFIG_MODE)
else
endif
$$(Q)touch $$@
-ifeq ($$(findstring msvc,$(1)),msvc)
+ifneq ($$(CFG_NINJA),)
+clean-llvm$(1):
+ @$$(call E, clean: llvm)
+ $$(Q)$$(CFG_NINJA) -C $$(CFG_LLVM_BUILD_DIR_$(1)) -t clean
+else ifeq ($$(findstring msvc,$(1)),msvc)
clean-llvm$(1):
else
clean-llvm$(1):
("OPTIMIZE_TESTS", self.rust_optimize_tests),
("DEBUGINFO_TESTS", self.rust_debuginfo_tests),
("LOCAL_REBUILD", self.local_rebuild),
+ ("NINJA", self.ninja),
}
match key {