Bug 192025 - Revert print_all_generated_files work in r238008; tighten up target specifications
Summary: Revert print_all_generated_files work in r238008; tighten up target specifica...
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebKit Misc. (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Keith Rollin
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2018-11-27 12:16 PST by Keith Rollin
Modified: 2018-11-28 14:07 PST (History)
9 users (show)

See Also:


Attachments
Patch (46.60 KB, patch)
2018-11-27 12:21 PST, Keith Rollin
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Keith Rollin 2018-11-27 12:16:57 PST
In r238008, I added a facility for DerivedSources.make makefiles to print out the list of files that they generate. This output was used in the generation of .xcfilelist files used to specify the output of the associated Generate Derived Sources build phases in Xcode. This approach worked, but it meant that people would need to follow a specific convention to keep this mechanism working.

Instead of continuing this approach, I'm going to implement a new facility based on the output of `make` when passed the -d flag (which prints dependency information). This new mechanism is completely automatic and doesn't need maintainers to follow a convention. To that end, remove most of the work performed in r238008 that supports the print_all_generated_files target.

At the same time, it's important for the sets of targets and their dependencies to be complete and correct. Therefore, also include changes to bring those up-to-date. As part of that, you'll see prevalent use of a particular technique. Here's an example:

BYTECODE_FILES = \
    Bytecodes.h \
    BytecodeIndices.h \
    BytecodeStructs.h \
    InitBytecodes.asm \
#
BYTECODE_FILES_PATTERNS = $(subst .,%,$(BYTECODE_FILES))

all : $(BYTECODE_FILES)

$(BYTECODE_FILES_PATTERNS): $(wildcard $(JavaScriptCore)/generator/*.rb) $(JavaScriptCore)/bytecode/BytecodeList.rb
    ...

These lines indicate a set of generated files (those specified in BYTECODE_FILES). These files are generated by the BytecodeList.rb tool. But, as opposed to the normal rule where a single foo.output is generated by foo.input plus some additional dependencies, this rule produces multiple output files from a tool whose connection to the output files is not immediately clear. A special approach is needed where a single rule produces multiple output files. The normal way to implement this is to use an .INTERMEDIATE target. However, we used this approach in the past and ran into a problem with it, addressing it with an alternate approach in r210507. The above example shows this approach. The .'s in the list of target files are replaced with %'s, and the result is used as the left side of the dependency rule.
Comment 1 Radar WebKit Bug Importer 2018-11-27 12:17:29 PST
<rdar://problem/46284301>
Comment 2 Keith Rollin 2018-11-27 12:21:17 PST
Created attachment 355760 [details]
Patch
Comment 3 WebKit Commit Bot 2018-11-28 14:07:27 PST
Comment on attachment 355760 [details]
Patch

Clearing flags on attachment: 355760

Committed r238637: <https://trac.webkit.org/changeset/238637>
Comment 4 WebKit Commit Bot 2018-11-28 14:07:29 PST
All reviewed patches have been landed.  Closing bug.