Since the Objective C bindings essentially flatten multiple inheritance in the generated DOM*.mm files, there are dependencies on ancestor IDL files that aren't noticed by DerivedSources.make. For example, the SVGAnimationElement interface inheritance hierarchy looks like: SVGAnimationElement | +--SVGElement | | | +--Element | | | +-- ... | +--SVGTests | +--SVGExternalResourcesRequired | +--ElementTimeControl All of the attributes and operations in SVGTests, SVGExternalResourcesRequired and ElementTimeControl will be implemented in SVGAnimationElement.mm, but make doesn't know that SVGAnimationElement.mm depends on SVGTests.idl, SVGExternalResourcesRequired.idl and ElementTimeControl.idl. Thus, if a patch touches ElementTimeControl.idl, for example, the build will break unless a clean is done first (or something else that forces the bindings to be regenerated, such as touching CodeGenerator.pm). This probably affects the V8 bindings too, but I haven't looked closely enough to be sure.
Same for the JS bindings.
Created attachment 39327 [details] Patch v1 This patch makes DerivedSources.make use automatically generated dependency information à la http://make.paulandlesley.org/autodep.html#advanced to ensure that changes to multiply inherited IDL interfaces (such as ElementTimeControl in the example above) cause the JS and ObJC binding classes to be regenerated.
Comment on attachment 39327 [details] Patch v1 Wow. That's just awesome. It would be nice to see an example .deps file, but this looks great!
Comment on attachment 39327 [details] Patch v1 Clearing flags on attachment: 39327 Committed r48266: <http://trac.webkit.org/changeset/48266>
All reviewed patches have been landed. Closing bug.