Use warning args in the Xcode backend.

This commit is contained in:
Jussi Pakkanen 2021-04-05 15:50:54 +03:00
parent 82f7f63932
commit 3c3146195b
1 changed files with 18 additions and 14 deletions

View File

@ -159,6 +159,9 @@ class PbxDict:
ofile.write(indent_level*INDENT + f'{i.key} = ') ofile.write(indent_level*INDENT + f'{i.key} = ')
i.value.write(ofile, indent_level) i.value.write(ofile, indent_level)
else: else:
print(i)
print(i.key)
print(i.value)
raise RuntimeError('missing code') raise RuntimeError('missing code')
else: else:
print(i) print(i)
@ -751,10 +754,8 @@ class XCodeBackend(backends.Backend):
settings_dict.add_item('SYMROOT', '"%s"' % self.environment.get_build_dir()) settings_dict.add_item('SYMROOT', '"%s"' % self.environment.get_build_dir())
settings_dict.add_item('USE_HEADERMAP', 'NO') settings_dict.add_item('USE_HEADERMAP', 'NO')
warn_array = PbxArray() warn_array = PbxArray()
warn_array.add_item('"$(inherited)"')
settings_dict.add_item('WARNING_CFLAGS', warn_array) settings_dict.add_item('WARNING_CFLAGS', warn_array)
warn_array.add_item('"-Wmost"')
warn_array.add_item('"-Wno-four-char-constants"')
warn_array.add_item('"-Wno-unknown-pragmas"')
bt_dict.add_item('name', f'"{buildtype}"') bt_dict.add_item('name', f'"{buildtype}"')
@ -779,9 +780,7 @@ class XCodeBackend(backends.Backend):
settings_dict.add_item('USE_HEADERMAP', 'NO') settings_dict.add_item('USE_HEADERMAP', 'NO')
warn_array = PbxArray() warn_array = PbxArray()
settings_dict.add_item('WARNING_CFLAGS', warn_array) settings_dict.add_item('WARNING_CFLAGS', warn_array)
warn_array.add_item('"-Wmost"') warn_array.add_item('"$(inherited)"')
warn_array.add_item('"-Wno-four-char-constants"')
warn_array.add_item('"-Wno-unknown-pragmas"')
bt_dict.add_item('name', f'"{buildtype}"') bt_dict.add_item('name', f'"{buildtype}"')
# Now finally targets. # Now finally targets.
@ -833,16 +832,18 @@ class XCodeBackend(backends.Backend):
for lang in self.environment.coredata.compilers[target.for_machine]: for lang in self.environment.coredata.compilers[target.for_machine]:
if lang not in LANGNAMEMAP: if lang not in LANGNAMEMAP:
continue continue
compiler = target.compilers.get(lang)
# Start with warning args
warn_args = compiler.get_warn_args(self.get_option_for_target(OptionKey('warning_level'), target))
# Add compile args added using add_project_arguments() # Add compile args added using add_project_arguments()
pargs = self.build.projects_args[target.for_machine].get(target.subproject, {}).get(lang, []) pargs = self.build.projects_args[target.for_machine].get(target.subproject, {}).get(lang, [])
# Add compile args added using add_global_arguments() # Add compile args added using add_global_arguments()
# These override per-project arguments # These override per-project arguments
gargs = self.build.global_args[target.for_machine].get(lang, []) gargs = self.build.global_args[target.for_machine].get(lang, [])
targs = target.get_extra_args(lang) targs = target.get_extra_args(lang)
args = pargs + gargs + targs args = warn_args + pargs + gargs + targs
if args: if args:
langname = langnamemap[lang] langname = LANGNAMEMAP[lang]
compiler = target.compilers.get(lang)
lang_cargs = cargs lang_cargs = cargs
if compiler and target.implicit_include_directories: if compiler and target.implicit_include_directories:
lang_cargs += self.get_build_dir_include_args(target, compiler) lang_cargs += self.get_build_dir_include_args(target, compiler)
@ -888,8 +889,7 @@ class XCodeBackend(backends.Backend):
settings_dict.add_item('LIBRARY_SEARCH_PATHS', '""') settings_dict.add_item('LIBRARY_SEARCH_PATHS', '""')
if isinstance(target, build.SharedLibrary): if isinstance(target, build.SharedLibrary):
settings_dict.add_item('LIBRARY_STYLE', 'DYNAMIC') settings_dict.add_item('LIBRARY_STYLE', 'DYNAMIC')
for langname, args in langargs.items(): self.add_otterargs(settings_dict, langargs)
settings_dict.add_item(f'OTHER_{langname}FLAGS', args)
settings_dict.add_item('OTHER_LDFLAGS', f'"{ldstr}"') settings_dict.add_item('OTHER_LDFLAGS', f'"{ldstr}"')
settings_dict.add_item('OTHER_REZFLAGS', '""') settings_dict.add_item('OTHER_REZFLAGS', '""')
settings_dict.add_item('PRODUCT_NAME', product_name) settings_dict.add_item('PRODUCT_NAME', product_name)
@ -899,11 +899,15 @@ class XCodeBackend(backends.Backend):
settings_dict.add_item('USE_HEADERMAP', 'NO') settings_dict.add_item('USE_HEADERMAP', 'NO')
warn_array = PbxArray() warn_array = PbxArray()
settings_dict.add_item('WARNING_CFLAGS', warn_array) settings_dict.add_item('WARNING_CFLAGS', warn_array)
warn_array.add_item('"-Wmost"') warn_array.add_item('"$(inherited)"')
warn_array.add_item('"-Wno-four-char-constants"')
warn_array.add_item('"-Wno-unknown-pragmas"')
bt_dict.add_item('name', buildtype) bt_dict.add_item('name', buildtype)
def add_otterargs(self, settings_dict, langargs):
for langname, args in langargs.items():
if args:
# FIXME, proper quoting
settings_dict.add_item(f'OTHER_{langname}FLAGS', '"' + ' '.join(args) + '"')
def generate_xc_configurationList(self, objects_dict): def generate_xc_configurationList(self, objects_dict):
# FIXME: sort items # FIXME: sort items
conf_dict = PbxDict() conf_dict = PbxDict()