The autotools build system currently has long lists of generated JavaScript DOM binding sources and headers. This is redundant since we already maintain lists of IDL files and it's a pain to maintain whenever WebCore changes. These lists are set to become even more unwieldy when we start to add new DOM language bindings (GObject, COM?). Patch coming up.
Created attachment 24105 [details] Automatically derive the lists ChangeLog | 17 + GNUmakefile.am | 3 WebCore/ChangeLog | 17 + WebCore/GNUmakefile.am | 691 ++++--------------------------------------------- 4 files changed, 95 insertions(+), 633 deletions(-) The interesting part of this patch is around line 900. I've tested this with different versions of automake (including 1.10) and it works well without any regressions in dependency tracking or dist support.
webcore_built_nosources += $(patsubst %.idl,DerivedSources/JS%.h,$(notdir $(IDL_BINDINGS))) hooraaaaay. now if _only_ if was possible to do a translation of upper-case names to decamelized lower-case-plus-hypen-names.... in Gnumake "%" substitutions, one of the requests of having the dom bindings header files as gdom-xxx-xxx-xxx.h could be fulfilled.
Comment on attachment 24105 [details] Automatically derive the lists r=me
Landed in r37382. lkcl: In theory you could even call out to a perl/shell script using the same technique now if necessary!
Why are we still doing this entirely separately for automake and non-automake platforms? Can we get this merged with DerivedSources.make some day soon?
This broke the buildbot: (cd .libs && rm -f libJavaScriptCore.la && ln -s ../libJavaScriptCore.la libJavaScriptCore.la) if ./doltcompile g++ -DHAVE_CONFIG_H -I. -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build -I. -I/home/oe/webkit/deps/tmp/staging/i686-angstrom-linux/usr/include/ -DWTF_USE_ICU_UNICODE=1 -DBUILDING_CAIRO__=1 -DBUILDING_GTK__=1 -DWTF_CHANGES -DXP_UNIX -DNDEBUG -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/bindings/js -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/bridge -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/bridge/c -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/css -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/dom -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/editing -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/history -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/html -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/inspector -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/loader -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/loader/appcache -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/loader/archive -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/loader/icon -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/page -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/page/animation -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/platform -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/platform/graphics -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/platform/graphics/filters -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/platform/image-decoders -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/platform/image-decoders/bmp -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/platform/image-decoders/gif -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/platform/image-decoders/ico -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/platform/image-decoders/jpeg -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/platform/image-decoders/png -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/platform/image-decoders/xbm -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/platform/network -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/platform/text -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/plugins -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/rendering -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/rendering/style -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/xml -I./WebCore/bindings/js -DWTF_USE_CURL=1 -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/platform/network/curl -DENABLE_OFFLINE_WEB_APPLICATIONS=1 -DENABLE_DASHBOARD_SUPPORT=1 -DENABLE_DATABASE=1 -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/platform/sql -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/storage -DENABLE_DOM_STORAGE=1 -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/storage -DENABLE_ICONDATABASE=1 -DENABLE_XPATH=1 -DENABLE_XSLT=1 -DENABLE_SVG=1 -I\/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/svg -I\/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/svg/animation -I\/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/svg/graphics -I\/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/svg/graphics/filters -DENABLE_SVG_USE=1 -DENABLE_SVG_FOREIGN_OBJECT=1 -DENABLE_SVG_FONTS=1 -DENABLE_SVG_AS_IMAGE=1 -DENABLE_SVG_ANIMATION=1 -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/JavaScriptCore -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/JavaScriptCore/ForwardingHeaders -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/JavaScriptCore/wtf -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/JavaScriptCore/kjs -I./DerivedSources -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/JavaScriptCore/API -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/JavaScriptCore/ForwardingHeaders -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/JavaScriptCore/VM -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/JavaScriptCore/profiler -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/JavaScriptCore/wtf/unicode -I./JavaScriptCore/pcre -I./JavaScriptCore/kjs -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/loader/gtk -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/page/gtk -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/platform/graphics/cairo -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/platform/graphics/gtk -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/platform/gtk -DUSE_FREETYPE=1 -I/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebCore/svg/graphics/cairo -fvisibility-inlines-hidden -fno-rtti -fno-strict-aliasing -O2 -Wall -W -Wcast-align -Wchar-subscripts -Wreturn-type -Wformat -Wformat-security -Wno-format-y2k -Wundef -Wmissing-format-attribute -Wpointer-arith -Wwrite-strings -Wno-unused-parameter -Wno-parentheses -fno-exceptions -fvisibility=hidden -pthread -I/home/oe/webkit/deps/tmp/staging/i686-angstrom-linux/usr/include/glib-2.0 -I/home/oe/webkit/deps/tmp/staging/i686-angstrom-linux/usr/lib/glib-2.0/include -isystem/home/oe/webkit/deps/tmp/staging/i686-angstrom-linux/usr/include -D_REENTRANT -I/home/oe/webkit/deps/tmp/staging/i686-angstrom-linux/usr/include -I/home/oe/webkit/deps/tmp/staging/i686-angstrom-linux/usr/include/libxml2 -I/home/oe/webkit/deps/tmp/staging/i686-angstrom-linux/usr/include/cairo -I/home/oe/webkit/deps/tmp/staging/i686-angstrom-linux/usr/include/freetype2 -I/home/oe/webkit/deps/tmp/staging/i686-angstrom-linux/include -I/home/oe/webkit/deps/tmp/staging/i686-angstrom-linux/home/oe/webkit/deps/tmp/staging/i686-angstrom-linux/usr/include/ -I/home/oe/webkit/deps/tmp/staging/i686-angstrom-linux/usr/include/libpng12 -I/home/oe/webkit/deps/tmp/staging/i686-angstrom-linux/usr/include/pango-1.0 -I/home/oe/webkit/deps/tmp/staging/i686-angstrom-linux/usr/include/glib-2.0 -I/home/oe/webkit/deps/tmp/staging/i686-angstrom-linux/usr/lib/glib-2.0/include -I/home/oe/webkit/deps/tmp/staging/i686-angstrom-linux/usr/include/gtk-2.0 -I/home/oe/webkit/deps/tmp/staging/i686-angstrom-linux/usr/lib/gtk-2.0/include -I/home/oe/webkit/deps/tmp/staging/i686-angstrom-linux/usr/include/atk-1.0 -I/home/oe/webkit/deps/tmp/staging/i686-angstrom-linux/usr/include/cairo -I/home/oe/webkit/deps/tmp/staging/i686-angstrom-linux/usr/include/pango-1.0 -I/home/oe/webkit/deps/tmp/staging/i686-angstrom-linux/usr/include/glib-2.0 -I/home/oe/webkit/deps/tmp/staging/i686-angstrom-linux/usr/lib/glib-2.0/include -I/home/oe/webkit/deps/tmp/staging/i686-angstrom-linux/usr/include/freetype2 -I/home/oe/webkit/deps/tmp/staging/i686-angstrom-linux/include -I/home/oe/webkit/deps/tmp/staging/i686-angstrom-linux/home/oe/webkit/deps/tmp/staging/i686-angstrom-linux/usr/include/ -I/home/oe/webkit/deps/tmp/staging/i686-angstrom-linux/usr/include/libpng12 -I/home/oe/webkit/deps/tmp/staging/i686-angstrom-linux/usr/include/cairo -I/home/oe/webkit/deps/tmp/staging/i686-angstrom-linux/usr/include/freetype2 -I/home/oe/webkit/deps/tmp/staging/i686-angstrom-linux/include -I/home/oe/webkit/deps/tmp/staging/i686-angstrom-linux/home/oe/webkit/deps/tmp/staging/i686-angstrom-linux/usr/include/ -I/home/oe/webkit/deps/tmp/staging/i686-angstrom-linux/usr/include/libpng12 -I/home/oe/webkit/deps/tmp/staging/i686-angstrom-linux/usr/include/libxml2 -MT DerivedSources/JSCSSCharsetRule.lo -MD -MP -MF ".deps/DerivedSources/JSCSSCharsetRule.Tpo" \ -c -o DerivedSources/JSCSSCharsetRule.lo `test -f 'DerivedSources/JSCSSCharsetRule.cpp' || echo '/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/'`DerivedSources/JSCSSCharsetRule.cpp; \ then mv -f ".deps/DerivedSources/JSCSSCharsetRule.Tpo" ".deps/DerivedSources/JSCSSCharsetRule.Plo"; \ else rm -f ".deps/DerivedSources/JSCSSCharsetRule.Tpo"; exit 1; \ fi DerivedSources/JSCSSCharsetRule.cpp:144: fatal error: opening dependency file .deps/DerivedSources/JSCSSCharsetRule.Tpo: No such file or directory compilation terminated. make[2]: *** [DerivedSources/JSCSSCharsetRule.lo] Error 1 make[2]: Leaving directory `/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebKitBuild/Release' make[1]: *** [all] Error 2 make[1]: Leaving directory `/home/oe/webkit/source/WebKit-BuildSlave/trunk-gtk-linux-release/build/WebKitBuild/Release' Failed to build WebKit using 'make'! I'm going to try fixing it in a little while rather than rolling back (though I can't reproduce this locally, works fine on several systems).
Can now reproduce the problem with automake-1.7. Problem is that the dependency information output directory looks wrong and gcc complains because it hasn't been created yet. Possibly a bad interaction with dolt. Investigating further.
Not a dolt issue, happens without it too. Seems to be a quirk in older automake that was fixed in later versions.
Hopefully fixed in r37403.