// 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)";

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 system content 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)$(WK_WORKSPACE_DIR_2_$(SRCROOT:dir:standardizepath:dir:standardizepath:file):standardizepath)$(WK_WORKSPACE_DIR_3_$(SRCROOT:dir:standardizepath:dir:standardizepath:dir:standardizepath:file):standardizepath)$(WK_WORKSPACE_DIR_4_$(SRCROOT:dir:standardizepath:dir:standardizepath:dir:standardizepath:dir:standardizepath:file):standardizepath)$(WK_WORKSPACE_DIR_5_$(SRCROOT:dir:standardizepath:dir:standardizepath:dir:standardizepath:dir:standardizepath:dir:standardizepath:file):standardizepath)$(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).0-additions.sdk;
WK_VERSIONED_SDK_ADDITIONS_PATH_YES = $(WK_WORKSPACE_DIR)/WebKitLibraries/SDKs/$(PLATFORM_NAME)$($(DEPLOYMENT_TARGET_SETTING_NAME):base).0.internal-additions.sdk;

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);

// 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;
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;
