| 
 | 
 | 
 
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: Tue Nov 04 01:04:05 CET 2025 
 Total time taken to generate the page: 0.14235 seconds 
 |   
 |  
  |