Revert print_all_generated_files work in r238008; tighten up target specifications
authorkrollin@apple.com <krollin@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 28 Nov 2018 22:07:20 +0000 (22:07 +0000)
committerkrollin@apple.com <krollin@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 28 Nov 2018 22:07:20 +0000 (22:07 +0000)
https://bugs.webkit.org/show_bug.cgi?id=192025
<rdar://problem/46284301>

Reviewed by Alex Christensen.

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.

Source/JavaScriptCore:

* DerivedSources.make:

Source/WebCore:

No new tests -- no changed functionality.

* DerivedSources.make:

Source/WebKit:

* DerivedSources.make:

Tools:

* DumpRenderTree/DerivedSources.make:
* WebKitTestRunner/DerivedSources.make:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@238637 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/DerivedSources.make
Source/WebCore/ChangeLog
Source/WebCore/DerivedSources.make
Source/WebKit/ChangeLog
Source/WebKit/DerivedSources.make
Tools/ChangeLog
Tools/DumpRenderTree/DerivedSources.make
Tools/WebKitTestRunner/DerivedSources.make

index 06de201..c7d7ee3 100644 (file)
@@ -1,5 +1,60 @@
 2018-11-28  Keith Rollin  <krollin@apple.com>
 
+        Revert print_all_generated_files work in r238008; tighten up target specifications
+        https://bugs.webkit.org/show_bug.cgi?id=192025
+        <rdar://problem/46284301>
+
+        Reviewed by Alex Christensen.
+
+        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.
+
+        * DerivedSources.make:
+
+2018-11-28  Keith Rollin  <krollin@apple.com>
+
         Remove Postprocess Headers dependencies
         https://bugs.webkit.org/show_bug.cgi?id=192023
         <rdar://problem/46283377>
index bf5b3a4..f8435ae 100644 (file)
@@ -46,12 +46,24 @@ else
     DELETE = rm -f
 endif
 
-ALL_GENERATED_FILES =
-
-all : real_all
-
 # --------
 
+.PHONY : all
+all : \
+    udis86_itab.h \
+    InjectedScriptSource.h \
+    IntlCanonicalizeLanguage.h \
+    JSCBuiltins.h \
+    Lexer.lut.h \
+    KeywordLookup.h \
+    RegExpJitTables.h \
+    UnicodePatternTables.h \
+    yarr/YarrCanonicalizeUnicode.cpp \
+    WasmOps.h \
+    WasmValidateInlines.h \
+    WasmB3IRGeneratorInlines.h \
+#
+
 # JavaScript builtins.
 
 BUILTINS_GENERATOR_SCRIPTS = \
@@ -116,7 +128,6 @@ JavaScriptCore_BUILTINS_SOURCES = \
 JavaScriptCore_BUILTINS_DEPENDENCIES_LIST : $(JavaScriptCore_SCRIPTS_DIR)/UpdateContents.py DerivedSources.make
        $(PYTHON) $(JavaScriptCore_SCRIPTS_DIR)/UpdateContents.py '$(JavaScriptCore_BUILTINS_SOURCES) $(BUILTINS_GENERATOR_SCRIPTS)' $@
 
-ALL_GENERATED_FILES += JSCBuiltins.h
 JSCBuiltins.h: $(BUILTINS_GENERATOR_SCRIPTS) $(JavaScriptCore_BUILTINS_SOURCES) JavaScriptCore_BUILTINS_DEPENDENCIES_LIST
        $(PYTHON) $(JavaScriptCore_SCRIPTS_DIR)/generate-js-builtins.py --combined --output-directory . --framework JavaScriptCore $(JavaScriptCore_BUILTINS_SOURCES)
 
@@ -178,27 +189,22 @@ OBJECT_LUT_HEADERS = \
     WebAssemblyTablePrototype.lut.h \
 #
 
-ALL_GENERATED_FILES += $(OBJECT_LUT_HEADERS)
 $(OBJECT_LUT_HEADERS): %.lut.h : %.cpp $(JavaScriptCore)/create_hash_table
        $(PERL) $(JavaScriptCore)/create_hash_table $< > $@
 
-ALL_GENERATED_FILES += Lexer.lut.h
 Lexer.lut.h: Keywords.table $(JavaScriptCore)/create_hash_table
        $(PERL) $(JavaScriptCore)/create_hash_table $< > $@
 
 # character tables for Yarr
 
-ALL_GENERATED_FILES += RegExpJitTables.h
 RegExpJitTables.h: yarr/create_regex_tables
        $(PYTHON) $^ > $@
 
-ALL_GENERATED_FILES += KeywordLookup.h
 KeywordLookup.h: KeywordLookupGenerator.py Keywords.table
        $(PYTHON) $^ > $@
 
 # udis86 instruction tables
 
-ALL_GENERATED_FILES += udis86_itab.h
 udis86_itab.h: $(JavaScriptCore)/disassembler/udis86/ud_itab.py $(JavaScriptCore)/disassembler/udis86/optable.xml
        $(PYTHON) $(JavaScriptCore)/disassembler/udis86/ud_itab.py $(JavaScriptCore)/disassembler/udis86/optable.xml .
 
@@ -212,13 +218,14 @@ BYTECODE_FILES = \
 #
 BYTECODE_FILES_PATTERNS = $(subst .,%,$(BYTECODE_FILES))
 
-ALL_GENERATED_FILES += $(BYTECODE_FILES)
+all : $(BYTECODE_FILES)
+
 $(BYTECODE_FILES_PATTERNS): $(wildcard $(JavaScriptCore)/generator/*.rb) $(JavaScriptCore)/bytecode/BytecodeList.rb
        $(RUBY) $(JavaScriptCore)/generator/main.rb $(JavaScriptCore)/bytecode/BytecodeList.rb --bytecode_structs_h BytecodeStructs.h --init_bytecodes_asm InitBytecodes.asm --bytecodes_h Bytecodes.h --bytecode_indices_h BytecodeIndices.h
 
 # Inspector interfaces
 
-INSPECTOR_DOMAINS = \
+INSPECTOR_DOMAINS := \
     $(JavaScriptCore)/inspector/protocol/ApplicationCache.json \
     $(JavaScriptCore)/inspector/protocol/CSS.json \
     $(JavaScriptCore)/inspector/protocol/Canvas.json \
@@ -288,6 +295,8 @@ INSPECTOR_DISPATCHER_FILES = \
 #
 INSPECTOR_DISPATCHER_FILES_PATTERNS = $(subst .,%,$(INSPECTOR_DISPATCHER_FILES))
 
+all : $(INSPECTOR_DISPATCHER_FILES)
+
 # The combined JSON file depends on the actual set of domains and their file contents, so that
 # adding, modifying, or removing domains will trigger regeneration of inspector files.
 
@@ -299,11 +308,9 @@ CombinedDomains.json : $(JavaScriptCore_SCRIPTS_DIR)/generate-combined-inspector
        $(PYTHON) $(JavaScriptCore_SCRIPTS_DIR)/generate-combined-inspector-json.py $(INSPECTOR_DOMAINS) > ./CombinedDomains.json
 
 # Inspector Backend Dispatchers, Frontend Dispatchers, Type Builders
-ALL_GENERATED_FILES += $(INSPECTOR_DISPATCHER_FILES)
-$(INSPECTOR_DISPATCHER_FILES_PATTERNS) : CombinedDomains.json $(INSPECTOR_GENERATOR_SCRIPTS) inspector
+$(INSPECTOR_DISPATCHER_FILES_PATTERNS) : CombinedDomains.json $(INSPECTOR_GENERATOR_SCRIPTS)
        $(PYTHON) $(JavaScriptCore)/inspector/scripts/generate-inspector-protocol-bindings.py --framework JavaScriptCore --outputDir inspector ./CombinedDomains.json
 
-ALL_GENERATED_FILES += InjectedScriptSource.h
 InjectedScriptSource.h : inspector/InjectedScriptSource.js $(JavaScriptCore_SCRIPTS_DIR)/jsmin.py $(JavaScriptCore_SCRIPTS_DIR)/xxd.pl
        echo "//# sourceURL=__InjectedScript_InjectedScriptSource.js" > ./InjectedScriptSource.min.js
        $(PYTHON) $(JavaScriptCore_SCRIPTS_DIR)/jsmin.py < $(JavaScriptCore)/inspector/InjectedScriptSource.js >> ./InjectedScriptSource.min.js
@@ -317,43 +324,31 @@ AIR_OPCODE_FILES = \
 #
 AIR_OPCODE_FILES_PATTERNS = $(subst .,%,$(AIR_OPCODE_FILES))
 
-ALL_GENERATED_FILES += $(AIR_OPCODE_FILES)
+all : $(AIR_OPCODE_FILES)
+
 $(AIR_OPCODE_FILES_PATTERNS) : $(JavaScriptCore)/b3/air/opcode_generator.rb $(JavaScriptCore)/b3/air/AirOpcode.opcodes
        $(RUBY) $^
 
-ALL_GENERATED_FILES += UnicodePatternTables.h
 UnicodePatternTables.h: $(JavaScriptCore)/yarr/generateYarrUnicodePropertyTables.py $(JavaScriptCore)/yarr/hasher.py $(JavaScriptCore)/ucd/DerivedBinaryProperties.txt $(JavaScriptCore)/ucd/DerivedCoreProperties.txt $(JavaScriptCore)/ucd/DerivedNormalizationProps.txt $(JavaScriptCore)/ucd/PropList.txt $(JavaScriptCore)/ucd/PropertyAliases.txt $(JavaScriptCore)/ucd/PropertyValueAliases.txt $(JavaScriptCore)/ucd/ScriptExtensions.txt $(JavaScriptCore)/ucd/Scripts.txt $(JavaScriptCore)/ucd/UnicodeData.txt $(JavaScriptCore)/ucd/emoji-data.txt
        $(PYTHON) $(JavaScriptCore)/yarr/generateYarrUnicodePropertyTables.py $(JavaScriptCore)/ucd ./UnicodePatternTables.h
 
-ALL_GENERATED_FILES += yarr/YarrCanonicalizeUnicode.cpp
 yarr/YarrCanonicalizeUnicode.cpp: $(JavaScriptCore)/yarr/generateYarrCanonicalizeUnicode $(JavaScriptCore)/ucd/CaseFolding.txt
        $(PYTHON) $(JavaScriptCore)/yarr/generateYarrCanonicalizeUnicode $(JavaScriptCore)/ucd/CaseFolding.txt ./yarr/YarrCanonicalizeUnicode.cpp
 
-ALL_GENERATED_FILES += IntlCanonicalizeLanguage.h
 IntlCanonicalizeLanguage.h: $(JavaScriptCore)/Scripts/generateIntlCanonicalizeLanguage.py $(JavaScriptCore)/ucd/language-subtag-registry.txt
        $(PYTHON) $(JavaScriptCore)/Scripts/generateIntlCanonicalizeLanguage.py $(JavaScriptCore)/ucd/language-subtag-registry.txt ./IntlCanonicalizeLanguage.h
 
-ALL_GENERATED_FILES += WasmOps.h
 WasmOps.h: $(JavaScriptCore)/wasm/generateWasmOpsHeader.py $(JavaScriptCore)/wasm/generateWasm.py $(JavaScriptCore)/wasm/wasm.json
        $(PYTHON) $(JavaScriptCore)/wasm/generateWasmOpsHeader.py $(JavaScriptCore)/wasm/wasm.json ./WasmOps.h
 
-ALL_GENERATED_FILES += WasmValidateInlines.h
 WasmValidateInlines.h: $(JavaScriptCore)/wasm/generateWasmValidateInlinesHeader.py $(JavaScriptCore)/wasm/generateWasm.py $(JavaScriptCore)/wasm/wasm.json
        $(PYTHON) $(JavaScriptCore)/wasm/generateWasmValidateInlinesHeader.py $(JavaScriptCore)/wasm/wasm.json ./WasmValidateInlines.h
 
-ALL_GENERATED_FILES += WasmB3IRGeneratorInlines.h
 WasmB3IRGeneratorInlines.h: $(JavaScriptCore)/wasm/generateWasmB3IRGeneratorInlinesHeader.py $(JavaScriptCore)/wasm/generateWasm.py $(JavaScriptCore)/wasm/wasm.json
        $(PYTHON) $(JavaScriptCore)/wasm/generateWasmB3IRGeneratorInlinesHeader.py $(JavaScriptCore)/wasm/wasm.json ./WasmB3IRGeneratorInlines.h
 
-# --------
-
-.PHONY : all real_all print_all_generated_files
-
-real_all : $(ALL_GENERATED_FILES)
-
-print_all_generated_files :
-       @for target in $(ALL_GENERATED_FILES); \
-       do \
-               echo $${target}; \
-       done
+# Dynamically-defined targets are listed below. Static targets belong up top.
 
+all : \
+    $(OBJECT_LUT_HEADERS) \
+#
index 6fa28a5..4b9244e 100644 (file)
@@ -1,3 +1,60 @@
+2018-11-28  Keith Rollin  <krollin@apple.com>
+
+        Revert print_all_generated_files work in r238008; tighten up target specifications
+        https://bugs.webkit.org/show_bug.cgi?id=192025
+        <rdar://problem/46284301>
+
+        Reviewed by Alex Christensen.
+
+        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.
+
+        No new tests -- no changed functionality.
+
+        * DerivedSources.make:
+
 2018-11-28  Alex Christensen  <achristensen@webkit.org>
 
         Remove dead code from an earlier attempt at implementing safe browsing
index 308d759..7adfcbd 100644 (file)
@@ -508,7 +508,6 @@ JS_BINDING_IDLS = \
     $(WebCore)/css/WebKitCSSMatrix.idl \
     $(WebCore)/css/WebKitCSSViewportRule.idl \
     $(WebCore)/dom/AbortController.idl \
-    $(WebCore)/dom/AbortController.idl \
     $(WebCore)/dom/AbortSignal.idl \
     $(WebCore)/dom/AnimationEvent.idl \
     $(WebCore)/dom/Attr.idl \
@@ -1072,11 +1071,6 @@ ifeq ($(OS),Windows_NT)
 else
     DELETE = rm -f
 endif
-
-ALL_GENERATED_FILES =
-
-all : real_all
-
 # --------
 
 ifeq ($(OS),MACOS)
@@ -1131,16 +1125,6 @@ PLATFORM_FEATURE_DEFINES = Configurations/FeatureDefines.xcconfig
 endif
 endif
 
-# Items on ADDITIONAL_BINDING_IDLS get added to JS_BINDING_IDLS and are copied
-# into the current directory.
-#
-# TODO: Determine why they don't need to have full path information prepended
-# to them like the other items in JS_BINDING_IDLS. Perhaps related to the vpath
-# specification set up for *.idl files? Also look into why DocumentTouch.idl,
-# et al, get added to JS_BINDING_IDLS by virtual of ADDITIONAL_BINDING_IDLS
-# getting added to it, and also later on when they are explicitly added to
-# JS_BINDING_IDLS by hand with the full paths.
-
 ADDITIONAL_BINDING_IDLS =
 ifeq ($(findstring ENABLE_MAC_GESTURE_EVENTS,$(FEATURE_DEFINES)), ENABLE_MAC_GESTURE_EVENTS)
 ADDITIONAL_BINDING_IDLS += GestureEvent.idl
@@ -1150,8 +1134,6 @@ ifeq ($(findstring ENABLE_IOS_GESTURE_EVENTS,$(FEATURE_DEFINES)), ENABLE_IOS_GES
 ADDITIONAL_BINDING_IDLS += GestureEvent.idl
 endif
 
-# TODO: Determine if the two levels of protection hear are necessary. If so, do
-# they also need to be applied to the parallel files below?
 ifeq ($(WTF_PLATFORM_IOS_FAMILY), 1)
 ifeq ($(findstring ENABLE_IOS_TOUCH_EVENTS,$(FEATURE_DEFINES)), ENABLE_IOS_TOUCH_EVENTS)
 ADDITIONAL_BINDING_IDLS += \
@@ -1162,20 +1144,14 @@ ADDITIONAL_BINDING_IDLS += \
 endif
 endif # IOS
 
-# TODO: Check places that use .in files; there seems to be inconsistent use of
-# full paths and partial paths.
 vpath %.in $(WEBKITADDITIONS_HEADER_SEARCH_PATHS)
 
-# TODO: These don't seem to be used. I see that Andreas carefully added these as
-# "extention points", but I'm not seeing how they're actually used.
 ADDITIONAL_EVENT_NAMES =
 ADDITIONAL_EVENT_TARGET_FACTORY =
 
 JS_BINDING_IDLS += $(ADDITIONAL_BINDING_IDLS)
 
-# TODO: Is this needed? Down below, we say "all : ALL_GENERATED_FILES", which
-# includes JS_DOM_HEADERS, which includes ADDITIONAL_BINDING_IDLS.
-# all : $(ADDITIONAL_BINDING_IDLS:%.idl=JS%.h)
+all : $(ADDITIONAL_BINDING_IDLS:%.idl=JS%.h)
 
 vpath %.idl $(BUILT_PRODUCTS_DIR)/usr/local/include $(SDKROOT)/usr/local/include
 
@@ -1192,6 +1168,8 @@ JS_BINDING_IDLS += \
     $(WebCore)/dom/TouchList.idl
 endif
 
+.PHONY : all
+
 JS_DOM_CLASSES=$(basename $(notdir $(JS_BINDING_IDLS)))
 
 JS_DOM_HEADERS=$(filter-out JSEventListener.h, $(JS_DOM_CLASSES:%=JS%.h))
@@ -1199,7 +1177,54 @@ JS_DOM_IMPLEMENTATIONS=$(filter-out JSEventListener.cpp, $(JS_DOM_CLASSES:%=JS%.
 
 WEB_DOM_HEADERS :=
 
-ALL_GENERATED_FILES += $(JS_DOM_HEADERS) $(JS_DOM_IMPLEMENTATIONS) $(WEB_DOM_HEADERS)
+all : \
+    $(JS_DOM_HEADERS) \
+    $(JS_DOM_IMPLEMENTATIONS) \
+    $(WEB_DOM_HEADERS) \
+    \
+    CSSPropertyNames.cpp \
+    CSSPropertyNames.h \
+    CSSValueKeywords.cpp \
+    CSSValueKeywords.h \
+    ColorData.cpp \
+    DOMJITAbstractHeapRepository.h \
+    EventInterfaces.h \
+    EventTargetInterfaces.h \
+    HTMLElementFactory.cpp \
+    HTMLElementFactory.h \
+    HTMLElementTypeHelpers.h \
+    HTMLEntityTable.cpp \
+    HTMLNames.cpp \
+    HTMLNames.h \
+    JSHTMLElementWrapperFactory.cpp \
+    JSHTMLElementWrapperFactory.h \
+    JSMathMLElementWrapperFactory.cpp \
+    JSMathMLElementWrapperFactory.h \
+    JSSVGElementWrapperFactory.cpp \
+    JSSVGElementWrapperFactory.h \
+    PlugInsResources.h \
+    SVGElementFactory.cpp \
+    SVGElementFactory.h \
+    SVGElementTypeHelpers.h \
+    SVGNames.cpp \
+    SVGNames.h \
+    SelectorPseudoClassAndCompatibilityElementMap.cpp \
+    SelectorPseudoElementTypeMap.cpp \
+    StyleBuilder.cpp \
+    StylePropertyShorthandFunctions.cpp \
+    StylePropertyShorthandFunctions.h \
+    UserAgentStyleSheets.h \
+    WebKitFontFamilyNames.cpp \
+    WebKitFontFamilyNames.h \
+    XLinkNames.cpp \
+    XMLNSNames.cpp \
+    XMLNames.cpp \
+    MathMLElementFactory.cpp \
+    MathMLElementFactory.h \
+    MathMLElementTypeHelpers.h \
+    MathMLNames.cpp \
+    MathMLNames.h \
+#
 
 # --------
 
@@ -1232,7 +1257,7 @@ CSS_PROPERTY_NAME_FILES = \
 #
 CSS_PROPERTY_NAME_FILES_PATTERNS = $(subst .,%,$(CSS_PROPERTY_NAME_FILES))
 
-ALL_GENERATED_FILES += $(CSS_PROPERTY_NAME_FILES)
+all : $(CSS_PROPERTY_NAME_FILES)
 $(CSS_PROPERTY_NAME_FILES_PATTERNS) : $(WEBCORE_CSS_PROPERTY_NAMES) css/makeprop.pl $(PLATFORM_FEATURE_DEFINES)
        $(PERL) -pe '' $(WEBCORE_CSS_PROPERTY_NAMES) > CSSProperties.json
        $(PERL) "$(WebCore)/css/makeprop.pl" --defines "$(FEATURE_AND_PLATFORM_DEFINES)"
@@ -1243,7 +1268,7 @@ CSS_VALUE_KEYWORD_FILES = \
 #
 CSS_VALUE_KEYWORD_FILES_PATTERNS = $(subst .,%,$(CSS_VALUE_KEYWORD_FILES))
 
-ALL_GENERATED_FILES += $(CSS_VALUE_KEYWORD_FILES)
+all : $(CSS_VALUE_KEYWORD_FILES)
 $(CSS_VALUE_KEYWORD_FILES_PATTERNS) : $(WEBCORE_CSS_VALUE_KEYWORDS) css/makevalues.pl bindings/scripts/preprocessor.pm $(PLATFORM_FEATURE_DEFINES)
        $(PERL) -pe '' $(WEBCORE_CSS_VALUE_KEYWORDS) > CSSValueKeywords.in
        $(PERL) "$(WebCore)/css/makevalues.pl" --defines "$(FEATURE_AND_PLATFORM_DEFINES)"
@@ -1252,11 +1277,9 @@ $(CSS_VALUE_KEYWORD_FILES_PATTERNS) : $(WEBCORE_CSS_VALUE_KEYWORDS) css/makevalu
 
 # CSS Selector pseudo type name to value map.
 
-ALL_GENERATED_FILES += SelectorPseudoClassAndCompatibilityElementMap.cpp
 SelectorPseudoClassAndCompatibilityElementMap.cpp : $(WebCore)/css/makeSelectorPseudoClassAndCompatibilityElementMap.py $(WebCore)/css/SelectorPseudoClassAndCompatibilityElementMap.in
        $(PYTHON) "$(WebCore)/css/makeSelectorPseudoClassAndCompatibilityElementMap.py" $(WebCore)/css/SelectorPseudoClassAndCompatibilityElementMap.in gperf "$(FEATURE_DEFINES)"
 
-ALL_GENERATED_FILES += SelectorPseudoElementTypeMap.cpp
 SelectorPseudoElementTypeMap.cpp : $(WebCore)/css/makeSelectorPseudoElementsMap.py $(WebCore)/css/SelectorPseudoElementTypeMap.in
        $(PYTHON) "$(WebCore)/css/makeSelectorPseudoElementsMap.py" $(WebCore)/css/SelectorPseudoElementTypeMap.in gperf "$(FEATURE_DEFINES)"
 
@@ -1264,7 +1287,8 @@ SelectorPseudoElementTypeMap.cpp : $(WebCore)/css/makeSelectorPseudoElementsMap.
 
 # DOMJIT Abstract Heap
 
-ALL_GENERATED_FILES += DOMJITAbstractHeapRepository.h
+all : DOMJITAbstractHeapRepository.h
+
 DOMJITAbstractHeapRepository.h : $(WebCore)/domjit/generate-abstract-heap.rb $(WebCore)/domjit/DOMJITAbstractHeapRepository.yaml
        $(RUBY) "$(WebCore)/domjit/generate-abstract-heap.rb" $(WebCore)/domjit/DOMJITAbstractHeapRepository.yaml ./DOMJITAbstractHeapRepository.h
 
@@ -1272,7 +1296,8 @@ DOMJITAbstractHeapRepository.h : $(WebCore)/domjit/generate-abstract-heap.rb $(W
 
 # XMLViewer CSS
 
-ALL_GENERATED_FILES += XMLViewerCSS.h
+all : XMLViewerCSS.h
+
 XMLViewerCSS.h : xml/XMLViewer.css
        $(PYTHON) $(JavaScriptCore_SCRIPTS_DIR)/cssmin.py <"$(WebCore)/xml/XMLViewer.css" > ./XMLViewer.min.css
        $(PERL) $(JavaScriptCore_SCRIPTS_DIR)/xxd.pl XMLViewer_css ./XMLViewer.min.css XMLViewerCSS.h
@@ -1282,7 +1307,8 @@ XMLViewerCSS.h : xml/XMLViewer.css
 
 # XMLViewer JS
 
-ALL_GENERATED_FILES += XMLViewerJS.h
+all : XMLViewerJS.h
+
 XMLViewerJS.h : xml/XMLViewer.js
        $(PYTHON) $(JavaScriptCore_SCRIPTS_DIR)/jsmin.py <"$(WebCore)/xml/XMLViewer.js" > ./XMLViewer.min.js
        $(PERL) $(JavaScriptCore_SCRIPTS_DIR)/xxd.pl XMLViewer_js ./XMLViewer.min.js XMLViewerJS.h
@@ -1292,7 +1318,6 @@ XMLViewerJS.h : xml/XMLViewer.js
 
 # HTML entity names
 
-ALL_GENERATED_FILES += HTMLEntityTable.cpp
 HTMLEntityTable.cpp : html/parser/HTMLEntityNames.in $(WebCore)/html/parser/create-html-entity-table
        $(PYTHON) $(WebCore)/html/parser/create-html-entity-table -o HTMLEntityTable.cpp $(WebCore)/html/parser/HTMLEntityNames.in
 
@@ -1307,7 +1332,7 @@ HTTP_HEADER_NAMES_FILES = \
 #
 HTTP_HEADER_NAMES_FILES_PATTERNS = $(subst .,%,$(HTTP_HEADER_NAMES_FILES))
 
-ALL_GENERATED_FILES += $(HTTP_HEADER_NAMES_FILES)
+all : $(HTTP_HEADER_NAMES_FILES)
 $(HTTP_HEADER_NAMES_FILES_PATTERNS) : platform/network/HTTPHeaderNames.in $(WebCore)/platform/network/create-http-header-name-table
        $(PYTHON) $(WebCore)/platform/network/create-http-header-name-table $(WebCore)/platform/network/HTTPHeaderNames.in gperf
 
@@ -1315,7 +1340,6 @@ $(HTTP_HEADER_NAMES_FILES_PATTERNS) : platform/network/HTTPHeaderNames.in $(WebC
 
 # color names
 
-ALL_GENERATED_FILES += ColorData.cpp
 ColorData.cpp : platform/ColorData.gperf $(WebCore)/make-hash-tools.pl
        $(PERL) $(WebCore)/make-hash-tools.pl . $(WebCore)/platform/ColorData.gperf
 
@@ -1353,7 +1377,6 @@ ifeq ($(findstring ENABLE_METER_ELEMENT,$(FEATURE_DEFINES)), ENABLE_METER_ELEMEN
        USER_AGENT_STYLE_SHEETS += $(WebCore)/html/shadow/meterElementShadow.css
 endif
 
-ALL_GENERATED_FILES += UserAgentStyleSheets.h
 UserAgentStyleSheets.h : css/make-css-file-arrays.pl bindings/scripts/preprocessor.pm $(USER_AGENT_STYLE_SHEETS) $(PLATFORM_FEATURE_DEFINES)
        $(PERL) $< --defines "$(FEATURE_AND_PLATFORM_DEFINES)" $@ UserAgentStyleSheetsData.cpp $(USER_AGENT_STYLE_SHEETS)
 
@@ -1374,7 +1397,8 @@ USER_AGENT_SCRIPTS_FILES = \
 #
 USER_AGENT_SCRIPTS_FILES_PATTERNS = $(subst .,%,$(USER_AGENT_SCRIPTS_FILES))
 
-ALL_GENERATED_FILES += $(USER_AGENT_SCRIPTS_FILES)
+all : $(USER_AGENT_SCRIPTS_FILES)
+
 $(USER_AGENT_SCRIPTS_FILES_PATTERNS) : $(JavaScriptCore_SCRIPTS_DIR)/make-js-file-arrays.py $(USER_AGENT_SCRIPTS)
        $(PYTHON) $(JavaScriptCore_SCRIPTS_DIR)/make-js-file-arrays.py -n WebCore $(USER_AGENT_SCRIPTS_FILES) $(USER_AGENT_SCRIPTS)
 endif
@@ -1385,7 +1409,6 @@ endif
 
 PLUG_INS_RESOURCES = $(WebCore)/Resources/plugIns.js
 
-ALL_GENERATED_FILES += PlugInsResources.h
 PlugInsResources.h : css/make-css-file-arrays.pl bindings/scripts/preprocessor.pm $(PLUG_INS_RESOURCES) $(PLATFORM_FEATURE_DEFINES)
        $(PERL) $< --defines "$(FEATURE_AND_PLATFORM_DEFINES)" $@ PlugInsResourcesData.cpp $(PLUG_INS_RESOURCES)
 
@@ -1397,7 +1420,7 @@ WEBKIT_FONT_FAMILY_NAME_FILES = \
 #
 WEBKIT_FONT_FAMILY_NAME_FILES_PATTERNS = $(subst .,%,$(WEBKIT_FONT_FAMILY_NAME_FILES))
 
-ALL_GENERATED_FILES += $(WEBKIT_FONT_FAMILY_NAME_FILES)
+all : $(WEBKIT_FONT_FAMILY_NAME_FILES)
 $(WEBKIT_FONT_FAMILY_NAME_FILES_PATTERNS): dom/make_names.pl bindings/scripts/Hasher.pm bindings/scripts/StaticString.pm css/WebKitFontFamilyNames.in
        $(PERL) $< --fonts $(WebCore)/css/WebKitFontFamilyNames.in
 
@@ -1446,15 +1469,14 @@ HTML_TAG_FILES = \
 #
 HTML_TAG_FILES_PATTERNS = $(subst .,%,$(HTML_TAG_FILES))
 
-ALL_GENERATED_FILES += $(HTML_TAG_FILES)
+all : $(HTML_TAG_FILES)
+
 $(HTML_TAG_FILES_PATTERNS) : dom/make_names.pl bindings/scripts/Hasher.pm bindings/scripts/StaticString.pm html/HTMLTagNames.in html/HTMLAttributeNames.in
        $(PERL) $< --tags $(WebCore)/html/HTMLTagNames.in --attrs $(WebCore)/html/HTMLAttributeNames.in --factory --wrapperFactory $(if $(HTML_FLAGS), --extraDefines "$(HTML_FLAGS)")
 
-ALL_GENERATED_FILES += XMLNSNames.cpp
 XMLNSNames.cpp : dom/make_names.pl bindings/scripts/Hasher.pm bindings/scripts/StaticString.pm xml/xmlnsattrs.in
        $(PERL) $< --attrs $(WebCore)/xml/xmlnsattrs.in
 
-ALL_GENERATED_FILES += XMLNames.cpp
 XMLNames.cpp : dom/make_names.pl bindings/scripts/Hasher.pm bindings/scripts/StaticString.pm xml/xmlattrs.in
        $(PERL) $< --attrs $(WebCore)/xml/xmlattrs.in
 
@@ -1479,11 +1501,11 @@ SVG_TAG_FILES = \
 #
 SVG_TAG_FILES_PATTERNS = $(subst .,%,$(SVG_TAG_FILES))
 
-ALL_GENERATED_FILES += $(SVG_TAG_FILES)
+all : $(SVG_TAG_FILES)
+
 $(SVG_TAG_FILES_PATTERNS) : dom/make_names.pl bindings/scripts/Hasher.pm bindings/scripts/StaticString.pm svg/svgtags.in svg/svgattrs.in
        $(PERL) $< --tags $(WebCore)/svg/svgtags.in --attrs $(WebCore)/svg/svgattrs.in --factory --wrapperFactory $(if $(SVG_FLAGS), --extraDefines "$(SVG_FLAGS)")
 
-ALL_GENERATED_FILES += XLinkNames.cpp
 XLinkNames.cpp : dom/make_names.pl bindings/scripts/Hasher.pm bindings/scripts/StaticString.pm svg/xlinkattrs.in
        $(PERL) $< --attrs $(WebCore)/svg/xlinkattrs.in
 
@@ -1500,7 +1522,7 @@ EVENT_FACTORY_FILES = \
 #
 EVENT_FACTORY_PATTERNS = $(subst .,%,$(EVENT_FACTORY_FILES))
 
-ALL_GENERATED_FILES += $(EVENT_FACTORY_FILES)
+all : $(EVENT_FACTORY_FILES)
 $(EVENT_FACTORY_PATTERNS) : dom/make_event_factory.pl $(EVENT_NAMES)
        $(PERL) $< $(addprefix --input , $(filter-out $(WebCore)/dom/make_event_factory.pl, $^))
 
@@ -1513,7 +1535,7 @@ EVENT_TARGET_FACTORY_FILES = \
 #
 EVENT_TARGET_FACTORY_PATTERNS = $(subst .,%,$(EVENT_TARGET_FACTORY_FILES))
 
-ALL_GENERATED_FILES += $(EVENT_TARGET_FACTORY_FILES)
+all : $(EVENT_TARGET_FACTORY_FILES)
 $(EVENT_TARGET_FACTORY_PATTERNS) : dom/make_event_factory.pl $(EVENT_TARGET_FACTORY)
        $(PERL) $< $(addprefix --input , $(filter-out $(WebCore)/dom/make_event_factory.pl, $^))
 
@@ -1532,7 +1554,7 @@ MATH_ML_GENERATED_FILES = \
 #
 MATH_ML_GENERATED_PATTERNS = $(subst .,%,$(MATH_ML_GENERATED_FILES))
 
-ALL_GENERATED_FILES += $(MATH_ML_GENERATED_FILES)
+all : $(MATH_ML_GENERATED_FILES)
 $(MATH_ML_GENERATED_PATTERNS) : dom/make_names.pl bindings/scripts/Hasher.pm bindings/scripts/StaticString.pm mathml/mathtags.in mathml/mathattrs.in
        $(PERL) $< --tags $(WebCore)/mathml/mathtags.in --attrs $(WebCore)/mathml/mathattrs.in --factory --wrapperFactory
 
@@ -1550,7 +1572,7 @@ GENERATE_SETTINGS_TEMPLATES = \
 GENERATE_SETTINGS_FILES = $(basename $(notdir $(GENERATE_SETTINGS_TEMPLATES)))
 GENERATE_SETTINGS_PATTERNS = $(subst .,%,$(GENERATE_SETTINGS_FILES))
 
-ALL_GENERATED_FILES += $(GENERATE_SETTINGS_FILES)
+all : $(GENERATE_SETTINGS_FILES)
 $(GENERATE_SETTINGS_PATTERNS) : $(WebCore)/Scripts/GenerateSettings.rb $(GENERATE_SETTINGS_TEMPLATES) page/Settings.yaml
        $(RUBY) $< --input $(WebCore)/page/Settings.yaml
 
@@ -1597,16 +1619,15 @@ IDL_COMMON_ARGS = $(IDL_INCLUDES:%=--include %) --write-dependencies --outputDir
 
 JS_BINDINGS_SCRIPTS = $(COMMON_BINDINGS_SCRIPTS) bindings/scripts/CodeGeneratorJS.pm
 
-# TODO: These next six files get created, and so should probably go into the xcfilelist
-SUPPLEMENTAL_DEPENDENCY_FILE = ./SupplementalDependencies.txt
-SUPPLEMENTAL_MAKEFILE_DEPS = ./SupplementalDependencies.dep
-WINDOW_CONSTRUCTORS_FILE = ./DOMWindowConstructors.idl
-WORKERGLOBALSCOPE_CONSTRUCTORS_FILE = ./WorkerGlobalScopeConstructors.idl
-DEDICATEDWORKERGLOBALSCOPE_CONSTRUCTORS_FILE = ./DedicatedWorkerGlobalScopeConstructors.idl
-SERVICEWORKERGLOBALSCOPE_CONSTRUCTORS_FILE = ./ServiceWorkerGlobalScopeConstructors.idl
-WORKLETGLOBALSCOPE_CONSTRUCTORS_FILE = ./WorkletGlobalScopeConstructors.idl
-PAINTWORKLETGLOBALSCOPE_CONSTRUCTORS_FILE = ./PaintWorkletGlobalScopeConstructors.idl
-IDL_FILES_TMP = ./idl_files.tmp
+SUPPLEMENTAL_DEPENDENCY_FILE = SupplementalDependencies.txt
+SUPPLEMENTAL_MAKEFILE_DEPS = SupplementalDependencies.dep
+WINDOW_CONSTRUCTORS_FILE = DOMWindowConstructors.idl
+WORKERGLOBALSCOPE_CONSTRUCTORS_FILE = WorkerGlobalScopeConstructors.idl
+DEDICATEDWORKERGLOBALSCOPE_CONSTRUCTORS_FILE = DedicatedWorkerGlobalScopeConstructors.idl
+SERVICEWORKERGLOBALSCOPE_CONSTRUCTORS_FILE = ServiceWorkerGlobalScopeConstructors.idl
+WORKLETGLOBALSCOPE_CONSTRUCTORS_FILE = WorkletGlobalScopeConstructors.idl
+PAINTWORKLETGLOBALSCOPE_CONSTRUCTORS_FILE = PaintWorkletGlobalScopeConstructors.idl
+IDL_FILES_TMP = idl_files.tmp
 IDL_ATTRIBUTES_FILE = $(WebCore)/bindings/scripts/IDLAttributes.json
 
 # The following lines get a newline character stored in a variable.
@@ -1616,33 +1637,52 @@ define NL
 
 endef
 
-$(SUPPLEMENTAL_MAKEFILE_DEPS) : $(PREPROCESS_IDLS_SCRIPTS) $(JS_BINDING_IDLS) $(PLATFORM_FEATURE_DEFINES) DerivedSources.make
+
+IDL_INTERMEDIATE_FILES = \
+    $(SUPPLEMENTAL_MAKEFILE_DEPS) \
+    $(SUPPLEMENTAL_DEPENDENCY_FILE) \
+    $(WINDOW_CONSTRUCTORS_FILE) \
+    $(WORKERGLOBALSCOPE_CONSTRUCTORS_FILE) \
+    $(DEDICATEDWORKERGLOBALSCOPE_CONSTRUCTORS_FILE) \
+    $(SERVICEWORKERGLOBALSCOPE_CONSTRUCTORS_FILE) \
+    $(WORKLETGLOBALSCOPE_CONSTRUCTORS_FILE) \
+    $(PAINTWORKLETGLOBALSCOPE_CONSTRUCTORS_FILE)
+#
+IDL_INTERMEDIATE_PATTERNS = $(subst .,%,$(IDL_INTERMEDIATE_FILES))
+
+$(IDL_INTERMEDIATE_PATTERNS) : $(PREPROCESS_IDLS_SCRIPTS) $(JS_BINDING_IDLS) $(PLATFORM_FEATURE_DEFINES) DerivedSources.make
        $(foreach f,$(JS_BINDING_IDLS),@echo $(f)>>$(IDL_FILES_TMP)$(NL))
        $(PERL) $(WebCore)/bindings/scripts/preprocess-idls.pl --defines "$(FEATURE_AND_PLATFORM_DEFINES) $(ADDITIONAL_IDL_DEFINES) LANGUAGE_JAVASCRIPT" --idlFilesList $(IDL_FILES_TMP) --supplementalDependencyFile $(SUPPLEMENTAL_DEPENDENCY_FILE) --windowConstructorsFile $(WINDOW_CONSTRUCTORS_FILE) --workerGlobalScopeConstructorsFile $(WORKERGLOBALSCOPE_CONSTRUCTORS_FILE) --dedicatedWorkerGlobalScopeConstructorsFile $(DEDICATEDWORKERGLOBALSCOPE_CONSTRUCTORS_FILE) --serviceWorkerGlobalScopeConstructorsFile $(SERVICEWORKERGLOBALSCOPE_CONSTRUCTORS_FILE) --workletGlobalScopeConstructorsFile $(WORKLETGLOBALSCOPE_CONSTRUCTORS_FILE) --paintWorkletGlobalScopeConstructorsFile $(PAINTWORKLETGLOBALSCOPE_CONSTRUCTORS_FILE) --supplementalMakefileDeps $@
        $(DELETE) $(IDL_FILES_TMP)
 
-JS%.cpp JS%.h : %.idl $(JS_BINDINGS_SCRIPTS) $(IDL_ATTRIBUTES_FILE) $(WINDOW_CONSTRUCTORS_FILE) $(WORKERGLOBALSCOPE_CONSTRUCTORS_FILE) $(WORKLETGLOBALSCOPE_CONSTRUCTORS_FILE) $(PLATFORM_FEATURE_DEFINES)
+JS%.cpp JS%.h : %.idl $(JS_BINDINGS_SCRIPTS) $(IDL_ATTRIBUTES_FILE) $(IDL_INTERMEDIATE_FILES) $(PLATFORM_FEATURE_DEFINES)
        $(PERL) $(WebCore)/bindings/scripts/generate-bindings.pl $(IDL_COMMON_ARGS) --defines "$(FEATURE_AND_PLATFORM_DEFINES) $(ADDITIONAL_IDL_DEFINES) LANGUAGE_JAVASCRIPT" --generator JS --idlAttributesFile $(IDL_ATTRIBUTES_FILE) --supplementalDependencyFile $(SUPPLEMENTAL_DEPENDENCY_FILE) $<
 
+ifneq ($(NO_SUPPLEMENTAL_FILES),1)
 -include $(SUPPLEMENTAL_MAKEFILE_DEPS)
+endif
+
+ifneq ($(NO_SUPPLEMENTAL_FILES),1)
+-include $(JS_DOM_HEADERS:.h=.dep)
+endif
 
 # Inspector interfaces
 
-ALL_GENERATED_FILES += InspectorOverlayPage.h
+all : InspectorOverlayPage.h
+
 InspectorOverlayPage.h : InspectorOverlayPage.html InspectorOverlayPage.css InspectorOverlayPage.js
        $(PYTHON) $(JavaScriptCore_SCRIPTS_DIR)/inline-and-minify-stylesheets-and-scripts.py $(WebCore)/inspector/InspectorOverlayPage.html ./InspectorOverlayPage.combined.html
        $(PERL) $(JavaScriptCore_SCRIPTS_DIR)/xxd.pl InspectorOverlayPage_html ./InspectorOverlayPage.combined.html InspectorOverlayPage.h
        $(DELETE) InspectorOverlayPage.combined.html
 
-ALL_GENERATED_FILES += CommandLineAPIModuleSource.h
+all : CommandLineAPIModuleSource.h
+
 CommandLineAPIModuleSource.h : CommandLineAPIModuleSource.js
        echo "//# sourceURL=__InjectedScript_CommandLineAPIModuleSource.js" > ./CommandLineAPIModuleSource.min.js
        $(PYTHON) $(JavaScriptCore_SCRIPTS_DIR)/jsmin.py <$(WebCore)/inspector/CommandLineAPIModuleSource.js >> ./CommandLineAPIModuleSource.min.js
        $(PERL) $(JavaScriptCore_SCRIPTS_DIR)/xxd.pl CommandLineAPIModuleSource_js ./CommandLineAPIModuleSource.min.js CommandLineAPIModuleSource.h
        $(DELETE) CommandLineAPIModuleSource.min.js
 
--include $(JS_DOM_HEADERS:.h=.dep)
-
 # WebCore JS Builtins
 
 WebCore_BUILTINS_SOURCES = \
@@ -1704,27 +1744,7 @@ $(WebCore_BUILTINS_WRAPPERS_PATTERNS) : $(WebCore_BUILTINS_SOURCES) WebCore_BUIL
 %Builtins.h: %.js $(BUILTINS_GENERATOR_SCRIPTS) WebCore_BUILTINS_DEPENDENCIES_LIST
        $(PYTHON) $(JavaScriptCore_SCRIPTS_DIR)/generate-js-builtins.py --output-directory . --framework WebCore $<
 
-ALL_GENERATED_FILES += $(notdir $(WebCore_BUILTINS_SOURCES:%.js=%Builtins.h)) $(WebCore_BUILTINS_WRAPPERS)
+all : $(notdir $(WebCore_BUILTINS_SOURCES:%.js=%Builtins.h)) $(WebCore_BUILTINS_WRAPPERS)
 
 # ------------------------
 
-.PHONY : all real_all print_all_generated_files
-
-# TODO: The first three prerequisites should probably not be here. Some of the
-# file-generation rules use them; *those* rules should be dependent on these
-# script (and then 'all' will transitively be dependent on them).
-real_all : \
-    $(SUPPLEMENTAL_DEPENDENCY_FILE) \
-    $(WINDOW_CONSTRUCTORS_FILE) \
-    $(WORKERGLOBALSCOPE_CONSTRUCTORS_FILE) \
-    $(WORKLETGLOBALSCOPE_CONSTRUCTORS_FILE) \
-    $(PAINTWORKLETGLOBALSCOPE_CONSTRUCTORS_FILE) \
-    $(ALL_GENERATED_FILES) \
-#
-
-print_all_generated_files :
-       @for target in $(ALL_GENERATED_FILES); \
-       do \
-               echo $${target}; \
-       done
-
index 8c25fe6..c640be9 100644 (file)
@@ -1,3 +1,58 @@
+2018-11-28  Keith Rollin  <krollin@apple.com>
+
+        Revert print_all_generated_files work in r238008; tighten up target specifications
+        https://bugs.webkit.org/show_bug.cgi?id=192025
+        <rdar://problem/46284301>
+
+        Reviewed by Alex Christensen.
+
+        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.
+
+        * DerivedSources.make:
+
 2018-11-28  Daniel Bates  <dabates@apple.com>
 
         [iOS] Page not defocused when Find-in-page becomes first responder
index 51217a9..5efba05 100644 (file)
@@ -93,10 +93,6 @@ else
     DELETE = rm -f
 endif
 
-ALL_GENERATED_FILES =
-
-all : real_all
-
 MESSAGE_RECEIVERS = \
     AuthenticationManager \
     CacheStorageEngineConnection \
@@ -204,15 +200,13 @@ HEADER_FLAGS = $(shell echo $(BUILT_PRODUCTS_DIR) $(HEADER_SEARCH_PATHS) $(SYSTE
 
 -include WebKitDerivedSourcesAdditions.make
 
-# Message Receivers
+.PHONY : all
 
-MESSAGE_RECEIVERS_FILES = \
+all : \
     $(MESSAGE_RECEIVERS:%=%MessageReceiver.cpp) \
     $(MESSAGE_RECEIVERS:%=%Messages.h) \
 #
 
-ALL_GENERATED_FILES += $(MESSAGE_RECEIVERS_FILES)
-
 %MessageReceiver.cpp : %.messages.in $(SCRIPTS)
        @echo Generating message receiver for $*...
        @python $(WebKit2)/Scripts/generate-message-receiver.py $< > $@
@@ -221,8 +215,6 @@ ALL_GENERATED_FILES += $(MESSAGE_RECEIVERS_FILES)
        @echo Generating messages header for $*...
        @python $(WebKit2)/Scripts/generate-messages-header.py $< > $@
 
-# Sandbox Profiles
-
 TEXT_PREPROCESSOR_FLAGS=-E -P -w
 
 ifneq ($(SDKROOT),)
@@ -239,14 +231,12 @@ SANDBOX_PROFILES = \
        com.apple.WebKit.plugin-common.sb \
        com.apple.WebKit.NetworkProcess.sb
 
-ALL_GENERATED_FILES += $(SANDBOX_PROFILES)
+all : $(SANDBOX_PROFILES)
 
 %.sb : %.sb.in
        @echo Pre-processing $* sandbox profile...
        grep -o '^[^;]*' $< | $(CC) $(SDK_FLAGS) $(TARGET_TRIPLE_FLAGS) $(TEXT_PREPROCESSOR_FLAGS) $(FRAMEWORK_FLAGS) $(HEADER_FLAGS) -include "wtf/Platform.h" - > $@
 
-# JSON-RPC Frontend Dispatchers, Backend Dispatchers, Type Builders
-
 AUTOMATION_PROTOCOL_GENERATOR_SCRIPTS = \
        $(JavaScriptCore_SCRIPTS_DIR)/cpp_generator_templates.py \
        $(JavaScriptCore_SCRIPTS_DIR)/cpp_generator.py \
@@ -266,8 +256,6 @@ AUTOMATION_PROTOCOL_INPUT_FILES = \
     $(WebKit2)/UIProcess/Automation/Automation.json \
 #
 
-# TODO: Is there some way to not hardcode this? Can we get it from
-# generate-inspector-protocol-bindings.py and ./Automation.json?
 AUTOMATION_PROTOCOL_OUTPUT_FILES = \
     AutomationBackendDispatchers.h \
     AutomationBackendDispatchers.cpp \
@@ -286,13 +274,11 @@ else
 endif
 endif # MACOS
 
+# JSON-RPC Frontend Dispatchers, Backend Dispatchers, Type Builders
 $(AUTOMATION_PROTOCOL_OUTPUT_PATTERNS) : $(AUTOMATION_PROTOCOL_INPUT_FILES) $(AUTOMATION_PROTOCOL_GENERATOR_SCRIPTS)
        $(PYTHON) $(JavaScriptCore_SCRIPTS_DIR)/generate-inspector-protocol-bindings.py --framework WebKit $(AUTOMATION_BACKEND_PLATFORM_ARGUMENTS) --backend --outputDir . $(AUTOMATION_PROTOCOL_INPUT_FILES)
-#
-
-ALL_GENERATED_FILES += $(AUTOMATION_PROTOCOL_OUTPUT_FILES)
 
-# *ScriptSource generation
+all : $(AUTOMATION_PROTOCOL_OUTPUT_FILES)
 
 %ScriptSource.h : %.js $(JavaScriptCore_SCRIPTS_DIR)/jsmin.py $(JavaScriptCore_SCRIPTS_DIR)/xxd.pl
        echo "//# sourceURL=__InjectedScript_$(notdir $<)" > $(basename $(notdir $<)).min.js
@@ -300,10 +286,7 @@ ALL_GENERATED_FILES += $(AUTOMATION_PROTOCOL_OUTPUT_FILES)
        $(PERL) $(JavaScriptCore_SCRIPTS_DIR)/xxd.pl $(basename $(notdir $<))ScriptSource $(basename $(notdir $<)).min.js $@
        $(DELETE) $(basename $(notdir $<)).min.js
 
-SCRIPT_SOURCE_FILES = \
-    WebAutomationSessionProxyScriptSource.h
-
-ALL_GENERATED_FILES += $(SCRIPT_SOURCE_FILES)
+all : WebAutomationSessionProxyScriptSource.h
 
 # WebPreferences generation
 
@@ -319,18 +302,7 @@ WEB_PREFERENCES_TEMPLATES = \
 WEB_PREFERENCES_FILES = $(basename $(notdir $(WEB_PREFERENCES_TEMPLATES)))
 WEB_PREFERENCES_PATTERNS = $(subst .,%,$(WEB_PREFERENCES_FILES))
 
-ALL_GENERATED_FILES += $(WEB_PREFERENCES_FILES)
+all : $(WEB_PREFERENCES_FILES)
 
 $(WEB_PREFERENCES_PATTERNS) : $(WebKit2)/Scripts/GeneratePreferences.rb $(WEB_PREFERENCES_TEMPLATES) $(WebKit2)/Shared/WebPreferences.yaml
        $(RUBY) $< --input $(WebKit2)/Shared/WebPreferences.yaml
-
-
-.PHONY : all real_all print_all_generated_files
-
-real_all : $(ALL_GENERATED_FILES)
-
-print_all_generated_files :
-       @for target in $(ALL_GENERATED_FILES); \
-       do \
-               echo $${target}; \
-       done
index 49e2f5a..2e87d97 100644 (file)
@@ -1,3 +1,59 @@
+2018-11-28  Keith Rollin  <krollin@apple.com>
+
+        Revert print_all_generated_files work in r238008; tighten up target specifications
+        https://bugs.webkit.org/show_bug.cgi?id=192025
+        <rdar://problem/46284301>
+
+        Reviewed by Alex Christensen.
+
+        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.
+
+        * DumpRenderTree/DerivedSources.make:
+        * WebKitTestRunner/DerivedSources.make:
+
 2018-11-28  Aakash Jain  <aakash_jain@apple.com>
 
         [ews-app] Add support to get list of Bugzilla patches needing review
index 4bac88e..1ddbe47 100644 (file)
@@ -40,21 +40,13 @@ SCRIPTS = \
 
 IDL_ATTRIBUTES_FILE = $(WebCoreScripts)/IDLAttributes.json
 
-.PHONY : all print_all_generated_files
+.PHONY : all
 
 JS%.h JS%.cpp : %.idl $(SCRIPTS) $(IDL_ATTRIBUTES_FILE)
        @echo Generating bindings for $*...
        @perl -I $(WebCoreScripts) -I $(UISCRIPTCONTEXT_DIR) -I $(DumpRenderTree)/Bindings $(WebCoreScripts)/generate-bindings.pl --defines "" --include $(UISCRIPTCONTEXT_DIR) --outputDir . --generator DumpRenderTree --idlAttributesFile $(IDL_ATTRIBUTES_FILE) $<
 
-ALL_GENERATED_FILES = \
+all : \
     $(UICONTEXT_INTERFACES:%=JS%.h) \
     $(UICONTEXT_INTERFACES:%=JS%.cpp) \
 #
-
-all : $(ALL_GENERATED_FILES)
-
-print_all_generated_files :
-       @for target in $(ALL_GENERATED_FILES); \
-       do \
-               echo $${target}; \
-       done
index 1e5b74b..97ebec6 100644 (file)
@@ -50,23 +50,15 @@ SCRIPTS = \
 
 IDL_ATTRIBUTES_FILE = $(WebCoreScripts)/IDLAttributes.json
 
-.PHONY : all print_all_generated_files
+.PHONY : all
 
 JS%.h JS%.cpp : %.idl $(SCRIPTS) $(IDL_ATTRIBUTES_FILE)
        @echo Generating bindings for $*...
        @perl -I $(WebCoreScripts) -I $(WebKitTestRunner)/InjectedBundle/Bindings -I $(WebKitTestRunner)/UIScriptContext/Bindings $(WebCoreScripts)/generate-bindings.pl --defines "" --include InjectedBundle/Bindings --include UIScriptContext/Bindings --outputDir . --generator TestRunner --idlAttributesFile $(IDL_ATTRIBUTES_FILE) $<
 
-ALL_GENERATED_FILES = \
+all : \
     $(INJECTED_BUNDLE_INTERFACES:%=JS%.h) \
     $(INJECTED_BUNDLE_INTERFACES:%=JS%.cpp) \
     $(UICONTEXT_INTERFACES:%=JS%.h) \
     $(UICONTEXT_INTERFACES:%=JS%.cpp) \
 #
-
-all : $(ALL_GENERATED_FILES)
-
-print_all_generated_files :
-       @for target in $(ALL_GENERATED_FILES); \
-       do \
-               echo $${target}; \
-       done