diff options
author | Benjamin Gilbert <bgilbert@backtick.net> | 2024-04-12 05:05:08 +0900 |
---|---|---|
committer | Dylan Baker <dylan@pnwbakers.com> | 2024-04-27 08:09:03 -0700 |
commit | 1684259f10cc129c922e38e4f1325aef876773d6 (patch) | |
tree | 951568d5aba4725508da30db2da0e73c3068640a /mesonbuild | |
parent | f8d957febfd6be465074c244b871fd940e79bb40 (diff) | |
download | meson-1684259f10cc129c922e38e4f1325aef876773d6.zip meson-1684259f10cc129c922e38e4f1325aef876773d6.tar.gz meson-1684259f10cc129c922e38e4f1325aef876773d6.tar.bz2 |
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.
Diffstat (limited to 'mesonbuild')
-rw-r--r-- | mesonbuild/backend/ninjabackend.py | 18 | ||||
-rw-r--r-- | mesonbuild/compilers/cs.py | 7 | ||||
-rw-r--r-- | mesonbuild/compilers/swift.py | 8 |
3 files changed, 19 insertions, 14 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index 2b4a0cf..e394c60 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -1480,9 +1480,8 @@ class NinjaBackend(backends.Backend): compiler = target.compilers['cs'] rel_srcs = [os.path.normpath(s.rel_to_builddir(self.build_to_src)) for s in src_list] deps = [] - commands = compiler.compiler_args(target.extra_args['cs']) - commands += compiler.get_optimization_args(target.get_option(OptionKey('optimization'))) - commands += compiler.get_debug_args(target.get_option(OptionKey('debug'))) + commands = self.generate_basic_compiler_args(target, compiler) + commands += target.extra_args['cs'] if isinstance(target, build.Executable): commands.append('-target:exe') elif isinstance(target, build.SharedLibrary): @@ -1510,8 +1509,6 @@ class NinjaBackend(backends.Backend): for dep in target.get_external_deps(): commands.extend_direct(dep.get_link_args()) - commands += self.build.get_project_args(compiler, target.subproject, target.for_machine) - commands += self.build.get_global_args(compiler, target.for_machine) elem = NinjaBuildElement(self.all_outputs, outputs, self.compiler_to_rule_name(compiler), rel_srcs + generated_rel_srcs) elem.add_dep(deps) @@ -1522,9 +1519,7 @@ class NinjaBackend(backends.Backend): self.create_target_source_introspection(target, compiler, commands, rel_srcs, generated_rel_srcs) def determine_single_java_compile_args(self, target, compiler): - args = [] - args += self.build.get_global_args(compiler, target.for_machine) - args += self.build.get_project_args(compiler, target.subproject, target.for_machine) + args = self.generate_basic_compiler_args(target, compiler) args += target.get_java_args() args += compiler.get_output_args(self.get_target_private_dir(target)) args += target.get_classpath_args() @@ -2195,12 +2190,9 @@ class NinjaBackend(backends.Backend): else: raise InvalidArguments(f'Swift target {target.get_basename()} contains a non-swift source file.') os.makedirs(self.get_target_private_dir_abs(target), exist_ok=True) - compile_args = swiftc.get_compile_only_args() - compile_args += swiftc.get_optimization_args(target.get_option(OptionKey('optimization'))) - compile_args += swiftc.get_debug_args(target.get_option(OptionKey('debug'))) + compile_args = self.generate_basic_compiler_args(target, swiftc) + compile_args += swiftc.get_compile_only_args() compile_args += swiftc.get_module_args(module_name) - compile_args += self.build.get_project_args(swiftc, target.subproject, target.for_machine) - compile_args += self.build.get_global_args(swiftc, target.for_machine) for i in reversed(target.get_include_dirs()): basedir = i.get_curdir() for d in i.get_incdirs(): diff --git a/mesonbuild/compilers/cs.py b/mesonbuild/compilers/cs.py index 3a6365f..38bb338 100644 --- a/mesonbuild/compilers/cs.py +++ b/mesonbuild/compilers/cs.py @@ -14,6 +14,7 @@ from .compilers import Compiler from .mixins.islinker import BasicLinkerIsCompilerMixin if T.TYPE_CHECKING: + from ..dependencies import Dependency from ..envconfig import MachineInfo from ..environment import Environment from ..mesonlib import MachineChoice @@ -60,6 +61,12 @@ class CsCompiler(BasicLinkerIsCompilerMixin, Compiler): def get_pic_args(self) -> T.List[str]: return [] + def get_dependency_compile_args(self, dep: Dependency) -> T.List[str]: + # Historically we ignored all compile args. Accept what we can, but + # filter out -I arguments, which are in some pkg-config files and + # aren't accepted by mcs. + return [a for a in dep.get_compile_args() if not a.startswith('-I')] + def compute_parameters_with_absolute_paths(self, parameter_list: T.List[str], build_dir: str) -> T.List[str]: for idx, i in enumerate(parameter_list): diff --git a/mesonbuild/compilers/swift.py b/mesonbuild/compilers/swift.py index e200276..a2525f9 100644 --- a/mesonbuild/compilers/swift.py +++ b/mesonbuild/compilers/swift.py @@ -40,11 +40,17 @@ class SwiftCompiler(Compiler): linker=linker) self.version = version + def get_pic_args(self) -> T.List[str]: + return [] + + def get_pie_args(self) -> T.List[str]: + return [] + def needs_static_linker(self) -> bool: return True def get_werror_args(self) -> T.List[str]: - return ['--fatal-warnings'] + return ['-warnings-as-errors'] def get_dependency_gen_args(self, outtarget: str, outfile: str) -> T.List[str]: return ['-emit-dependencies'] |