Title: [274750] trunk/Source/WebCore
Revision
274750
Author
[email protected]
Date
2021-03-19 16:59:55 -0700 (Fri, 19 Mar 2021)

Log Message

Link against the ANGLE Shared Library
https://bugs.webkit.org/show_bug.cgi?id=218539
<rdar://problem/69062211>

Patch by Dean Jackson <[email protected]> on 2021-03-19
Reviewed by Tim Horton.

Weak link against libANGLE-shared.dylib.

* Configurations/WebCore.xcconfig:
* Configurations/WebCoreTestSupport.xcconfig:
* Sources.txt:
* SourcesGTK.txt:
* SourcesWPE.txt:
* platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm:
(WebCore::isANGLEAvailable):
(WebCore::GraphicsContextGLOpenGL::create):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (274749 => 274750)


--- trunk/Source/WebCore/ChangeLog	2021-03-19 23:53:31 UTC (rev 274749)
+++ trunk/Source/WebCore/ChangeLog	2021-03-19 23:59:55 UTC (rev 274750)
@@ -1,3 +1,22 @@
+2021-03-19  Dean Jackson  <[email protected]>
+
+        Link against the ANGLE Shared Library
+        https://bugs.webkit.org/show_bug.cgi?id=218539
+        <rdar://problem/69062211>
+
+        Reviewed by Tim Horton.
+
+        Weak link against libANGLE-shared.dylib.
+
+        * Configurations/WebCore.xcconfig:
+        * Configurations/WebCoreTestSupport.xcconfig:
+        * Sources.txt:
+        * SourcesGTK.txt:
+        * SourcesWPE.txt:
+        * platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm:
+        (WebCore::isANGLEAvailable):
+        (WebCore::GraphicsContextGLOpenGL::create):
+
 2021-03-19  Lauro Moura  <[email protected]>
 
         Unreviewed. WPE Debug build fix after r274695

Modified: trunk/Source/WebCore/Configurations/WebCore.xcconfig (274749 => 274750)


--- trunk/Source/WebCore/Configurations/WebCore.xcconfig	2021-03-19 23:53:31 UTC (rev 274749)
+++ trunk/Source/WebCore/Configurations/WebCore.xcconfig	2021-03-19 23:59:55 UTC (rev 274750)
@@ -40,12 +40,12 @@
 
 SYSTEM_FRAMEWORK_SEARCH_PATHS = $(inherited) $(SDKROOT)$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks $(SDKROOT)$(SYSTEM_LIBRARY_DIR)/Frameworks
 
-WK_LIBWEBRTC_LIBRARY_DIR = $(WEBCORE_FRAMEWORKS_DIR)/WebCore.framework/Frameworks
-WK_LIBWEBRTC_LIBRARY_DIR[sdk=macosx*] = $(WK_LIBWEBRTC_LIBRARY_DIR_USE_OVERRIDE_FRAMEWORKS_DIR_$(WK_USE_OVERRIDE_FRAMEWORKS_DIR));
-WK_LIBWEBRTC_LIBRARY_DIR_USE_OVERRIDE_FRAMEWORKS_DIR_NO = $(WEBCORE_FRAMEWORKS_DIR)/WebCore.framework/Versions/A/Frameworks;
-WK_LIBWEBRTC_LIBRARY_DIR_USE_OVERRIDE_FRAMEWORKS_DIR_YES = $(WK_OVERRIDE_FRAMEWORKS_DIR);
+WK_FRAMEWORKS_LIBRARY_DIR = $(WEBCORE_FRAMEWORKS_DIR)/WebCore.framework/Frameworks
+WK_FRAMEWORKS_LIBRARY_DIR[sdk=macosx*] = $(WK_FRAMEWORKS_LIBRARY_DIR_USE_OVERRIDE_FRAMEWORKS_DIR_$(WK_USE_OVERRIDE_FRAMEWORKS_DIR));
+WK_FRAMEWORKS_LIBRARY_DIR_USE_OVERRIDE_FRAMEWORKS_DIR_NO = $(WEBCORE_FRAMEWORKS_DIR)/WebCore.framework/Versions/A/Frameworks;
+WK_FRAMEWORKS_LIBRARY_DIR_USE_OVERRIDE_FRAMEWORKS_DIR_YES = $(WK_OVERRIDE_FRAMEWORKS_DIR);
 
-LIBRARY_SEARCH_PATHS = $(inherited) "$(WK_LIBWEBRTC_LIBRARY_DIR)";
+LIBRARY_SEARCH_PATHS = $(inherited) "$(WK_FRAMEWORKS_LIBRARY_DIR)";
 
 WEBKITADDITIONS_HEADER_SEARCH_PATHS = $(BUILT_PRODUCTS_DIR)/usr/local/include/WebKitAdditions $(SDKROOT)/usr/local/include/WebKitAdditions;
 ANGLE_HEADER_SEARCH_PATHS = $(BUILT_PRODUCTS_DIR)$(WK_ALTERNATE_FRAMEWORKS_DIR)/usr/local/include/ $(SDKROOT)$(WK_ALTERNATE_WEBKIT_SDK_PATH)/usr/local/include/;
@@ -69,6 +69,8 @@
 PRODUCT_BUNDLE_IDENTIFIER = com.apple.$(PRODUCT_NAME:rfc1034identifier);
 UNEXPORTED_SYMBOLS_FILE = Configurations/WebCore.unexp;
 
+WK_ANGLE_LDFLAGS = -weak-lANGLE-shared;
+
 WK_APPKIT_LDFLAGS = $(WK_APPKIT_LDFLAGS_$(WK_PLATFORM_NAME));
 WK_APPKIT_LDFLAGS_macosx = -framework AppKit;
 WK_APPKIT_LDFLAGS_maccatalyst = -framework AppKit;
@@ -123,7 +125,7 @@
 WK_URL_FORMATTING_LDFLAGS_YES = -framework URLFormatting;
 
 // FIXME: Reduce the number of allowable_clients <rdar://problem/31823969>
-OTHER_LDFLAGS = $(inherited) $(WK_RELOCATABLE_FRAMEWORK_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_NETWORK_EXTENSION_LD_FLAGS) $(WK_SYSTEM_CONFIGURATION_LDFLAGS) $(WK_CORE_IMAGE_LDFLAGS) $(WK_URL_FORMATTING_LDFLAGS);
+OTHER_LDFLAGS = $(inherited) $(WK_RELOCATABLE_FRAMEWORK_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_ANGLE_LDFLAGS) $(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_NETWORK_EXTENSION_LD_FLAGS) $(WK_SYSTEM_CONFIGURATION_LDFLAGS) $(WK_CORE_IMAGE_LDFLAGS) $(WK_URL_FORMATTING_LDFLAGS);
 
 OTHER_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;
 OTHER_LDFLAGS_PLATFORM_macosx = -sub_library libobjc -umbrella WebKit;

Modified: trunk/Source/WebCore/Configurations/WebCoreTestSupport.xcconfig (274749 => 274750)


--- trunk/Source/WebCore/Configurations/WebCoreTestSupport.xcconfig	2021-03-19 23:53:31 UTC (rev 274749)
+++ trunk/Source/WebCore/Configurations/WebCoreTestSupport.xcconfig	2021-03-19 23:59:55 UTC (rev 274750)
@@ -52,14 +52,16 @@
 LIBWEBRTC_LDFLAGS_ = ;
 LIBWEBRTC_LDFLAGS_ENABLE_WEB_RTC = -weak-lwebrtc;
 
+ANGLE_LDFLAGS = -weak-lANGLE-shared;
+
 PRODUCT_NAME = WebCoreTestSupport;
 EXECUTABLE_PREFIX = lib;
 EXPORTED_SYMBOLS_FILE = ;
 GCC_SYMBOLS_PRIVATE_EXTERN = YES;
-OTHER_LDFLAGS = $(ASAN_OTHER_LDFLAGS);
-OTHER_LDFLAGS[sdk=macos*] = $(ASAN_OTHER_LDFLAGS) -framework AppKit $(LIBWEBRTC_LDFLAGS);
+OTHER_LDFLAGS = $(ASAN_OTHER_LDFLAGS) $(ANGLE_LDFLAGS);
+OTHER_LDFLAGS[sdk=macos*] = $(ASAN_OTHER_LDFLAGS) -framework AppKit $(ANGLE_LDFLAGS) $(LIBWEBRTC_LDFLAGS);
 
-OTHER_LDFLAGS[sdk=iphone*] = $(ASAN_OTHER_LDFLAGS) -lAccessibility -framework CoreText $(LIBWEBRTC_LDFLAGS);
+OTHER_LDFLAGS[sdk=iphone*] = $(ASAN_OTHER_LDFLAGS) -lAccessibility -framework CoreText $(ANGLE_LDFLAGS) $(LIBWEBRTC_LDFLAGS);
 SECT_ORDER_FLAGS = ;
 
 ENTITLEMENTS_REQUIRED = $(ENTITLEMENTS_REQUIRED_USE_INTERNAL_SDK_$(USE_INTERNAL_SDK))

Modified: trunk/Source/WebCore/Sources.txt (274749 => 274750)


--- trunk/Source/WebCore/Sources.txt	2021-03-19 23:53:31 UTC (rev 274749)
+++ trunk/Source/WebCore/Sources.txt	2021-03-19 23:59:55 UTC (rev 274750)
@@ -1923,7 +1923,6 @@
 platform/gamepad/EmptyGamepadProvider.cpp
 platform/gamepad/GamepadConstants.cpp
 platform/gamepad/GamepadProvider.cpp
-platform/graphics/ANGLEWebKitBridge.cpp
 platform/graphics/AnimationFrameRate.cpp
 platform/graphics/BitmapImage.cpp
 platform/graphics/Color.cpp

Modified: trunk/Source/WebCore/SourcesGTK.txt (274749 => 274750)


--- trunk/Source/WebCore/SourcesGTK.txt	2021-03-19 23:53:31 UTC (rev 274749)
+++ trunk/Source/WebCore/SourcesGTK.txt	2021-03-19 23:59:55 UTC (rev 274750)
@@ -73,6 +73,7 @@
 
 platform/generic/ScrollAnimatorGeneric.cpp
 
+platform/graphics/ANGLEWebKitBridge.cpp
 platform/graphics/GLContext.cpp @no-unify
 platform/graphics/PlatformDisplay.cpp @no-unify
 

Modified: trunk/Source/WebCore/SourcesWPE.txt (274749 => 274750)


--- trunk/Source/WebCore/SourcesWPE.txt	2021-03-19 23:53:31 UTC (rev 274749)
+++ trunk/Source/WebCore/SourcesWPE.txt	2021-03-19 23:59:55 UTC (rev 274750)
@@ -66,6 +66,7 @@
 
 platform/generic/ScrollAnimatorGeneric.cpp
 
+platform/graphics/ANGLEWebKitBridge.cpp
 platform/graphics/GLContext.cpp
 platform/graphics/PlatformDisplay.cpp
 

Modified: trunk/Source/WebCore/platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm (274749 => 274750)


--- trunk/Source/WebCore/platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm	2021-03-19 23:53:31 UTC (rev 274749)
+++ trunk/Source/WebCore/platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm	2021-03-19 23:59:55 UTC (rev 274750)
@@ -38,6 +38,7 @@
 #import "WebGLLayer.h"
 #import <CoreGraphics/CGBitmapContext.h>
 #import <wtf/BlockObjCExceptions.h>
+#import <wtf/darwin/WeakLinking.h>
 #import <wtf/text/CString.h>
 
 #if ENABLE(VIDEO) && USE(AVFOUNDATION)
@@ -44,6 +45,8 @@
 #include "GraphicsContextGLCV.h"
 #endif
 
+WTF_WEAK_LINK_FORCE_IMPORT(EGL_Initialize);
+
 namespace WebCore {
 
 #if ASSERT_ENABLED
@@ -127,9 +130,19 @@
 }
 #endif
 
+static bool isANGLEAvailable()
+{
+    return !!EGL_Initialize;
+}
 
 RefPtr<GraphicsContextGLOpenGL> GraphicsContextGLOpenGL::create(GraphicsContextGLAttributes attrs, HostWindow* hostWindow)
 {
+    // If ANGLE is not loaded, we can fail immediately.
+    if (!isANGLEAvailable()) {
+        LOG(WebGL, "ANGLE shared library was not loaded. Can't make GraphicsContextGL.");
+        return nullptr;
+    }
+
     // Make space for the incoming context if we're full.
     GraphicsContextGLOpenGLManager::sharedManager().recycleContextIfNecessary();
     if (GraphicsContextGLOpenGLManager::sharedManager().hasTooManyContexts())
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to