File tree Expand file tree Collapse file tree 4 files changed +36
-3
lines changed Expand file tree Collapse file tree 4 files changed +36
-3
lines changed Original file line number Diff line number Diff line change @@ -612,6 +612,7 @@ opt rustbuild 0 "use the rust and cargo based build system"
612612opt orbit 0 " get MIR where it belongs - everywhere; most importantly, in orbit"
613613opt codegen-tests 1 " run the src/test/codegen tests"
614614opt option-checking 1 " complain about unrecognized options in this configure script"
615+ opt ninja 0 " build LLVM using the Ninja generator (for MSVC, requires building in the correct environment)"
615616
616617# Optimization and debugging options. These may be overridden by the release channel, etc.
617618opt_nosave optimize 1 " build optimized rust code"
@@ -785,6 +786,17 @@ probe CFG_BISON bison
785786probe CFG_GDB gdb
786787probe CFG_LLDB lldb
787788
789+ if [ -n " $CFG_ENABLE_NINJA " ]
790+ then
791+ probe CFG_NINJA ninja
792+ if [ -z " $CFG_NINJA " ]
793+ then
794+ # On Debian and Fedora, the `ninja` binary is an IRC bot, so the build tool was
795+ # renamed. Handle this case.
796+ probe CFG_NINJA ninja-build
797+ fi
798+ fi
799+
788800# For building LLVM
789801probe_need CFG_CMAKE cmake
790802
@@ -1534,7 +1546,10 @@ do
15341546 fi
15351547
15361548 # We need the generator later on for compiler-rt even if LLVM's not built
1537- if [ ${is_msvc} -ne 0 ]
1549+ if [ -n " $CFG_NINJA " ]
1550+ then
1551+ generator=" Ninja"
1552+ elif [ ${is_msvc} -ne 0 ]
15381553 then
15391554 case " $CFG_MSVC_ROOT " in
15401555 * 14.0* )
Original file line number Diff line number Diff line change @@ -43,16 +43,26 @@ $$(LLVM_CONFIG_$(1)): $$(LLVM_DONE_$(1))
4343
4444$$(LLVM_DONE_$(1 ) ) : $$(LLVM_DEPS_TARGET_$(1 ) ) $$(LLVM_STAMP_$(1 ) )
4545 @$$(call E, cmake: llvm)
46- ifeq ($$(findstring msvc,$(1 ) ) ,msvc)
46+ ifneq ($$(CFG_NINJA ) ,)
47+ $$(Q)$$(CFG_NINJA) -C $$(CFG_LLVM_BUILD_DIR_$(1))
48+ else ifeq ($$(findstring msvc,$(1)),msvc)
4749 $$(Q)$$(CFG_CMAKE) --build $$(CFG_LLVM_BUILD_DIR_$(1)) \
4850 --config $$(LLVM_BUILD_CONFIG_MODE)
4951else
5052 $$(Q)$$(MAKE) -C $$(CFG_LLVM_BUILD_DIR_$(1))
5153endif
5254 $$(Q)touch $$@
5355
54- ifeq ($$(findstring msvc, $( 1 ) ) ,msvc )
56+ ifneq ($$(CFG_NINJA ) , )
5557clean-llvm$(1 ) :
58+ @$$(call E, clean: llvm)
59+ $$(Q )$$(CFG_NINJA ) -C $$(CFG_LLVM_BUILD_DIR_$(1 ) ) -t clean
60+ else ifeq ($$(findstring msvc,$(1)),msvc)
61+ clean-llvm$(1 ) :
62+ @$$(call E, clean: llvm)
63+ $$(Q )$$(CFG_CMAKE ) --build $$(CFG_LLVM_BUILD_DIR_$(1 ) ) \
64+ --config $$(LLVM_BUILD_CONFIG_MODE ) \
65+ --target clean
5666else
5767clean-llvm$(1 ) :
5868 @$$(call E, clean: llvm)
Original file line number Diff line number Diff line change @@ -350,10 +350,17 @@ $$(COMPRT_LIB_$(1)): $$(COMPRT_DEPS) $$(MKFILE_DEPS) $$(LLVM_CONFIG_$$(CFG_BUILD
350350 $$(COMPRT_DEFINES_$(1 ) ) \
351351 $$(COMPRT_BUILD_CC_$(1 ) ) \
352352 -G" $$ (CFG_CMAKE_GENERATOR)"
353+ ifneq ($$(CFG_NINJA ) ,)
354+ $$(CFG_CMAKE) --build "$$(COMPRT_BUILD_DIR_$(1))" \
355+ --target $$(COMPRT_BUILD_TARGET_$(1)) \
356+ --config $$(LLVM_BUILD_CONFIG_MODE) \
357+ -- $$(COMPRT_BUILD_ARGS_$(1))
358+ else
353359 $$(Q)$$(CFG_CMAKE) --build "$$(COMPRT_BUILD_DIR_$(1))" \
354360 --target $$(COMPRT_BUILD_TARGET_$(1)) \
355361 --config $$(LLVM_BUILD_CONFIG_MODE) \
356362 -- $$(COMPRT_BUILD_ARGS_$(1)) $$(MFLAGS)
363+ endif
357364 $$(Q)cp "$$(COMPRT_OUTPUT_$(1))" $$@
358365
359366endif
Original file line number Diff line number Diff line change @@ -317,6 +317,7 @@ impl Config {
317317 ( "OPTIMIZE_TESTS" , self . rust_optimize_tests) ,
318318 ( "DEBUGINFO_TESTS" , self . rust_debuginfo_tests) ,
319319 ( "LOCAL_REBUILD" , self . local_rebuild) ,
320+ ( "NINJA" , self . ninja) ,
320321 }
321322
322323 match key {
You can’t perform that action at this time.
0 commit comments