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