Skip to content

Commit 1684259

Browse files
bgilbertdcbaker
authored andcommitted
backend/ninja: use generate_basic_compiler_args() for C#, Java, Swift
C#, Java, and Swift targets were manually collecting compiler arguments rather than using the helper function for this purpose. This caused each target type to add arguments in a different order, and to forget to add some arguments respectively: C#: /nologo, -warnaserror Java: warning level (-nowarn, -Xlint:all, -Xdoclint:all), debug arguments (-g, -g:none), -Werror Swift: -warnings-as-errors Fix this. Also fix up some no-longer-unused argument processing in the Compiler implementations.
1 parent f8d957f commit 1684259

File tree

3 files changed

+19
-14
lines changed

3 files changed

+19
-14
lines changed

mesonbuild/backend/ninjabackend.py

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1480,9 +1480,8 @@ def generate_cs_target(self, target: build.BuildTarget):
14801480
compiler = target.compilers['cs']
14811481
rel_srcs = [os.path.normpath(s.rel_to_builddir(self.build_to_src)) for s in src_list]
14821482
deps = []
1483-
commands = compiler.compiler_args(target.extra_args['cs'])
1484-
commands += compiler.get_optimization_args(target.get_option(OptionKey('optimization')))
1485-
commands += compiler.get_debug_args(target.get_option(OptionKey('debug')))
1483+
commands = self.generate_basic_compiler_args(target, compiler)
1484+
commands += target.extra_args['cs']
14861485
if isinstance(target, build.Executable):
14871486
commands.append('-target:exe')
14881487
elif isinstance(target, build.SharedLibrary):
@@ -1510,8 +1509,6 @@ def generate_cs_target(self, target: build.BuildTarget):
15101509

15111510
for dep in target.get_external_deps():
15121511
commands.extend_direct(dep.get_link_args())
1513-
commands += self.build.get_project_args(compiler, target.subproject, target.for_machine)
1514-
commands += self.build.get_global_args(compiler, target.for_machine)
15151512

15161513
elem = NinjaBuildElement(self.all_outputs, outputs, self.compiler_to_rule_name(compiler), rel_srcs + generated_rel_srcs)
15171514
elem.add_dep(deps)
@@ -1522,9 +1519,7 @@ def generate_cs_target(self, target: build.BuildTarget):
15221519
self.create_target_source_introspection(target, compiler, commands, rel_srcs, generated_rel_srcs)
15231520

15241521
def determine_single_java_compile_args(self, target, compiler):
1525-
args = []
1526-
args += self.build.get_global_args(compiler, target.for_machine)
1527-
args += self.build.get_project_args(compiler, target.subproject, target.for_machine)
1522+
args = self.generate_basic_compiler_args(target, compiler)
15281523
args += target.get_java_args()
15291524
args += compiler.get_output_args(self.get_target_private_dir(target))
15301525
args += target.get_classpath_args()
@@ -2195,12 +2190,9 @@ def generate_swift_target(self, target):
21952190
else:
21962191
raise InvalidArguments(f'Swift target {target.get_basename()} contains a non-swift source file.')
21972192
os.makedirs(self.get_target_private_dir_abs(target), exist_ok=True)
2198-
compile_args = swiftc.get_compile_only_args()
2199-
compile_args += swiftc.get_optimization_args(target.get_option(OptionKey('optimization')))
2200-
compile_args += swiftc.get_debug_args(target.get_option(OptionKey('debug')))
2193+
compile_args = self.generate_basic_compiler_args(target, swiftc)
2194+
compile_args += swiftc.get_compile_only_args()
22012195
compile_args += swiftc.get_module_args(module_name)
2202-
compile_args += self.build.get_project_args(swiftc, target.subproject, target.for_machine)
2203-
compile_args += self.build.get_global_args(swiftc, target.for_machine)
22042196
for i in reversed(target.get_include_dirs()):
22052197
basedir = i.get_curdir()
22062198
for d in i.get_incdirs():

mesonbuild/compilers/cs.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from .mixins.islinker import BasicLinkerIsCompilerMixin
1515

1616
if T.TYPE_CHECKING:
17+
from ..dependencies import Dependency
1718
from ..envconfig import MachineInfo
1819
from ..environment import Environment
1920
from ..mesonlib import MachineChoice
@@ -60,6 +61,12 @@ def get_werror_args(self) -> T.List[str]:
6061
def get_pic_args(self) -> T.List[str]:
6162
return []
6263

64+
def get_dependency_compile_args(self, dep: Dependency) -> T.List[str]:
65+
# Historically we ignored all compile args. Accept what we can, but
66+
# filter out -I arguments, which are in some pkg-config files and
67+
# aren't accepted by mcs.
68+
return [a for a in dep.get_compile_args() if not a.startswith('-I')]
69+
6370
def compute_parameters_with_absolute_paths(self, parameter_list: T.List[str],
6471
build_dir: str) -> T.List[str]:
6572
for idx, i in enumerate(parameter_list):

mesonbuild/compilers/swift.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,17 @@ def __init__(self, exelist: T.List[str], version: str, for_machine: MachineChoic
4040
linker=linker)
4141
self.version = version
4242

43+
def get_pic_args(self) -> T.List[str]:
44+
return []
45+
46+
def get_pie_args(self) -> T.List[str]:
47+
return []
48+
4349
def needs_static_linker(self) -> bool:
4450
return True
4551

4652
def get_werror_args(self) -> T.List[str]:
47-
return ['--fatal-warnings']
53+
return ['-warnings-as-errors']
4854

4955
def get_dependency_gen_args(self, outtarget: str, outfile: str) -> T.List[str]:
5056
return ['-emit-dependencies']

0 commit comments

Comments
 (0)