Attempting to build WebKit2 on Linux for GTK results in a "#include nested too deeply error" Output is attached below: /bin/mkdir -p ./.deps/DerivedSources CXX Source/WebCore/platform/gtk/libwebkit2gtk_1_0_la-WidgetRenderingContext.lo CXX WebKit2/Platform/CoreIPC/libWebKit2_la-ArgumentDecoder.lo In file included from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./../../WebKit2/WebKit2Prefix.h:28, from <command-line>:0: ./DerivedSources/WebKit2/include/WebCore/config.h:1: error: #include nested too deeply make[1]: *** [WebKit2/Platform/CoreIPC/libWebKit2_la-ArgumentDecoder.lo] Error 1 make[1]: Leaving directory `/home/username/webkit002/WebKit/WebKitBuild/Debug' make: *** [all] Error 2 Failed to build WebKit using 'make'!
The "nested too deeply" error can be worked around by disabling the config.h file from being generated created properly in DerivedSources/WebKit2/include/WebCore/config.h by modifying code in WebKit2/Scripts/generate-forwarding-headers.pl Additional changes are needed in the WebKit2/WebKit2Prefix.h to add building support for gtk to allow the following environment variables to be set: #if defined(BUILDING_GTK__) #define WTF_USE_JSC 1 #define WTF_USE_V8 0 #define JS_EXPORTDATA #define JS_EXPORTCLASS #endif However, the next error that pops up may need some GTK specific coding of the DrawingContext system: CXX WebKit2/Shared/libWebKit2_la-SessionState.lo In file included from ../../WebKit2/UIProcess/WebPageProxy.h:31, from ../../WebKit2/UIProcess/WebBackForwardList.h:32, from ../../WebKit2/Shared/SessionState.h:29, from ../../WebKit2/Shared/SessionState.cpp:26: ../../WebKit2/UIProcess/DrawingAreaProxy.h:65: error: ‘PlatformDrawingContext’ has not been declared make[1]: *** [WebKit2/Shared/libWebKit2_la-SessionState.lo] Error 1
(In reply to comment #1) > The "nested too deeply" error can be worked around by disabling the config.h file from being generated created properly in DerivedSources/WebKit2/include/WebCore/config.h by modifying code in WebKit2/Scripts/generate-forwarding-headers.pl > disabling config.h sounds weird. DerivedSources/WebKit2/include/WebCore/config.h meant to include Source/WebCore/config.h, I think. > However, the next error that pops up may need some GTK specific coding of the DrawingContext system: > > CXX WebKit2/Shared/libWebKit2_la-SessionState.lo > In file included from ../../WebKit2/UIProcess/WebPageProxy.h:31, > from ../../WebKit2/UIProcess/WebBackForwardList.h:32, > from ../../WebKit2/Shared/SessionState.h:29, > from ../../WebKit2/Shared/SessionState.cpp:26: > ../../WebKit2/UIProcess/DrawingAreaProxy.h:65: error: ‘PlatformDrawingContext’ has not been declared > make[1]: *** [WebKit2/Shared/libWebKit2_la-SessionState.lo] Error 1 because there is no Gtk specific PlatformDrawingContext implemented yet?
Created attachment 80349 [details] Proposed patch This works for me, and fixes other issues I found in the autotools when compiling all the patches. This way we do the things more like the other ports. Anyway, the forwarding headers script is creating files that are not required and probably we will have to check that in the future. I hope this helps. I hope it helps, I'll try to help pushing the other patches to have a running browser with webkit2.
Comment on attachment 80349 [details] Proposed patch View in context: https://bugs.webkit.org/attachment.cgi?id=80349&action=review > Source/WebKit2/WebKit2Prefix.h:53 > -#if defined(BUILDING_QT__) > +#if defined(BUILDING_QT__) || defined(BUILDING_GTK__) This is not part of the patch, it is a compilation fix, I'll upload this fix before this patch. Sorry.
(In reply to comment #4) > (From update of attachment 80349 [details]) > View in context: https://bugs.webkit.org/attachment.cgi?id=80349&action=review > > > Source/WebKit2/WebKit2Prefix.h:53 > > -#if defined(BUILDING_QT__) > > +#if defined(BUILDING_QT__) || defined(BUILDING_GTK__) > > This is not part of the patch, it is a compilation fix, I'll upload this fix before this patch. Sorry. Oops, this is actually correct :), the compilation nitpick did not get mixed with the patch, sorry for the noise.
Comment on attachment 80349 [details] Proposed patch View in context: https://bugs.webkit.org/attachment.cgi?id=80349&action=review Looks good with the removal of the no-longer-valid comment in configure.ac. > configure.ac:-929 > # In WebKit, this define is ensured by doing it before including config.h in any source file. > # In WebKit2, WebKit2Prefix.h is included as first header file, so we need to define this > # macro before actually WebKit2Prefix.h is included in any file. > - AC_DEFINE([__STDC_FORMAT_MACROS],[1],[Turn on the __STDC_FORMAT_MACROS used in inttypes.h]) We probably need to remove the comment here as well.
Comment on attachment 80349 [details] Proposed patch After the last changes to use the config.h in webkit2 this patch makes no sense anymore I'll update it if we still have this issue.
testing on 77239, and still see this problem
Created attachment 80737 [details] Proposed patch New patch with the new config.h solution used now in WebKit2 compilation. I'm going to review all the other patches considering this new config.h solution and fix some of the other issues I found to allow us to compile and run the WebKit2GTK minibrowser.
Created attachment 80739 [details] Updated patch to latest Upstream 77239 Fixed patch apply to latest upstream
Comment on attachment 80739 [details] Updated patch to latest Upstream 77239 Missing configure part, and haven't noticed previous attached patch
I too, have after several hours of compilation: CXX Source/WebKit2/Platform/CoreIPC/libWebKit2_la-ArgumentDecoder.lo In file included from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, from ./DerivedSources/WebKit2/include/WebCore/config.h:1, ........................... from Source/WebKit2/Platform/CoreIPC/ArgumentDecoder.cpp:26: ./DerivedSources/WebKit2/include/WebCore/config.h:1:20: error: #include nested too deeply make[1]: *** [Source/WebKit2/Platform/CoreIPC/libWebKit2_la-ArgumentDecoder.lo] Error 1 svn info Path: . URL: http://svn.webkit.org/repository/webkit/trunk Repository Root: http://svn.webkit.org/repository/webkit Repository UUID: 268f45cc-cd09-0410-ab3c-d52691b4dbfc Revision: 77747 Node Kind: directory Schedule: normal Last Changed Author: mrobinson@webkit.org Last Changed Rev: 77747 Last Changed Date: 2011-02-05 10:26:30 -0800 (Sat, 05 Feb 2011) Steps to reproduce: ------------------------------------------------------------------- svn update ./autogen.sh --enable-web-sockets --enable-geolocation --enable-3D-transforms --enable-filters --enable-webkit2 make -------------------------------------- I am on Fedora 13
Landed http://trac.webkit.org/changeset/78020