File tree 4 files changed +36
-3
lines changed
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"
612
612
opt orbit 0 " get MIR where it belongs - everywhere; most importantly, in orbit"
613
613
opt codegen-tests 1 " run the src/test/codegen tests"
614
614
opt 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)"
615
616
616
617
# Optimization and debugging options. These may be overridden by the release channel, etc.
617
618
opt_nosave optimize 1 " build optimized rust code"
@@ -785,6 +786,17 @@ probe CFG_BISON bison
785
786
probe CFG_GDB gdb
786
787
probe CFG_LLDB lldb
787
788
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
+
788
800
# For building LLVM
789
801
probe_need CFG_CMAKE cmake
790
802
@@ -1534,7 +1546,10 @@ do
1534
1546
fi
1535
1547
1536
1548
# 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 ]
1538
1553
then
1539
1554
case " $CFG_MSVC_ROOT " in
1540
1555
* 14.0* )
Original file line number Diff line number Diff line change @@ -43,16 +43,26 @@ $$(LLVM_CONFIG_$(1)): $$(LLVM_DONE_$(1))
43
43
44
44
$$(LLVM_DONE_$(1 ) ) : $$(LLVM_DEPS_TARGET_$(1 ) ) $$(LLVM_STAMP_$(1 ) )
45
45
@$$(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)
47
49
$$(Q)$$(CFG_CMAKE) --build $$(CFG_LLVM_BUILD_DIR_$(1)) \
48
50
--config $$(LLVM_BUILD_CONFIG_MODE)
49
51
else
50
52
$$(Q)$$(MAKE) -C $$(CFG_LLVM_BUILD_DIR_$(1))
51
53
endif
52
54
$$(Q)touch $$@
53
55
54
- ifeq ($$(findstring msvc, $( 1 ) ) ,msvc )
56
+ ifneq ($$(CFG_NINJA ) , )
55
57
clean-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
56
66
else
57
67
clean-llvm$(1 ) :
58
68
@$$(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
350
350
$$(COMPRT_DEFINES_$(1 ) ) \
351
351
$$(COMPRT_BUILD_CC_$(1 ) ) \
352
352
-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
353
359
$$(Q)$$(CFG_CMAKE) --build "$$(COMPRT_BUILD_DIR_$(1))" \
354
360
--target $$(COMPRT_BUILD_TARGET_$(1)) \
355
361
--config $$(LLVM_BUILD_CONFIG_MODE) \
356
362
-- $$(COMPRT_BUILD_ARGS_$(1)) $$(MFLAGS)
363
+ endif
357
364
$$(Q)cp "$$(COMPRT_OUTPUT_$(1))" $$@
358
365
359
366
endif
Original file line number Diff line number Diff line change @@ -317,6 +317,7 @@ impl Config {
317
317
( "OPTIMIZE_TESTS" , self . rust_optimize_tests) ,
318
318
( "DEBUGINFO_TESTS" , self . rust_debuginfo_tests) ,
319
319
( "LOCAL_REBUILD" , self . local_rebuild) ,
320
+ ( "NINJA" , self . ninja) ,
320
321
}
321
322
322
323
match key {
You can’t perform that action at this time.
0 commit comments