// Copyright (C) 2009-2026 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 "../../../Configurations/Version.xcconfig"

HEADER_SEARCH_PATHS = "$(BUILT_PRODUCTS_DIR)$(WK_LIBRARY_HEADERS_FOLDER_PATH)" $(inherited);
SYSTEM_HEADER_SEARCH_PATHS = $(WK_PRIVATE_SDK_DIR)$(WK_ALTERNATE_WEBKIT_SDK_PATH)$(WK_LIBRARY_HEADERS_FOLDER_PATH) $(inherited);

FRAMEWORK_SEARCH_PATHS[sdk=embedded*] = $(WK_QUOTED_OVERRIDE_FRAMEWORKS_DIR) $(BUILT_PRODUCTS_DIR);
FRAMEWORK_SEARCH_PATHS[sdk=macosx*] = $(WK_QUOTED_OVERRIDE_FRAMEWORKS_DIR);

SYSTEM_FRAMEWORK_SEARCH_PATHS = $(inherited) $(WK_PRIVATE_SDK_DIR)$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks $(SDKROOT)$(SYSTEM_LIBRARY_DIR)/Frameworks;

SWIFT_INCLUDE_PATHS = $(SRCROOT)/WebGPU/Internal;

INFOPLIST_FILE = Info.plist;

INSTALL_PATH = $(INSTALL_PATH_PREFIX)$(WEBGPU_FRAMEWORKS_DIR);

DYLIB_INSTALL_NAME_BASE = $(DYLIB_INSTALL_NAME_BASE_$(WK_USE_ALTERNATE_FRAMEWORKS_DIR));
DYLIB_INSTALL_NAME_BASE_NO = $(NORMAL_WEBGPU_FRAMEWORKS_DIR);
DYLIB_INSTALL_NAME_BASE_YES = $(WEBGPU_FRAMEWORKS_DIR);

CRYPTEX_SYMLINK_PATH = $(WEBGPU_FRAMEWORKS_DIR);

OUTPUT_CRYPTEX_SYMLINK_PATH = $(OUTPUT_CRYPTEX_SYMLINK_PATH_$(USE_SYSTEM_CONTENT_PATH)_$(WK_NOT_$(WK_USE_OVERRIDE_FRAMEWORKS_DIR)));
OUTPUT_CRYPTEX_SYMLINK_PATH_YES_YES = $(DSTROOT)$(CRYPTEX_SYMLINK_PATH)/$(FULL_PRODUCT_NAME);

INSTALLHDRS_SCRIPT_PHASE = YES;

PRODUCT_NAME = WebGPU;
PRODUCT_BUNDLE_IDENTIFIER = com.apple.$(PRODUCT_NAME:rfc1034identifier);

WEBGPU_FRAMEWORKS_DIR = $(WEBGPU_FRAMEWORKS_DIR_USE_OVERRIDE_FRAMEWORKS_DIR_$(WK_USE_OVERRIDE_FRAMEWORKS_DIR));
WEBGPU_FRAMEWORKS_DIR_USE_OVERRIDE_FRAMEWORKS_DIR_NO = $(WEBGPU_FRAMEWORKS_DIR_USE_ALTERNATE_FRAMEWORKS_DIR_$(WK_USE_ALTERNATE_FRAMEWORKS_DIR));
WEBGPU_FRAMEWORKS_DIR_USE_OVERRIDE_FRAMEWORKS_DIR_YES = $(WK_OVERRIDE_FRAMEWORKS_DIR);
WEBGPU_FRAMEWORKS_DIR_USE_ALTERNATE_FRAMEWORKS_DIR_NO = $(NORMAL_WEBGPU_FRAMEWORKS_DIR);
WEBGPU_FRAMEWORKS_DIR_USE_ALTERNATE_FRAMEWORKS_DIR_YES = $(WK_ALTERNATE_FRAMEWORKS_DIR)/$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks;

GCC_PREPROCESSOR_DEFINITIONS = WGPU_SHARED_LIBRARY WGPU_IMPLEMENTATION $(inherited) $(GCC_PREPROCESSOR_DEFINITIONS_$(ENABLE_WEBGPU_SWIFT));
GCC_PREPROCESSOR_DEFINITIONS_ENABLE_WEBGPU_SWIFT = ENABLE_WEBGPU_SWIFT;

DEFINES_MODULE = YES;
MODULEMAP_FILE = WebGPU/WebGPU.modulemap;
MODULEMAP_PRIVATE_FILE = WebGPU/WebGPU_Private.modulemap;

ENABLE_MODULE_VERIFIER = $(ENABLE_MODULE_VERIFIER_$(WK_ENABLE_SLOW_BUILD_VERIFICATION)_$(ENABLE_WEBGPU_SWIFT));
ENABLE_MODULE_VERIFIER_YES_ENABLE_WEBGPU_SWIFT = YES;

MODULE_VERIFIER_SUPPORTED_LANGUAGES = objective-c objective-c++;
MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = gnu23 gnu++23;
MODULE_VERIFIER_KIND = builtin;
OTHER_MODULE_VERIFIER_FLAGS = -- $(WK_AVAILABILITY_OVERLAY_FLAGS) -iframework $(BUILT_PRODUCTS_DIR)/SDKAdditions/System/Library/Frameworks -I$(BUILT_PRODUCTS_DIR)$(WK_LIBRARY_HEADERS_FOLDER_PATH) -I$(WK_ADDITIONAL_SDKS)$(WK_LIBRARY_HEADERS_FOLDER_PATH) -isystem $(SDKROOT)$(WK_LIBRARY_HEADERS_FOLDER_PATH);

SUPPORTS_TEXT_BASED_API = $(WK_ENABLE_SLOW_BUILD_VERIFICATION);
// Override to enable SPI checking at desk. Remove once audit-spi works in
// production builds (https://bugs.webkit.org/show_bug.cgi?id=299573).
SUPPORTS_TEXT_BASED_API[sdk=iphoneos.internal] = YES;
TAPI_USE_SRCROOT = YES;
TAPI_VERIFY_MODE = $(TAPI_VERIFY_MODE_$(WK_ENABLE_SLOW_BUILD_VERIFICATION));
TAPI_VERIFY_MODE_YES = Pedantic;

WK_AUDIT_SPI_ALLOWLISTS = $(SRCROOT)/Configurations/AllowedSPI.toml $(SRCROOT)/Configurations/AllowedSPI-legacy.toml $(WK_AUDIT_SPI_ALLOWLISTS_$(USE_INTERNAL_SDK));
WK_AUDIT_SPI_ALLOWLISTS_YES = $(WK_WEBKITADDITIONS_HEADERS_FOLDER_PATH)/AllowedSPI/AllowedSPI-WebGPU.toml;

// HEADERMAP_INCLUDES_PROJECT_HEADERS = NO;

USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES;

WK_ERROR_WHEN_LINKING_WITH_STATIC_INITIALIZERS = -Xlinker -no_inits;
WK_NO_STATIC_INITIALIZERS = $(WK_NO_STATIC_INITIALIZERS_$(CONFIGURATION)_$(WK_ANY_SANITIZER_ENABLED)_$(ENABLE_LLVM_PROFILE_GENERATION));
WK_NO_STATIC_INITIALIZERS_Release__ = $(WK_ERROR_WHEN_LINKING_WITH_STATIC_INITIALIZERS);
WK_NO_STATIC_INITIALIZERS_Release_NO_ = $(WK_ERROR_WHEN_LINKING_WITH_STATIC_INITIALIZERS);
WK_NO_STATIC_INITIALIZERS_Production__ = $(WK_ERROR_WHEN_LINKING_WITH_STATIC_INITIALIZERS);
WK_NO_STATIC_INITIALIZERS_Production_NO_ = $(WK_ERROR_WHEN_LINKING_WITH_STATIC_INITIALIZERS);

// Work around rdar://139232237 / rdar://165050676 by hiding all exported symbols from the "Cxx" module.
UNEXPORT_SWIFT_CXX_LDFLAGS = -Wl,-unexported_symbol,_$s*3Cxx* -Wl,-unexported_symbol,_$s*defaultArg*;

ALLOW_SHARED_CACHE = $(ALLOW_SHARED_CACHE_$(WK_RELOCATABLE_FRAMEWORKS)_$(USE_STAGING_INSTALL_PATH)_$(WK_PLATFORM_NAME));
ALLOW_SHARED_CACHE_YES_YES_macosx = NO;
ALLOW_SHARED_CACHE_YES__macosx = NO;
ALLOW_SHARED_CACHE__YES_macosx = NO;

OTHER_LDFLAGS_SHARED_CACHE = $(OTHER_LDFLAGS_SHARED_CACHE_$(ALLOW_SHARED_CACHE));
OTHER_LDFLAGS_SHARED_CACHE_NO = -Wl,-not_for_dyld_shared_cache;

OTHER_LDFLAGS = $(inherited) $(UNEXPORT_SWIFT_CXX_LDFLAGS) $(SOURCE_VERSION_LDFLAGS) $(WK_NO_STATIC_INITIALIZERS) $(OTHER_LDFLAGS_SHARED_CACHE) $(OTHER_LDFLAGS_ADDITIONAL_FRAMEWORKS) -Wl,-unexported_symbol,*s_heapSpec;

ENABLE_WEBGPU_SWIFT = ;

ENABLE_WEBGPU_SWIFT[sdk=macosx*] = ENABLE_WEBGPU_SWIFT;

ENABLE_WEBGPU_SWIFT[sdk=iphone*] = ENABLE_WEBGPU_SWIFT;
ENABLE_WEBGPU_SWIFT[sdk=iphone*26.2*] = ;
ENABLE_WEBGPU_SWIFT[sdk=iphone*26.3*] = ;

// WebGPU has a problem on iOS simulator on older SDKs
// (https://bugs.webkit.org/show_bug.cgi?id=300146).
ENABLE_WEBGPU_SWIFT[sdk=iphonesimulator26*] = ;

ENABLE_WEBGPU_SWIFT[sdk=xros*] = ENABLE_WEBGPU_SWIFT;
ENABLE_WEBGPU_SWIFT[sdk=xros*26.2*] = ;
ENABLE_WEBGPU_SWIFT[sdk=xros*26.3*] = ;

ENABLE_WEBGPU_SWIFT[sdk=appletvos*] = ;

ENABLE_WEBGPU_SWIFT[sdk=watch*] = ;

SWIFT_OBJC_INTERFACE_HEADER_NAME = WebGPUSwift-Generated.h;
SWIFT_INSTALL_OBJC_HEADER = NO;
SWIFT_OBJC_INTEROP_MODE = $(WK_SWIFT_OBJC_INTEROP_MODE_$(ENABLE_WEBGPU_SWIFT))
WK_SWIFT_OBJC_INTEROP_MODE_ENABLE_WEBGPU_SWIFT = objcxx;
SWIFT_LIBRARY_LEVEL = spi;

// FIXME: broaden SafeInteropWrappers to all of WebKit; rdar://159439903
OTHER_SWIFT_FLAGS = $(inherited) @$(BUILT_PRODUCTS_DIR)/DerivedSources/WebGPU/platform-enabled-swift-args.$(arch).resp -Xcc -std=c++2b -Xcc -DUCHAR_TYPE=char16_t -enable-experimental-feature SafeInteropWrappers -enable-experimental-feature LifetimeDependence -Xfrontend -clang-header-expose-decls=has-expose-attr-or-stdlib -Xfrontend -emit-clang-header-min-access -Xfrontend internal;

EXCLUDED_SOURCE_FILE_NAMES = $(EXCLUDED_SOURCE_FILE_NAMES_$(ENABLE_WEBGPU_SWIFT));
EXCLUDED_SOURCE_FILE_NAMES_ENABLE_WEBGPU_SWIFT =;
EXCLUDED_SOURCE_FILE_NAMES_ = *.swift;

BUILD_LIBRARY_FOR_DISTRIBUTION = YES; // This is required for all frameworks in the OS.
RUN_SWIFT_ABI_CHECKER_TOOL = NO;

// When back-deploying for STP and downlevel builds, force Xcode to embed any
// compatibility runtimes alongside WebKit.framework.
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES[config=Production] = $(WK_USE_OVERRIDE_FRAMEWORKS_DIR);
SWIFT_STDLIB_TOOL_DESTINATION_DIR = $(SWIFT_STDLIB_TOOL_DESTINATION_DIR_$(DEPLOYMENT_LOCATION));
SWIFT_STDLIB_TOOL_DESTINATION_DIR_NO = $(BUILT_PRODUCTS_DIR);
SWIFT_STDLIB_TOOL_DESTINATION_DIR_YES = $(DSTROOT)$(WK_OVERRIDE_FRAMEWORKS_DIR);
