Bug 1645986 - Properly mark generated files required during compile as such. r=firefox-build-system-reviewers,rstewart

Ideally, this kind of manual work wouldn't be required, but the frontend
doesn't provide enough information and while backend could correlate the
information, they currently don't.

Differential Revision: https://phabricator.services.mozilla.com/D80606
This commit is contained in:
Mike Hommey 2020-06-24 05:07:25 +00:00
parent 9820df71e8
commit 0636209ca5
3 changed files with 12 additions and 5 deletions

View File

@ -1250,7 +1250,7 @@ class GeneratedFile(ContextDerived):
def __init__(self, context, script, method, outputs, inputs,
flags=(), localized=False, force=False,
py2=False):
py2=False, required_during_compile=None):
ContextDerived.__init__(self, context)
self.script = script
self.method = method
@ -1287,8 +1287,12 @@ class GeneratedFile(ContextDerived):
or 'stl_wrappers/' in f or 'xpidl.stub' in f
]
self.required_during_compile = [
f for f in self.outputs if f.endswith(('.asm', '.c', '.cpp'))]
if required_during_compile is None:
self.required_during_compile = [
f for f in self.outputs if f.endswith(
('.asm', '.c', '.cpp', '.m', '.mm', '.def', 'symverscript'))]
else:
self.required_during_compile = required_during_compile
class ChromeManifestEntry(ContextDerived):

View File

@ -840,7 +840,8 @@ class TreeMetadataEmitter(LoggingMixin):
defines = lib.defines.get_defines()
yield GeneratedFile(context, script,
'generate_symbols_file', lib.symbols_file,
[symbols_file], defines)
[symbols_file], defines,
required_during_compile=[lib.symbols_file])
if static_lib:
is_rust_library = context.get('IS_RUST_LIBRARY')
if is_rust_library:

View File

@ -42,7 +42,9 @@ def get_generated_sources():
with open(gen_sources, 'r') as f:
data = json.load(f)
for f in data['sources']:
yield f, mozpath.join(buildconfig.topobjdir, f)
# Exclute symverscript
if mozpath.basename(f) != 'symverscript':
yield f, mozpath.join(buildconfig.topobjdir, f)
# Next, return all the files in $objdir/ipc/ipdl/_ipdlheaders.
base = 'ipc/ipdl/_ipdlheaders'
finder = FileFinder(mozpath.join(buildconfig.topobjdir, base))