[webkit-changes] [WebKit/WebKit] ec535f: DerivedSources.make pattern rules don't work when ...
Elliott Williams
noreply at github.com
Fri Nov 22 10:12:00 PST 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: ec535f99e01ed62746ba04899359f01b391a2cae
https://github.com/WebKit/WebKit/commit/ec535f99e01ed62746ba04899359f01b391a2cae
Author: Elliott Williams <emw at apple.com>
Date: 2024-11-22 (Fri, 22 Nov 2024)
Changed paths:
M Source/JavaScriptCore/DerivedSources.make
M Source/WebCore/DerivedSources.make
M Source/WebKit/DerivedSources.make
Log Message:
-----------
DerivedSources.make pattern rules don't work when a file's name has more than one "."
https://bugs.webkit.org/show_bug.cgi?id=283380
rdar://140231317
Reviewed by Alexey Proskuryakov.
In our DerivedSources Makefiles, we represent scripts that generate
multiple outputs by transforming output lists to a list of patterns
using $(subst ...). For example:
GENERATED_PROCESS_SYNC_CLIENT_OUTPUT_FILES = \
ProcessSyncClient.cpp \
ProcessSyncClient.h \
ProcessSyncData.h \
ProcessSyncData.serialization.in \
GENERATED_PROCESS_SYNC_CLIENT_OUTPUT_PATTERNS = $(subst .,%,$(GENERATED_PROCESS_SYNC_CLIENT_OUTPUT_FILES))
However, if a file name has multiple "." characters, this generates an
invalid pattern string, e.g. "ProcessSyncData%serialization%in' in the
above example. As a result, Make doesn't know how to make the file it is
based on. The build fails if and only if Make considers this file before
the rule has finished running on behalf of one of the other output files.
We have deployed targeted fixes before, but the issue is subtle enough
that it's easy to copy-paste existing code and re-introduce the issue in
new rules. Replace all $(subst ...) recipes with an implementation that
separates the basename and extname, and only transforms the extname.
* Source/JavaScriptCore/DerivedSources.make:
* Source/WebCore/DerivedSources.make:
* Source/WebKit/DerivedSources.make:
Canonical link: https://commits.webkit.org/286966@main
To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications
More information about the webkit-changes
mailing list