In Bug 117900 Comment 2, Chris Dumez wrote a interesting test case: > - Do a full build > - Edit Source/WebCore/page/History.idl and add a [NoInterfaceObject] extended attribute to the IDL interface > - Do an incremental build > > What should happen is that: > a) JSHistory.* are regenerated. > b) JSDOMWindow.* should be regenerated so that the Window object no longer has a 'History' property. To support this case, generate-bindings-all.pl needs to read supplemental_dependency.tmp before/after invoking preprocess-idls.pl.
There is another solution. IDL's dep file does not have the information about supplements at the moment. For example: In DerivedSources/WebCore/JSDOMWindow.dep: > JSDOMWindow.h : EventTarget.idl > EventTarget.idl : On the other handle, supplemental_dependency.tmp has following information: > C:/home/0000134108/work/webkit/webkit1/Source/WebCore/page/DOMWindow.idl C:/home/0000134108/work/webkit/webkit1/Source/WebCore/Modules/fetch/DOMWindowFetch.idl C:/home/0000134108/work/webkit/webkit1/Source/WebCore/Modules/indexeddb/DOMWindowIndexedDatabase.idl C:/home/0000134108/work/webkit/webkit1/Source/WebCore/Modules/notifications/DOMWindowNotifications.idl C:/home/0000134108/work/webkit/webkit1/Source/WebCore/Modules/speech/DOMWindowSpeechSynthesis.idl C:/home/0000134108/work/webkit/webkit1/Source/WebCore/Modules/webdatabase/DOMWindowWebDatabase.idl C:/home/0000134108/work/webkit/webkit1/Source/WebCore/dom/GlobalEventHandlers.idl C:/home/0000134108/work/webkit/webkit1/Source/WebCore/page/GlobalCrypto.idl C:/home/0000134108/work/webkit/webkit1/Source/WebCore/page/WindowEventHandlers.idl C:/home/0000134108/work/webkit/webkit1/Source/WebCore/page/WindowOrWorkerGlobalScope.idl C:/home/0000134108/work/webkit/webkit1/WebKitBuild/Debug/DerivedSources/WebCore/DOMWindowConstructors.idl If dep files include information of supplements, this problem can be solved. In comment 0's example, modifying History.idl triggers compiling DOMWindow.idl. In above JSDOMWindow.dep example, if the dependency (EventTarget.idl) is removed, 'make' just ignore because the second line exists. This is not ideal. In this case, the binding should be regenerated.
(In reply to comment #1) > In above JSDOMWindow.dep example, if the > dependency (EventTarget.idl) is removed, 'make' just ignore > because the second line exists. This is not ideal. In this case, > the binding should be regenerated. This is wrong. I didn't understand how 'make' works in this case. 'Make' works fine.
It turned out generate-bindings-all.pl has more problems. This bug will be solved if I solve Bug 164054. Closed as DUPLICATE. *** This bug has been marked as a duplicate of bug 164054 ***