diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index 3f58f0d0f..c3a5ffe99 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -33,7 +33,9 @@ from ..arglist import CompilerArgs from ..compilers import ( Compiler, CCompiler, DmdDCompiler, - FortranCompiler, PGICCompiler, + FortranCompiler, + LLVMDCompiler, + PGICCompiler, VisualStudioCsCompiler, VisualStudioLikeCompiler, ) @@ -89,6 +91,13 @@ else: execute_wrapper = [] rmfile_prefix = ['rm', '-f', '{}', '&&'] + +def dlang_cl_rsp(compiler: Compiler) -> bool: + '''Return whether the D compiler accepts cl style RSP quote''' + return (isinstance(compiler, DmdDCompiler) or + mesonlib.is_windows() and isinstance(compiler, LLVMDCompiler)) + + def get_rsp_threshold(): '''Return a conservative estimate of the commandline size in bytes above which a response file should be used. May be overridden for @@ -1887,7 +1896,7 @@ int dummy; self.add_rule(NinjaRule(rule, command, args, description, rspable=compiler.can_linker_accept_rsp(), rspfile_quote_style='cl' if (compiler.get_argument_syntax() == 'msvc' or - isinstance(compiler, DmdDCompiler)) else 'gcc', + dlang_cl_rsp(compiler)) else 'gcc', extra=pool)) args = self.environment.get_build_command() + \ @@ -2011,7 +2020,7 @@ https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47485''')) self.add_rule(NinjaRule(rule, command, args, description, rspable=compiler.can_linker_accept_rsp(), rspfile_quote_style='cl' if (compiler.get_argument_syntax() == 'msvc' or - isinstance(compiler, DmdDCompiler)) else 'gcc', + dlang_cl_rsp(compiler)) else 'gcc', deps=deps, depfile=depfile)) def generate_pch_rule_for(self, langname, compiler):