Skip to content

Commit 53d1649

Browse files
authored
Merge pull request #6078 from erg/use-toolchain-ninja
swift_build_support: If we are using the Ninja generator and we have …
2 parents 907ff36 + 51543db commit 53d1649

File tree

2 files changed

+32
-13
lines changed

2 files changed

+32
-13
lines changed

utils/swift_build_support/swift_build_support/cmake.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,8 @@ def common_options(self):
119119

120120
if args.build_ninja and args.cmake_generator == 'Ninja':
121121
define('CMAKE_MAKE_PROGRAM', toolchain.ninja)
122+
elif args.cmake_generator == 'Ninja' and toolchain.ninja is not None:
123+
define('CMAKE_MAKE_PROGRAM', toolchain.ninja)
122124

123125
return options
124126

utils/swift_build_support/tests/test_cmake.py

Lines changed: 30 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,14 @@ def default_args(self):
4242
verbose_build=False,
4343
build_ninja=False)
4444

45+
def which_ninja(self, args):
46+
toolchain = host_toolchain()
47+
if toolchain.ninja is not None:
48+
return '/path/to/installed/ninja'
49+
# Maybe we'll build a ninja, maybe we wont.
50+
# Fake it anyway for the tests.
51+
return '/path/to/built/ninja'
52+
4553
def cmake(self, args):
4654
"""Return new CMake object initialized with given args
4755
"""
@@ -50,8 +58,7 @@ def cmake(self, args):
5058
toolchain.cxx = args.host_cxx
5159
if args.distcc:
5260
toolchain.distcc = self.mock_distcc_path()
53-
if args.build_ninja:
54-
toolchain.ninja = '/path/to/built/ninja'
61+
toolchain.ninja = self.which_ninja(args)
5562
return CMake(args=args, toolchain=toolchain)
5663

5764
def test_common_options_defaults(self):
@@ -61,7 +68,8 @@ def test_common_options_defaults(self):
6168
list(cmake.common_options()),
6269
["-G", "Ninja",
6370
"-DCMAKE_C_COMPILER:PATH=/path/to/clang",
64-
"-DCMAKE_CXX_COMPILER:PATH=/path/to/clang++"])
71+
"-DCMAKE_CXX_COMPILER:PATH=/path/to/clang++",
72+
"-DCMAKE_MAKE_PROGRAM=" + self.which_ninja(args)])
6573

6674
def test_common_options_asan(self):
6775
args = self.default_args()
@@ -72,7 +80,8 @@ def test_common_options_asan(self):
7280
["-G", "Ninja",
7381
"-DLLVM_USE_SANITIZER=Address",
7482
"-DCMAKE_C_COMPILER:PATH=/path/to/clang",
75-
"-DCMAKE_CXX_COMPILER:PATH=/path/to/clang++"])
83+
"-DCMAKE_CXX_COMPILER:PATH=/path/to/clang++",
84+
"-DCMAKE_MAKE_PROGRAM=" + self.which_ninja(args)])
7685

7786
def test_common_options_ubsan(self):
7887
args = self.default_args()
@@ -83,7 +92,8 @@ def test_common_options_ubsan(self):
8392
["-G", "Ninja",
8493
"-DLLVM_USE_SANITIZER=Undefined",
8594
"-DCMAKE_C_COMPILER:PATH=/path/to/clang",
86-
"-DCMAKE_CXX_COMPILER:PATH=/path/to/clang++"])
95+
"-DCMAKE_CXX_COMPILER:PATH=/path/to/clang++",
96+
"-DCMAKE_MAKE_PROGRAM=" + self.which_ninja(args)])
8797

8898
def test_common_options_tsan(self):
8999
args = self.default_args()
@@ -94,7 +104,8 @@ def test_common_options_tsan(self):
94104
["-G", "Ninja",
95105
"-DLLVM_USE_SANITIZER=Thread",
96106
"-DCMAKE_C_COMPILER:PATH=/path/to/clang",
97-
"-DCMAKE_CXX_COMPILER:PATH=/path/to/clang++"])
107+
"-DCMAKE_CXX_COMPILER:PATH=/path/to/clang++",
108+
"-DCMAKE_MAKE_PROGRAM=" + self.which_ninja(args)])
98109

99110
def test_common_options_asan_ubsan(self):
100111
args = self.default_args()
@@ -106,7 +117,8 @@ def test_common_options_asan_ubsan(self):
106117
["-G", "Ninja",
107118
"-DLLVM_USE_SANITIZER=Address;Undefined",
108119
"-DCMAKE_C_COMPILER:PATH=/path/to/clang",
109-
"-DCMAKE_CXX_COMPILER:PATH=/path/to/clang++"])
120+
"-DCMAKE_CXX_COMPILER:PATH=/path/to/clang++",
121+
"-DCMAKE_MAKE_PROGRAM=" + self.which_ninja(args)])
110122

111123
def test_common_options_ubsan_tsan(self):
112124
args = self.default_args()
@@ -118,7 +130,8 @@ def test_common_options_ubsan_tsan(self):
118130
["-G", "Ninja",
119131
"-DLLVM_USE_SANITIZER=Undefined;Thread",
120132
"-DCMAKE_C_COMPILER:PATH=/path/to/clang",
121-
"-DCMAKE_CXX_COMPILER:PATH=/path/to/clang++"])
133+
"-DCMAKE_CXX_COMPILER:PATH=/path/to/clang++",
134+
"-DCMAKE_MAKE_PROGRAM=" + self.which_ninja(args)])
122135

123136
def test_common_options_asan_ubsan_tsan(self):
124137
args = self.default_args()
@@ -131,7 +144,8 @@ def test_common_options_asan_ubsan_tsan(self):
131144
["-G", "Ninja",
132145
"-DLLVM_USE_SANITIZER=Address;Undefined;Thread",
133146
"-DCMAKE_C_COMPILER:PATH=/path/to/clang",
134-
"-DCMAKE_CXX_COMPILER:PATH=/path/to/clang++"])
147+
"-DCMAKE_CXX_COMPILER:PATH=/path/to/clang++",
148+
"-DCMAKE_MAKE_PROGRAM=" + self.which_ninja(args)])
135149

136150
def test_common_options_export_compile_commands(self):
137151
args = self.default_args()
@@ -142,7 +156,8 @@ def test_common_options_export_compile_commands(self):
142156
["-G", "Ninja",
143157
"-DCMAKE_EXPORT_COMPILE_COMMANDS=ON",
144158
"-DCMAKE_C_COMPILER:PATH=/path/to/clang",
145-
"-DCMAKE_CXX_COMPILER:PATH=/path/to/clang++"])
159+
"-DCMAKE_CXX_COMPILER:PATH=/path/to/clang++",
160+
"-DCMAKE_MAKE_PROGRAM=" + self.which_ninja(args)])
146161

147162
def test_common_options_distcc(self):
148163
args = self.default_args()
@@ -154,7 +169,8 @@ def test_common_options_distcc(self):
154169
"-DCMAKE_C_COMPILER:PATH=" + self.mock_distcc_path(),
155170
"-DCMAKE_C_COMPILER_ARG1=/path/to/clang",
156171
"-DCMAKE_CXX_COMPILER:PATH=" + self.mock_distcc_path(),
157-
"-DCMAKE_CXX_COMPILER_ARG1=/path/to/clang++"])
172+
"-DCMAKE_CXX_COMPILER_ARG1=/path/to/clang++",
173+
"-DCMAKE_MAKE_PROGRAM=" + self.which_ninja(args)])
158174

159175
def test_common_options_xcode(self):
160176
args = self.default_args()
@@ -181,7 +197,8 @@ def test_common_options_clang_compiler_version(self):
181197
"-DCMAKE_CXX_COMPILER:PATH=/path/to/clang++",
182198
"-DLLVM_VERSION_MAJOR:STRING=3",
183199
"-DLLVM_VERSION_MINOR:STRING=8",
184-
"-DLLVM_VERSION_PATCH:STRING=0"])
200+
"-DLLVM_VERSION_PATCH:STRING=0",
201+
"-DCMAKE_MAKE_PROGRAM=" + self.which_ninja(args)])
185202

186203
def test_common_options_build_ninja(self):
187204
args = self.default_args()
@@ -192,7 +209,7 @@ def test_common_options_build_ninja(self):
192209
["-G", "Ninja",
193210
"-DCMAKE_C_COMPILER:PATH=/path/to/clang",
194211
"-DCMAKE_CXX_COMPILER:PATH=/path/to/clang++",
195-
"-DCMAKE_MAKE_PROGRAM=/path/to/built/ninja"])
212+
"-DCMAKE_MAKE_PROGRAM=" + self.which_ninja(args)])
196213

197214
def test_common_options_full(self):
198215
args = self.default_args()

0 commit comments

Comments
 (0)