Changeset 253824 in webkit


Ignore:
Timestamp:
Dec 20, 2019 9:34:10 AM (4 years ago)
Author:
dino@apple.com
Message:

Build ANGLE as a dynamic library
https://bugs.webkit.org/show_bug.cgi?id=204708
Source/ThirdParty/ANGLE:

rdar://57349384

Reviewed by Tim Horton.

Take 2 at attempting this. The first time was rolled out
due to failures in Apple's upstream build system.

Modify ANGLE to build as a dynamic library. My (not thorough) testing suggests
this will reduce the in-flight binary size on Apple's build systems by at least
a factor of 10 (it was over 1G). Building release for x86_64-only:

  • Previously: libANGLE.a -- 306 MB
  • Now: libANGLE-shared.dylib -- 6.7 MB

In order to do this, some symbols needed to be exported from the
"sh" namespace (which are used in ANGLEWebKitBridge, but not when
ANGLE's rendering backend is active).

While here, I turned on some more build options, like ARC.

Lastly, I added a build phase that creates a fake libANGLE.a
because Apple's build system thinks that WebCore still needs it.

  • ANGLE.xcodeproj/project.pbxproj: Link with IOKit and IOSurface frameworks, and

product a dylib product.

  • Configurations/ANGLE.xcconfig: Update the configuration for a dynamic library.
  • Configurations/Base.xcconfig:
  • Configurations/DebugRelease.xcconfig:
  • include/GLSLANG/ShaderLang.h: Add ANGLE_EXPORT to some functions to make

sure they will be visible in the exported library.

  • include/GLSLANG/ShaderVars.h:
  • src/libANGLE/renderer/gl/cgl/DisplayCGL.mm: Change reinterpret_cast to a normal

C cast so it can be annotated with bridge.
(rx::DisplayCGL::isValidNativeWindow const):

  • src/libANGLE/renderer/gl/cgl/WindowSurfaceCGL.mm: Ditto.

(rx::WindowSurfaceCGL::WindowSurfaceCGL):
(rx::WindowSurfaceCGL::~WindowSurfaceCGL):

  • src/libANGLE/renderer/gl/eagl/DisplayEAGL.mm: Ditto.
  • src/libANGLE/renderer/gl/eagl/WindowSurfaceEAGL.mm: Ditto.

Source/WebCore:

Reviewed by Tim Horton.

Weak link against libANGLE-shared.dylib rather than strong link to libANGLE.a.

  • Configurations/WebCore.xcconfig:
  • Configurations/WebCoreTestSupport.xcconfig:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/ANGLEWebKitBridge.cpp:

(WebCore::ANGLEWebKitBridge::ANGLEWebKitBridge):
(WebCore::ANGLEWebKitBridge::cleanupCompilers):
(WebCore::ANGLEWebKitBridge::compileShaderSource):
(WebCore::ANGLEWebKitBridge::angleAvailable):

  • platform/graphics/ANGLEWebKitBridge.h:
  • platform/graphics/cocoa/GraphicsContext3DCocoa.mm:

(WebCore::GraphicsContext3D::GraphicsContext3D):

Location:
trunk/Source
Files:
19 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/ThirdParty/ANGLE/ANGLE.xcodeproj/project.pbxproj

    r253686 r253824  
    456456                5CB3014F1DE39F4700D2C405 /* DisplayCGL.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CB301491DE39F4700D2C405 /* DisplayCGL.h */; };
    457457                5CB301511DE39F4700D2C405 /* PbufferSurfaceCGL.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CB3014B1DE39F4700D2C405 /* PbufferSurfaceCGL.h */; };
    458                 5CB304921DE4156200D2C405 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CB3048D1DE4144400D2C405 /* OpenGL.framework */; };
    459458                5CB304931DE4156B00D2C405 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CB3048F1DE4145500D2C405 /* QuartzCore.framework */; };
    460459                5CB304941DE4157200D2C405 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CB3048B1DE4143500D2C405 /* CoreGraphics.framework */; };
     
    837836                3153ACFE239071D900D51DD8 /* WebKitTargetConditionals.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = WebKitTargetConditionals.xcconfig; sourceTree = "<group>"; };
    838837                3153ACFF239071D900D51DD8 /* Version.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Version.xcconfig; sourceTree = "<group>"; };
     838                3153AD002390C2EA00D51DD8 /* IOSurface.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOSurface.framework; path = System/Library/Frameworks/IOSurface.framework; sourceTree = SDKROOT; };
     839                3153AD022390C32100D51DD8 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = System/Library/Frameworks/IOKit.framework; sourceTree = SDKROOT; };
    839840                315EBD3E1FCE43BD00AC7A89 /* uniform_type_info_autogen.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uniform_type_info_autogen.cpp; sourceTree = "<group>"; };
    840841                315EBD401FCE442600AC7A89 /* TranslatorVulkan.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TranslatorVulkan.cpp; sourceTree = "<group>"; };
     
    14991500                A3694FC523202C5200A83D8F /* BuiltinsWorkaroundGLSL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BuiltinsWorkaroundGLSL.h; sourceTree = "<group>"; };
    15001501                A3E827A8230CAE2C00E76682 /* commit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = commit.h; sourceTree = "<group>"; };
    1501                 FB39D0D11200F0E300088E69 /* libANGLE.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libANGLE.a; sourceTree = BUILT_PRODUCTS_DIR; };
     1502                FB39D0D11200F0E300088E69 /* libANGLE-shared.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = "libANGLE-shared.dylib"; sourceTree = BUILT_PRODUCTS_DIR; };
    15021503                FB39D2BF1200F3E600088E69 /* ShaderLang.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; path = ShaderLang.h; sourceTree = "<group>"; };
    15031504/* End PBXFileReference section */
     
    15091510                        files = (
    15101511                                5CB304941DE4157200D2C405 /* CoreGraphics.framework in Frameworks */,
    1511                                 5CB304921DE4156200D2C405 /* OpenGL.framework in Frameworks */,
    15121512                                5CB304931DE4156B00D2C405 /* QuartzCore.framework in Frameworks */,
    15131513                        );
     
    22002200                        children = (
    22012201                                5CB3048B1DE4143500D2C405 /* CoreGraphics.framework */,
     2202                                3153AD022390C32100D51DD8 /* IOKit.framework */,
     2203                                3153AD002390C2EA00D51DD8 /* IOSurface.framework */,
    22022204                                5CB3048D1DE4144400D2C405 /* OpenGL.framework */,
    22032205                                5CB3048F1DE4145500D2C405 /* QuartzCore.framework */,
     
    25032505                        isa = PBXGroup;
    25042506                        children = (
    2505                                 FB39D0D11200F0E300088E69 /* libANGLE.a */,
     2507                                FB39D0D11200F0E300088E69 /* libANGLE-shared.dylib */,
    25062508                        );
    25072509                        name = Products;
     
    29752977                                312BDB0D15FECACE0097EBC7 /* CopyFiles */,
    29762978                                6E28B8742294DD8000717E69 /* ShellScript */,
     2979                                313DE867239FFF91008FC47B /* Attempt to fool Apple Test Platform */,
    29772980                        );
    29782981                        buildRules = (
     
    29832986                        name = ANGLE;
    29842987                        productName = angle;
    2985                         productReference = FB39D0D11200F0E300088E69 /* libANGLE.a */;
    2986                         productType = "com.apple.product-type.library.static";
     2988                        productReference = FB39D0D11200F0E300088E69 /* libANGLE-shared.dylib */;
     2989                        productType = "com.apple.product-type.library.dynamic";
    29872990                };
    29882991/* End PBXNativeTarget section */
     
    30153018
    30163019/* Begin PBXShellScriptBuildPhase section */
     3020                313DE867239FFF91008FC47B /* Attempt to fool Apple Test Platform */ = {
     3021                        isa = PBXShellScriptBuildPhase;
     3022                        buildActionMask = 2147483647;
     3023                        files = (
     3024                        );
     3025                        inputFileListPaths = (
     3026                        );
     3027                        inputPaths = (
     3028                        );
     3029                        name = "Attempt to fool Apple Test Platform";
     3030                        outputFileListPaths = (
     3031                        );
     3032                        outputPaths = (
     3033                        );
     3034                        runOnlyForDeploymentPostprocessing = 0;
     3035                        shellPath = /bin/sh;
     3036                        shellScript = "if [ \"$DEPLOYMENT_LOCATION\" == \"YES\" ] ; then\n    # Apple-internal build.\n    output_dir=${DSTROOT}${WK_ALTERNATE_FRAMEWORKS_DIR}/usr/local/lib\nelse\n    # External build.\n    output_dir=${BUILT_PRODUCTS_DIR}/usr/local/lib\nfi\n\nmkdir -p $output_dir\necho \"Fake file to fool Apple's test system\" > $output_dir/libANGLE.a\n";
     3037                };
    30173038                6E28B8742294DD8000717E69 /* ShellScript */ = {
    30183039                        isa = PBXShellScriptBuildPhase;
     
    33743395                        baseConfigurationReference = 5D7C59C51208C68B001C873E /* ANGLE.xcconfig */;
    33753396                        buildSettings = {
    3376                                 GCC_PREPROCESSOR_DEFINITIONS = (
    3377                                         ANGLE_ENABLE_OPENGL,
    3378                                         ANGLE_ENABLE_GLSL,
    3379                                         ANGLE_ENABLE_ESSL,
    3380                                         GL_SILENCE_DEPRECATION,
    3381                                 );
    3382                                 HEADER_SEARCH_PATHS = (
    3383                                         include,
    3384                                         src,
    3385                                         third_party/base,
    3386                                         src/common/third_party/base,
    3387                                 );
    3388                                 OTHER_CPLUSPLUSFLAGS = "$(ASAN_OTHER_CPLUSPLUSFLAGS)";
    33893397                        };
    33903398                        name = Production;
     
    34093417                        baseConfigurationReference = 5D7C59C51208C68B001C873E /* ANGLE.xcconfig */;
    34103418                        buildSettings = {
    3411                                 GCC_PREPROCESSOR_DEFINITIONS = (
    3412                                         ANGLE_ENABLE_OPENGL,
    3413                                         ANGLE_ENABLE_GLSL,
    3414                                         ANGLE_ENABLE_ESSL,
    3415                                         GL_SILENCE_DEPRECATION,
    3416                                 );
    3417                                 HEADER_SEARCH_PATHS = (
    3418                                         include,
    3419                                         src,
    3420                                         third_party/base,
    3421                                         src/common/third_party/base,
    3422                                 );
    3423                                 OTHER_CPLUSPLUSFLAGS = "$(ASAN_OTHER_CPLUSPLUSFLAGS)";
    34243419                        };
    34253420                        name = Debug;
     
    34293424                        baseConfigurationReference = 5D7C59C51208C68B001C873E /* ANGLE.xcconfig */;
    34303425                        buildSettings = {
    3431                                 GCC_PREPROCESSOR_DEFINITIONS = (
    3432                                         ANGLE_ENABLE_OPENGL,
    3433                                         ANGLE_ENABLE_GLSL,
    3434                                         ANGLE_ENABLE_ESSL,
    3435                                         GL_SILENCE_DEPRECATION,
    3436                                 );
    3437                                 HEADER_SEARCH_PATHS = (
    3438                                         include,
    3439                                         src,
    3440                                         third_party/base,
    3441                                         src/common/third_party/base,
    3442                                 );
    3443                                 OTHER_CPLUSPLUSFLAGS = "$(ASAN_OTHER_CPLUSPLUSFLAGS)";
    34443426                        };
    34453427                        name = Release;
  • trunk/Source/ThirdParty/ANGLE/ChangeLog

    r253745 r253824  
     12019-12-19  Dean Jackson  <dino@apple.com>
     2
     3        Build ANGLE as a dynamic library
     4        https://bugs.webkit.org/show_bug.cgi?id=204708
     5        rdar://57349384
     6
     7        Reviewed by Tim Horton.
     8
     9        Take 2 at attempting this. The first time was rolled out
     10        due to failures in Apple's upstream build system.
     11
     12        Modify ANGLE to build as a dynamic library. My (not thorough) testing suggests
     13        this will reduce the in-flight binary size on Apple's build systems by at least
     14        a factor of 10 (it was over 1G). Building release for x86_64-only:
     15            - Previously: libANGLE.a -- 306 MB
     16            - Now: libANGLE-shared.dylib -- 6.7 MB
     17
     18        In order to do this, some symbols needed to be exported from the
     19        "sh" namespace (which are used in ANGLEWebKitBridge, but not when
     20        ANGLE's rendering backend is active).
     21
     22        While here, I turned on some more build options, like ARC.
     23
     24        Lastly, I added a build phase that creates a fake libANGLE.a
     25        because Apple's build system thinks that WebCore still needs it.
     26
     27        * ANGLE.xcodeproj/project.pbxproj: Link with IOKit and IOSurface frameworks, and
     28        product a dylib product.
     29        * Configurations/ANGLE.xcconfig: Update the configuration for a dynamic library.
     30        * Configurations/Base.xcconfig:
     31        * Configurations/DebugRelease.xcconfig:
     32        * include/GLSLANG/ShaderLang.h: Add ANGLE_EXPORT to some functions to make
     33        sure they will be visible in the exported library.
     34        * include/GLSLANG/ShaderVars.h:
     35        * src/libANGLE/renderer/gl/cgl/DisplayCGL.mm: Change reinterpret_cast to a normal
     36        C cast so it can be annotated with __bridge.
     37        (rx::DisplayCGL::isValidNativeWindow const):
     38        * src/libANGLE/renderer/gl/cgl/WindowSurfaceCGL.mm: Ditto.
     39        (rx::WindowSurfaceCGL::WindowSurfaceCGL):
     40        (rx::WindowSurfaceCGL::~WindowSurfaceCGL):
     41        * src/libANGLE/renderer/gl/eagl/DisplayEAGL.mm: Ditto.
     42        * src/libANGLE/renderer/gl/eagl/WindowSurfaceEAGL.mm: Ditto.
     43
    1442019-12-19  ChangSeok Oh  <changseok@webkit.org>
    245
  • trunk/Source/ThirdParty/ANGLE/Configurations/ANGLE.xcconfig

    r253680 r253824  
    22#include "WebKitTargetConditionals.xcconfig"
    33
    4 PRODUCT_NAME = ANGLE;
     4PRODUCT_NAME = ANGLE-shared;
     5
     6EXECUTABLE_PREFIX = lib;
     7
     8ANGLE_OTHER_LDFLAGS = -allowable_client WebCore -allowable_client WebCoreTestSupport $(ANGLE_OTHER_LDFLAGS_$(WK_PLATFORM_NAME));
     9ANGLE_OTHER_LDFLAGS_iphoneos = -framework IOSurface -framework OpenGLES;
     10ANGLE_OTHER_LDFLAGS_iphonesimulator = $(ANGLE_OTHER_LDFLAGS_iphoneos);
     11ANGLE_OTHER_LDFLAGS_watchos = $(ANGLE_OTHER_LDFLAGS_iphoneos);
     12ANGLE_OTHER_LDFLAGS_watchsimulator = $(ANGLE_OTHER_LDFLAGS_iphonesimulator);
     13ANGLE_OTHER_LDFLAGS_appletvos = $(ANGLE_OTHER_LDFLAGS_iphoneos);
     14ANGLE_OTHER_LDFLAGS_appletvsimulator = $(ANGLE_OTHER_LDFLAGS_iphonesimulator);
     15ANGLE_OTHER_LDFLAGS_maccatalyst = -framework IOKit -framework IOSurface -framework OpenGL;
     16ANGLE_OTHER_LDFLAGS_macosx = -framework IOKit -framework IOSurface -framework OpenGL;
     17
     18INSTALL_PATH = $(NORMAL_WEBCORE_FRAMEWORKS_DIR)/WebCore.framework/Frameworks;
     19INSTALL_PATH[sdk=macosx*] = $(INSTALL_PATH_USE_OVERRIDE_FRAMEWORKS_DIR_$(WK_USE_OVERRIDE_FRAMEWORKS_DIR));
     20INSTALL_PATH_USE_OVERRIDE_FRAMEWORKS_DIR_NO = $(NORMAL_WEBCORE_FRAMEWORKS_DIR)/WebCore.framework/Versions/A/Frameworks;
     21INSTALL_PATH_USE_OVERRIDE_FRAMEWORKS_DIR_YES = $(WK_OVERRIDE_FRAMEWORKS_DIR);
     22
     23DYLIB_INSTALL_NAME_BASE[sdk=macosx*] = $(DYLIB_INSTALL_NAME_BASE_USE_OVERRIDE_FRAMEWORKS_DIR_$(WK_USE_OVERRIDE_FRAMEWORKS_DIR));
     24DYLIB_INSTALL_NAME_BASE_USE_OVERRIDE_FRAMEWORKS_DIR_NO = $(DYLIB_INSTALL_NAME_BASE_WK_RELOCATABLE_FRAMEWORKS_$(WK_RELOCATABLE_FRAMEWORKS));
     25DYLIB_INSTALL_NAME_BASE_USE_OVERRIDE_FRAMEWORKS_DIR_YES = @loader_path/../../../;
     26DYLIB_INSTALL_NAME_BASE_WK_RELOCATABLE_FRAMEWORKS_ = $(DYLIB_INSTALL_NAME_BASE);
     27DYLIB_INSTALL_NAME_BASE_WK_RELOCATABLE_FRAMEWORKS_YES = @loader_path/../../../;
     28
     29HEADER_SEARCH_PATHS = include src src/common/third_party/numerics third_party/base src/common/third_party/base;
     30
     31ANGLE_HEADERS_FOLDER_PATH = /usr/local/include/ANGLE;
     32
     33PUBLIC_HEADERS_FOLDER_PATH = $(ANGLE_HEADERS_FOLDER_PATH);
     34PUBLIC_HEADERS_FOLDER_PATH[sdk=macosx*] = $(PUBLIC_HEADERS_FOLDER_PATH_$(WK_PLATFORM_NAME));
     35PUBLIC_HEADERS_FOLDER_PATH_macosx = $(ANGLE_HEADERS_FOLDER_PATH);
     36PUBLIC_HEADERS_FOLDER_PATH_maccatalyst = $(WK_ALTERNATE_FRAMEWORKS_DIR)/$(ANGLE_HEADERS_FOLDER_PATH);
     37
     38USE_HEADERMAP = NO;
     39
     40GCC_PREPROCESSOR_DEFINITIONS = LIBGLESV2_IMPLEMENTATION LIBANGLE_IMPLEMENTATION ANGLE_ENABLE_OPENGL ANGLE_ENABLE_GLSL ANGLE_ENABLE_ESSL GL_SILENCE_DEPRECATION;
     41
     42INSTALLHDRS_SCRIPT_PHASE = YES;
    543
    644APPLY_RULES_IN_COPY_HEADERS = $(USE_NEW_BUILD_SYSTEM);
    7 CLANG_WARN_BOOL_CONVERSION = YES;
    8 CLANG_WARN_ENUM_CONVERSION = YES;
    9 CLANG_WARN_INT_CONVERSION = YES;
    10 COMBINE_HIDPI_IMAGES = NO;
    11 ENABLE_STRICT_OBJC_MSGSEND = YES;
    12 HEADER_SEARCH_PATHS = include src src/common/third_party/numerics;
    13 INSTALL_PATH = $(ANGLE_INSTALL_PATH_PREFIX)/usr/local/lib;
    14 PUBLIC_HEADERS_FOLDER_PATH = $(ANGLE_INSTALL_PATH_PREFIX)/usr/local/include/ANGLE;
  • trunk/Source/ThirdParty/ANGLE/Configurations/Base.xcconfig

    r253680 r253824  
    11#include? "../../../../../Internal/Configurations/HaveInternalSDK.xcconfig"
     2#include? "<DEVELOPER_DIR>/AppleInternal/XcodeConfig/PlatformSupport.xcconfig"
    23#include "SDKVariant.xcconfig"
     4#include "WebKitTargetConditionals.xcconfig"
    35
    46CODE_SIGN_IDENTITY = -;
     7
     8SDKROOT = macosx.internal;
    59
    610USE_INTERNAL_SDK = $(USE_INTERNAL_SDK_$(CONFIGURATION));
     
    1115ALWAYS_SEARCH_USER_PATHS = NO;
    1216
     17CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
    1318CLANG_CXX_LANGUAGE_STANDARD = gnu++1z;
    1419CLANG_CXX_LIBRARY = libc++;
     20CLANG_ENABLE_OBJC_ARC = YES;
    1521CLANG_ENABLE_OBJC_WEAK = YES;
    1622CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
     
    1824CLANG_WARN_COMMA = YES;
    1925CLANG_WARN_CONSTANT_CONVERSION = YES;
     26CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
    2027CLANG_WARN_EMPTY_BODY = YES;
    2128CLANG_WARN_ENUM_CONVERSION = YES;
     
    2330CLANG_WARN_INT_CONVERSION = YES;
    2431CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
    25 CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
     32CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
    2633CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
    2734CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
     35CLANG_WARN_STRICT_PROTOTYPES = YES;
    2836CLANG_WARN_SUSPICIOUS_MOVE = YES;
    29 CLANG_WARN_STRICT_PROTOTYPES = YES;
    3037CLANG_WARN_UNREACHABLE_CODE = YES;
    31 CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
    32 DEAD_CODE_STRIPPING = YES;
    33 DEBUG_INFORMATION_FORMAT = dwarf-with-dsym;
     38
    3439GCC_C_LANGUAGE_STANDARD = gnu99;
    3540GCC_DEBUGGING_SYMBOLS = default;
     
    3742GCC_ENABLE_CPP_RTTI = NO;
    3843GCC_ENABLE_OBJC_EXCEPTIONS = YES;
    39 ENABLE_STRICT_OBJC_MSGSEND = YES;
    4044GCC_ENABLE_SYMBOL_SEPARATION = NO;
    4145GCC_FAST_OBJC_DISPATCH = YES;
     
    4650GCC_PRECOMPILE_PREFIX_HEADER = NO;
    4751GCC_SYMBOLS_PRIVATE_EXTERN = YES;
     52GCC_SYMBOLS_PRIVATE_EXTERN = YES;
    4853GCC_THREADSAFE_STATICS = NO;
    4954GCC_TREAT_WARNINGS_AS_ERRORS = YES;
     
    5156GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
    5257GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
    53 GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
     58GCC_WARN_ABOUT_MISSING_NEWLINE = NO;
    5459GCC_WARN_ABOUT_RETURN_TYPE = YES;
    5560GCC_WARN_UNDECLARED_SELECTOR = YES;
    56 CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
    57 CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
    5861GCC_WARN_UNINITIALIZED_AUTOS = YES;
    5962GCC_WARN_UNUSED_FUNCTION = YES;
    6063GCC_WARN_UNUSED_VARIABLE = YES;
     64
     65DEAD_CODE_STRIPPING = YES;
     66DEBUG_INFORMATION_FORMAT = dwarf-with-dsym;
     67ENABLE_STRICT_OBJC_MSGSEND = YES;
     68
    6169PREBINDING = NO;
    6270STRIP_INSTALLED_PRODUCT = NO;
    63 WARNING_CFLAGS = -Wglobal-constructors -Wno-newline-eof -Wno-inconsistent-missing-override;
     71WARNING_CFLAGS = -Wglobal-constructors -Wno-inconsistent-missing-override;
    6472
    6573SUPPORTED_PLATFORMS = iphoneos iphonesimulator macosx appletvos appletvsimulator watchos watchsimulator;
     
    7381OTHER_CFLAGS = $(ASAN_OTHER_CFLAGS);
    7482OTHER_CPLUSPLUSFLAGS = $(ASAN_OTHER_CPLUSPLUSFLAGS);
    75 OTHER_LDFLAGS = $(ASAN_OTHER_LDFLAGS);
     83OTHER_LDFLAGS = $(ASAN_OTHER_LDFLAGS) $(ANGLE_OTHER_LDFLAGS);
    7684
    7785ANGLE_INSTALL_PATH_PREFIX = $(ANGLE_INSTALL_PATH_PREFIX_DEPLOYMENT_$(DEPLOYMENT_LOCATION));
    7886ANGLE_INSTALL_PATH_PREFIX_DEPLOYMENT_YES = $(ANGLE_INSTALL_PATH_PREFIX_DEPLOYMENT_YES_USE_ALTERNATE_$(WK_USE_ALTERNATE_FRAMEWORKS_DIR));
    79 ANGLE_INSTALL_PATH_PREFIX_DEPLOYMENT_YES_USE_ALTERNATE_YES = $(WK_ALTERNATE_FRAMEWORKS_DIR)/;
     87ANGLE_INSTALL_PATH_PREFIX_DEPLOYMENT_YES_USE_ALTERNATE_YES = $(WK_ALTERNATE_FRAMEWORKS_DIR);
     88
     89NORMAL_WEBCORE_FRAMEWORKS_DIR = $(SYSTEM_LIBRARY_DIR)/PrivateFrameworks;
     90NORMAL_WEBCORE_FRAMEWORKS_DIR[sdk=macosx*] = $(NORMAL_WEBCORE_FRAMEWORKS_DIR_$(WK_PLATFORM_NAME));
     91NORMAL_WEBCORE_FRAMEWORKS_DIR_macosx = $(SYSTEM_LIBRARY_DIR)/Frameworks/WebKit.framework/Versions/A/Frameworks;
     92NORMAL_WEBCORE_FRAMEWORKS_DIR_maccatalyst = $(WK_ALTERNATE_FRAMEWORKS_DIR)/$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks;
     93
     94WK_USE_OVERRIDE_FRAMEWORKS_DIR = $(WK_NOT_$(WK_EMPTY_$(WK_OVERRIDE_FRAMEWORKS_DIR)));
     95
     96WK_OVERRIDE_FRAMEWORKS_DIR = $(WK_OVERRIDE_FRAMEWORKS_DIR_USE_STAGING_INSTALL_PATH_$(USE_STAGING_INSTALL_PATH));
     97WK_OVERRIDE_FRAMEWORKS_DIR_USE_STAGING_INSTALL_PATH_YES = $(WK_INSTALL_PATH_PREFIX)$(SYSTEM_LIBRARY_DIR)/StagedFrameworks/Safari;
     98
     99WK_INSTALL_PATH_PREFIX = $(WK_INSTALL_PATH_PREFIX_DEPLOYMENT_$(DEPLOYMENT_LOCATION)$(WK_MACOS_1015)_USE_STAGING_INSTALL_PATH_$(USE_STAGING_INSTALL_PATH));
     100WK_INSTALL_PATH_PREFIX_DEPLOYMENT_YES_MACOS_SINCE_1015_USE_STAGING_INSTALL_PATH_YES = $(PLATFORM_OOB_SYSTEM_CONTENT_DIR);
    80101
    81102// Disable on all platforms other than macOS, due to <rdar://problem/49013399>.
  • trunk/Source/ThirdParty/ANGLE/Configurations/DebugRelease.xcconfig

    r253680 r253824  
    2121SDKROOT_YES = macosx.internal;
    2222
     23WK_RELOCATABLE_FRAMEWORKS = YES;
     24
    2325WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_none);
    2426
  • trunk/Source/ThirdParty/ANGLE/include/CMakeLists.txt

    r253680 r253824  
    1717
    1818set(glslang_headers
     19    export.h
    1920    GLSLANG/ShaderLang.h
    2021    GLSLANG/ShaderVars.h
  • trunk/Source/ThirdParty/ANGLE/include/GLSLANG/ShaderLang.h

    r253680 r253824  
    526526// If the function succeeds, the return value is true, else false.
    527527//
    528 bool Initialize();
     528ANGLE_EXPORT bool Initialize();
    529529//
    530530// Driver should call this at shutdown.
    531531// If the function succeeds, the return value is true, else false.
    532532//
    533 bool Finalize();
     533ANGLE_EXPORT bool Finalize();
    534534
    535535//
     
    538538// resources: The object to initialize. Will be comparable with memcmp.
    539539//
    540 void InitBuiltInResources(ShBuiltInResources *resources);
     540ANGLE_EXPORT void InitBuiltInResources(ShBuiltInResources *resources);
    541541
    542542//
     
    545545// Parameters:
    546546// handle: Specifies the handle of the compiler to be used.
    547 const std::string &GetBuiltInResourcesString(const ShHandle handle);
     547ANGLE_EXPORT const std::string &GetBuiltInResourcesString(const ShHandle handle);
    548548
    549549//
     
    558558//         be supported in some configurations.
    559559// resources: Specifies the built-in resources.
    560 ShHandle ConstructCompiler(sh::GLenum type,
    561                            ShShaderSpec spec,
    562                            ShShaderOutput output,
    563                            const ShBuiltInResources *resources);
    564 void Destruct(ShHandle handle);
     560ANGLE_EXPORT ShHandle ConstructCompiler(sh::GLenum type,
     561                                        ShShaderSpec spec,
     562                                        ShShaderOutput output,
     563                                        const ShBuiltInResources *resources);
     564ANGLE_EXPORT void Destruct(ShHandle handle);
    565565
    566566//
     
    588588//               Can be queried by calling ShGetVariableInfo().
    589589//
    590 bool Compile(const ShHandle handle,
     590ANGLE_EXPORT bool Compile(const ShHandle handle,
    591591             const char *const shaderStrings[],
    592592             size_t numStrings,
     
    594594
    595595// Clears the results from the previous compilation.
    596 void ClearResults(const ShHandle handle);
     596ANGLE_EXPORT void ClearResults(const ShHandle handle);
    597597
    598598// Return the version of the shader language.
    599 int GetShaderVersion(const ShHandle handle);
     599ANGLE_EXPORT int GetShaderVersion(const ShHandle handle);
    600600
    601601// Return the currently set language output type.
    602 ShShaderOutput GetShaderOutputType(const ShHandle handle);
     602ANGLE_EXPORT ShShaderOutput GetShaderOutputType(const ShHandle handle);
    603603
    604604// Returns null-terminated information log for a compiled shader.
    605605// Parameters:
    606606// handle: Specifies the compiler
    607 const std::string &GetInfoLog(const ShHandle handle);
     607ANGLE_EXPORT const std::string &GetInfoLog(const ShHandle handle);
    608608
    609609// Returns null-terminated object code for a compiled shader.
    610610// Parameters:
    611611// handle: Specifies the compiler
    612 const std::string &GetObjectCode(const ShHandle handle);
     612ANGLE_EXPORT const std::string &GetObjectCode(const ShHandle handle);
    613613
    614614// Returns a (original_name, hash) map containing all the user defined names in the shader,
     
    616616// Parameters:
    617617// handle: Specifies the compiler
    618 const std::map<std::string, std::string> *GetNameHashingMap(const ShHandle handle);
     618ANGLE_EXPORT const std::map<std::string, std::string> *GetNameHashingMap(const ShHandle handle);
    619619
    620620// Shader variable inspection.
     
    624624// Parameters:
    625625// handle: Specifies the compiler
    626 const std::vector<sh::ShaderVariable> *GetUniforms(const ShHandle handle);
    627 const std::vector<sh::ShaderVariable> *GetVaryings(const ShHandle handle);
    628 const std::vector<sh::ShaderVariable> *GetInputVaryings(const ShHandle handle);
    629 const std::vector<sh::ShaderVariable> *GetOutputVaryings(const ShHandle handle);
    630 const std::vector<sh::ShaderVariable> *GetAttributes(const ShHandle handle);
    631 const std::vector<sh::ShaderVariable> *GetOutputVariables(const ShHandle handle);
    632 const std::vector<sh::InterfaceBlock> *GetInterfaceBlocks(const ShHandle handle);
    633 const std::vector<sh::InterfaceBlock> *GetUniformBlocks(const ShHandle handle);
    634 const std::vector<sh::InterfaceBlock> *GetShaderStorageBlocks(const ShHandle handle);
    635 sh::WorkGroupSize GetComputeShaderLocalGroupSize(const ShHandle handle);
     626ANGLE_EXPORT const std::vector<sh::ShaderVariable> *GetUniforms(const ShHandle handle);
     627ANGLE_EXPORT const std::vector<sh::ShaderVariable> *GetVaryings(const ShHandle handle);
     628ANGLE_EXPORT const std::vector<sh::ShaderVariable> *GetInputVaryings(const ShHandle handle);
     629ANGLE_EXPORT const std::vector<sh::ShaderVariable> *GetOutputVaryings(const ShHandle handle);
     630ANGLE_EXPORT const std::vector<sh::ShaderVariable> *GetAttributes(const ShHandle handle);
     631ANGLE_EXPORT const std::vector<sh::ShaderVariable> *GetOutputVariables(const ShHandle handle);
     632ANGLE_EXPORT const std::vector<sh::InterfaceBlock> *GetInterfaceBlocks(const ShHandle handle);
     633ANGLE_EXPORT const std::vector<sh::InterfaceBlock> *GetUniformBlocks(const ShHandle handle);
     634ANGLE_EXPORT const std::vector<sh::InterfaceBlock> *GetShaderStorageBlocks(const ShHandle handle);
     635ANGLE_EXPORT sh::WorkGroupSize GetComputeShaderLocalGroupSize(const ShHandle handle);
    636636// Returns the number of views specified through the num_views layout qualifier. If num_views is
    637637// not set, the function returns -1.
    638 int GetVertexShaderNumViews(const ShHandle handle);
     638ANGLE_EXPORT int GetVertexShaderNumViews(const ShHandle handle);
    639639
    640640// Returns true if the passed in variables pack in maxVectors followingthe packing rules from the
     
    645645// maxVectors: the available rows of registers.
    646646// variables: an array of variables.
    647 bool CheckVariablesWithinPackingLimits(int maxVectors,
    648                                        const std::vector<sh::ShaderVariable> &variables);
     647ANGLE_EXPORT bool CheckVariablesWithinPackingLimits(int maxVectors,
     648                                                    const std::vector<sh::ShaderVariable> &variables);
    649649
    650650// Gives the compiler-assigned register for a shader storage block.
     
    655655// shaderStorageBlockName: Specifies the shader storage block
    656656// indexOut: output variable that stores the assigned register
    657 bool GetShaderStorageBlockRegister(const ShHandle handle,
    658                                    const std::string &shaderStorageBlockName,
    659                                    unsigned int *indexOut);
     657ANGLE_EXPORT bool GetShaderStorageBlockRegister(const ShHandle handle,
     658                                                const std::string &shaderStorageBlockName,
     659                                                unsigned int *indexOut);
    660660
    661661// Gives the compiler-assigned register for a uniform block.
     
    666666// uniformBlockName: Specifies the uniform block
    667667// indexOut: output variable that stores the assigned register
    668 bool GetUniformBlockRegister(const ShHandle handle,
    669                              const std::string &uniformBlockName,
    670                              unsigned int *indexOut);
     668ANGLE_EXPORT bool GetUniformBlockRegister(const ShHandle handle,
     669                                          const std::string &uniformBlockName,
     670                                          unsigned int *indexOut);
    671671
    672672// Gives a map from uniform names to compiler-assigned registers in the default uniform block.
    673673// Note that the map contains also registers of samplers that have been extracted from structs.
    674 const std::map<std::string, unsigned int> *GetUniformRegisterMap(const ShHandle handle);
     674ANGLE_EXPORT const std::map<std::string, unsigned int> *GetUniformRegisterMap(const ShHandle handle);
    675675
    676676// Sampler, image and atomic counters share registers(t type and u type),
  • trunk/Source/ThirdParty/ANGLE/include/GLSLANG/ShaderVars.h

    r253680 r253824  
    1111#define GLSLANG_SHADERVARS_H_
    1212
     13#include "export.h"
     14
    1315#include <algorithm>
    1416#include <array>
     
    6365struct ShaderVariable
    6466{
    65     ShaderVariable();
     67    ANGLE_EXPORT ShaderVariable();
    6668    ShaderVariable(GLenum typeIn);
    6769    ShaderVariable(GLenum typeIn, unsigned int arraySizeIn);
    68     ~ShaderVariable();
    69     ShaderVariable(const ShaderVariable &other);
    70     ShaderVariable &operator=(const ShaderVariable &other);
     70    ANGLE_EXPORT ~ShaderVariable();
     71    ANGLE_EXPORT ShaderVariable(const ShaderVariable &other);
     72    ANGLE_EXPORT ShaderVariable &operator=(const ShaderVariable &other);
    7173    bool operator==(const ShaderVariable &other) const;
    7274    bool operator!=(const ShaderVariable &other) const { return !operator==(other); }
  • trunk/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/cgl/DisplayCGL.mm

    r253680 r253824  
    293293bool DisplayCGL::isValidNativeWindow(EGLNativeWindowType window) const
    294294{
    295     NSObject *layer = reinterpret_cast<NSObject *>(window);
     295    NSObject *layer = (__bridge NSObject *)window;
    296296    return [layer isKindOfClass:[CALayer class]];
    297297}
  • trunk/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/cgl/WindowSurfaceCGL.mm

    r253680 r253824  
    154154      mSwapLayer(nil),
    155155      mCurrentSwapId(0),
    156       mLayer(reinterpret_cast<CALayer *>(layer)),
     156      mLayer((__bridge CALayer *)layer),
    157157      mContext(context),
    158158      mFunctions(renderer->getFunctions()),
     
    176176    {
    177177        [mSwapLayer removeFromSuperlayer];
    178         [mSwapLayer release];
    179178        mSwapLayer = nil;
    180179    }
  • trunk/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/eagl/DisplayEAGL.mm

    r253680 r253824  
    138138    {
    139139        [EAGLContext setCurrentContext:nil];
    140         [mContext release];
    141140        mContext = nullptr;
    142141    }
     
    269268bool DisplayEAGL::isValidNativeWindow(EGLNativeWindowType window) const
    270269{
    271     NSObject *layer = reinterpret_cast<NSObject *>(window);
     270    NSObject *layer = (__bridge NSObject *)window;
    272271    return [layer isKindOfClass:[CALayer class]];
    273272}
     
    360359{
    361360    [EAGLContext setCurrentContext:nil];
    362     [mContext release];
    363361    mContext = nullptr;
    364362}
  • trunk/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/eagl/WindowSurfaceEAGL.mm

    r253680 r253824  
    139139      mSwapLayer(nil),
    140140      mCurrentSwapId(0),
    141       mLayer(reinterpret_cast<CALayer *>(layer)),
     141      mLayer((__bridge CALayer *)layer),
    142142      mContext(context),
    143143      mFunctions(renderer->getFunctions()),
     
    161161    {
    162162        [mSwapLayer removeFromSuperlayer];
    163         [mSwapLayer release];
    164163        mSwapLayer = nil;
    165164    }
  • trunk/Source/WebCore/ChangeLog

    r253820 r253824  
     12019-12-19  Dean Jackson  <dino@apple.com>
     2
     3        Build ANGLE as a dynamic library
     4        https://bugs.webkit.org/show_bug.cgi?id=204708
     5        rdar://57349384
     6
     7        Reviewed by Tim Horton.
     8
     9        Weak link against libANGLE-shared.dylib rather than strong link to libANGLE.a.
     10
     11        * Configurations/WebCore.xcconfig:
     12        * Configurations/WebCoreTestSupport.xcconfig:
     13        * WebCore.xcodeproj/project.pbxproj:
     14        * platform/graphics/ANGLEWebKitBridge.cpp:
     15        (WebCore::ANGLEWebKitBridge::ANGLEWebKitBridge):
     16        (WebCore::ANGLEWebKitBridge::cleanupCompilers):
     17        (WebCore::ANGLEWebKitBridge::compileShaderSource):
     18        (WebCore::ANGLEWebKitBridge::angleAvailable):
     19        * platform/graphics/ANGLEWebKitBridge.h:
     20        * platform/graphics/cocoa/GraphicsContext3DCocoa.mm:
     21        (WebCore::GraphicsContext3D::GraphicsContext3D):
     22
    1232019-12-20  Antti Koivisto  <antti@apple.com>
    224
  • trunk/Source/WebCore/Configurations/WebCore.xcconfig

    r253680 r253824  
    4040SYSTEM_FRAMEWORK_SEARCH_PATHS = $(inherited) $(SDKROOT)$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks $(SDKROOT)$(SYSTEM_LIBRARY_DIR)/Frameworks
    4141
    42 WK_LIBWEBRTC_LIBRARY_DIR = $(WEBCORE_FRAMEWORKS_DIR)/WebCore.framework/Frameworks
    43 WK_LIBWEBRTC_LIBRARY_DIR[sdk=macosx*] = $(WK_LIBWEBRTC_LIBRARY_DIR_USE_OVERRIDE_FRAMEWORKS_DIR_$(WK_USE_OVERRIDE_FRAMEWORKS_DIR));
    44 WK_LIBWEBRTC_LIBRARY_DIR_USE_OVERRIDE_FRAMEWORKS_DIR_NO = $(WEBCORE_FRAMEWORKS_DIR)/WebCore.framework/Versions/A/Frameworks;
    45 WK_LIBWEBRTC_LIBRARY_DIR_USE_OVERRIDE_FRAMEWORKS_DIR_YES = $(WK_OVERRIDE_FRAMEWORKS_DIR);
    46 
    47 LIBRARY_SEARCH_PATHS = $(inherited) "$(WK_LIBWEBRTC_LIBRARY_DIR)";
     42WK_EMBEDDED_LIBRARY_DIR = $(WEBCORE_FRAMEWORKS_DIR)/WebCore.framework/Frameworks
     43WK_EMBEDDED_LIBRARY_DIR[sdk=macosx*] = $(WK_EMBEDDED_LIBRARY_DIR_USE_OVERRIDE_FRAMEWORKS_DIR_$(WK_USE_OVERRIDE_FRAMEWORKS_DIR));
     44WK_EMBEDDED_LIBRARY_DIR_USE_OVERRIDE_FRAMEWORKS_DIR_YES = $(WK_OVERRIDE_FRAMEWORKS_DIR);
     45WK_EMBEDDED_LIBRARY_DIR_USE_OVERRIDE_FRAMEWORKS_DIR_NO = $(WEBCORE_FRAMEWORKS_DIR)/WebCore.framework/Versions/A/Frameworks;
     46
     47LIBRARY_SEARCH_PATHS = $(inherited) "$(WK_EMBEDDED_LIBRARY_DIR)";
    4848
    4949WEBKITADDITIONS_HEADER_SEARCH_PATHS = $(BUILT_PRODUCTS_DIR)/usr/local/include/WebKitAdditions $(SDKROOT)/usr/local/include/WebKitAdditions;
     
    9696WK_IOSURFACE_ACCELERATOR_LDFLAGS_appletvos = $(WK_IOSURFACE_ACCELERATOR_LDFLAGS_iphoneos);
    9797
     98WK_ANGLE_LDFLAGS = -weak-lANGLE-shared;
     99
    98100WK_LIBWEBRTC_LDFLAGS = $(WK_LIBWEBRTC_LDFLAGS_$(ENABLE_WEB_RTC));
    99101WK_LIBWEBRTC_LDFLAGS_ENABLE_WEB_RTC = -framework VideoToolbox -framework CoreMedia -weak-lwebrtc;
     
    126128
    127129// FIXME: Reduce the number of allowable_clients <rdar://problem/31823969>
    128 OTHER_LDFLAGS = $(inherited) $(WK_RELOCATABLE_FRAMEWORK_LDFLAGS) $(WK_UNDEFINED_SYMBOLS_LDFLAGS) -lsqlite3 -lobjc -lANGLE -allowable_client WebCoreTestSupport -allowable_client WebKitLegacy -force_load $(BUILT_PRODUCTS_DIR)/libPAL.a -framework CFNetwork -framework CoreAudio -framework CoreGraphics -framework CoreText -framework Foundation -framework IOSurface -framework ImageIO -framework Metal $(OTHER_LDFLAGS_PLATFORM_$(WK_COCOA_TOUCH)) $(OTHER_LDFLAGS_PLATFORM_$(WK_PLATFORM_NAME)) $(WK_APPKIT_LDFLAGS) $(WK_APPSUPPORT_LDFLAGS) $(WK_AUDIO_UNIT_LDFLAGS) $(WK_CARBON_LDFLAGS) $(WK_CORE_UI_LDFLAGS) $(WK_DATA_DETECTORS_CORE_LDFLAGS) $(WK_GRAPHICS_SERVICES_LDFLAGS) $(WK_IOSURFACE_ACCELERATOR_LDFLAGS) $(WK_LIBWEBRTC_LDFLAGS) $(WK_MOBILE_CORE_SERVICES_LDFLAGS) $(WK_MOBILE_GESTALT_LDFLAGS) $(WK_OPENGL_LDFLAGS) $(WK_SYSTEM_CONFIGURATION_LDFLAGS) $(WK_SYSTEM_PREVIEW_LDFLAGS) $(WK_URL_FORMATTING_LDFLAGS);
     130OTHER_LDFLAGS = $(inherited) $(WK_RELOCATABLE_FRAMEWORK_LDFLAGS) $(WK_UNDEFINED_SYMBOLS_LDFLAGS) -lsqlite3 -lobjc -allowable_client WebCoreTestSupport -allowable_client WebKitLegacy -force_load $(BUILT_PRODUCTS_DIR)/libPAL.a -framework CFNetwork -framework CoreAudio -framework CoreGraphics -framework CoreText -framework Foundation -framework IOSurface -framework ImageIO -framework Metal $(OTHER_LDFLAGS_PLATFORM_$(WK_COCOA_TOUCH)) $(OTHER_LDFLAGS_PLATFORM_$(WK_PLATFORM_NAME)) $(WK_APPKIT_LDFLAGS) $(WK_APPSUPPORT_LDFLAGS) $(WK_AUDIO_UNIT_LDFLAGS) $(WK_CARBON_LDFLAGS) $(WK_CORE_UI_LDFLAGS) $(WK_DATA_DETECTORS_CORE_LDFLAGS) $(WK_GRAPHICS_SERVICES_LDFLAGS) $(WK_IOSURFACE_ACCELERATOR_LDFLAGS) $(WK_ANGLE_LDFLAGS) $(WK_LIBWEBRTC_LDFLAGS) $(WK_MOBILE_CORE_SERVICES_LDFLAGS) $(WK_MOBILE_GESTALT_LDFLAGS) $(WK_OPENGL_LDFLAGS) $(WK_SYSTEM_CONFIGURATION_LDFLAGS) $(WK_SYSTEM_PREVIEW_LDFLAGS) $(WK_URL_FORMATTING_LDFLAGS);
    129131
    130132OTHER_LDFLAGS_PLATFORM_cocoatouch = -allowable_client WebKit -allowable_client iTunesU -allowable_client Casablanca -allowable_client Remote -allowable_client TVBooks -allowable_client DumpRenderTree -allowable_client WebKitTestRunner -allowable_client TestWebKitAPI;
     
    140142
    141143NORMAL_WEBCORE_FRAMEWORKS_DIR[sdk=iphone*] = $(PRODUCTION_FRAMEWORKS_DIR);
    142 NORMAL_WEBCORE_FRAMEWORKS_DIR[sdk=macosx*] = $(SYSTEM_LIBRARY_DIR)/Frameworks/WebKit.framework/Versions/A/Frameworks;
     144NORMAL_WEBCORE_FRAMEWORKS_DIR[sdk=macosx*] = $(NORMAL_WEBCORE_FRAMEWORKS_DIR_$(WK_PLATFORM_NAME));
     145NORMAL_WEBCORE_FRAMEWORKS_DIR_macosx = $(SYSTEM_LIBRARY_DIR)/Frameworks/WebKit.framework/Versions/A/Frameworks;
     146NORMAL_WEBCORE_FRAMEWORKS_DIR_maccatalyst = $(WK_ALTERNATE_FRAMEWORKS_DIR)/$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks;
    143147
    144148WEBCORE_FRAMEWORKS_DIR = $(WEBCORE_FRAMEWORKS_DIR_USE_OVERRIDE_FRAMEWORKS_DIR_$(WK_USE_OVERRIDE_FRAMEWORKS_DIR));
  • trunk/Source/WebCore/Configurations/WebCoreTestSupport.xcconfig

    r253680 r253824  
    4949DYLIB_INSTALL_NAME_BASE_Release = $(DYLIB_INSTALL_NAME_BASE_Debug);
    5050
     51ANGLE_LDFLAGS = -weak-lANGLE-shared;
     52
    5153LIBWEBRTC_LDFLAGS = $(LIBWEBRTC_LDFLAGS_$(ENABLE_WEB_RTC));
    5254LIBWEBRTC_LDFLAGS_ = ;
     
    5759EXPORTED_SYMBOLS_FILE = ;
    5860GCC_SYMBOLS_PRIVATE_EXTERN = YES;
    59 OTHER_LDFLAGS = $(ASAN_OTHER_LDFLAGS);
    60 OTHER_LDFLAGS[sdk=macos*] = $(ASAN_OTHER_LDFLAGS) -framework AppKit $(LIBWEBRTC_LDFLAGS);
    6161
    62 OTHER_LDFLAGS[sdk=iphoneos*] = $(ASAN_OTHER_LDFLAGS) -lAccessibility $(LIBWEBRTC_LDFLAGS);
    63 OTHER_LDFLAGS[sdk=iphonesimulator*] = $(ASAN_OTHER_LDFLAGS) -lAccessibility $(LIBWEBRTC_LDFLAGS);
     62OTHER_LDFLAGS = $(ASAN_OTHER_LDFLAGS) $(ANGLE_LDFLAGS);
     63OTHER_LDFLAGS[sdk=macos*] = $(ASAN_OTHER_LDFLAGS) -framework AppKit $(LIBWEBRTC_LDFLAGS) $(ANGLE_LDFLAGS);
     64OTHER_LDFLAGS[sdk=iphoneos*] = $(ASAN_OTHER_LDFLAGS) -lAccessibility $(LIBWEBRTC_LDFLAGS) $(ANGLE_LDFLAGS);
     65OTHER_LDFLAGS[sdk=iphonesimulator*] = $(ASAN_OTHER_LDFLAGS) -lAccessibility $(LIBWEBRTC_LDFLAGS) $(ANGLE_LDFLAGS);
     66
    6467SECT_ORDER_FLAGS = ;
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r253811 r253824  
    3344733447                        runOnlyForDeploymentPostprocessing = 0;
    3344833448                        shellPath = /bin/sh;
    33449                         shellScript = "if [[ ${WK_PLATFORM_NAME} != \"macosx\" ]]; then\n    exit 0\nfi\n\nif [[ ${WK_USE_OVERRIDE_FRAMEWORKS_DIR} == \"YES\" ]]; then\n    exit 0\nfi\n\n# ENABLE_WEB_RTC cannot be relied on because of its conditionals.\nif [[ ${CONFIGURATION} == \"Production\" && ${TARGET_MAC_OS_X_VERSION_MAJOR} < 101300 ]]; then\n    exit 0\nfi\n\nln -shf Versions/Current/Frameworks \"$TARGET_BUILD_DIR/WebCore.framework/Frameworks\"\n";
     33449                        shellScript = "if [[ ${WK_PLATFORM_NAME} != \"macosx\" && ${WK_PLATFORM_NAME} != \"maccatalyst\" ]]; then\n    exit 0\nfi\n\nif [[ ${WK_USE_OVERRIDE_FRAMEWORKS_DIR} == \"YES\" ]]; then\n    exit 0\nfi\n\n# ENABLE_WEB_RTC cannot be relied on because of its conditionals.\nif [[ ${CONFIGURATION} == \"Production\" && ${TARGET_MAC_OS_X_VERSION_MAJOR} < 101300 ]]; then\n    exit 0\nfi\n\nln -shf Versions/Current/Frameworks \"$TARGET_BUILD_DIR/WebCore.framework/Frameworks\"\n";
    3345033450                };
    3345133451                DD041FBD09D9DDBE0010AF2A /* Generate Derived Sources */ = {
  • trunk/Source/WebCore/platform/graphics/ANGLEWebKitBridge.cpp

    r253680 r253824  
    3232#include <wtf/StdLibExtras.h>
    3333
     34#if PLATFORM(COCOA)
     35#include <wtf/darwin/WeakLinking.h>
     36#endif
     37
    3438namespace WebCore {
    3539
     
    132136    , m_shaderSpec(shaderSpec)
    133137{
     138    ASSERT(angleAvailable());
     139    if (!angleAvailable())
     140        return;
     141
    134142    // This is a no-op if it's already initialized.
    135143    sh::Initialize();
     
    143151void ANGLEWebKitBridge::cleanupCompilers()
    144152{
     153    ASSERT(ANGLEWebKitBridge::angleAvailable());
     154    if (!ANGLEWebKitBridge::angleAvailable())
     155        return;
     156
    145157    if (m_fragmentCompiler)
    146158        sh::Destruct(m_fragmentCompiler);
     
    163175bool ANGLEWebKitBridge::compileShaderSource(const char* shaderSource, ANGLEShaderType shaderType, String& translatedShaderSource, String& shaderValidationLog, Vector<std::pair<ANGLEShaderSymbolType, sh::ShaderVariable>>& symbols, uint64_t extraCompileOptions)
    164176{
     177    ASSERT(ANGLEWebKitBridge::angleAvailable());
     178    if (!ANGLEWebKitBridge::angleAvailable())
     179        return false;
     180
    165181    if (!builtCompilers) {
    166182        m_fragmentCompiler = sh::ConstructCompiler(GL_FRAGMENT_SHADER, m_shaderSpec, m_shaderOutput, &m_resources);
     
    205221}
    206222
     223bool ANGLEWebKitBridge::angleAvailable()
     224{
     225#if PLATFORM(COCOA)
     226    return !isNullFunctionPointer(sh::Compile);
     227#else
     228    return true;
     229#endif
     230}
     231
    207232}
    208233
  • trunk/Source/WebCore/platform/graphics/ANGLEWebKitBridge.h

    r253680 r253824  
    9191    bool compileShaderSource(const char* shaderSource, ANGLEShaderType, String& translatedShaderSource, String& shaderValidationLog, Vector<std::pair<ANGLEShaderSymbolType, sh::ShaderVariable>>& symbols, uint64_t extraCompileOptions = 0);
    9292
     93    static bool angleAvailable();
     94
    9395private:
    9496
  • trunk/Source/WebCore/platform/graphics/cocoa/GraphicsContext3DCocoa.mm

    r253680 r253824  
    196196
    197197#if !USE(ANGLE)
     198    ASSERT(ANGLEWebKitBridge::angleAvailable());
     199    if (!ANGLEWebKitBridge::angleAvailable())
     200        return;
     201
    198202#if USE(OPENGL_ES)
    199203    if (m_attrs.isWebGL2)
     
    291295
    292296#elif USE(ANGLE)
     297
     298    ASSERT(ANGLEWebKitBridge::angleAvailable());
     299    if (!ANGLEWebKitBridge::angleAvailable())
     300        return;
    293301
    294302    m_displayObj = EGL_GetDisplay(EGL_DEFAULT_DISPLAY);
Note: See TracChangeset for help on using the changeset viewer.