It seems like the CMake-based build causes the IDL files to be processed in full every build. This is super annoying, especially since this has become a single-threaded bottleneck during the build.
The bottleneck seems to be that Visual Studio waits for each invocation of the "Custom Build Step" to complete: setlocal cd C:\Projects\WebKit\OpenSource\Source\WebCore if %errorlevel% neq 0 goto :cmEnd C: if %errorlevel% neq 0 goto :cmEnd C:\cygwin\bin\perl.exe -IC:/Projects/WebKit/OpenSource/Source/WebCore/bindings/scripts C:/Projects/WebKit/OpenSource/Source/WebCore/bindings/scripts/generate-bindings.pl --defines "LANGUAGE_JAVASCRIPT=1 " ... endless stuff if %errorlevel% neq 0 goto :cmEnd :cmEnd endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone :cmErrorLevel exit /b %1 :cmDone if %errorlevel% neq 0 goto :VCEnd
I wonder what would happen if we did a "CALL" on the Perl program to run in a new process. We would lose the ability to end the build on an error in the script generation, but that doesn't really happen much anymore.
We probably need some way to sync that the auto-generating is done before compiling stuff that depends on it.
One thought was maybe derived sources should be split into their own projects. https://bugs.webkit.org/show_bug.cgi?id=151399 had some initial work on this but didn't land. And here's a related bug you might want to roll into this https://bugs.webkit.org/show_bug.cgi?id=154938 that I opened.
Created attachment 274940 [details] Patch
Blah. Well, that didn't work.
Comment on attachment 274940 [details] Patch CMake Error at Source/WebCore/CMakeLists.txt:3832 (add_library): Cannot find source file: C:/cygwin/home/buildbot/WebKit/WebKitBuild/Release/DerivedSources/WebCore/JSInternalSettings.cpp
Created attachment 274953 [details] Patch
Created attachment 274961 [details] Patch
Comment on attachment 274961 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=274961&action=review > Source/cmake/WebKitMacros.cmake:96 > + set(_custom_outputs "${_destination}/${_prefix}${_name}.${_extension}" "${_destination}/${_prefix}${_name}.h") > + if (MSVC) > + set(_custom_outputs "${_destination}/${_prefix}${_name}.h") > + endif () if else endif
Committed r198781: <http://trac.webkit.org/changeset/198781>
Re-opened since this is blocked by bug 155986
My patch in Bug 161433 Comment 9 mitigates this problem because: 1) It solves the problem editting one IDL triggers regenerating all bindings 2) It runs generate-bindings.pl parallel But, not perfectly fixed. I'll fix this issue after finishing Bug 161433.
I solved this problem in Bug 163774. *** This bug has been marked as a duplicate of bug 163774 ***