|
|
Home » Community » U++ community news and announcements » MILESTONE: gtk3 replaces gtk2 as default linux backend
|
|
|
Re: MILESTONE: gtk3 replaces gtk2 as default linux backend [message #52961 is a reply to message #52960] |
Wed, 22 January 2020 00:05 |
Sender Ghost
Messages: 301 Registered: November 2008
|
Senior Member |
|
|
Hi, Amrein.
amrein wrote on Tue, 21 January 2020 21:19
If U++ uses GTK3 only, x11 or libnotify are not required.
<..>
So if I'm not wrong, this part of the patch is incorrect:
<..>
and should be replaced by
-pkg_config((LINUX | FREEBSD) !X11) "gtk+-3.0 libnotify";
+pkg_config(POSIX !X11 (!OSX | OSX11)) "gtk+-3.0 libnotify";
If use
pkg_config(POSIX !X11 (!OSX | OSX11)) "gtk+-3.0 libnotify";
or
pkg_config(POSIX !X11 (!OSX | OSX11)) "gtk+-3.0";
in uppsrc/CtrlCore package to build examples/AddressBook for GUI main package configuration, then there is following linker error:
Linking...
/usr/bin/ld: undefined reference to symbol `XFlush' (try adding -lX11)
//usr/local/lib/libX11.so.6: could not read symbols: Bad value
c++: error: linker command failed with exit code 1 (use -v to see invocation)
The XFlush function is used in GetProperty function in uppsrc/CtrlCore/GtkX11Util.cpp file for GUI_GTK define. This is why !X11 (GTK 3) case requires x11 pkg-config dependency (at least on FreeBSD, where other specified pkg-config dependencies didn't include x11 implicitly).
% ldd -a ./AddressBook | sed 's/ (.*)$// ; s|^/.*/||' | head -27
AddressBook:
libgtk-3.so.0 => /usr/local/lib/libgtk-3.so.0
libgdk-3.so.0 => /usr/local/lib/libgdk-3.so.0
libpangocairo-1.0.so.0 => /usr/local/lib/libpangocairo-1.0.so.0
libpango-1.0.so.0 => /usr/local/lib/libpango-1.0.so.0
libatk-1.0.so.0 => /usr/local/lib/libatk-1.0.so.0
libcairo-gobject.so.2 => /usr/local/lib/libcairo-gobject.so.2
libcairo.so.2 => /usr/local/lib/libcairo.so.2
libthr.so.3 => /lib/libthr.so.3
libgdk_pixbuf-2.0.so.0 => /usr/local/lib/libgdk_pixbuf-2.0.so.0
libgio-2.0.so.0 => /usr/local/lib/libgio-2.0.so.0
libgobject-2.0.so.0 => /usr/local/lib/libgobject-2.0.so.0
libglib-2.0.so.0 => /usr/local/lib/libglib-2.0.so.0
libintl.so.8 => /usr/local/lib/libintl.so.8
libX11.so.6 => /usr/local/lib/libX11.so.6
libfontconfig.so.1 => /usr/local/lib/libfontconfig.so.1
libfreetype.so.6 => /usr/local/lib/libfreetype.so.6
libpng16.so.16 => /usr/local/lib/libpng16.so.16
libz.so.6 => /lib/libz.so.6
librt.so.1 => /usr/lib/librt.so.1
libexecinfo.so.1 => /usr/lib/libexecinfo.so.1
libc++.so.1 => /usr/lib/libc++.so.1
libcxxrt.so.1 => /lib/libcxxrt.so.1
libm.so.5 => /lib/libm.so.5
libgcc_s.so.1 => /lib/libgcc_s.so.1
libc.so.7 => /lib/libc.so.7
libgtk-3.so.0:
Some example of pkg-config output for libnotify and x11 on FreeBSD 10.4:
% pkg-config -cflags -libs libnotify
-I/usr/local/include -I/usr/local/include/gdk-pixbuf-2.0 -I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include -pthread -L/usr/local/lib -lnotify -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lintl
% pkg-config -cflags -libs x11
-I/usr/local/include -D_THREAD_SAFE -pthread -L/usr/local/lib -lX11
Edit:
But after build test for reference/TrayIcon package, there was following linker error:
<..>/CtrlLib/CLANG.Gui.Shared/CtrlLib.a(TrayIconGtk.o): In function `Upp::TrayIcon::Message(int, char const*, char const*, int)':
<..>/upp/uppsrc/CtrlLib/TrayIconGtk.cpp:(.text._ZN3Upp8TrayIcon7MessageEiPKcS2_i+0x1b): undefined reference to `notify_is_initted'
<..>/upp/uppsrc/CtrlLib/TrayIconGtk.cpp:(.text._ZN3Upp8TrayIcon7MessageEiPKcS2_i+0x27): undefined reference to `notify_init'
<..>/upp/uppsrc/CtrlLib/TrayIconGtk.cpp:(.text._ZN3Upp8TrayIcon7MessageEiPKcS2_i+0x59): undefined reference to `notify_notification_new'
<..>/upp/uppsrc/CtrlLib/TrayIconGtk.cpp:(.text._ZN3Upp8TrayIcon7MessageEiPKcS2_i+0x6b): undefined reference to `notify_notification_set_timeout'
<..>/upp/uppsrc/CtrlLib/TrayIconGtk.cpp:(.text._ZN3Upp8TrayIcon7MessageEiPKcS2_i+0x77): undefined reference to `notify_notification_show'
c++: error: linker command failed with exit code 1 (use -v to see invocation)
where mentioned functions are used in TrayIcon::Message method in uppsrc/CtrlLib/TrayIconGtk.cpp file.
This may mean, that libnotify package dependency is required for some cases in uppsrc/CtrlLib package.
Possible to add following check for uppsrc/CtrlLib package:
pkg_config(POSIX !X11 (!OSX | OSX11)) libnotify;
Example of ldd output for TrayIcon and AddressBook executables for this case, which library dependencies are the same:
Click to expand
% ldd -a ./TrayIcon | sed 's/ (.*)$// ; s|^/.*/||' | head -28
TrayIcon:
libnotify.so.4 => /usr/local/lib/libnotify.so.4
libgdk_pixbuf-2.0.so.0 => /usr/local/lib/libgdk_pixbuf-2.0.so.0
libgio-2.0.so.0 => /usr/local/lib/libgio-2.0.so.0
libgobject-2.0.so.0 => /usr/local/lib/libgobject-2.0.so.0
libglib-2.0.so.0 => /usr/local/lib/libglib-2.0.so.0
libintl.so.8 => /usr/local/lib/libintl.so.8
libgtk-3.so.0 => /usr/local/lib/libgtk-3.so.0
libgdk-3.so.0 => /usr/local/lib/libgdk-3.so.0
libpangocairo-1.0.so.0 => /usr/local/lib/libpangocairo-1.0.so.0
libpango-1.0.so.0 => /usr/local/lib/libpango-1.0.so.0
libatk-1.0.so.0 => /usr/local/lib/libatk-1.0.so.0
libcairo-gobject.so.2 => /usr/local/lib/libcairo-gobject.so.2
libcairo.so.2 => /usr/local/lib/libcairo.so.2
libthr.so.3 => /lib/libthr.so.3
libX11.so.6 => /usr/local/lib/libX11.so.6
libfontconfig.so.1 => /usr/local/lib/libfontconfig.so.1
libfreetype.so.6 => /usr/local/lib/libfreetype.so.6
libpng16.so.16 => /usr/local/lib/libpng16.so.16
libz.so.6 => /lib/libz.so.6
librt.so.1 => /usr/lib/librt.so.1
libexecinfo.so.1 => /usr/lib/libexecinfo.so.1
libc++.so.1 => /usr/lib/libc++.so.1
libcxxrt.so.1 => /lib/libcxxrt.so.1
libm.so.5 => /lib/libm.so.5
libgcc_s.so.1 => /lib/libgcc_s.so.1
libc.so.7 => /lib/libc.so.7
libnotify.so.4:
% ldd -a ./AddressBook | sed 's/ (.*)$// ; s|^/.*/||' | head -28
AddressBook:
libnotify.so.4 => /usr/local/lib/libnotify.so.4
libgdk_pixbuf-2.0.so.0 => /usr/local/lib/libgdk_pixbuf-2.0.so.0
libgio-2.0.so.0 => /usr/local/lib/libgio-2.0.so.0
libgobject-2.0.so.0 => /usr/local/lib/libgobject-2.0.so.0
libglib-2.0.so.0 => /usr/local/lib/libglib-2.0.so.0
libintl.so.8 => /usr/local/lib/libintl.so.8
libgtk-3.so.0 => /usr/local/lib/libgtk-3.so.0
libgdk-3.so.0 => /usr/local/lib/libgdk-3.so.0
libpangocairo-1.0.so.0 => /usr/local/lib/libpangocairo-1.0.so.0
libpango-1.0.so.0 => /usr/local/lib/libpango-1.0.so.0
libatk-1.0.so.0 => /usr/local/lib/libatk-1.0.so.0
libcairo-gobject.so.2 => /usr/local/lib/libcairo-gobject.so.2
libcairo.so.2 => /usr/local/lib/libcairo.so.2
libthr.so.3 => /lib/libthr.so.3
libX11.so.6 => /usr/local/lib/libX11.so.6
libfontconfig.so.1 => /usr/local/lib/libfontconfig.so.1
libfreetype.so.6 => /usr/local/lib/libfreetype.so.6
libpng16.so.16 => /usr/local/lib/libpng16.so.16
libz.so.6 => /lib/libz.so.6
librt.so.1 => /usr/lib/librt.so.1
libexecinfo.so.1 => /usr/lib/libexecinfo.so.1
libc++.so.1 => /usr/lib/libc++.so.1
libcxxrt.so.1 => /lib/libcxxrt.so.1
libm.so.5 => /lib/libm.so.5
libgcc_s.so.1 => /lib/libgcc_s.so.1
libc.so.7 => /lib/libc.so.7
libnotify.so.4:
Thanks for your attention.
[Updated on: Wed, 22 January 2020 04:14] Report message to a moderator
|
|
|
|
Goto Forum:
Current Time: Fri Mar 29 07:43:26 CET 2024
Total time taken to generate the page: 0.01534 seconds
|
|
|