aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild
diff options
context:
space:
mode:
authorBenjamin Gilbert <bgilbert@backtick.net>2024-04-12 05:05:08 +0900
committerDylan Baker <dylan@pnwbakers.com>2024-04-27 08:09:03 -0700
commit1684259f10cc129c922e38e4f1325aef876773d6 (patch)
tree951568d5aba4725508da30db2da0e73c3068640a /mesonbuild
parentf8d957febfd6be465074c244b871fd940e79bb40 (diff)
downloadmeson-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.py18
-rw-r--r--mesonbuild/compilers/cs.py7
-rw-r--r--mesonbuild/compilers/swift.py8
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']