diff options
Diffstat (limited to 'mesonbuild/backend/backends.py')
-rw-r--r-- | mesonbuild/backend/backends.py | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py index 4c35253..b6d084f 100644 --- a/mesonbuild/backend/backends.py +++ b/mesonbuild/backend/backends.py @@ -32,7 +32,7 @@ from .. import mlog from ..compilers import languages_using_ldflags from ..mesonlib import ( File, MachineChoice, MesonException, OrderedSet, OptionOverrideProxy, - classify_unity_sources, unholder + classify_unity_sources, unholder, OptionKey ) if T.TYPE_CHECKING: @@ -211,21 +211,21 @@ class Backend: def get_target_filename_abs(self, target): return os.path.join(self.environment.get_build_dir(), self.get_target_filename(target)) - def get_base_options_for_target(self, target): + def get_base_options_for_target(self, target: build.BuildTarget) -> OptionOverrideProxy: return OptionOverrideProxy(target.option_overrides_base, self.environment.coredata.builtins, - self.environment.coredata.base_options) + {k: v for k, v in self.environment.coredata.base_options.items()}) def get_compiler_options_for_target(self, target: build.BuildTarget) -> OptionOverrideProxy: comp_reg = self.environment.coredata.compiler_options comp_override = target.option_overrides_compiler return OptionOverrideProxy(comp_override, comp_reg) - def get_option_for_target(self, option_name, target): + def get_option_for_target(self, option_name: 'OptionKey', target: build.BuildTarget): if option_name in target.option_overrides_base: override = target.option_overrides_base[option_name] return self.environment.coredata.validate_option_value(option_name, override) - return self.environment.coredata.get_builtin_option(option_name, target.subproject) + return self.environment.coredata.get_builtin_option(str(option_name), target.subproject) def get_target_filename_for_linking(self, target): # On some platforms (msvc for instance), the file that is used for @@ -299,7 +299,7 @@ class Backend: abs_files = [] result = [] compsrcs = classify_unity_sources(target.compilers.values(), unity_src) - unity_size = self.get_option_for_target('unity_size', target) + unity_size = self.get_option_for_target(OptionKey('unity_size'), target) def init_language_file(suffix, unity_file_number): unity_src = self.get_unity_source_file(target, suffix, unity_file_number) @@ -620,7 +620,8 @@ class Backend: if self.is_unity(extobj.target): compsrcs = classify_unity_sources(extobj.target.compilers.values(), sources) sources = [] - unity_size = self.get_option_for_target('unity_size', extobj.target) + unity_size = self.get_option_for_target(OptionKey('unity_size'), extobj.target) + for comp, srcs in compsrcs.items(): for i in range(len(srcs) // unity_size + 1): osrc = self.get_unity_source_file(extobj.target, @@ -689,20 +690,20 @@ class Backend: if no_warn_args: commands += compiler.get_no_warn_args() else: - commands += compiler.get_warn_args(self.get_option_for_target('warning_level', target)) + commands += compiler.get_warn_args(self.get_option_for_target(OptionKey('warning_level'), target)) # Add -Werror if werror=true is set in the build options set on the # command-line or default_options inside project(). This only sets the # action to be done for warnings if/when they are emitted, so it's ok # to set it after get_no_warn_args() or get_warn_args(). - if self.get_option_for_target('werror', target): + if self.get_option_for_target(OptionKey('werror'), target): commands += compiler.get_werror_args() # Add compile args for c_* or cpp_* build options set on the # command-line or default_options inside project(). commands += compiler.get_option_compile_args(copt_proxy) # Add buildtype args: optimization level, debugging, etc. - commands += compiler.get_buildtype_args(self.get_option_for_target('buildtype', target)) - commands += compiler.get_optimization_args(self.get_option_for_target('optimization', target)) - commands += compiler.get_debug_args(self.get_option_for_target('debug', target)) + commands += compiler.get_buildtype_args(self.get_option_for_target(OptionKey('buildtype'), target)) + commands += compiler.get_optimization_args(self.get_option_for_target(OptionKey('optimization'), target)) + commands += compiler.get_debug_args(self.get_option_for_target(OptionKey('debug'), target)) # MSVC debug builds have /ZI argument by default and /Zi is added with debug flag # /ZI needs to be removed in that case to avoid cl's warning to that effect (D9025 : overriding '/ZI' with '/Zi') if ('/ZI' in commands) and ('/Zi' in commands): @@ -1021,7 +1022,7 @@ class Backend: return libs def is_unity(self, target): - optval = self.get_option_for_target('unity', target) + optval = self.get_option_for_target(OptionKey('unity'), target) if optval == 'on' or (optval == 'subprojects' and target.subproject != ''): return True return False @@ -1227,7 +1228,7 @@ class Backend: # # TODO: Create GNUStrip/AppleStrip/etc. hierarchy for more # fine-grained stripping of static archives. - should_strip = not isinstance(t, build.StaticLibrary) and self.get_option_for_target('strip', t) + should_strip = not isinstance(t, build.StaticLibrary) and self.get_option_for_target(OptionKey('strip'), t) # Install primary build output (library/executable/jar, etc) # Done separately because of strip/aliases/rpath if outdirs[0] is not False: |