Big Sur performance patch breaks 3.24.31
I cannot build GTK 3.24.31. I've tested targeting 10.11, 10.13, 10.15 and 11.3, setting SDKROOT
accordingly. The breakage is caused by 10b5f8a0 as reverting that commit fixes the problem.
Steps to reproduce
- try to build GTK 3.24.31 using JHBuild and gtk-osx
Current behavior
Fails to build.
Expected outcome
Builds successfully.
Version information
- GTK 3.24.31
- macOS Big Sur 11.6.2 with Xcode 13.0
- macOS SDKs: 10.11, 10.13, 10.15, 11.3
Additional information
Some examples of the build errors.
targeting 10.11
[57/1288] Compiling C object gdk/quartz/libgdk-quartz.a.p/GdkQuartzView.c.o
FAILED: gdk/quartz/libgdk-quartz.a.p/GdkQuartzView.c.o
/Users/Shared/work/0.56/bin/gcc -Igdk/quartz/libgdk-quartz.a.p -Igdk/quartz -I../../../usr/src/gtk+-3.24.31/gdk/quartz -I. -I../../../usr/src/gtk+-3.24.31 -Igdk -I../../../usr/src/gtk+-3.24.31/gdk -I/Users/Shared/work/0.56/include/gdk-pixbuf-2.0 -I/Users/Shared/work/0.56/include/glib-2.0 -I/Users/Shared/work/0.56/lib/glib-2.0/include -I/Users/Shared/work/0.56/include/cairo -I/Users/Shared/work/0.56/include/pixman-1 -I/Users/Shared/work/0.56/include/freetype2 -I/Users/Shared/work/0.56/include/harfbuzz -I/Users/Shared/work/0.56/include/libpng16 -I/Users/Shared/work/0.56/include/pango-1.0 -I/Users/Shared/work/0.56/include/fribidi -I/Users/Shared/work/0.56/include/gio-unix-2.0 -I/opt/sdks/MacOSX10.11.sdk/usr/include -I/Users/Shared/work/0.56/include -fcolor-diagnostics -Wall -Winvalid-pch -O2 -g -DG_LOG_USE_STRUCTURED=1 -DGLIB_MIN_REQUIRED_VERSION=GLIB_VERSION_2_56 -DGLIB_MAX_ALLOWED_VERSION=GLIB_VERSION_2_58 '-DGTK_VERSION="3.24.31"' -D_GNU_SOURCE -DG_ENABLE_DEBUG -O2 -arch x86_64 -isysroot /opt/sdks/MacOSX10.11.sdk -arch x86_64 -isysroot /opt/sdks/MacOSX10.11.sdk -DGDK_COMPILATION '-DG_LOG_DOMAIN="Gdk"' -xobjective-c -MD -MQ gdk/quartz/libgdk-quartz.a.p/GdkQuartzView.c.o -MF gdk/quartz/libgdk-quartz.a.p/GdkQuartzView.c.o.d -o gdk/quartz/libgdk-quartz.a.p/GdkQuartzView.c.o -c ../../../usr/src/gtk+-3.24.31/gdk/quartz/GdkQuartzView.c
../../../usr/src/gtk+-3.24.31/gdk/quartz/GdkQuartzView.c:188:58: warning: format specifies type 'char *' but the argument has type 'SEL _Nonnull' [-Wformat]
GDK_NOTE (EVENTS, g_message ("doCommandBySelector %s", aSelector));
~~ ^~~~~~~~~
/Users/Shared/work/0.56/include/glib-2.0/glib/gmessages.h:316:63: note: expanded from macro 'g_message'
G_STRFUNC, __VA_ARGS__)
^~~~~~~~~~~
../../../usr/src/gtk+-3.24.31/gdk/gdkinternals.h:121:10: note: expanded from macro 'GDK_NOTE'
{ action; }; } G_STMT_END
^~~~~~
../../../usr/src/gtk+-3.24.31/gdk/quartz/GdkQuartzView.c:302:11: error: property 'contentsFormat' not found on object of type 'CALayer *'
layer.contentsFormat = kCAContentsFormatRGBA8Uint;
^
../../../usr/src/gtk+-3.24.31/gdk/quartz/GdkQuartzView.c:302:28: error: use of undeclared identifier 'kCAContentsFormatRGBA8Uint'
layer.contentsFormat = kCAContentsFormatRGBA8Uint;
^
1 warning and 2 errors generated.
[58/1288] Compiling C object gdk/quartz/libgdk-quartz.a.p/gdkdevice-core-quartz.c.o
[59/1288] Compiling C object gdk/quartz/libgdk-quartz.a.p/gdkdevicemanager-core-quartz.c.o
[60/1288] Compiling C object gdk/quartz/libgdk-quartz.a.p/gdkcursor-quartz.c.o
../../../usr/src/gtk+-3.24.31/gdk/quartz/gdkcursor-quartz.c:301:16: warning: 'NSCursor' may not respond to '_coreCursorType'
return [super _coreCursorType];
~~~~~ ^
1 warning generated.
[61/1288] Compiling C object gdk/quartz/libgdk-quartz.a.p/gdkdisplay-quartz.c.o
[62/1288] Compiling C object gdk/quartz/libgdk-quartz.a.p/GdkQuartzNSWindow.c.o
[63/1288] Compiling C object tests/visuals/visuals.p/visuals.c.o
[64/1288] Compiling C object gdk/quartz/libgdk-quartz.a.p/gdkdnd-quartz.c.o
[65/1288] Compiling C object gdk/quartz/libgdk-quartz.a.p/gdkeventloop-quartz.c.o
[66/1288] Compiling C object tests/testwindows.p/testwindows.c.o
../../../usr/src/gtk+-3.24.31/tests/testwindows.c:55:3: warning: 'gdk_window_set_background_rgba' is deprecated [-Wdeprecated-declarations]
gdk_window_set_background_rgba (window, bg);
^
../../../usr/src/gtk+-3.24.31/gdk/gdkwindow.h:786:1: note: 'gdk_window_set_background_rgba' has been explicitly marked deprecated here
GDK_DEPRECATED_IN_3_22
^
./gdk/gdkversionmacros.h:412:47: note: expanded from macro 'GDK_DEPRECATED_IN_3_22'
# define GDK_DEPRECATED_IN_3_22 GDK_DEPRECATED
^
./gdk/gdkversionmacros.h:48:24: note: expanded from macro 'GDK_DEPRECATED'
#define GDK_DEPRECATED G_DEPRECATED _GDK_EXTERN
^
/Users/Shared/work/0.56/include/glib-2.0/glib/gmacros.h:1032:37: note: expanded from macro 'G_DEPRECATED'
#define G_DEPRECATED __attribute__((__deprecated__))
^
../../../usr/src/gtk+-3.24.31/tests/testwindows.c:723:7: warning: 'gdk_window_set_background_rgba' is deprecated [-Wdeprecated-declarations]
gdk_window_set_background_rgba (window, color);
^
../../../usr/src/gtk+-3.24.31/gdk/gdkwindow.h:786:1: note: 'gdk_window_set_background_rgba' has been explicitly marked deprecated here
GDK_DEPRECATED_IN_3_22
^
./gdk/gdkversionmacros.h:412:47: note: expanded from macro 'GDK_DEPRECATED_IN_3_22'
# define GDK_DEPRECATED_IN_3_22 GDK_DEPRECATED
^
./gdk/gdkversionmacros.h:48:24: note: expanded from macro 'GDK_DEPRECATED'
#define GDK_DEPRECATED G_DEPRECATED _GDK_EXTERN
^
/Users/Shared/work/0.56/include/glib-2.0/glib/gmacros.h:1032:37: note: expanded from macro 'G_DEPRECATED'
#define G_DEPRECATED __attribute__((__deprecated__))
^
2 warnings generated.
[67/1288] Compiling C object gdk/quartz/libgdk-quartz.a.p/gdkevents-quartz.c.o
../../../usr/src/gtk+-3.24.31/gdk/quartz/gdkevents-quartz.c:1052:71: warning: 'gdk_display_get_device_manager' is deprecated: Use 'gdk_display_get_default_seat' instead [-Wdeprecated-declarations]
event_device = _gdk_quartz_device_manager_core_device_for_ns_event (gdk_display_get_device_manager (_gdk_display),
^
../../../usr/src/gtk+-3.24.31/gdk/gdkdisplay.h:170:1: note: 'gdk_display_get_device_manager' has been explicitly marked deprecated here
GDK_DEPRECATED_IN_3_20_FOR(gdk_display_get_default_seat)
^
./gdk/gdkversionmacros.h:399:47: note: expanded from macro 'GDK_DEPRECATED_IN_3_20_FOR'
# define GDK_DEPRECATED_IN_3_20_FOR(f) GDK_DEPRECATED_FOR(f)
^
./gdk/gdkversionmacros.h:49:31: note: expanded from macro 'GDK_DEPRECATED_FOR'
#define GDK_DEPRECATED_FOR(f) G_DEPRECATED_FOR(f) _GDK_EXTERN
^
/Users/Shared/work/0.56/include/glib-2.0/glib/gmacros.h:1040:44: note: expanded from macro 'G_DEPRECATED_FOR'
#define G_DEPRECATED_FOR(f) __attribute__((__deprecated__("Use '" #f "' instead")))
^
../../../usr/src/gtk+-3.24.31/gdk/quartz/gdkevents-quartz.c:1095:71: warning: 'gdk_display_get_device_manager' is deprecated: Use 'gdk_display_get_default_seat' instead [-Wdeprecated-declarations]
event_device = _gdk_quartz_device_manager_core_device_for_ns_event (gdk_display_get_device_manager (_gdk_display),
^
../../../usr/src/gtk+-3.24.31/gdk/gdkdisplay.h:170:1: note: 'gdk_display_get_device_manager' has been explicitly marked deprecated here
GDK_DEPRECATED_IN_3_20_FOR(gdk_display_get_default_seat)
^
./gdk/gdkversionmacros.h:399:47: note: expanded from macro 'GDK_DEPRECATED_IN_3_20_FOR'
# define GDK_DEPRECATED_IN_3_20_FOR(f) GDK_DEPRECATED_FOR(f)
^
./gdk/gdkversionmacros.h:49:31: note: expanded from macro 'GDK_DEPRECATED_FOR'
#define GDK_DEPRECATED_FOR(f) G_DEPRECATED_FOR(f) _GDK_EXTERN
^
/Users/Shared/work/0.56/include/glib-2.0/glib/gmacros.h:1040:44: note: expanded from macro 'G_DEPRECATED_FOR'
#define G_DEPRECATED_FOR(f) __attribute__((__deprecated__("Use '" #f "' instead")))
^
../../../usr/src/gtk+-3.24.31/gdk/quartz/gdkevents-quartz.c:1517:64: warning: 'gdk_display_get_device_manager' is deprecated: Use 'gdk_display_get_default_seat' instead [-Wdeprecated-declarations]
_gdk_quartz_device_manager_register_device_for_ns_event (gdk_display_get_device_manager (_gdk_display),
^
../../../usr/src/gtk+-3.24.31/gdk/gdkdisplay.h:170:1: note: 'gdk_display_get_device_manager' has been explicitly marked deprecated here
GDK_DEPRECATED_IN_3_20_FOR(gdk_display_get_default_seat)
^
./gdk/gdkversionmacros.h:399:47: note: expanded from macro 'GDK_DEPRECATED_IN_3_20_FOR'
# define GDK_DEPRECATED_IN_3_20_FOR(f) GDK_DEPRECATED_FOR(f)
^
./gdk/gdkversionmacros.h:49:31: note: expanded from macro 'GDK_DEPRECATED_FOR'
#define GDK_DEPRECATED_FOR(f) G_DEPRECATED_FOR(f) _GDK_EXTERN
^
/Users/Shared/work/0.56/include/glib-2.0/glib/gmacros.h:1040:44: note: expanded from macro 'G_DEPRECATED_FOR'
#define G_DEPRECATED_FOR(f) __attribute__((__deprecated__("Use '" #f "' instead")))
^
3 warnings generated.
[68/1288] Generating gtkdemo_resources_c with a custom command
[69/1288] Generating gtkresources_h with a custom command
[70/1288] Generating gtkresources_c with a custom command
ninja: build stopped: subcommand failed.
targeting 10.13 or 10.15
[1025/1288] Linking target gdk/libgdk-3.0.dylib
FAILED: gdk/libgdk-3.0.dylib
/Users/Shared/work/0.56/bin/gcc -o gdk/libgdk-3.0.dylib gdk/libgdk-3.0.dylib.p/meson-generated_.._gdkenumtypes.c.o gdk/libgdk-3.0.dylib.p/meson-generated_.._gdkmarshalers.c.o gdk/libgdk-3.0.dylib.p/meson-generated_.._gdkresources.c.o gdk/libgdk-3.0.dylib.p/gdk-private.c.o gdk/libgdk-3.0.dylib.p/gdk.c.o gdk/libgdk-3.0.dylib.p/gdkapplaunchcontext.c.o gdk/libgdk-3.0.dylib.p/gdkcairo.c.o gdk/libgdk-3.0.dylib.p/gdkcursor.c.o gdk/libgdk-3.0.dylib.p/gdkdeprecated.c.o gdk/libgdk-3.0.dylib.p/gdkdevice.c.o gdk/libgdk-3.0.dylib.p/gdkdevicemanager.c.o gdk/libgdk-3.0.dylib.p/gdkdevicepad.c.o gdk/libgdk-3.0.dylib.p/gdkdisplay.c.o gdk/libgdk-3.0.dylib.p/gdkdisplaymanager.c.o gdk/libgdk-3.0.dylib.p/gdkdnd.c.o gdk/libgdk-3.0.dylib.p/gdkevents.c.o gdk/libgdk-3.0.dylib.p/gdkframetimings.c.o gdk/libgdk-3.0.dylib.p/gdkgl.c.o gdk/libgdk-3.0.dylib.p/gdkglcontext.c.o gdk/libgdk-3.0.dylib.p/gdkglobals.c.o gdk/libgdk-3.0.dylib.p/gdkkeys.c.o gdk/libgdk-3.0.dylib.p/gdkkeyuni.c.o gdk/libgdk-3.0.dylib.p/gdkoffscreenwindow.c.o gdk/libgdk-3.0.dylib.p/gdkframeclock.c.o gdk/libgdk-3.0.dylib.p/gdkframeclockidle.c.o gdk/libgdk-3.0.dylib.p/gdkpango.c.o gdk/libgdk-3.0.dylib.p/gdkpixbuf-drawable.c.o gdk/libgdk-3.0.dylib.p/gdkprofiler.c.o gdk/libgdk-3.0.dylib.p/gdkproperty.c.o gdk/libgdk-3.0.dylib.p/gdkrectangle.c.o gdk/libgdk-3.0.dylib.p/gdkrgba.c.o gdk/libgdk-3.0.dylib.p/gdkscreen.c.o gdk/libgdk-3.0.dylib.p/gdkselection.c.o gdk/libgdk-3.0.dylib.p/gdkvisual.c.o gdk/libgdk-3.0.dylib.p/gdkwindow.c.o gdk/libgdk-3.0.dylib.p/gdkwindowimpl.c.o gdk/libgdk-3.0.dylib.p/gdkseat.c.o gdk/libgdk-3.0.dylib.p/gdkseatdefault.c.o gdk/libgdk-3.0.dylib.p/gdkdevicetool.c.o gdk/libgdk-3.0.dylib.p/gdkdrawingcontext.c.o gdk/libgdk-3.0.dylib.p/gdkmonitor.c.o gdk/libgdk-3.0.dylib.p/deprecated_gdkcolor.c.o -L/Users/Shared/work/0.56/lib -L/opt/sdks/MacOSX10.13.sdk/usr/lib -I/opt/sdks/MacOSX10.13.sdk/usr/include -I/Users/Shared/work/0.56/include -Wl,-dead_strip_dylibs -Wl,-headerpad_max_install_names -Wl,-undefined,error -shared -install_name @rpath/libgdk-3.0.dylib -compatibility_version 2405 -current_version 2405.27.0 -Wl,-force_load gdk/quartz/libgdk-quartz.a -arch x86_64 -isysroot /opt/sdks/MacOSX10.13.sdk -Wl,-headerpad_max_install_names -O2 -arch x86_64 -isysroot /opt/sdks/MacOSX10.13.sdk -arch x86_64 -isysroot /opt/sdks/MacOSX10.13.sdk -Wl,-rpath,/Users/Shared/work/0.56/lib -lm /Users/Shared/work/0.56/lib/libgdk_pixbuf-2.0.dylib /Users/Shared/work/0.56/lib/libgobject-2.0.dylib /Users/Shared/work/0.56/lib/libglib-2.0.dylib /Users/Shared/work/0.56/lib/libintl.dylib /Users/Shared/work/0.56/lib/libcairo.dylib /Users/Shared/work/0.56/lib/libpango-1.0.dylib /Users/Shared/work/0.56/lib/libharfbuzz.dylib /Users/Shared/work/0.56/lib/libfribidi.dylib /Users/Shared/work/0.56/lib/libcairo-gobject.dylib /Users/Shared/work/0.56/lib/libepoxy.dylib /Users/Shared/work/0.56/lib/libgio-2.0.dylib /Users/Shared/work/0.56/lib/libpangocairo-1.0.dylib -framework CoreGraphics -framework AppKit -framework Cocoa -framework Carbon -framework CoreGraphics -framework AppKit -framework Cocoa -framework Carbon
Undefined symbols for architecture x86_64:
"_kCAContentsFormatRGBA8Uint", referenced from:
-[GdkQuartzView viewWillDraw] in libgdk-quartz.a(GdkQuartzView.c.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
[1026/1288] Compiling C object testsuite/gtk/treeview.p/treeview.c.o
[1027/1288] Compiling C object testsuite/gdk/cairo.p/cairo.c.o
[1028/1288] Compiling C object testsuite/gtk/treemodel.p/sortmodel.c.o
[1029/1288] Compiling C object testsuite/gtk/textbuffer.p/textbuffer.c.o
[1030/1288] Compiling C object testsuite/gtk/displayclose.p/displayclose.c.o
[1031/1288] Compiling C object testsuite/gtk/treemodel.p/liststore.c.o
[1032/1288] Compiling C object testsuite/gdk/display.p/display.c.o
[1033/1288] Compiling C object testsuite/gtk/window.p/window.c.o
[1034/1288] Compiling C object testsuite/gtk/revealer-size.p/revealer-size.c.o
[1035/1288] Compiling C object testsuite/gdk/encoding.p/encoding.c.o
[1036/1288] Compiling C++ object testsuite/gtk/autotestkeywords.p/autotestkeywords.cc.o
[1037/1288] Compiling C object testsuite/a11y/tree-relationships.p/tree-relationships.c.o
[1038/1288] Compiling C object testsuite/gtk/treemodel.p/filtermodel.c.o
ninja: build stopped: subcommand failed.