blob: 151210d35a31eea46ba12f8c8d7c2fece93a1585 [file] [log] [blame] [edit]
// Copyright (C) 2022-2023 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. ``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
// 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.
#include "WebKitTargetConditionals.xcconfig"
// Includes both Safari Technology Preview and StagedFrameworks cases.
WK_USE_OVERRIDE_FRAMEWORKS_DIR = $(WK_NOT_$(WK_EMPTY_$(WK_OVERRIDE_FRAMEWORKS_DIR)));
// WK_OVERRIDE_FRAMEWORKS_DIR is overridden externally for Safari Technology Preview build.
WK_OVERRIDE_FRAMEWORKS_DIR = $(WK_OVERRIDE_FRAMEWORKS_DIR_USE_STAGING_INSTALL_PATH_$(USE_STAGING_INSTALL_PATH));
WK_OVERRIDE_FRAMEWORKS_DIR_USE_STAGING_INSTALL_PATH_YES = $(WK_INSTALL_PATH_PREFIX)$(SYSTEM_LIBRARY_DIR)/StagedFrameworks/Safari;
WK_QUOTED_OVERRIDE_FRAMEWORKS_DIR = $(WK_QUOTED_OVERRIDE_FRAMEWORKS_DIR_$(WK_USE_OVERRIDE_FRAMEWORKS_DIR));
WK_QUOTED_OVERRIDE_FRAMEWORKS_DIR_YES = "$(WK_OVERRIDE_FRAMEWORKS_DIR)";
// Set WK_CONFIGURATION_BUILD_DIR to customize the directory WebKit builds into
// without affecting other projects in the build request. Avoid $(inherited)
// due to rdar://118201428.
CONFIGURATION_BUILD_DIR = $(CONFIGURATION_BUILD_DIR_$(WK_EMPTY_$(WK_CONFIGURATION_BUILD_DIR)));
CONFIGURATION_BUILD_DIR_ = $(WK_CONFIGURATION_BUILD_DIR);
CONFIGURATION_BUILD_DIR_YES = $(CONFIGURATION_BUILD_DIR);
WK_LIBRARY_HEADERS_FOLDER_PATH = $(WK_LIBRARY_HEADERS_FOLDER_PATH_OVERRIDE_$(WK_USE_OVERRIDE_FRAMEWORKS_DIR));
WK_LIBRARY_HEADERS_FOLDER_PATH_OVERRIDE_NO = /usr/local/include;
WK_LIBRARY_HEADERS_FOLDER_PATH_OVERRIDE_YES = /usr/local/include/safari-sdk;
WK_LIBRARY_INSTALL_PATH = $(WK_LIBRARY_INSTALL_PATH_OVERRIDE_$(WK_USE_OVERRIDE_FRAMEWORKS_DIR));
WK_LIBRARY_INSTALL_PATH_OVERRIDE_NO = /usr/local/lib;
WK_LIBRARY_INSTALL_PATH_OVERRIDE_YES = /usr/local/lib/safari-sdk;
// INSTALL_PATH_PREFIX adds the OS cryptex path as a prefix to products' install paths.
// Leave it empty when USE_STAGING_INSTALL_PATH is set, as the effective prefix will
// be baked into WK_OVERRIDE_FRAMEWORKS_DIR via WK_INSTALL_PATH_PREFIX instead.
INSTALL_PATH_PREFIX = $(INSTALL_PATH_PREFIX_USE_SYSTEM_CONTENT_PATH_$(USE_SYSTEM_CONTENT_PATH)_$(WK_NOT_$(USE_STAGING_INSTALL_PATH)));
INSTALL_PATH_PREFIX_USE_SYSTEM_CONTENT_PATH_YES_YES = $(SYSTEM_CONTENT_PATH);
// WK_INSTALL_PATH_PREFIX is used to define a prefix for the override install path when using staged frameworks.
WK_INSTALL_PATH_PREFIX = $(WK_INSTALL_PATH_PREFIX_DEPLOYMENT_$(DEPLOYMENT_LOCATION)_USE_STAGING_INSTALL_PATH_$(USE_STAGING_INSTALL_PATH)_USE_SYSTEM_CONTENT_PATH_$(USE_SYSTEM_CONTENT_PATH));
WK_INSTALL_PATH_PREFIX_DEPLOYMENT_YES_USE_STAGING_INSTALL_PATH_YES_USE_SYSTEM_CONTENT_PATH_YES = $(SYSTEM_SECONDARY_CONTENT_PATH);
WK_INSTALL_PATH_PREFIX_DEPLOYMENT_YES_USE_STAGING_INSTALL_PATH_YES_USE_SYSTEM_CONTENT_PATH_NO = $(PLATFORM_OOB_SYSTEM_CONTENT_DIR);
WK_INSTALL_PATH_PREFIX_DEPLOYMENT_YES_USE_STAGING_INSTALL_PATH_YES_USE_SYSTEM_CONTENT_PATH_ = $(PLATFORM_OOB_SYSTEM_CONTENT_DIR);
PRODUCTION_PUBLIC_FRAMEWORKS_DIR = $(PRODUCTION_PUBLIC_FRAMEWORKS_DIR_USE_OVERRIDE_FRAMEWORKS_DIR_$(WK_USE_OVERRIDE_FRAMEWORKS_DIR));
PRODUCTION_PUBLIC_FRAMEWORKS_DIR_USE_OVERRIDE_FRAMEWORKS_DIR_NO = $(INSTALL_PATH_PREFIX)$(WK_ALTERNATE_WEBKIT_SDK_PATH)$(SYSTEM_LIBRARY_DIR)/Frameworks;
PRODUCTION_PUBLIC_FRAMEWORKS_DIR_USE_OVERRIDE_FRAMEWORKS_DIR_YES = $(WK_OVERRIDE_FRAMEWORKS_DIR);
PRODUCTION_PRIVATE_FRAMEWORKS_DIR = $(PRODUCTION_PRIVATE_FRAMEWORKS_DIR_USE_OVERRIDE_FRAMEWORKS_DIR_$(WK_USE_OVERRIDE_FRAMEWORKS_DIR));
PRODUCTION_PRIVATE_FRAMEWORKS_DIR_USE_OVERRIDE_FRAMEWORKS_DIR_NO = $(INSTALL_PATH_PREFIX)$(WK_ALTERNATE_WEBKIT_SDK_PATH)$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks;
PRODUCTION_PRIVATE_FRAMEWORKS_DIR_USE_OVERRIDE_FRAMEWORKS_DIR_YES = $(WK_OVERRIDE_FRAMEWORKS_DIR);
// Install names for WebCore and WebKitLegacy frameworks, named after where they are on macOS.
NORMAL_UMBRELLA_FRAMEWORKS_DIR = $(WK_ALTERNATE_WEBKIT_SDK_PATH)$(NORMAL_UMBRELLA_FRAMEWORKS_DIR_COCOA_TOUCH_$(WK_IS_COCOA_TOUCH));
NORMAL_UMBRELLA_FRAMEWORKS_DIR_COCOA_TOUCH_YES = $(SYSTEM_LIBRARY_DIR)/PrivateFrameworks;
NORMAL_UMBRELLA_FRAMEWORKS_DIR_COCOA_TOUCH_NO = $(SYSTEM_LIBRARY_DIR)/Frameworks/WebKit.framework/Versions/A/Frameworks;
// Install paths for WebCore and WebKitLegacy frameworks, named after where they are on macOS.
UMBRELLA_FRAMEWORKS_DIR = $(UMBRELLA_FRAMEWORKS_DIR_OVERRIDE_$(WK_USE_OVERRIDE_FRAMEWORKS_DIR));
UMBRELLA_FRAMEWORKS_DIR_OVERRIDE_NO = $(INSTALL_PATH_PREFIX)$(NORMAL_UMBRELLA_FRAMEWORKS_DIR);
UMBRELLA_FRAMEWORKS_DIR_OVERRIDE_YES = $(WK_OVERRIDE_FRAMEWORKS_DIR);
WK_WEBKITADDITIONS_HEADERS_FOLDER_PATH = $(BUILT_PRODUCTS_DIR)$(WK_LIBRARY_HEADERS_FOLDER_PATH)/WebKitAdditions;
WK_WEBKITADDITIONS_HEADERS_FOLDER_PATH[config=Production] = $(SDK_DIR)$(WK_LIBRARY_HEADERS_FOLDER_PATH)/WebKitAdditions;
// The root directory of the workspace / WebKit repo is determined by how many directories up "Source" or "Tools" is from the SRCROOT.
WK_WORKSPACE_DIR = $(WK_WORKSPACE_DIR_1_$(SRCROOT:dir:standardizepath:file):standardizepath:default=$(WK_WORKSPACE_DIR_2_$(SRCROOT:dir:standardizepath:dir:standardizepath:file):standardizepath:default=$(WK_WORKSPACE_DIR_3_$(SRCROOT:dir:standardizepath:dir:standardizepath:dir:standardizepath:file):standardizepath:default=$(WK_WORKSPACE_DIR_4_$(SRCROOT:dir:standardizepath:dir:standardizepath:dir:standardizepath:dir:standardizepath:file):standardizepath:default=$(WK_WORKSPACE_DIR_5_$(SRCROOT:dir:standardizepath:dir:standardizepath:dir:standardizepath:dir:standardizepath:dir:standardizepath:file):standardizepath:default=$(WK_WORKSPACE_DIR_6_$(SRCROOT:dir:standardizepath:dir:standardizepath:dir:standardizepath:dir:standardizepath:dir:standardizepath:dir:standardizepath:file):standardizepath))))));
WK_WORKSPACE_DIR_1_Source = $(SRCROOT)/../..;
WK_WORKSPACE_DIR_1_Tools = $(SRCROOT)/../..;
WK_WORKSPACE_DIR_2_Source = $(SRCROOT)/../../..;
WK_WORKSPACE_DIR_2_Tools = $(SRCROOT)/../../..;
WK_WORKSPACE_DIR_3_Source = $(SRCROOT)/../../../..;
WK_WORKSPACE_DIR_4_Source = $(SRCROOT)/../../../../..;
WK_WORKSPACE_DIR_5_Source = $(SRCROOT)/../../../../../..;
WK_WORKSPACE_DIR_6_Source = $(SRCROOT)/../../../../../../..;
WK_DOWNLEVEL_FRAMEWORK_STUBS_DIR[sdk=macos*] = $(WK_DOWNLEVEL_FRAMEWORK_STUBS_DIR$(WK_MACOS_1400);
WK_DOWNLEVEL_FRAMEWORK_STUBS_DIR_MACOS_BEFORE_1400 = $(WK_WORKSPACE_DIR)/WebKitLibraries/DownlevelFrameworkStubs/$(TARGET_MAC_OS_X_VERSION_MAJOR);
WK_VERSIONED_SDK_ADDITIONS_PATH = $(WK_VERSIONED_SDK_ADDITIONS_PATH_$(USE_INTERNAL_SDK));
WK_VERSIONED_SDK_ADDITIONS_PATH_ = $(WK_WORKSPACE_DIR)/WebKitLibraries/SDKs/$(PLATFORM_NAME)$($(DEPLOYMENT_TARGET_SETTING_NAME):base:base).0-additions.sdk;
WK_VERSIONED_SDK_ADDITIONS_PATH_YES = $(WK_WORKSPACE_DIR)/WebKitLibraries/SDKs/$(PLATFORM_NAME)$($(DEPLOYMENT_TARGET_SETTING_NAME):base:base).0.internal-additions.sdk;
// Partial SDK DBs used for analysis are checked in to WebKitLibraries, but the
// internal build may override this location.
WK_SDKDB_DIR = $(inherited:default=$(WK_WORKSPACE_DIR)/WebKitLibraries/SDKDBs);
WTF_BUILD_SCRIPTS_DIR = $(WTF_BUILD_SCRIPTS_DIR_$(CONFIGURATION));
WTF_BUILD_SCRIPTS_DIR_Release = $(WTF_BUILD_SCRIPTS_DIR_engineering);
WTF_BUILD_SCRIPTS_DIR_Debug = $(WTF_BUILD_SCRIPTS_DIR_engineering);
WTF_BUILD_SCRIPTS_DIR_Production = $(WTF_BUILD_SCRIPTS_DIR_Production_COCOA_TOUCH_$(WK_IS_COCOA_TOUCH));
WTF_BUILD_SCRIPTS_DIR_Production_COCOA_TOUCH_YES = $(SDK_DIR)$(WK_ALTERNATE_WEBKIT_SDK_PATH)$(WK_LIBRARY_HEADERS_FOLDER_PATH)/wtf/Scripts;
WTF_BUILD_SCRIPTS_DIR_Production_COCOA_TOUCH_NO = $(SDK_DIR)$(WK_LIBRARY_HEADERS_FOLDER_PATH)/wtf/Scripts;
WTF_BUILD_SCRIPTS_DIR_engineering = $(BUILT_PRODUCTS_DIR)$(WK_LIBRARY_HEADERS_FOLDER_PATH)/wtf/Scripts;
JAVASCRIPTCORE_PRIVATE_HEADERS_DIR = $(JAVASCRIPTCORE_PRIVATE_HEADERS_DIR_$(CONFIGURATION));
JAVASCRIPTCORE_PRIVATE_HEADERS_DIR_Release = $(JAVASCRIPTCORE_PRIVATE_HEADERS_DIR_engineering);
JAVASCRIPTCORE_PRIVATE_HEADERS_DIR_Debug = $(JAVASCRIPTCORE_PRIVATE_HEADERS_DIR_engineering);
JAVASCRIPTCORE_PRIVATE_HEADERS_DIR_Production = $(SDK_DIR)$(PRODUCTION_PUBLIC_FRAMEWORKS_DIR)/JavaScriptCore.framework/$(WK_FRAMEWORK_VERSION_PREFIX)PrivateHeaders;
JAVASCRIPTCORE_PRIVATE_HEADERS_DIR_engineering = $(BUILT_PRODUCTS_DIR)/JavaScriptCore.framework/$(WK_FRAMEWORK_VERSION_PREFIX)PrivateHeaders;
WEBCORE_PRIVATE_HEADERS_DIR = $(WEBCORE_PRIVATE_HEADERS_DIR_$(CONFIGURATION));
WEBCORE_PRIVATE_HEADERS_DIR_Release = $(WEBCORE_PRIVATE_HEADERS_DIR_engineering);
WEBCORE_PRIVATE_HEADERS_DIR_Debug = $(WEBCORE_PRIVATE_HEADERS_DIR_engineering);
WEBCORE_PRIVATE_HEADERS_DIR_Production = $(SDK_DIR)$(WEBCORE_PRIVATE_HEADERS_DIR_Production_COCOA_TOUCH_$(WK_IS_COCOA_TOUCH));
WEBCORE_PRIVATE_HEADERS_DIR_Production_COCOA_TOUCH_YES = $(PRODUCTION_PRIVATE_FRAMEWORKS_DIR)/WebCore.framework/$(WK_FRAMEWORK_VERSION_PREFIX)PrivateHeaders;
WEBCORE_PRIVATE_HEADERS_DIR_Production_COCOA_TOUCH_NO = $(WEBCORE_PRIVATE_HEADERS_DIR_Production_$(WK_DEFAULT_PLATFORM_NAME)_USE_OVERRIDE_FRAMEWORKS_DIR_$(WK_USE_OVERRIDE_FRAMEWORKS_DIR));
WEBCORE_PRIVATE_HEADERS_DIR_Production_macosx_USE_OVERRIDE_FRAMEWORKS_DIR_NO = $(UMBRELLA_FRAMEWORKS_DIR)/WebCore.framework/$(WK_FRAMEWORK_VERSION_PREFIX)PrivateHeaders;
WEBCORE_PRIVATE_HEADERS_DIR_Production_macosx_USE_OVERRIDE_FRAMEWORKS_DIR_YES = $(WK_OVERRIDE_FRAMEWORKS_DIR)/WebCore.framework/$(WK_FRAMEWORK_VERSION_PREFIX)PrivateHeaders;
WEBCORE_PRIVATE_HEADERS_DIR_engineering = $(BUILT_PRODUCTS_DIR)/WebCore.framework/$(WK_FRAMEWORK_VERSION_PREFIX)PrivateHeaders;
WEBCORE_TEST_SUPPORT_DIR = $(WEBCORE_TEST_SUPPORT_DIR_$(CONFIGURATION));
WEBCORE_TEST_SUPPORT_DIR_Release = $(WEBCORE_TEST_SUPPORT_DIR_Engineering);
WEBCORE_TEST_SUPPORT_DIR_Debug = $(WEBCORE_TEST_SUPPORT_DIR_Engineering);
WEBCORE_TEST_SUPPORT_DIR_Production = $(SDK_DIR)$(WK_ALTERNATE_WEBKIT_SDK_PATH)$(WK_LIBRARY_HEADERS_FOLDER_PATH)/WebCoreTestSupport;
WEBCORE_TEST_SUPPORT_DIR_Engineering = $(BUILT_PRODUCTS_DIR)/WebCoreTestSupport;
// Where libwebrtc and ANGLE go.
WEBCORE_LIBRARY_DIR = $(UMBRELLA_FRAMEWORKS_DIR)/WebCore.framework/Frameworks
WEBCORE_LIBRARY_DIR[sdk=macosx*] = $(WEBCORE_LIBRARY_DIR_USE_OVERRIDE_FRAMEWORKS_DIR_$(WK_USE_OVERRIDE_FRAMEWORKS_DIR))
WEBCORE_LIBRARY_DIR_USE_OVERRIDE_FRAMEWORKS_DIR_NO = $(UMBRELLA_FRAMEWORKS_DIR)/WebCore.framework/Versions/A/Frameworks;
WEBCORE_LIBRARY_DIR_USE_OVERRIDE_FRAMEWORKS_DIR_YES = $(WK_OVERRIDE_FRAMEWORKS_DIR);
WEBKITLEGACY_PRIVATE_HEADERS_DIR = $(WEBKITLEGACY_PRIVATE_HEADERS_DIR_$(CONFIGURATION));
WEBKITLEGACY_PRIVATE_HEADERS_DIR_Release = $(WEBKITLEGACY_PRIVATE_HEADERS_DIR_engineering);
WEBKITLEGACY_PRIVATE_HEADERS_DIR_Debug = $(WEBKITLEGACY_PRIVATE_HEADERS_DIR_engineering);
WEBKITLEGACY_PRIVATE_HEADERS_DIR_Production = $(SDK_DIR)$(WEBKITLEGACY_PRIVATE_HEADERS_DIR_Production_COCOA_TOUCH_$(WK_IS_COCOA_TOUCH));
WEBKITLEGACY_PRIVATE_HEADERS_DIR_Production_COCOA_TOUCH_YES = $(PRODUCTION_PRIVATE_FRAMEWORKS_DIR)/WebKitLegacy.framework/$(WK_FRAMEWORK_VERSION_PREFIX)PrivateHeaders;
WEBKITLEGACY_PRIVATE_HEADERS_DIR_Production_COCOA_TOUCH_NO = $(WEBKITLEGACY_PRIVATE_HEADERS_DIR_Production_$(WK_DEFAULT_PLATFORM_NAME)_USE_OVERRIDE_FRAMEWORKS_DIR_$(WK_USE_OVERRIDE_FRAMEWORKS_DIR));
WEBKITLEGACY_PRIVATE_HEADERS_DIR_Production_macosx_USE_OVERRIDE_FRAMEWORKS_DIR_NO = $(UMBRELLA_FRAMEWORKS_DIR)/WebKitLegacy.framework/$(WK_FRAMEWORK_VERSION_PREFIX)PrivateHeaders;
WEBKITLEGACY_PRIVATE_HEADERS_DIR_Production_macosx_USE_OVERRIDE_FRAMEWORKS_DIR_YES = $(WK_OVERRIDE_FRAMEWORKS_DIR)/WebKitLegacy.framework/$(WK_FRAMEWORK_VERSION_PREFIX)PrivateHeaders;
WEBKITLEGACY_PRIVATE_HEADERS_DIR_engineering = $(BUILT_PRODUCTS_DIR)/WebKitLegacy.framework/$(WK_FRAMEWORK_VERSION_PREFIX)PrivateHeaders;
NORMAL_WEBKIT_FRAMEWORKS_DIR = $(WK_ALTERNATE_WEBKIT_SDK_PATH)$(SYSTEM_LIBRARY_DIR)/Frameworks;
WEBKIT_FRAMEWORKS_DIR = $(WEBKIT_FRAMEWORKS_DIR_USE_OVERRIDE_FRAMEWORKS_DIR_$(WK_USE_OVERRIDE_FRAMEWORKS_DIR));
WEBKIT_FRAMEWORKS_DIR_USE_OVERRIDE_FRAMEWORKS_DIR_NO = $(INSTALL_PATH_PREFIX)$(NORMAL_WEBKIT_FRAMEWORKS_DIR);
WEBKIT_FRAMEWORKS_DIR_USE_OVERRIDE_FRAMEWORKS_DIR_YES = $(WK_OVERRIDE_FRAMEWORKS_DIR);
WEBKIT_FUZZERS_DIR = /usr/local/libexec/webkit;
// FIXME: We should search one specific path depending on build style, to avoid finding stale files.
WEBKITADDITIONS_HEADER_SEARCH_PATHS = $(BUILT_PRODUCTS_DIR)$(WK_LIBRARY_HEADERS_FOLDER_PATH)/WebKitAdditions $(SDK_DIR)$(WK_LIBRARY_HEADERS_FOLDER_PATH)/WebKitAdditions;
ANGLE_HEADER_SEARCH_PATHS = $(BUILT_PRODUCTS_DIR)$(WK_ALTERNATE_FRAMEWORKS_DIR)$(WK_LIBRARY_HEADERS_FOLDER_PATH)/ $(SDK_DIR)$(WK_ALTERNATE_WEBKIT_SDK_PATH)$(WK_LIBRARY_HEADERS_FOLDER_PATH)/;
LIBWEBRTC_HEADER_SEARCH_PATHS = $(BUILT_PRODUCTS_DIR)$(WK_LIBRARY_HEADERS_FOLDER_PATH)/webrtc $(SDK_DIR)$(WK_ALTERNATE_WEBKIT_SDK_PATH)$(WK_LIBRARY_HEADERS_FOLDER_PATH)/webrtc;
LIBWEBM_HEADER_SEARCH_PATHS = $(BUILT_PRODUCTS_DIR)$(WK_LIBRARY_HEADERS_FOLDER_PATH)/webm $(SDK_DIR)$(WK_ALTERNATE_WEBKIT_SDK_PATH)$(WK_LIBRARY_HEADERS_FOLDER_PATH)/webm;
WEBGPU_HEADER_SEARCH_PATHS = $(BUILT_PRODUCTS_DIR)$(WK_LIBRARY_HEADERS_FOLDER_PATH)/pal/graphics/WebGPU $(SDK_DIR)$(WK_ALTERNATE_FRAMEWORKS_DIR)$(WK_LIBRARY_HEADERS_FOLDER_PATH)/pal/graphics/WebGPU;