Modified: trunk/ChangeLog (198668 => 198669)
--- trunk/ChangeLog 2016-03-25 16:05:22 UTC (rev 198668)
+++ trunk/ChangeLog 2016-03-25 16:14:20 UTC (rev 198669)
@@ -1,3 +1,19 @@
+2016-03-25 Brent Fulgham <[email protected]>
+
+ [Win] Improve CMake build performance
+ https://bugs.webkit.org/show_bug.cgi?id=155871
+ <rdar://problem/24747822>
+
+ Reviewed by Alex Christensen.
+
+ Add a flag to the PROCESS_ALLINONE_FILE macro so that it does not remove
+ the files contained in the passed all-in-one file, since this breaks
+ dependency checking and generation of the derived sources from the IDL.
+ Instead, include the header files in the project so that all files get
+ generated.
+
+ * Source/cmake/WebKitMacros: Updated for 'DerivedSources.cpp' use case.
+
2016-03-25 Konstantin Tokarev <[email protected]>
Turned on ENABLE_REQUEST_ANIMATION_FRAME by default for any port.
Modified: trunk/Source/WebCore/CMakeLists.txt (198668 => 198669)
--- trunk/Source/WebCore/CMakeLists.txt 2016-03-25 16:05:22 UTC (rev 198668)
+++ trunk/Source/WebCore/CMakeLists.txt 2016-03-25 16:14:20 UTC (rev 198669)
@@ -2945,7 +2945,7 @@
svg/SVGAllInOne.cpp
)
foreach (allInOne ${allInOnes})
- PROCESS_ALLINONE_FILE("${WebCore_SOURCES}" ${allInOne} newSources ${AllInOne})
+ PROCESS_ALLINONE_FILE("${WebCore_SOURCES}" ${allInOne} newSources FALSE)
set(WebCore_SOURCES
${allInOne}
${newSources}
@@ -3800,6 +3800,13 @@
GENERATE_DOM_NAMES(XML ${WEBCORE_DIR}/xml/xmlattrs.in)
list(APPEND WebCore_SOURCES ${DERIVED_SOURCES_WEBCORE_DIR}/XMLNames.cpp)
+if (ENABLE_ALLINONE_BUILD)
+ message(STATUS "All-in-One DerivedSources build is enabled.")
+ PROCESS_ALLINONE_FILE("${WebCore_SOURCES}" DerivedSources.cpp newSources TRUE)
+ set(WebCore_SOURCES DerivedSources.cpp ${newSources})
+ list(APPEND WebCore_SOURCES DerivedSources.cpp)
+endif ()
+
WEBKIT_WRAP_SOURCELIST(${WebCore_IDL_FILES} ${WebCore_SOURCES})
WEBKIT_WRAP_SOURCELIST(${WebCoreTestSupport_IDL_FILES} ${WebCoreTestSupport_SOURCES})
Modified: trunk/Source/WebCore/ChangeLog (198668 => 198669)
--- trunk/Source/WebCore/ChangeLog 2016-03-25 16:05:22 UTC (rev 198668)
+++ trunk/Source/WebCore/ChangeLog 2016-03-25 16:14:20 UTC (rev 198669)
@@ -1,3 +1,20 @@
+2016-03-25 Brent Fulgham <[email protected]>
+
+ [Win] Improve CMake build performance
+ https://bugs.webkit.org/show_bug.cgi?id=155871
+ <rdar://problem/24747822>
+
+ Reviewed by Alex Christensen.
+
+ Treat DerivedSources.cpp as an 'All-in-one' file. Pass a flag to the
+ PROCESS_ALLINONE_FILE macro so that it does not remove the contents of
+ the file, since this breaks dependency checking and generation of the
+ sources from the IDL files. Instead, include the header files in the
+ project so that all files get generated.
+
+ * CMakeLists.txt: Updated for 'DerivedSources.cpp'
+ * DerivedSources.cpp: Add some generated files that were missing.
+
2016-03-25 Youenn Fablet <[email protected]>
[Fetch API] Add basic loading of resources
Modified: trunk/Source/WebCore/DerivedSources.cpp (198668 => 198669)
--- trunk/Source/WebCore/DerivedSources.cpp 2016-03-25 16:05:22 UTC (rev 198668)
+++ trunk/Source/WebCore/DerivedSources.cpp 2016-03-25 16:14:20 UTC (rev 198669)
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008 Apple Inc. All Rights Reserved.
+ * Copyright (C) 2008-2016 Apple Inc. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -25,8 +25,14 @@
// This all-in-one cpp file cuts down on template bloat to allow us to build our Windows release build.
+// The following files do not work well with the new CMake system. Don't include in this file
+// #include "HTMLEntityTable.cpp"
+// #include "JSSVGElementWrapperFactory.cpp"
+// #include "PlugInsResourcesData.cpp"
+// #include "UserAgentStyleSheetsData.cpp"
+
+#include "ExceptionCodeDescription.h"
#include "HTMLElementFactory.cpp"
-#include "HTMLEntityTable.cpp"
#if ENABLE(WEBGL)
#include "JSANGLEInstancedArrays.cpp"
#endif
@@ -36,15 +42,29 @@
#include "JSBarProp.cpp"
#include "JSBeforeLoadEvent.cpp"
#include "JSBeforeUnloadEvent.cpp"
+#if ENABLE(WEB_AUDIO)
+#include "JSBiquadFilterNode.cpp"
+#endif
#include "JSBlob.cpp"
#include "JSCanvasGradient.cpp"
#include "JSCanvasPattern.cpp"
+#include "JSCanvasProxy.cpp"
#include "JSCanvasRenderingContext.cpp"
#include "JSCanvasRenderingContext2D.cpp"
#if ENABLE(STREAMS_API)
#include "JSByteLengthQueuingStrategy.cpp"
#include "JSCountQueuingStrategy.cpp"
#endif
+#if ENABLE(WEB_AUDIO)
+#include "JSChannelMergerNode.cpp"
+#include "JSChannelSplitterNode.cpp"
+#include "JSConvolverNode.cpp"
+#endif
+#include "JSChildNode.cpp"
+#if ENABLE(SUBTLE_CRYPTO)
+#include "JSCryptoKey.cpp"
+#include "JSCryptoKeyPair.cpp"
+#endif
#if ENABLE(WEBGL)
#include "JSEXTBlendMinMax.cpp"
#include "JSEXTFragDepth.cpp"
@@ -115,6 +135,7 @@
#include "JSCSSStyleRule.cpp"
#include "JSCSSStyleSheet.cpp"
#include "JSCSSSupportsRule.cpp"
+#include "JSCSSUnknownRule.cpp"
#include "JSCSSValue.cpp"
#include "JSCSSValueList.cpp"
#include "JSCustomEvent.cpp"
@@ -124,7 +145,16 @@
#include "JSDataTransferItem.cpp"
#include "JSDataTransferItemList.cpp"
#include "JSDedicatedWorkerGlobalScope.cpp"
+#if ENABLE(WEB_AUDIO)
+#include "JSDelayNode.cpp"
+#endif
+#if ENABLE(DEVICE_ORIENTATION)
+#include "JSDeviceMotionEvent.h"
#include "JSDeviceOrientationEvent.cpp"
+#endif
+#if ENABLE(PROXIMITY_EVENTS)
+#include "JSDeviceProximityEvent.cpp"
+#endif
#include "JSDocument.cpp"
#include "JSDocumentFragment.cpp"
#include "JSDocumentType.cpp"
@@ -145,8 +175,15 @@
#include "JSDOMStringMap.cpp"
#include "JSDOMTokenList.cpp"
#include "JSDOMURL.cpp"
+#include "JSDOMURLMediaSource.cpp"
+#include "JSDOMURLMediaStream.cpp"
#include "JSDOMWindow.cpp"
#include "JSDOMWindowCSS.cpp"
+#include "JSDOMWindowFetch.cpp"
+#include "JSDOMWindowIndexedDatabase.cpp"
+#include "JSDOMWindowNotifications.cpp"
+#include "JSDOMWindowSpeechSynthesis.cpp"
+#include "JSDOMWindowWebDatabase.cpp"
#include "JSElement.cpp"
#include "JSErrorEvent.cpp"
#include "JSEvent.cpp"
@@ -164,8 +201,13 @@
#include "JSFileReaderSync.cpp"
#include "JSFocusEvent.cpp"
#include "JSFontFace.cpp"
+#include "JSFontFaceSet.cpp"
+#if ENABLE(WEB_AUDIO)
+#include "JSGainNode.cpp"
+#endif
#include "JSGeolocation.cpp"
#include "JSGeoposition.cpp"
+#include "JSGlobalEventHandlers.cpp"
#include "JSHashChangeEvent.cpp"
#include "JSHistory.cpp"
#include "JSHTMLAllCollection.cpp"
@@ -202,6 +244,7 @@
#include "JSHTMLHeadingElement.cpp"
#include "JSHTMLHRElement.cpp"
#include "JSHTMLHtmlElement.cpp"
+#include "JSHTMLHyperlinkElementUtils.cpp"
#include "JSHTMLIFrameElement.cpp"
#include "JSHTMLImageElement.cpp"
#include "JSHTMLInputElement.cpp"
@@ -213,6 +256,8 @@
#include "JSHTMLMapElement.cpp"
#include "JSHTMLMarqueeElement.cpp"
#include "JSHTMLMediaElement.cpp"
+#include "JSHTMLMediaElementMediaSession.cpp"
+#include "JSHTMLMediaElementMediaStream.cpp"
#include "JSHTMLMenuElement.cpp"
#include "JSHTMLMetaElement.cpp"
#include "JSHTMLMeterElement.cpp"
@@ -225,6 +270,7 @@
#include "JSHTMLOutputElement.cpp"
#include "JSHTMLParagraphElement.cpp"
#include "JSHTMLParamElement.cpp"
+#include "JSHTMLPictureElement.cpp"
#include "JSHTMLPreElement.cpp"
#include "JSHTMLProgressElement.cpp"
#include "JSHTMLQuoteElement.cpp"
@@ -251,15 +297,20 @@
#include "JSHTMLUnknownElement.cpp"
#include "JSHTMLUListElement.cpp"
#include "JSHTMLVideoElement.cpp"
+#if ENABLE(INDEXED_DATABASE)
#include "JSIDBAny.cpp"
#include "JSIDBCursor.cpp"
+#include "JSIDBCursorWithValue.cpp"
#include "JSIDBDatabase.cpp"
#include "JSIDBFactory.cpp"
#include "JSIDBIndex.cpp"
#include "JSIDBKeyRange.cpp"
#include "JSIDBObjectStore.cpp"
+#include "JSIDBOpenDBRequest.cpp"
#include "JSIDBRequest.cpp"
#include "JSIDBTransaction.cpp"
+#include "JSIDBVersionChangeEvent.cpp"
+#endif
#include "JSImageData.cpp"
#include "JSInspectorFrontendHost.cpp"
#include "JSKeyboardEvent.cpp"
@@ -268,6 +319,13 @@
#if ENABLE(MEDIA_CONTROLS_SCRIPT)
#include "JSMediaControlsHost.cpp"
#endif
+#if ENABLE(MEDIA_STREAM)
+#include "JSMediaDeviceInfo.cpp"
+#include "JSMediaDeviceso.cpp"
+#endif
+#if ENABLE(VIDEO) && ENABLE(WEB_AUDIO)
+#include "JSMediaElementAudioSourceNode.cpp"
+#endif
#include "JSMediaError.cpp"
#include "JSMediaList.cpp"
#if ENABLE(ENCRYPTED_MEDIA_V2)
@@ -279,6 +337,19 @@
#endif
#include "JSMediaQueryList.cpp"
#include "JSMediaQueryListListener.cpp"
+#include "JSMediaRemoteControls.cpp"
+#include "JSMediaSession.cpp"
+#include "JSMediaSource.cpp"
+#include "JSMediaStream.cpp"
+#include "JSMediaStreamAudioDestinationNode.cpp"
+#include "JSMediaStreamAudioSourceNode.cpp"
+#include "JSMediaStreamEvent.cpp"
+#include "JSMediaStreamTrack.cpp"
+#include "JSMediaStreamTrackSourcesCallback.cpp"
+#include "JSMediaTrackConstraint.cpp"
+#include "JSMediaTrackConstraintSet.cpp"
+#include "JSMediaTrackConstraints.cpp"
+#include "JSMediaTrackSupportedConstraints.cpp"
#include "JSMessageChannel.cpp"
#include "JSMessageEvent.cpp"
#include "JSMessagePort.cpp"
@@ -288,17 +359,38 @@
#include "JSMutationRecord.cpp"
#include "JSNamedNodeMap.cpp"
#include "JSNavigator.cpp"
+#include "JSNavigatorBattery.cpp"
+#include "JSNavigatorContentUtils.cpp"
+#include "JSNavigatorGeolocation.cpp"
+#include "JSNavigatorMediaDevices.cpp"
+#include "JSNavigatorUserMedia.cpp"
+#include "JSNavigatorUserMediaError.cpp"
+#include "JSNavigatorVibration.cpp"
#include "JSNode.cpp"
#include "JSNodeFilter.cpp"
#include "JSNodeIterator.cpp"
#include "JSNodeList.cpp"
+#include "JSNonDocumentTypeChildNode.cpp"
+#include "JSNonElementParentNode.cpp"
+#include "JSNotification.cpp"
#include "JSNotificationCenter.cpp"
-#include "JSNotification.cpp"
+#include "JSNotificationPermissionCallback.cpp"
#include "JSOverflowEvent.cpp"
+#include "JSOfflineAudioCompletionEvent.cpp"
+#include "JSOfflineAudioContext.cpp"
+#include "JSOscillatorNode.cpp"
#include "JSPageTransitionEvent.cpp"
+#include "JSPannerNode.cpp"
+#include "JSParentNode.cpp"
#include "JSPerformance.cpp"
+#include "JSPerformanceEntry.cpp"
+#include "JSPerformanceEntryList.cpp"
+#include "JSPerformanceMark.cpp"
+#include "JSPerformanceMeasure.cpp"
#include "JSPerformanceNavigation.cpp"
+#include "JSPerformanceResourceTiming.cpp"
#include "JSPerformanceTiming.cpp"
+#include "JSPeriodicWave.cpp"
#include "JSPopStateEvent.cpp"
#include "JSPositionCallback.cpp"
#include "JSPositionError.cpp"
@@ -316,12 +408,36 @@
#include "JSRect.cpp"
#include "JSRequestAnimationFrameCallback.cpp"
#include "JSRGBColor.cpp"
+#include "JSRTCConfiguration.cpp"
+#include "JSRTCDataChannel.cpp"
+#include "JSRTCDataChannelEvent.cpp"
+#include "JSRTCDTMFSender.cpp"
+#include "JSRTCDTMFToneChangeEvent.cpp"
+#include "JSRTCIceCandidate.cpp"
+#include "JSRTCIceCandidateEvent.cpp"
+#include "JSRTCIceServer.cpp"
+#include "JSRTCPeerConnection.cpp"
+#include "JSRTCRtpReceiver.cpp"
+#include "JSRTCRtpSender.cpp"
+#include "JSRTCSessionDescription.cpp"
+#include "JSRTCStatsReport.cpp"
+#include "JSRTCStatsResponse.cpp"
+#include "JSRTCTrackEvent.cpp"
#include "JSScreen.cpp"
+#include "JSScriptProcessorNode.cpp"
#include "JSScriptProfile.cpp"
#include "JSScriptProfileNode.cpp"
#if ENABLE(CSP_NEXT)
#include "JSSecurityPolicyViolationEvent.cpp"
#endif
+#include "JSSourceBuffer.cpp"
+#include "JSSourceBufferList.cpp"
+#include "JSSourceInfo.cpp"
+#include "JSSpeechSynthesis.cpp"
+#include "JSSpeechSynthesisEvent.cpp"
+#include "JSSpeechSynthesisUtterance.cpp"
+#include "JSSpeechSynthesisVoice.cpp"
+#include "JSSubtleCrypto.cpp"
#include "JSSQLError.cpp"
#include "JSSQLException.cpp"
#include "JSSQLResultSet.cpp"
@@ -364,6 +480,7 @@
#include "JSSVGElement.cpp"
#include "JSSVGEllipseElement.cpp"
#include "JSSVGException.cpp"
+#include "JSSVGExternalResourcesRequired.cpp"
#include "JSSVGFEBlendElement.cpp"
#include "JSSVGFEColorMatrixElement.cpp"
#include "JSSVGFEComponentTransferElement.cpp"
@@ -390,6 +507,8 @@
#include "JSSVGFETileElement.cpp"
#include "JSSVGFETurbulenceElement.cpp"
#include "JSSVGFilterElement.cpp"
+#include "JSSVGFilterPrimitiveStandardAttributes.cpp"
+#include "JSSVGFitToViewBox.cpp"
#include "JSSVGFontElement.cpp"
#include "JSSVGFontFaceElement.cpp"
#include "JSSVGFontFaceFormatElement.cpp"
@@ -457,6 +576,7 @@
#include "JSSVGStyleElement.cpp"
#include "JSSVGSwitchElement.cpp"
#include "JSSVGSymbolElement.cpp"
+#include "JSSVGTests.cpp"
#include "JSSVGTextContentElement.cpp"
#include "JSSVGTextElement.cpp"
#include "JSSVGTextPathElement.cpp"
@@ -467,6 +587,7 @@
#include "JSSVGTRefElement.cpp"
#include "JSSVGTSpanElement.cpp"
#include "JSSVGUnitTypes.cpp"
+#include "JSSVGURIReference.cpp"
#include "JSSVGUseElement.cpp"
#include "JSSVGVKernElement.cpp"
#include "JSSVGViewElement.cpp"
@@ -475,12 +596,16 @@
#include "JSSVGZoomEvent.cpp"
#include "JSShadowRoot.cpp"
#include "JSStorage.cpp"
+#if ENABLE(QUOTA)
#include "JSStorageErrorCallback.cpp"
+#endif
#include "JSStorageEvent.cpp"
+#if ENABLE(QUOTA)
#include "JSStorageInfo.cpp"
#include "JSStorageQuota.cpp"
#include "JSStorageQuotaCallback.cpp"
#include "JSStorageUsageCallback.cpp"
+#endif
#include "JSStringCallback.cpp"
#include "JSStyleMedia.cpp"
#include "JSStyleSheet.cpp"
@@ -513,25 +638,40 @@
#include "JSTransitionEvent.cpp"
#include "JSTreeWalker.cpp"
#include "JSUIEvent.cpp"
+#include "JSUIRequestEvent.cpp"
+#include "JSURLUtils.cpp"
+#include "JSUserMessageHandler.cpp"
+#include "JSUserMessageHandlersNamespace.cpp"
#include "JSValidityState.cpp"
+#include "JSVideoPlaybackQuality.cpp"
#include "JSVoidCallback.cpp"
+#include "JSWaveShaperNode.cpp"
#include "JSWebKitAnimationEvent.cpp"
#include "JSWebKitCSSFilterValue.cpp"
#include "JSWebKitCSSTransformValue.cpp"
#include "JSWebKitCSSMatrix.cpp"
#include "JSWebKitCSSRegionRule.cpp"
+#include "JSWebKitCSSViewportRule.cpp"
#include "JSWebKitNamedFlow.cpp"
+#include "JSWebKitNamespace.cpp"
+#include "JSWebKitPlaybackTargetAvailabilityEvent.cpp"
#include "JSWebKitPoint.cpp"
#include "JSWebKitTransitionEvent.cpp"
#include "JSWebSocket.cpp"
#include "JSWheelEvent.cpp"
+#include "JSWindowBase64.cpp"
+#include "JSWindowEventHandlers.cpp"
+#include "JSWindowTimers.cpp"
#include "JSWorker.cpp"
#include "JSWorkerGlobalScope.cpp"
+#include "JSWorkerGlobalScopeFetch.cpp"
+#include "JSWorkerGlobalScopeIndexedDatabase.cpp"
+#include "JSWorkerGlobalScopeNotifications.cpp"
#include "JSWorkerLocation.cpp"
#include "JSWorkerNavigator.cpp"
#include "JSXMLDocument.cpp"
#include "JSXMLHttpRequest.cpp"
-#include "JSXMLHttpRequestException.cpp"
+#include "JSXMLHttpRequestEventTarget.cpp"
#include "JSXMLHttpRequestProgressEvent.cpp"
#include "JSXMLHttpRequestUpload.cpp"
#include "JSXMLSerializer.cpp"
@@ -541,8 +681,6 @@
#include "JSXPathNSResolver.cpp"
#include "JSXPathResult.cpp"
#include "JSXSLTProcessor.cpp"
-#include "PlugInsResourcesData.cpp"
-#include "UserAgentStyleSheetsData.cpp"
// On MSVC, including StaticConstructors.h causes all global objects not to be
// automatically initialized by the C runtime. This is useful in some specific
Modified: trunk/Source/cmake/WebKitMacros.cmake (198668 => 198669)
--- trunk/Source/cmake/WebKitMacros.cmake 2016-03-25 16:05:22 UTC (rev 198668)
+++ trunk/Source/cmake/WebKitMacros.cmake 2016-03-25 16:14:20 UTC (rev 198669)
@@ -357,9 +357,10 @@
# _file_list is a list of source files
# _all_in_one_file is an all-in-one cpp file includes other cpp files
# _result_file_list is the output file list
-macro(PROCESS_ALLINONE_FILE _file_list _all_in_one_file _result_file_list)
+macro(PROCESS_ALLINONE_FILE _file_list _all_in_one_file _result_file_list _no_compile)
file(STRINGS ${_all_in_one_file} _all_in_one_file_content)
set(${_result_file_list} ${_file_list})
+ set(_allins "")
foreach (_line ${_all_in_one_file_content})
string(REGEX MATCH "^#include [\"<](.*)[\">]" _found ${_line})
if (_found)
@@ -368,7 +369,14 @@
endforeach ()
foreach (_allin ${_allins})
- string(REGEX REPLACE ";[^;]*/${_allin};" ";" _new_result "${${_result_file_list}};")
+ if (${_no_compile})
+ # For DerivedSources.cpp, we still need the derived sources to be generated, but we do not want them to be compiled
+ # individually. We add the header to the result file list so that CMake knows to keep generating the files.
+ string(REGEX REPLACE "(.*)\\.cpp" "\\1" _allin_no_ext ${_allin})
+ string(REGEX REPLACE ";([^;]*/)${_allin_no_ext}\\.cpp;" ";\\1${_allin_no_ext}.h;" _new_result "${${_result_file_list}};")
+ else ()
+ string(REGEX REPLACE ";[^;]*/${_allin};" ";" _new_result "${${_result_file_list}};")
+ endif ()
set(${_result_file_list} ${_new_result})
endforeach ()