| // 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" |
| |
| EXCLUDED_SOURCE_FILE_NAMES = $(EXCLUDED_SOURCE_FILE_NAMES_$(WK_COCOA_TOUCH)); |
| EXCLUDED_SOURCE_FILE_NAMES_cocoatouch = *.defs *.xib *.pdf *.tiff PopupMenuMac.* SearchPopupMenuMac.* WebClipView.* WebDynamicScrollBarsView.* WebEventRegion.h WebIconDatabase.* WebInspectorClient.* WebJavaScriptTextInputPanel.* WebNSEventExtras.* WebNSPasteboardExtras.* WebNSWindowExtras.* WebPanelAuthenticationHandler.* WebPluginsPrivate.* WebStringTruncator.* WebTextCompletionController.*; |
| EXCLUDED_SOURCE_FILE_NAMES_ = *IOS.mm AbstractPasteboard.h DOMHTMLTextAreaElementPrivate.h DOMUIKitExtensions.h KeyEventCodesIOS.h WAKAppKitStubs.h WAKResponder.h WAKView.h WAKWindow.h WebCaretChangeListener.h WebCoreThread.h WebCoreThreadMessage.h WebCoreThreadRun.h WebEvent.h WebEventRegion.h WebFixedPositionContent.h WebFrameIOS.h WebFrameIPhone.h WebGeolocationCoreLocationProvider.h WebGeolocationPrivate.h WebGeolocationProviderIOS.h WebItemProviderPasteboard.h WebMIMETypeRegistry.h WebNSStringExtrasIOS.h WebNSStringExtrasIPhone.h WebPDFViewIOS.h WebPDFViewIPhone.h WebPDFViewPlaceholder.h WebSelectionRect.h WebUIKitDelegate.h WebUIKitSupport.h WebVisiblePosition.h WKContentObservation.h WKGraphics.h WKTypes.h; |
| |
| INCLUDED_SOURCE_FILE_NAMES = $(INCLUDED_MIGRATED_HEADERS_$(USE_INTERNAL_SDK)_$(WK_COCOA_TOUCH)) $(INCLUDED_MIGRATED_HEADERS_$(ENABLE_IOS_TOUCH_EVENTS)); |
| // WebEventRegion.h is migrated when building for an iOS family target with an internal SDK... |
| INCLUDED_MIGRATED_HEADERS_YES_cocoatouch = WebEventRegion.h; |
| // ...or when --ios-touch-events was passed to build-webkit manually. |
| INCLUDED_MIGRATED_HEADERS_ENABLE_IOS_TOUCH_EVENTS = WebEventRegion.h; |
| |
| EXPORTED_SYMBOLS_FILE = $(BUILT_PRODUCTS_DIR)/DerivedSources/WebKitLegacy/WebKitLegacy.generated.exp; |
| |
| FRAMEWORK_SEARCH_PATHS[sdk=embedded*] = $(BUILT_PRODUCTS_DIR); |
| FRAMEWORK_SEARCH_PATHS[sdk=macosx*] = $(WK_QUOTED_OVERRIDE_FRAMEWORKS_DIR) "$(PRODUCTION_PUBLIC_FRAMEWORKS_DIR)/WebKit.framework/Versions/A/Frameworks"; |
| |
| SYSTEM_FRAMEWORK_SEARCH_PATHS = $(inherited) $(WK_PRIVATE_SDK_DIR)$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks $(SDKROOT)$(SYSTEM_LIBRARY_DIR)/Frameworks; |
| |
| OTHER_CFLAGS = $(inherited) $(OTHER_CFLAGS_COCOA_TOUCH) $(WK_CFLAGS_BUILD_FOR_TESTING_$(WK_BUILD_FOR_TESTING)); |
| OTHER_CFLAGS_COCOA_TOUCH = $(OTHER_CFLAGS_COCOA_TOUCH_$(WK_IS_COCOA_TOUCH)); |
| OTHER_CFLAGS_COCOA_TOUCH_NO = -iframework $(SDKROOT)$(SYSTEM_LIBRARY_DIR)/Frameworks/WebKit.framework/Frameworks; |
| |
| WK_CFLAGS_BUILD_FOR_TESTING_YES = -DENABLE_BUILD_FOR_TESTING; |
| |
| DEBUG_DEFINES[config=Debug] = $(inherited) ENABLE_WEBKIT_UNSET_DYLD_FRAMEWORK_PATH; |
| DEBUG_DEFINES[config=Release] = $(inherited) ENABLE_WEBKIT_UNSET_DYLD_FRAMEWORK_PATH; |
| |
| GCC_PREFIX_HEADER = mac/WebKitPrefix.h; |
| GCC_PREPROCESSOR_DEFINITIONS = $(DEBUG_DEFINES) $(ENABLE_PDFJS) BUILDING_WEBKIT FRAMEWORK_NAME=WebKitLegacy $(inherited); |
| |
| HEADER_SEARCH_PATHS = "$(WEBCORE_PRIVATE_HEADERS_DIR)/ForwardingHeaders" "$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKitLegacy" "$(BUILT_PRODUCTS_DIR)$(WK_LIBRARY_HEADERS_FOLDER_PATH)" $(WEBGPU_HEADER_SEARCH_PATHS) $(WEBKITADDITIONS_HEADER_SEARCH_PATHS) $(LIBWEBRTC_HEADER_SEARCH_PATHS) $(LIBWEBM_HEADER_SEARCH_PATHS) $(HEADER_SEARCH_PATHS) $(SRCROOT); |
| SYSTEM_HEADER_SEARCH_PATHS = $(WK_PRIVATE_SDK_DIR)$(WK_ALTERNATE_WEBKIT_SDK_PATH)$(WK_LIBRARY_HEADERS_FOLDER_PATH) $(inherited); |
| INFOPLIST_FILE = mac/Info.plist; |
| |
| INSTALL_PATH = $(UMBRELLA_FRAMEWORKS_DIR); |
| |
| DYLIB_INSTALL_NAME_BASE = $(NORMAL_UMBRELLA_FRAMEWORKS_DIR); |
| |
| INSTALLHDRS_COPY_PHASE = YES; |
| INSTALLHDRS_SCRIPT_PHASE = YES; |
| APPLY_RULES_IN_COPY_HEADERS = YES; |
| |
| CRYPTEX_SYMLINK_PATH[sdk=iphone*] = $(SYSTEM_LIBRARY_DIR)/PrivateFrameworks; |
| CRYPTEX_SYMLINK_PATH[sdk=macosx*] = $(CRYPTEX_SYMLINK_PATH_$(WK_USE_ALTERNATE_FRAMEWORKS_DIR)); |
| CRYPTEX_SYMLINK_PATH_YES = $(WK_ALTERNATE_FRAMEWORKS_DIR)/$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks; |
| |
| OUTPUT_CRYPTEX_SYMLINK_PATH[sdk=iphone*] = $(OUTPUT_CRYPTEX_SYMLINK_PATH_$(USE_SYSTEM_CONTENT_PATH)); |
| OUTPUT_CRYPTEX_SYMLINK_PATH_YES[sdk=iphone*] = $(DSTROOT)$(CRYPTEX_SYMLINK_PATH)/$(FULL_PRODUCT_NAME); |
| |
| OUTPUT_CRYPTEX_SYMLINK_PATH[sdk=macosx*] = $(OUTPUT_CRYPTEX_SYMLINK_PATH_$(USE_SYSTEM_CONTENT_PATH)_$(WK_USE_ALTERNATE_FRAMEWORKS_DIR)); |
| OUTPUT_CRYPTEX_SYMLINK_PATH_YES_YES[sdk=macosx*] = $(DSTROOT)$(CRYPTEX_SYMLINK_PATH)/$(FULL_PRODUCT_NAME); |
| |
| PRODUCT_NAME = WebKitLegacy; |
| PRODUCT_BUNDLE_IDENTIFIER = com.apple.$(PRODUCT_NAME:rfc1034identifier); |
| |
| WK_APPKIT_LDFLAGS = $(WK_APPKIT_LDFLAGS_$(WK_PLATFORM_NAME)); |
| WK_APPKIT_LDFLAGS_macosx = -framework AppKit; |
| |
| WK_CARBON_LDFLAGS = $(WK_CARBON_LDFLAGS_$(WK_PLATFORM_NAME)); |
| WK_CARBON_LDFLAGS_macosx = -framework Carbon; |
| |
| WK_GRAPHICS_SERVICES_LDFLAGS = $(WK_GRAPHICS_SERVICES_LDFLAGS_$(WK_COCOA_TOUCH)); |
| WK_GRAPHICS_SERVICES_LDFLAGS_cocoatouch = -framework GraphicsServices; |
| |
| WK_MOBILE_CORE_SERVICES_LDFLAGS = $(WK_MOBILE_CORE_SERVICES_LDFLAGS_$(WK_COCOA_TOUCH)); |
| WK_MOBILE_CORE_SERVICES_LDFLAGS_cocoatouch = -framework MobileCoreServices; |
| |
| WK_MOBILE_GESTALT_LDFLAGS = $(WK_MOBILE_GESTALT_LDFLAGS_$(WK_COCOA_TOUCH)); |
| WK_MOBILE_GESTALT_LDFLAGS_cocoatouch = -lMobileGestalt; |
| |
| WK_SECURITY_INTERFACE_LDFLAGS = $(WK_SECURITY_INTERFACE_LDFLAGS_$(WK_PLATFORM_NAME)); |
| WK_SECURITY_INTERFACE_LDFLAGS_macosx = -framework SecurityInterface; |
| |
| WK_WEBINSPECTORUI_LDFLAGS = $(WK_WEBINSPECTORUI_LDFLAGS_$(WK_PLATFORM_NAME)); |
| WK_WEBINSPECTORUI_LDFLAGS_macosx = -weak_framework WebInspectorUI; |
| |
| 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); |
| |
| OTHER_LDFLAGS = $(inherited) -lobjc -lsqlite3 -framework CFNetwork -framework CoreFoundation -framework CoreGraphics -framework CoreText -framework Foundation -framework ImageIO -framework IOKit -framework UniformTypeIdentifiers $(WK_APPKIT_LDFLAGS) $(WK_CARBON_LDFLAGS) $(WK_GRAPHICS_SERVICES_LDFLAGS) $(WK_MOBILE_CORE_SERVICES_LDFLAGS) $(WK_MOBILE_GESTALT_LDFLAGS) $(WK_SECURITY_INTERFACE_LDFLAGS) $(WK_WEBINSPECTORUI_LDFLAGS) $(SOURCE_VERSION_LDFLAGS) $(WK_NO_STATIC_INITIALIZERS); |
| |
| SECTORDER_FLAGS = $(SECTORDER_FLAGS_$(CONFIGURATION)); |
| SECTORDER_FLAGS_Production[sdk=macosx*] = -Wl,-order_file,mac/WebKit.order; |
| |
| SUPPORTS_TEXT_BASED_API = $(OVERRIDE_SUPPORTS_TEXT_BASED_API:default=YES); |
| TAPI_USE_SRCROOT = YES; |
| TAPI_VERIFY_MODE = Pedantic; |
| |
| WK_AUDIT_SPI_ALLOWLISTS = $(SRCROOT)/mac/Configurations/AllowedSPI.toml $(SRCROOT)/mac/Configurations/AllowedSPI-legacy.toml $(WK_AUDIT_SPI_ALLOWLISTS_$(USE_INTERNAL_SDK)); |
| WK_AUDIT_SPI_ALLOWLISTS_YES = $(WK_WEBKITADDITIONS_HEADERS_FOLDER_PATH)/AllowedSPI/AllowedSPI-WebKitLegacy.toml; |
| |
| // FIXME: Replace -extra-*-header and -exclude-*-header flags with build setting equivalents once rdar://99885053 is completed in all needed toolchains. |
| OTHER_TAPI_FLAGS = $(inherited) $(WK_CFLAGS_BUILD_FOR_TESTING_$(WK_BUILD_FOR_TESTING)) -DRELEASE_WITHOUT_OPTIMIZATIONS -extra-private-header $(SOURCE_ROOT)/mac/TestingFunctions.h -extra-private-header $(SOURCE_ROOT)/mac/ExtraPrivateSymbolsForTAPI.h -Xparser -include -Xparser mac/WebKitPrefix.h $(OTHER_TAPI_FLAGS_102197642_WORKAROUND); |
| |
| // This unfortunate mess of arguments mirrors the EXCLUDED_ and INCLUDED_SOURCE_FILE_NAMES logic above for migrated headers. It needs to be kept in sync to avoid TAPI errors. |
| // FIXME: Convert to a filelist generated by xcfilelist-copy.py once rdar://102197642 is completed. |
| OTHER_TAPI_FLAGS_102197642_WORKAROUND = $(OTHER_TAPI_FLAGS_102197642_WORKAROUND_$(WK_COCOA_TOUCH)) -extra-private-header $(TARGET_BUILD_DIR)/$(PRIVATE_HEADERS_FOLDER_PATH)/WebKitAvailability.h -extra-private-header $(TARGET_BUILD_DIR)/$(PRIVATE_HEADERS_FOLDER_PATH)/WebScriptObject.h; |
| OTHER_TAPI_FLAGS_102197642_WORKAROUND_cocoatouch = $(OTHER_TAPI_FLAGS_102197642_WORKAROUND_cocoatouch_$(USE_INTERNAL_SDK)) $(OTHER_TAPI_FLAGS_102197642_WORKAROUND_$(ENABLE_IOS_TOUCH_EVENTS)) -extra-private-header $(TARGET_BUILD_DIR)/$(PRIVATE_HEADERS_FOLDER_PATH)/AbstractPasteboard.h -extra-private-header $(TARGET_BUILD_DIR)/$(PRIVATE_HEADERS_FOLDER_PATH)/KeyEventCodesIOS.h -extra-private-header $(TARGET_BUILD_DIR)/$(PRIVATE_HEADERS_FOLDER_PATH)/WAKAppKitStubs.h -extra-private-header $(TARGET_BUILD_DIR)/$(PRIVATE_HEADERS_FOLDER_PATH)/WAKResponder.h -extra-private-header $(TARGET_BUILD_DIR)/$(PRIVATE_HEADERS_FOLDER_PATH)/WAKView.h -extra-private-header $(TARGET_BUILD_DIR)/$(PRIVATE_HEADERS_FOLDER_PATH)/WAKWindow.h -extra-private-header $(TARGET_BUILD_DIR)/$(PRIVATE_HEADERS_FOLDER_PATH)/WebCoreThread.h -extra-private-header $(TARGET_BUILD_DIR)/$(PRIVATE_HEADERS_FOLDER_PATH)/WebCoreThreadMessage.h -extra-private-header $(TARGET_BUILD_DIR)/$(PRIVATE_HEADERS_FOLDER_PATH)/WebCoreThreadRun.h -extra-private-header $(TARGET_BUILD_DIR)/$(PRIVATE_HEADERS_FOLDER_PATH)/WebEvent.h -extra-private-header $(TARGET_BUILD_DIR)/$(PRIVATE_HEADERS_FOLDER_PATH)/WebItemProviderPasteboard.h -extra-private-header $(TARGET_BUILD_DIR)/$(PRIVATE_HEADERS_FOLDER_PATH)/WKContentObservation.h -extra-private-header $(TARGET_BUILD_DIR)/$(PRIVATE_HEADERS_FOLDER_PATH)/WKGraphics.h -extra-private-header $(TARGET_BUILD_DIR)/$(PRIVATE_HEADERS_FOLDER_PATH)/WKTypes.h; |
| OTHER_TAPI_FLAGS_102197642_WORKAROUND_cocoatouch_YES = $(OTHER_TAPI_FLAGS_102197642_WORKAROUND_ENABLE_IOS_TOUCH_EVENTS); |
| OTHER_TAPI_FLAGS_102197642_WORKAROUND_ENABLE_IOS_TOUCH_EVENTS = -extra-private-header $(TARGET_BUILD_DIR)/$(PRIVATE_HEADERS_FOLDER_PATH)/WebEventRegion.h; |
| |
| DEFINES_MODULE = $(DEFINES_MODULE_COCOA_TOUCH_$(WK_IS_COCOA_TOUCH)); |
| DEFINES_MODULE_COCOA_TOUCH_YES = YES; |
| |
| CLANG_MODULES_ENABLE_VERIFIER_TOOL = $(CLANG_MODULES_ENABLE_VERIFIER_TOOL_COCOA_TOUCH_$(WK_IS_COCOA_TOUCH)_$(USE_INTERNAL_SDK)); |
| CLANG_MODULES_ENABLE_VERIFIER_TOOL_COCOA_TOUCH_YES_YES = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_13_1_$(XCODE_VERSION_MAJOR))); |
| |
| MODULEMAP_FILE = $(MODULEMAP_FILE_COCOA_TOUCH_$(WK_IS_COCOA_TOUCH)); |
| MODULEMAP_FILE_COCOA_TOUCH_YES = $(SRCROOT)/Modules/WebKitLegacy.modulemap; |
| |
| MODULEMAP_PRIVATE_FILE = $(MODULEMAP_PRIVATE_FILE_COCOA_TOUCH_$(WK_IS_COCOA_TOUCH)); |
| MODULEMAP_PRIVATE_FILE_COCOA_TOUCH_YES = $(SRCROOT)/Modules/WebKitLegacy.private.modulemap; |