blob: 1e4cc51d8f90f4c33e3b8c840f653533baccbe45 [file] [log] [blame]
# Copyright (C) 2010-2017 Apple Inc. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR
# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
VPATH = \
$(WebKit2) \
$(WebKit2)/NetworkProcess \
$(WebKit2)/NetworkProcess/Cookies \
$(WebKit2)/NetworkProcess/cache \
$(WebKit2)/NetworkProcess/CustomProtocols \
$(WebKit2)/NetworkProcess/mac \
$(WebKit2)/NetworkProcess/webrtc \
$(WebKit2)/PluginProcess \
$(WebKit2)/PluginProcess/mac \
$(WebKit2)/Shared/Plugins \
$(WebKit2)/Shared \
$(WebKit2)/Shared/API/Cocoa \
$(WebKit2)/Shared/Authentication \
$(WebKit2)/Shared/mac \
$(WebKit2)/StorageProcess \
$(WebKit2)/StorageProcess/IndexedDB \
$(WebKit2)/StorageProcess/ServiceWorker \
$(WebKit2)/StorageProcess/mac \
$(WebKit2)/WebProcess/ApplePay \
$(WebKit2)/WebProcess/ApplicationCache \
$(WebKit2)/WebProcess/Automation \
$(WebKit2)/WebProcess/Cache \
$(WebKit2)/WebProcess/CredentialManagement \
$(WebKit2)/WebProcess/Databases/IndexedDB \
$(WebKit2)/WebProcess/FullScreen \
$(WebKit2)/WebProcess/Geolocation \
$(WebKit2)/WebProcess/IconDatabase \
$(WebKit2)/WebProcess/MediaCache \
$(WebKit2)/WebProcess/MediaStream \
$(WebKit2)/WebProcess/Network \
$(WebKit2)/WebProcess/Network/webrtc \
$(WebKit2)/WebProcess/Notifications \
$(WebKit2)/WebProcess/OriginData \
$(WebKit2)/WebProcess/Plugins \
$(WebKit2)/WebProcess/ResourceCache \
$(WebKit2)/WebProcess/Storage \
$(WebKit2)/WebProcess/UserContent \
$(WebKit2)/WebProcess/WebCoreSupport \
$(WebKit2)/WebProcess/WebPage \
$(WebKit2)/WebProcess/WebPage/RemoteLayerTree \
$(WebKit2)/WebProcess/WebStorage \
$(WebKit2)/WebProcess/cocoa \
$(WebKit2)/WebProcess/ios \
$(WebKit2)/WebProcess \
$(WebKit2)/UIProcess \
$(WebKit2)/UIProcess/ApplePay \
$(WebKit2)/UIProcess/Automation \
$(WebKit2)/UIProcess/Cocoa \
$(WebKit2)/UIProcess/CredentialManagement \
$(WebKit2)/UIProcess/Databases \
$(WebKit2)/UIProcess/Downloads \
$(WebKit2)/UIProcess/MediaStream \
$(WebKit2)/UIProcess/Network \
$(WebKit2)/UIProcess/Network/CustomProtocols \
$(WebKit2)/UIProcess/Notifications \
$(WebKit2)/UIProcess/Plugins \
$(WebKit2)/UIProcess/RemoteLayerTree \
$(WebKit2)/UIProcess/Storage \
$(WebKit2)/UIProcess/UserContent \
$(WebKit2)/UIProcess/WebStorage \
$(WebKit2)/UIProcess/mac \
$(WebKit2)/UIProcess/ios \
$(WEBKITADDITIONS_HEADER_SEARCH_PATHS) \
#
PYTHON = python
PERL = perl
ifeq ($(OS),Windows_NT)
DELETE = cmd //C del
else
DELETE = rm -f
endif
MESSAGE_RECEIVERS = \
AuthenticationManager \
CacheStorageEngineConnection \
ChildProcess \
DownloadProxy \
DrawingArea \
DrawingAreaProxy \
EventDispatcher \
LegacyCustomProtocolManager \
LegacyCustomProtocolManagerProxy \
NPObjectMessageReceiver \
NetworkConnectionToWebProcess \
NetworkMDNSRegister\
NetworkProcess \
NetworkProcessConnection \
NetworkProcessProxy \
NetworkRTCMonitor \
NetworkRTCProvider \
NetworkRTCSocket \
NetworkResourceLoader \
NetworkSocketStream \
NetworkContentRuleListManager \
PluginControllerProxy \
PluginProcess \
PluginProcessConnection \
PluginProcessConnectionManager \
PluginProcessProxy \
PluginProxy \
RemoteLayerTreeDrawingAreaProxy \
RemoteObjectRegistry \
RemoteScrollingCoordinator \
RemoteWebInspectorProxy \
RemoteWebInspectorUI \
SecItemShimProxy \
ServiceWorkerClientFetch \
SmartMagnificationController \
StorageAreaMap \
StorageManager \
StorageProcess \
StorageProcessProxy \
StorageToWebProcessConnection \
UserMediaCaptureManager \
UserMediaCaptureManagerProxy \
ViewGestureController \
ViewGestureGeometryCollector \
ViewUpdateDispatcher \
VisitedLinkStore \
VisitedLinkTableController \
WebAutomationSession \
WebAutomationSessionProxy \
WebCacheStorageConnection \
WebConnection \
WebCookieManager \
WebCookieManagerProxy \
WebCredentialsMessenger \
WebCredentialsMessengerProxy \
WebFullScreenManager \
WebFullScreenManagerProxy \
WebGeolocationManager \
WebGeolocationManagerProxy \
WebIDBConnectionToClient \
WebIDBConnectionToServer \
WebInspector \
WebInspectorInterruptDispatcher \
WebInspectorProxy \
WebInspectorUI \
WebMDNSRegister\
WebNotificationManager \
WebPage \
WebPageProxy \
WebPasteboardProxy \
WebPaymentCoordinator \
WebPaymentCoordinatorProxy \
WebSWClientConnection \
WebSWContextManagerConnection \
WebSWServerConnection \
WebSWServerToContextConnection \
PlaybackSessionManager \
PlaybackSessionManagerProxy \
WebProcess \
WebProcessConnection \
WebProcessPool \
WebProcessProxy \
WebRTCMonitor \
WebRTCResolver \
WebRTCSocket \
WebResourceLoader \
WebResourceLoadStatisticsStore \
WebSocketStream \
WebUserContentController \
WebUserContentControllerProxy \
VideoFullscreenManager \
VideoFullscreenManagerProxy \
#
SCRIPTS = \
$(WebKit2)/Scripts/generate-message-receiver.py \
$(WebKit2)/Scripts/generate-messages-header.py \
$(WebKit2)/Scripts/webkit/__init__.py \
$(WebKit2)/Scripts/webkit/messages.py \
$(WebKit2)/Scripts/webkit/model.py \
$(WebKit2)/Scripts/webkit/parser.py \
#
FRAMEWORK_FLAGS = $(shell echo $(BUILT_PRODUCTS_DIR) $(FRAMEWORK_SEARCH_PATHS) $(SYSTEM_FRAMEWORK_SEARCH_PATHS) | perl -e 'print "-F " . join(" -F ", split(" ", <>));')
HEADER_FLAGS = $(shell echo $(BUILT_PRODUCTS_DIR) $(HEADER_SEARCH_PATHS) $(SYSTEM_HEADER_SEARCH_PATHS) | perl -e 'print "-I" . join(" -I", split(" ", <>));')
-include WebKitDerivedSourcesAdditions.make
.PHONY : all
all : \
$(MESSAGE_RECEIVERS:%=%MessageReceiver.cpp) \
$(MESSAGE_RECEIVERS:%=%Messages.h) \
#
%MessageReceiver.cpp : %.messages.in $(SCRIPTS)
@echo Generating messages header for $*...
@python $(WebKit2)/Scripts/generate-message-receiver.py $< > $@
%Messages.h : %.messages.in $(SCRIPTS)
@echo Generating message receiver for $*...
@python $(WebKit2)/Scripts/generate-messages-header.py $< > $@
TEXT_PREPROCESSOR_FLAGS=-E -P -w
ifneq ($(SDKROOT),)
SDK_FLAGS=-isysroot $(SDKROOT)
endif
ifeq ($(USE_LLVM_TARGET_TRIPLES_FOR_CLANG),YES)
TARGET_TRIPLE_FLAGS=-target $(CURRENT_ARCH)-$(LLVM_TARGET_TRIPLE_VENDOR)-$(LLVM_TARGET_TRIPLE_OS_VERSION)$(LLVM_TARGET_TRIPLE_SUFFIX)
endif
SANDBOX_PROFILES = \
com.apple.WebProcess.sb \
com.apple.WebKit.Storage.sb \
com.apple.WebKit.plugin-common.sb \
com.apple.WebKit.NetworkProcess.sb
all: $(SANDBOX_PROFILES)
%.sb : %.sb.in
@echo Pre-processing $* sandbox profile...
grep -o '^[^;]*' $< | $(CC) $(SDK_FLAGS) $(TARGET_TRIPLE_FLAGS) $(TEXT_PREPROCESSOR_FLAGS) $(FRAMEWORK_FLAGS) $(HEADER_FLAGS) -include "wtf/Platform.h" - > $@
AUTOMATION_PROTOCOL_GENERATOR_SCRIPTS = \
$(JavaScriptCore_SCRIPTS_DIR)/cpp_generator_templates.py \
$(JavaScriptCore_SCRIPTS_DIR)/cpp_generator.py \
$(JavaScriptCore_SCRIPTS_DIR)/generate_cpp_backend_dispatcher_header.py \
$(JavaScriptCore_SCRIPTS_DIR)/generate_cpp_backend_dispatcher_implementation.py \
$(JavaScriptCore_SCRIPTS_DIR)/generate_cpp_frontend_dispatcher_header.py \
$(JavaScriptCore_SCRIPTS_DIR)/generate_cpp_frontend_dispatcher_implementation.py \
$(JavaScriptCore_SCRIPTS_DIR)/generate_cpp_protocol_types_header.py \
$(JavaScriptCore_SCRIPTS_DIR)/generate_cpp_protocol_types_implementation.py \
$(JavaScriptCore_SCRIPTS_DIR)/generator_templates.py \
$(JavaScriptCore_SCRIPTS_DIR)/generator.py \
$(JavaScriptCore_SCRIPTS_DIR)/models.py \
$(JavaScriptCore_SCRIPTS_DIR)/generate-inspector-protocol-bindings.py \
#
AUTOMATION_PROTOCOL_INPUT_FILES = \
$(WebKit2)/UIProcess/Automation/Automation.json \
#
AUTOMATION_PROTOCOL_OUTPUT_FILES = \
AutomationBackendDispatchers.h \
AutomationBackendDispatchers.cpp \
AutomationFrontendDispatchers.h \
AutomationFrontendDispatchers.cpp \
#
ifeq ($(OS),MACOS)
ifeq ($(shell $(CC) -std=gnu++14 -x c++ -E -P -dM $(SDK_FLAGS) $(TARGET_TRIPLE_FLAGS) $(FRAMEWORK_FLAGS) $(HEADER_FLAGS) -include "wtf/Platform.h" /dev/null | grep ' WTF_PLATFORM_IOS ' | cut -d' ' -f3), 1)
AUTOMATION_BACKEND_PLATFORM_ARGUMENTS = --platform iOS
else
AUTOMATION_BACKEND_PLATFORM_ARGUMENTS = --platform macOS
endif
endif # MACOS
# JSON-RPC Frontend Dispatchers, Backend Dispatchers, Type Builders
$(firstword $(AUTOMATION_PROTOCOL_OUTPUT_FILES)) : $(AUTOMATION_PROTOCOL_INPUT_FILES) $(AUTOMATION_PROTOCOL_GENERATOR_SCRIPTS)
$(PYTHON) $(JavaScriptCore_SCRIPTS_DIR)/generate-inspector-protocol-bindings.py --framework WebKit $(AUTOMATION_BACKEND_PLATFORM_ARGUMENTS) --backend --outputDir . $(AUTOMATION_PROTOCOL_INPUT_FILES)
all : $(firstword $(AUTOMATION_PROTOCOL_OUTPUT_FILES))
%ScriptSource.h : %.js $(JavaScriptCore_SCRIPTS_DIR)/jsmin.py $(JavaScriptCore_SCRIPTS_DIR)/xxd.pl
echo "//# sourceURL=__InjectedScript_$(notdir $<)" > $(basename $(notdir $<)).min.js
$(PYTHON) $(JavaScriptCore_SCRIPTS_DIR)/jsmin.py < $< >> $(basename $(notdir $<)).min.js
$(PERL) $(JavaScriptCore_SCRIPTS_DIR)/xxd.pl $(basename $(notdir $<))ScriptSource $(basename $(notdir $<)).min.js $@
$(DELETE) $(basename $(notdir $<)).min.js
all : WebAutomationSessionProxyScriptSource.h
# WebPreferences generation
WEB_PREFERENCES_TEMPLATES = \
$(WebKit2)/Scripts/PreferencesTemplates/WebPageUpdatePreferences.cpp.erb \
$(WebKit2)/Scripts/PreferencesTemplates/WebPreferencesDefinitions.h.erb \
$(WebKit2)/Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.cpp.erb \
$(WebKit2)/Scripts/PreferencesTemplates/WebPreferencesKeys.h.erb \
$(WebKit2)/Scripts/PreferencesTemplates/WebPreferencesKeys.cpp.erb \
$(WebKit2)/Scripts/PreferencesTemplates/WebPreferencesStoreDefaultsMap.cpp.erb \
#
all : WebPageUpdatePreferences.cpp WebPreferencesDefinitions.h WebPreferencesExperimentalFeatures.cpp WebPreferencesKeys.h WebPreferencesKeys.cpp WebPreferencesStoreDefaultsMap.cpp
WebPageUpdatePreferences%cpp WebPreferencesDefinitions%h WebPreferencesExperimentalFeatures%cpp WebPreferencesKeys%h WebPreferencesKeys%cpp WebPreferencesStoreDefaultsMap%cpp : $(WebKit2)/Scripts/GeneratePreferences.rb $(WEB_PREFERENCES_TEMPLATES) $(WebKit2)/Shared/WebPreferences.yaml
$(RUBY) $< --input $(WebKit2)/Shared/WebPreferences.yaml