Changeset 268566 in webkit


Ignore:
Timestamp:
Oct 15, 2020 6:01:22 PM (4 years ago)
Author:
Keith Rollin
Message:

Lessen the reliance on VPATH in WebCore/DerivedSources.make
https://bugs.webkit.org/show_bug.cgi?id=217696
<rdar://problem/70279941>

Reviewed by Darin Adler.

Due to the way vpath/VPATH works in make, we can get into a
situation where necessarily IDL files are not copied to their correct
locations.

WebKit comes with many IDL files. When building for internal purposes,
Apple can add to or modify this set of IDL files. When creating
Engineering builds, these additional IDL files are copied to
.../WebKitBuild/<configuration>/usr/local/includes. When performing
Production builds, these IDL files are included in the SDK. This
arrangement can be seen in DerivedSources.make:

vpath %.idl $(BUILT_PRODUCTS_DIR)/usr/local/include $(SDKROOT)/usr/local/include

In order to get these IDL files into a location where they can be
uniformly found and handled, there is a step in DerivedSources.make
that copies them to the current directory, which is
WebKitBuild/<configuration>/DerivedSources/WebCore:

$(ADDITIONAL_BINDING_IDLS) : % : WebKitAdditions/%
cp $< .

The IDL files specified in ADDITIONAL_BINDING_IDLS are specified as
bare files names, meaning that vpath and VPATH are employed to find
them. Given the vpath specification previously shown, if the IDL files
can be found in $(BUILT_PRODUCTS_DIR)/usr/local/include, they are
copied locally. Otherwise, they should be found in
$(SDKROOT)/usr/local/include and copied locally.

As it turns out, vpath/VPATH resolution is performed not only on the
prerequisites of the build rule, but also the target (see section
4.5.3 of the GNU make manual). This means that the files specified
on the left side of the cp rule above are also searched for. And
since the standard IDL files (the ones that are being replaced with
the Apple-specific versions) can be found on VPATH as it's defined in
DerivedSources.make (specifically, in $(WebCore)/dom), then those
files participate in determining if the cp rule is executed.

Consider the normal build case: repositories are checked out (applying
the current modification timestamp to the files). During the build,
the files in $(ADDITIONAL_BINDING_IDLS) are copied to either
BUILT_PRODUCTS_DIR or to SDKROOT, which again modifies their
timestamps. We eventually get to the build rule for the cp
operation. Because the files in WebKitAdditions (be it in the local
build directory or the SDK) are *newer* than the checked-out ones in
$(WebCore)/dom due to their having been copied after they were
checked-out, then the cp command is invoked and then files are
copied to the current build directory.

However, consider a slightly different build case. In this case,
projects are checked out and built one at a time. So the project
producing the files in ADDITIONAL_BINDING_IDLS is checked out and then
the IDL files are copied to their intermediate location and have their
timestamps set to that time. Later, WebCore is checked out, and
DerivedSources.make is eventually invoked. Now, the files in
$(WebCore)/dom are *newer* than those in WebKitAdditions. make
determines that the IDL files are up-to-date and does not execute the
cp commands. The IDL files are not copied, and the build then either
fails (because of missing files) or proceeds incorrectly (because the
wrong IDL files are found).

The solution to this issue is to lessen the reliance on vpath/VPATH in
DerivedSources.make. Instead, be more explicit about where files can
be found and trim down vpath/VPATH to it's bare minimum. With
vpath/VPATH reduced, we remove the issue of files being accidentally
discovered that we don't want discovered.

The modifications effected to make this change are:

  • Remove the definition of VPATH.
  • Dynamically build up an idl-only "VPATH" as needed with the "vpath" directive.
  • Manually look for the additional IDL files at their expected locations without using vpath/VPATH.
  • For the files that used to be found on VPATH, specify their actual locations (typically by prefixing them with $(WebCore).
  • (Cleanup) Consistently refer to local files with bare names (that is, remove the "./" that some files were prefixed with).
  • (Cleanup) Use consistent spacing around "<" and ">" redirection symbols.
  • (Cleanup) Remove some redundant prerequisites from the build rule involving IDL_INTERMEDIATE_PATTERNS.

No new tests -- no new or changed functionality.

  • DerivedSources.make:
Location:
trunk/Source/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r268565 r268566  
     12020-10-15  Keith Rollin  <krollin@apple.com>
     2
     3        Lessen the reliance on VPATH in WebCore/DerivedSources.make
     4        https://bugs.webkit.org/show_bug.cgi?id=217696
     5        <rdar://problem/70279941>
     6
     7        Reviewed by Darin Adler.
     8
     9        Due to the way vpath/VPATH works in `make`, we can get into a
     10        situation where necessarily IDL files are not copied to their correct
     11        locations.
     12
     13        WebKit comes with many IDL files. When building for internal purposes,
     14        Apple can add to or modify this set of IDL files. When creating
     15        Engineering builds, these additional IDL files are copied to
     16        .../WebKitBuild/<configuration>/usr/local/includes. When performing
     17        Production builds, these IDL files are included in the SDK. This
     18        arrangement can be seen in DerivedSources.make:
     19
     20            vpath %.idl $(BUILT_PRODUCTS_DIR)/usr/local/include $(SDKROOT)/usr/local/include
     21
     22        In order to get these IDL files into a location where they can be
     23        uniformly found and handled, there is a step in DerivedSources.make
     24        that copies them to the current directory, which is
     25        WebKitBuild/<configuration>/DerivedSources/WebCore:
     26
     27            $(ADDITIONAL_BINDING_IDLS) : % : WebKitAdditions/%
     28            cp $< .
     29
     30        The IDL files specified in ADDITIONAL_BINDING_IDLS are specified as
     31        bare files names, meaning that vpath and VPATH are employed to find
     32        them. Given the vpath specification previously shown, if the IDL files
     33        can be found in $(BUILT_PRODUCTS_DIR)/usr/local/include, they are
     34        copied locally. Otherwise, they should be found in
     35        $(SDKROOT)/usr/local/include and copied locally.
     36
     37        As it turns out, vpath/VPATH resolution is performed not only on the
     38        prerequisites of the build rule, but also the target (see section
     39        4.5.3 of the GNU `make` manual). This means that the files specified
     40        on the left side of the `cp` rule above are also searched for. And
     41        since the standard IDL files (the ones that are being replaced with
     42        the Apple-specific versions) can be found on VPATH as it's defined in
     43        DerivedSources.make (specifically, in $(WebCore)/dom), then those
     44        files participate in determining if the `cp` rule is executed.
     45
     46        Consider the normal build case: repositories are checked out (applying
     47        the current modification timestamp to the files). During the build,
     48        the files in $(ADDITIONAL_BINDING_IDLS) are copied to either
     49        BUILT_PRODUCTS_DIR or to SDKROOT, which again modifies their
     50        timestamps. We eventually get to the build rule for the `cp`
     51        operation. Because the files in WebKitAdditions (be it in the local
     52        build directory or the SDK) are *newer* than the checked-out ones in
     53        $(WebCore)/dom due to their having been copied after they were
     54        checked-out, then the `cp` command is invoked and then files are
     55        copied to the current build directory.
     56
     57        However, consider a slightly different build case. In this case,
     58        projects are checked out and built one at a time. So the project
     59        producing the files in ADDITIONAL_BINDING_IDLS is checked out and then
     60        the IDL files are copied to their intermediate location and have their
     61        timestamps set to that time. Later, WebCore is checked out, and
     62        DerivedSources.make is eventually invoked. Now, the files in
     63        $(WebCore)/dom are *newer* than those in WebKitAdditions. `make`
     64        determines that the IDL files are up-to-date and does not execute the
     65        `cp` commands. The IDL files are not copied, and the build then either
     66        fails (because of missing files) or proceeds incorrectly (because the
     67        wrong IDL files are found).
     68
     69        The solution to this issue is to lessen the reliance on vpath/VPATH in
     70        DerivedSources.make. Instead, be more explicit about where files can
     71        be found and trim down vpath/VPATH to it's bare minimum. With
     72        vpath/VPATH reduced, we remove the issue of files being accidentally
     73        discovered that we don't want discovered.
     74
     75        The modifications effected to make this change are:
     76
     77        - Remove the definition of VPATH.
     78        - Dynamically build up an idl-only "VPATH" as needed with the "vpath"
     79          directive.
     80        - Manually look for the additional IDL files at their expected
     81          locations without using vpath/VPATH.
     82        - For the files that used to be found on VPATH, specify their actual
     83          locations (typically by prefixing them with $(WebCore).
     84        - (Cleanup) Consistently refer to local files with bare names (that
     85          is, remove the "./" that some files were prefixed with).
     86        - (Cleanup) Use consistent spacing around "<" and ">" redirection
     87          symbols.
     88        - (Cleanup) Remove some redundant prerequisites from the build rule
     89          involving IDL_INTERMEDIATE_PATTERNS.
     90
     91        No new tests -- no new or changed functionality.
     92
     93        * DerivedSources.make:
     94
    1952020-10-15  Chris Dumez  <cdumez@apple.com>
    296
  • trunk/Source/WebCore/DerivedSources.make

    r268564 r268566  
    4646
    4747# FIXME: This should list Platform.h and all the things it includes. Could do that by using the -MD flag in the CC line above.
    48 FEATURE_AND_PLATFORM_DEFINE_DEPENDENCIES = DerivedSources.make
    49 
    50 # --------
    51 
    52 VPATH = \
    53     $(WebCore) \
    54     $(WebCore)/Modules/airplay \
    55     $(WebCore)/Modules/applepay \
    56     $(WebCore)/Modules/applepay/paymentrequest \
    57     $(WebCore)/Modules/async-clipboard \
    58     $(WebCore)/Modules/beacon \
    59     $(WebCore)/Modules/cache \
    60     $(WebCore)/Modules/contact-picker \
    61     $(WebCore)/Modules/credentialmanagement \
    62     $(WebCore)/Modules/encryptedmedia \
    63     $(WebCore)/Modules/encryptedmedia/legacy \
    64     $(WebCore)/Modules/entriesapi \
    65     $(WebCore)/Modules/fetch \
    66     $(WebCore)/Modules/gamepad \
    67     $(WebCore)/Modules/geolocation \
    68     $(WebCore)/Modules/highlight \
    69     $(WebCore)/Modules/indexeddb \
    70     $(WebCore)/Modules/indieui \
    71     $(WebCore)/Modules/mediacapabilities \
    72     $(WebCore)/Modules/mediacontrols \
    73     $(WebCore)/Modules/mediarecorder \
    74     $(WebCore)/Modules/mediasource \
    75     $(WebCore)/Modules/mediastream \
    76     $(WebCore)/Modules/notifications \
    77     $(WebCore)/Modules/paymentrequest \
    78     $(WebCore)/Modules/pictureinpicture \
    79     $(WebCore)/Modules/plugins \
    80     $(WebCore)/Modules/quota \
    81         $(WebCore)/Modules/remoteplayback \
    82     $(WebCore)/Modules/speech \
    83     $(WebCore)/Modules/streams \
    84     $(WebCore)/Modules/webaudio \
    85     $(WebCore)/Modules/webauthn \
    86     $(WebCore)/Modules/webdatabase \
    87     $(WebCore)/Modules/webdriver \
    88     $(WebCore)/Modules/webgpu \
    89     $(WebCore)/Modules/websockets \
    90     $(WebCore)/Modules/webxr \
    91     $(WebCore)/accessibility \
    92     $(WebCore)/animation \
    93     $(WebCore)/bindings/js \
    94     $(WebCore)/crypto \
    95     $(WebCore)/crypto/keys \
    96     $(WebCore)/crypto/parameters \
    97     $(WebCore)/css \
    98     $(WebCore)/css/typedom \
    99     $(WebCore)/dom \
    100     $(WebCore)/editing \
    101     $(WebCore)/fileapi \
    102     $(WebCore)/html \
    103     $(WebCore)/html/canvas \
    104     $(WebCore)/html/shadow \
    105     $(WebCore)/html/track \
    106     $(WebCore)/inspector \
    107     $(WebCore)/loader/appcache \
    108     $(WebCore)/mathml \
    109     $(WebCore)/page \
    110     $(WebCore)/platform/network \
    111     $(WebCore)/plugins \
    112     $(WebCore)/storage \
    113     $(WebCore)/svg \
    114     $(WebCore)/testing \
    115     $(WebCore)/websockets \
    116     $(WebCore)/workers \
    117     $(WebCore)/workers/service \
    118     $(WebCore)/worklets \
    119     $(WebCore)/xml \
    120 #
     48FEATURE_AND_PLATFORM_DEFINE_DEPENDENCIES = $(WebCore)/DerivedSources.make
     49
     50# --------
    12151
    12252JS_BINDING_IDLS = \
     
    12858    $(WebCore)/Modules/applepay/ApplePayErrorContactField.idl \
    12959    $(WebCore)/Modules/applepay/ApplePayInstallmentConfiguration.idl \
    130         $(WebCore)/Modules/applepay/ApplePayInstallmentItem.idl \
    131         $(WebCore)/Modules/applepay/ApplePayInstallmentItemType.idl \
    132         $(WebCore)/Modules/applepay/ApplePayInstallmentRetailChannel.idl \
     60    $(WebCore)/Modules/applepay/ApplePayInstallmentItem.idl \
     61    $(WebCore)/Modules/applepay/ApplePayInstallmentItemType.idl \
     62    $(WebCore)/Modules/applepay/ApplePayInstallmentRetailChannel.idl \
    13363    $(WebCore)/Modules/applepay/ApplePayLineItem.idl \
    13464    $(WebCore)/Modules/applepay/ApplePayMerchantCapability.idl \
     
    369299    $(WebCore)/Modules/quota/StorageUsageCallback.idl \
    370300    $(WebCore)/Modules/quota/WorkerNavigator+StorageQuota.idl \
    371         $(WebCore)/Modules/remoteplayback/HTMLMediaElement+RemotePlayback.idl \
    372         $(WebCore)/Modules/remoteplayback/RemotePlayback.idl \
    373         $(WebCore)/Modules/remoteplayback/RemotePlaybackAvailabilityCallback.idl \
     301    $(WebCore)/Modules/remoteplayback/HTMLMediaElement+RemotePlayback.idl \
     302    $(WebCore)/Modules/remoteplayback/RemotePlayback.idl \
     303    $(WebCore)/Modules/remoteplayback/RemotePlaybackAvailabilityCallback.idl \
    374304    $(WebCore)/Modules/speech/DOMWindow+SpeechSynthesis.idl \
    375305    $(WebCore)/Modules/speech/SpeechSynthesis.idl \
     
    465395    $(WebCore)/Modules/webaudio/ScriptProcessorNode.idl \
    466396    $(WebCore)/Modules/webaudio/StereoPannerNode.idl \
    467         $(WebCore)/Modules/webaudio/StereoPannerOptions.idl \
     397    $(WebCore)/Modules/webaudio/StereoPannerOptions.idl \
    468398    $(WebCore)/Modules/webaudio/WaveShaperNode.idl \
    469399    $(WebCore)/Modules/webaudio/WaveShaperOptions.idl \
     
    13581288-include WebCoreDerivedSourcesAdditions.make
    13591289
    1360 JS_BINDING_IDLS += $(ADDITIONAL_BINDING_IDLS)
    1361 
    1362 all : $(ADDITIONAL_BINDING_IDLS:%.idl=JS%.h)
    1363 
    1364 vpath %.idl $(BUILT_PRODUCTS_DIR)/usr/local/include $(SDKROOT)/usr/local/include
    1365 
    1366 $(ADDITIONAL_BINDING_IDLS) : % : WebKitAdditions/%
    1367         cp $< .
     1290# Convert the IDLs in ADDITIONAL_BINDING_IDLS -- which are just bare names
     1291# -- into full paths. We want to look for the IDL files in the set of paths
     1292# given in ADDITIONAL_BINDING_IDLS_PATHS, preferring the order in which the
     1293# paths are specified.
     1294#
     1295# We perform this conversions by taking each IDL from ADDITIONAL_BINDING_IDLS
     1296# in turn. For each one, prepend it with the paths in
     1297# ADDITIONAL_BINDING_IDLS_PATHS. Then pass those paths for that single IDL to
     1298# $(realpath) in order to evaluate their existence. Take the resulting list
     1299# (which should have 1..N items in it, depending on the number of directories
     1300# in ADDITIONAL_BINDING_IDLS_PATHS and the existence of the IDL file at each
     1301# location) and pick the first one. That will be the path we use for that IDL.
     1302#
     1303# Note that we don't want to find the IDL files by using `vpath`. Of necessity,
     1304# those facilities reference directories in $(WebCore) which also include IDL
     1305# files. We don't want to find any files listed in ADDITIONAL_BINDING_IDLS that
     1306# exist on those paths. So we go through the process of looking up the IDLs
     1307# along the desired set of paths ourselves.
     1308
     1309ADDITIONAL_BINDING_IDLS_PATHS = $(BUILT_PRODUCTS_DIR) $(SDKROOT)
     1310JS_BINDING_IDLS += \
     1311    $(foreach \
     1312        idl, \
     1313        $(ADDITIONAL_BINDING_IDLS), \
     1314        $(firstword $(realpath $(foreach \
     1315            path, \
     1316            $(ADDITIONAL_BINDING_IDLS_PATHS), \
     1317            $(path)/usr/local/include/WebKitAdditions/$(idl)))))
    13681318
    13691319ifneq ($(findstring ENABLE_IOS_TOUCH_EVENTS,$(FEATURE_AND_PLATFORM_DEFINES)), ENABLE_IOS_TOUCH_EVENTS)
     
    14531403
    14541404all : $(CSS_PROPERTY_NAME_FILES)
    1455 $(CSS_PROPERTY_NAME_FILES_PATTERNS) : $(WEBCORE_CSS_PROPERTY_NAMES) css/makeprop.pl $(FEATURE_AND_PLATFORM_DEFINE_DEPENDENCIES)
     1405$(CSS_PROPERTY_NAME_FILES_PATTERNS) : $(WEBCORE_CSS_PROPERTY_NAMES) $(WebCore)/css/makeprop.pl $(FEATURE_AND_PLATFORM_DEFINE_DEPENDENCIES)
    14561406        $(PERL) -pe '' $(WEBCORE_CSS_PROPERTY_NAMES) > CSSProperties.json
    14571407        $(PERL) "$(WebCore)/css/makeprop.pl" --defines "$(FEATURE_AND_PLATFORM_DEFINES)"
     
    14641414
    14651415all : $(CSS_VALUE_KEYWORD_FILES)
    1466 $(CSS_VALUE_KEYWORD_FILES_PATTERNS) : $(WEBCORE_CSS_VALUE_KEYWORDS) css/makevalues.pl bindings/scripts/preprocessor.pm $(FEATURE_AND_PLATFORM_DEFINE_DEPENDENCIES)
     1416$(CSS_VALUE_KEYWORD_FILES_PATTERNS) : $(WEBCORE_CSS_VALUE_KEYWORDS) $(WebCore)/css/makevalues.pl $(WebCore)/bindings/scripts/preprocessor.pm $(FEATURE_AND_PLATFORM_DEFINE_DEPENDENCIES)
    14671417        $(PERL) -pe '' $(WEBCORE_CSS_VALUE_KEYWORDS) > CSSValueKeywords.in
    14681418        $(PERL) "$(WebCore)/css/makevalues.pl" --defines "$(FEATURE_AND_PLATFORM_DEFINES)"
     
    14851435
    14861436DOMJITAbstractHeapRepository.h : $(WebCore)/domjit/generate-abstract-heap.rb $(WebCore)/domjit/DOMJITAbstractHeapRepository.yaml
    1487         $(RUBY) "$(WebCore)/domjit/generate-abstract-heap.rb" $(WebCore)/domjit/DOMJITAbstractHeapRepository.yaml ./DOMJITAbstractHeapRepository.h
     1437        $(RUBY) "$(WebCore)/domjit/generate-abstract-heap.rb" $(WebCore)/domjit/DOMJITAbstractHeapRepository.yaml DOMJITAbstractHeapRepository.h
    14881438
    14891439# --------
     
    14931443all : XMLViewerCSS.h
    14941444
    1495 XMLViewerCSS.h : xml/XMLViewer.css
    1496         $(PYTHON) $(JavaScriptCore_SCRIPTS_DIR)/cssmin.py <"$(WebCore)/xml/XMLViewer.css" > ./XMLViewer.min.css
    1497         $(PERL) $(JavaScriptCore_SCRIPTS_DIR)/xxd.pl XMLViewer_css ./XMLViewer.min.css XMLViewerCSS.h
     1445XMLViewerCSS.h : $(WebCore)/xml/XMLViewer.css
     1446        $(PYTHON) $(JavaScriptCore_SCRIPTS_DIR)/cssmin.py < "$(WebCore)/xml/XMLViewer.css" > XMLViewer.min.css
     1447        $(PERL) $(JavaScriptCore_SCRIPTS_DIR)/xxd.pl XMLViewer_css XMLViewer.min.css XMLViewerCSS.h
    14981448        $(DELETE) XMLViewer.min.css
    14991449
     
    15041454all : XMLViewerJS.h
    15051455
    1506 XMLViewerJS.h : xml/XMLViewer.js
    1507         $(PYTHON) $(JavaScriptCore_SCRIPTS_DIR)/jsmin.py <"$(WebCore)/xml/XMLViewer.js" > ./XMLViewer.min.js
    1508         $(PERL) $(JavaScriptCore_SCRIPTS_DIR)/xxd.pl XMLViewer_js ./XMLViewer.min.js XMLViewerJS.h
     1456XMLViewerJS.h : $(WebCore)/xml/XMLViewer.js
     1457        $(PYTHON) $(JavaScriptCore_SCRIPTS_DIR)/jsmin.py < "$(WebCore)/xml/XMLViewer.js" > XMLViewer.min.js
     1458        $(PERL) $(JavaScriptCore_SCRIPTS_DIR)/xxd.pl XMLViewer_js XMLViewer.min.js XMLViewerJS.h
    15091459        $(DELETE) XMLViewer.min.js
    15101460
     
    15131463# HTML entity names
    15141464
    1515 HTMLEntityTable.cpp : html/parser/HTMLEntityNames.in $(WebCore)/html/parser/create-html-entity-table
     1465HTMLEntityTable.cpp : $(WebCore)/html/parser/HTMLEntityNames.in $(WebCore)/html/parser/create-html-entity-table
    15161466        $(PYTHON) $(WebCore)/html/parser/create-html-entity-table -o HTMLEntityTable.cpp $(WebCore)/html/parser/HTMLEntityNames.in
    15171467
     
    15281478
    15291479all : $(HTTP_HEADER_NAMES_FILES)
    1530 $(HTTP_HEADER_NAMES_FILES_PATTERNS) : platform/network/HTTPHeaderNames.in $(WebCore)/platform/network/create-http-header-name-table
     1480$(HTTP_HEADER_NAMES_FILES_PATTERNS) : $(WebCore)/platform/network/HTTPHeaderNames.in $(WebCore)/platform/network/create-http-header-name-table
    15311481        $(PYTHON) $(WebCore)/platform/network/create-http-header-name-table $(WebCore)/platform/network/HTTPHeaderNames.in gperf
    15321482
     
    15351485# color names
    15361486
    1537 ColorData.cpp : platform/ColorData.gperf $(WebCore)/make-hash-tools.pl
     1487ColorData.cpp : $(WebCore)/platform/ColorData.gperf $(WebCore)/make-hash-tools.pl
    15381488        $(PERL) $(WebCore)/make-hash-tools.pl . $(WebCore)/platform/ColorData.gperf
    15391489
     
    15641514USER_AGENT_STYLE_SHEETS += $(WebCore)/html/shadow/meterElementShadow.css
    15651515
    1566 UserAgentStyleSheets.h : css/make-css-file-arrays.pl bindings/scripts/preprocessor.pm $(USER_AGENT_STYLE_SHEETS) $(FEATURE_AND_PLATFORM_DEFINE_DEPENDENCIES)
     1516UserAgentStyleSheets.h : $(WebCore)/css/make-css-file-arrays.pl $(WebCore)/bindings/scripts/preprocessor.pm $(USER_AGENT_STYLE_SHEETS) $(FEATURE_AND_PLATFORM_DEFINE_DEPENDENCIES)
    15671517        $(PERL) $< --defines "$(FEATURE_AND_PLATFORM_DEFINES)" $@ UserAgentStyleSheetsData.cpp $(USER_AGENT_STYLE_SHEETS)
    15681518
     
    15901540PLUG_INS_RESOURCES = $(WebCore)/Resources/plugIns.js
    15911541
    1592 PlugInsResources.h : css/make-css-file-arrays.pl bindings/scripts/preprocessor.pm $(PLUG_INS_RESOURCES) $(FEATURE_AND_PLATFORM_DEFINE_DEPENDENCIES)
     1542PlugInsResources.h : $(WebCore)/css/make-css-file-arrays.pl $(WebCore)/bindings/scripts/preprocessor.pm $(PLUG_INS_RESOURCES) $(FEATURE_AND_PLATFORM_DEFINE_DEPENDENCIES)
    15931543        $(PERL) $< --defines "$(FEATURE_AND_PLATFORM_DEFINES)" $@ PlugInsResourcesData.cpp $(PLUG_INS_RESOURCES)
    15941544
     
    16021552
    16031553all : $(WEBKIT_FONT_FAMILY_NAME_FILES)
    1604 $(WEBKIT_FONT_FAMILY_NAME_FILES_PATTERNS): dom/make_names.pl bindings/scripts/Hasher.pm bindings/scripts/StaticString.pm css/WebKitFontFamilyNames.in
     1554$(WEBKIT_FONT_FAMILY_NAME_FILES_PATTERNS): $(WebCore)/dom/make_names.pl $(WebCore)/bindings/scripts/Hasher.pm $(WebCore)/bindings/scripts/StaticString.pm $(WebCore)/css/WebKitFontFamilyNames.in
    16051555        $(PERL) $< --fonts $(WebCore)/css/WebKitFontFamilyNames.in
    16061556
     
    16201570all : $(HTML_TAG_FILES)
    16211571
    1622 $(HTML_TAG_FILES_PATTERNS) : dom/make_names.pl bindings/scripts/Hasher.pm bindings/scripts/StaticString.pm html/HTMLTagNames.in html/HTMLAttributeNames.in $(FEATURE_AND_PLATFORM_DEFINE_DEPENDENCIES)
     1572$(HTML_TAG_FILES_PATTERNS) : $(WebCore)/dom/make_names.pl $(WebCore)/bindings/scripts/Hasher.pm $(WebCore)/bindings/scripts/StaticString.pm $(WebCore)/html/HTMLTagNames.in $(WebCore)/html/HTMLAttributeNames.in $(FEATURE_AND_PLATFORM_DEFINE_DEPENDENCIES)
    16231573        $(PERL) $< --tags $(WebCore)/html/HTMLTagNames.in --attrs $(WebCore)/html/HTMLAttributeNames.in --factory --wrapperFactory
    16241574
    1625 XMLNSNames.cpp : dom/make_names.pl bindings/scripts/Hasher.pm bindings/scripts/StaticString.pm xml/xmlnsattrs.in
     1575XMLNSNames.cpp : $(WebCore)/dom/make_names.pl $(WebCore)/bindings/scripts/Hasher.pm $(WebCore)/bindings/scripts/StaticString.pm $(WebCore)/xml/xmlnsattrs.in
    16261576        $(PERL) $< --attrs $(WebCore)/xml/xmlnsattrs.in
    16271577
    1628 XMLNames.cpp : dom/make_names.pl bindings/scripts/Hasher.pm bindings/scripts/StaticString.pm xml/xmlattrs.in
     1578XMLNames.cpp : $(WebCore)/dom/make_names.pl $(WebCore)/bindings/scripts/Hasher.pm $(WebCore)/bindings/scripts/StaticString.pm $(WebCore)/xml/xmlattrs.in
    16291579        $(PERL) $< --attrs $(WebCore)/xml/xmlattrs.in
    16301580
     
    16461596all : $(SVG_TAG_FILES)
    16471597
    1648 $(SVG_TAG_FILES_PATTERNS) : dom/make_names.pl bindings/scripts/Hasher.pm bindings/scripts/StaticString.pm svg/svgtags.in svg/svgattrs.in $(FEATURE_AND_PLATFORM_DEFINE_DEPENDENCIES)
     1598$(SVG_TAG_FILES_PATTERNS) : $(WebCore)/dom/make_names.pl $(WebCore)/bindings/scripts/Hasher.pm $(WebCore)/bindings/scripts/StaticString.pm $(WebCore)/svg/svgtags.in $(WebCore)/svg/svgattrs.in $(FEATURE_AND_PLATFORM_DEFINE_DEPENDENCIES)
    16491599        $(PERL) $< --tags $(WebCore)/svg/svgtags.in --attrs $(WebCore)/svg/svgattrs.in --factory --wrapperFactory
    16501600
    1651 XLinkNames.cpp : dom/make_names.pl bindings/scripts/Hasher.pm bindings/scripts/StaticString.pm svg/xlinkattrs.in
     1601XLinkNames.cpp : $(WebCore)/dom/make_names.pl $(WebCore)/bindings/scripts/Hasher.pm $(WebCore)/bindings/scripts/StaticString.pm $(WebCore)/svg/xlinkattrs.in
    16521602        $(PERL) $< --attrs $(WebCore)/svg/xlinkattrs.in
    16531603
     
    16561606# Register event constructors and targets
    16571607
    1658 EVENT_NAMES = EventNames.in $(ADDITIONAL_EVENT_NAMES)
     1608EVENT_NAMES = $(WebCore)/dom/EventNames.in $(ADDITIONAL_EVENT_NAMES)
    16591609
    16601610EVENT_FACTORY_FILES = \
     
    16661616
    16671617all : $(EVENT_FACTORY_FILES)
    1668 $(EVENT_FACTORY_PATTERNS) : dom/make_event_factory.pl $(EVENT_NAMES)
     1618$(EVENT_FACTORY_PATTERNS) : $(WebCore)/dom/make_event_factory.pl $(EVENT_NAMES)
    16691619        $(PERL) $< $(addprefix --input , $(filter-out $(WebCore)/dom/make_event_factory.pl, $^))
    16701620
    1671 EVENT_TARGET_FACTORY = EventTargetFactory.in $(ADDITIONAL_EVENT_TARGET_FACTORY)
     1621EVENT_TARGET_FACTORY = $(WebCore)/dom/EventTargetFactory.in $(ADDITIONAL_EVENT_TARGET_FACTORY)
    16721622
    16731623EVENT_TARGET_FACTORY_FILES = \
     
    16791629
    16801630all : $(EVENT_TARGET_FACTORY_FILES)
    1681 $(EVENT_TARGET_FACTORY_PATTERNS) : dom/make_event_factory.pl $(EVENT_TARGET_FACTORY)
     1631$(EVENT_TARGET_FACTORY_PATTERNS) : $(WebCore)/dom/make_event_factory.pl $(EVENT_TARGET_FACTORY)
    16821632        $(PERL) $< $(addprefix --input , $(filter-out $(WebCore)/dom/make_event_factory.pl, $^))
    16831633
     
    16981648
    16991649all : $(MATH_ML_GENERATED_FILES)
    1700 $(MATH_ML_GENERATED_PATTERNS) : dom/make_names.pl bindings/scripts/Hasher.pm bindings/scripts/StaticString.pm mathml/mathtags.in mathml/mathattrs.in
     1650$(MATH_ML_GENERATED_PATTERNS) : $(WebCore)/dom/make_names.pl $(WebCore)/bindings/scripts/Hasher.pm $(WebCore)/bindings/scripts/StaticString.pm $(WebCore)/mathml/mathtags.in $(WebCore)/mathml/mathattrs.in
    17011651        $(PERL) $< --tags $(WebCore)/mathml/mathtags.in --attrs $(WebCore)/mathml/mathattrs.in --factory --wrapperFactory
    17021652
     
    17231673
    17241674all : $(GENERATE_SETTINGS_FILES)
    1725 $(GENERATE_SETTINGS_PATTERNS) : $(WebCore)/Scripts/GenerateSettings.rb $(GENERATE_SETTINGS_TEMPLATES) $(WEB_PREFERENCES_INPUT_FILES) page/Settings.yaml
     1675$(GENERATE_SETTINGS_PATTERNS) : $(WebCore)/Scripts/GenerateSettings.rb $(GENERATE_SETTINGS_TEMPLATES) $(WEB_PREFERENCES_INPUT_FILES) $(WebCore)/page/Settings.yaml
    17261676        $(RUBY) $< --additionalSettings $(WebCore)/page/Settings.yaml --base ${WTF_BUILD_SCRIPTS_DIR}/Preferences/WebPreferences.yaml --debug ${WTF_BUILD_SCRIPTS_DIR}/Preferences/WebPreferencesDebug.yaml --experimental ${WTF_BUILD_SCRIPTS_DIR}/Preferences/WebPreferencesExperimental.yaml --internal ${WTF_BUILD_SCRIPTS_DIR}/Preferences/WebPreferencesInternal.yaml
    17271677
     
    17431693
    17441694COMMON_BINDINGS_SCRIPTS = \
    1745     bindings/scripts/CodeGenerator.pm \
    1746     bindings/scripts/IDLParser.pm \
    1747     bindings/scripts/generate-bindings.pl \
    1748     bindings/scripts/preprocessor.pm
     1695    $(WebCore)/bindings/scripts/CodeGenerator.pm \
     1696    $(WebCore)/bindings/scripts/IDLParser.pm \
     1697    $(WebCore)/bindings/scripts/generate-bindings.pl \
     1698    $(WebCore)/bindings/scripts/preprocessor.pm
    17491699
    17501700PREPROCESS_IDLS_SCRIPTS = \
    1751     bindings/scripts/preprocess-idls.pl
     1701    $(WebCore)/bindings/scripts/preprocess-idls.pl
    17521702
    17531703# JS bindings generator
     
    17801730IDL_COMMON_ARGS = $(IDL_INCLUDES:%=--include %) --write-dependencies --outputDir .
    17811731
    1782 JS_BINDINGS_SCRIPTS = $(COMMON_BINDINGS_SCRIPTS) bindings/scripts/CodeGeneratorJS.pm
     1732JS_BINDINGS_SCRIPTS = $(COMMON_BINDINGS_SCRIPTS) $(WebCore)/bindings/scripts/CodeGeneratorJS.pm
    17831733
    17841734SUPPLEMENTAL_DEPENDENCY_FILE = SupplementalDependencies.txt
     
    18081758IDL_INTERMEDIATE_PATTERNS = $(subst .,%,$(IDL_INTERMEDIATE_FILES))
    18091759
    1810 $(IDL_INTERMEDIATE_PATTERNS) : $(PREPROCESS_IDLS_SCRIPTS) $(IDL_ATTRIBUTES_FILE) $(JS_BINDING_IDLS) $(FEATURE_AND_PLATFORM_DEFINE_DEPENDENCIES) DerivedSources.make $(FEATURE_AND_PLATFORM_DEFINE_DEPENDENCIES)
     1760$(IDL_INTERMEDIATE_PATTERNS) : $(PREPROCESS_IDLS_SCRIPTS) $(IDL_ATTRIBUTES_FILE) $(JS_BINDING_IDLS) $(FEATURE_AND_PLATFORM_DEFINE_DEPENDENCIES)
    18111761        $(shell echo $(JS_BINDING_IDLS) | tr " " "\n" > IDLFileNamesList.txt)
    18121762        $(PERL) $(WebCore)/bindings/scripts/preprocess-idls.pl --defines "$(FEATURE_AND_PLATFORM_DEFINES) LANGUAGE_JAVASCRIPT" --idlFileNamesList IDLFileNamesList.txt --idlAttributesFile $(IDL_ATTRIBUTES_FILE) --supplementalDependencyFile $(SUPPLEMENTAL_DEPENDENCY_FILE) --isoSubspacesHeaderFile $(ISO_SUBSPACES_HEADER_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) --audioWorkletGlobalScopeConstructorsFile $(AUDIOWORKLETGLOBALSCOPE_CONSTRUCTORS_FILE) --supplementalMakefileDeps $(SUPPLEMENTAL_MAKEFILE_DEPS)
     1763
     1764# The "JS%.cpp JS%.h : %.idl ..." rule takes IDL files from a number of
     1765# locations and compiles them into header and implementation files in one
     1766# single location. In order for the pattern matching to work, `vpath` needs to
     1767# be set up to find all of these IDL files, no matter where they are. To build
     1768# up `vpath`, take the set of IDL files and extract their directory
     1769# components. When doing this, make sure that the paths containing
     1770# WebKitAdditions appear first so that they can override the standard IDL
     1771# files.
     1772
     1773IDL_VPATH = $(sort $(foreach f,$(JS_BINDING_IDLS),$(realpath $(dir $(f)))))
     1774OVERRIDE_IDL_VPATH = $(filter %WebKitAdditions,$(IDL_VPATH))
     1775STANDARD_IDL_VPATH = $(filter-out %WebKitAdditions,$(IDL_VPATH))
     1776vpath %.idl $(OVERRIDE_IDL_VPATH) $(STANDARD_IDL_VPATH)
    18131777
    18141778JS%.cpp JS%.h : %.idl $(JS_BINDINGS_SCRIPTS) $(IDL_ATTRIBUTES_FILE) $(IDL_INTERMEDIATE_FILES) $(FEATURE_AND_PLATFORM_DEFINE_DEPENDENCIES)
     
    18271791all : CommandLineAPIModuleSource.h
    18281792
    1829 CommandLineAPIModuleSource.h : CommandLineAPIModuleSource.js
    1830         echo "//# sourceURL=__InjectedScript_CommandLineAPIModuleSource.js" > ./CommandLineAPIModuleSource.min.js
    1831         $(PYTHON) $(JavaScriptCore_SCRIPTS_DIR)/jsmin.py <$(WebCore)/inspector/CommandLineAPIModuleSource.js >> ./CommandLineAPIModuleSource.min.js
    1832         $(PERL) $(JavaScriptCore_SCRIPTS_DIR)/xxd.pl CommandLineAPIModuleSource_js ./CommandLineAPIModuleSource.min.js CommandLineAPIModuleSource.h
     1793CommandLineAPIModuleSource.h : $(WebCore)/inspector/CommandLineAPIModuleSource.js
     1794        echo "//# sourceURL=__InjectedScript_CommandLineAPIModuleSource.js" > CommandLineAPIModuleSource.min.js
     1795        $(PYTHON) $(JavaScriptCore_SCRIPTS_DIR)/jsmin.py < $(WebCore)/inspector/CommandLineAPIModuleSource.js >> CommandLineAPIModuleSource.min.js
     1796        $(PERL) $(JavaScriptCore_SCRIPTS_DIR)/xxd.pl CommandLineAPIModuleSource_js CommandLineAPIModuleSource.min.js CommandLineAPIModuleSource.h
    18331797        $(DELETE) CommandLineAPIModuleSource.min.js
    18341798
     
    18871851# generated should not affect other builtins when not passing '--combined' to the generator.
    18881852
    1889 WebCore_BUILTINS_SOURCES_LIST : $(JavaScriptCore_SCRIPTS_DIR)/UpdateContents.py DerivedSources.make
     1853WebCore_BUILTINS_SOURCES_LIST : $(JavaScriptCore_SCRIPTS_DIR)/UpdateContents.py $(WebCore)/DerivedSources.make
    18901854        $(PYTHON) $(JavaScriptCore_SCRIPTS_DIR)/UpdateContents.py '$(WebCore_BUILTINS_SOURCES)' $@
    18911855
    1892 WebCore_BUILTINS_DEPENDENCIES_LIST : $(JavaScriptCore_SCRIPTS_DIR)/UpdateContents.py DerivedSources.make
     1856WebCore_BUILTINS_DEPENDENCIES_LIST : $(JavaScriptCore_SCRIPTS_DIR)/UpdateContents.py $(WebCore)/DerivedSources.make
    18931857        $(PYTHON) $(JavaScriptCore_SCRIPTS_DIR)/UpdateContents.py '$(BUILTINS_GENERATOR_SCRIPTS)' $@
    18941858
     
    18961860        $(PYTHON) $(JavaScriptCore_SCRIPTS_DIR)/generate-js-builtins.py --wrappers-only --output-directory . --framework WebCore $(WebCore_BUILTINS_SOURCES)
    18971861
     1862# See comments for IDL_VPATH for a description of what this is for.
     1863vpath %.js $(sort $(foreach f,$(WebCore_BUILTINS_SOURCES),$(realpath $(dir $(f)))))
     1864
    18981865%Builtins.h: %.js $(BUILTINS_GENERATOR_SCRIPTS) WebCore_BUILTINS_DEPENDENCIES_LIST
    18991866        $(PYTHON) $(JavaScriptCore_SCRIPTS_DIR)/generate-js-builtins.py --output-directory . --framework WebCore $<
Note: See TracChangeset for help on using the changeset viewer.