Merge pull request #178552 from jiegec/gtkwave-darwin

gtkwave: support darwin build

authored by Rick van Schijndel and committed by GitHub 5cbfadba 1119bb4d

+154 -3
+40
pkgs/applications/science/electronics/gtkwave/0001-Fix-detection-of-quartz-in-gdk-3.0-target.patch
··· 1 + From 69a6ab80cf0908c2a44430c297932ef3659a1655 Mon Sep 17 00:00:00 2001 2 + From: Jiajie Chen <c@jia.je> 3 + Date: Wed, 22 Jun 2022 16:24:10 +0800 4 + Subject: [PATCH 1/2] Fix detection of quartz in gdk-3.0 target 5 + 6 + The GTK+3 built by Nix targets ``broadway quartz`` instead of only `quartz`, 7 + thus the target check is wrong. The script is modified to look up `quartz` in a 8 + loop. The variable name is renamed to `targets` in `gdk-3.0.pc` as well. 9 + 10 + --- 11 + configure | 6 +++++- 12 + 1 file changed, 5 insertions(+), 1 deletion(-) 13 + 14 + diff --git a/configure b/configure 15 + index 628a80f..9cb88d5 100755 16 + --- a/configure 17 + +++ b/configure 18 + @@ -7361,7 +7361,10 @@ $as_echo "yes" >&6; } 19 + fi 20 + GTK_VER=`$PKG_CONFIG gtk+-3.0 --modversion` 21 + 22 + - _gdk_tgt=`$PKG_CONFIG --variable=target gdk-3.0` 23 + + # gdk-3.0 may have multiple targets e.g. "broadway quartz" 24 + + _gdk_tgts=`$PKG_CONFIG --variable=targets gdk-3.0` 25 + + for _gdk_tgt in $_gdk_tgts; 26 + + do 27 + if test "x$_gdk_tgt" = xquartz; then 28 + 29 + pkg_failed=no 30 + @@ -7466,6 +7469,7 @@ fi 31 + COCOA_GTK_LDFLAGS="-framework Cocoa -framework ApplicationServices" 32 + 33 + fi 34 + + done 35 + 36 + if test x$with_gconf = xyes; then 37 + 38 + -- 39 + 2.36.1 40 +
+101
pkgs/applications/science/electronics/gtkwave/0002-Check-GDK_WINDOWING_X11-macro-when-using-GtkPlug.patch
··· 1 + From 6045177a0d4753bb7a6a6ffc3f1a4a3e96129c6d Mon Sep 17 00:00:00 2001 2 + From: Jiajie Chen <c@jia.je> 3 + Date: Wed, 22 Jun 2022 17:03:29 +0800 4 + Subject: [PATCH 2/2] Check GDK_WINDOWING_X11 macro when using GtkPlug 5 + 6 + --- 7 + src/main.c | 5 +++++ 8 + src/twinwave.c | 12 ++++++++++-- 9 + 2 files changed, 15 insertions(+), 2 deletions(-) 10 + 11 + diff --git a/src/main.c b/src/main.c 12 + index 81bf505..b89f629 100644 13 + --- a/src/main.c 14 + +++ b/src/main.c 15 + @@ -2080,10 +2080,15 @@ if(!GLOBALS->socket_xid) 16 + #ifdef WAVE_USE_XID 17 + else 18 + { 19 + +#ifdef GDK_WINDOWING_X11 20 + GLOBALS->mainwindow = gtk_plug_new(GLOBALS->socket_xid); 21 + gtk_widget_show(GLOBALS->mainwindow); 22 + 23 + g_signal_connect(XXX_GTK_OBJECT(GLOBALS->mainwindow), "destroy", /* formerly was "destroy" */G_CALLBACK(plug_destroy),"Plug destroy"); 24 + +#else 25 + + fprintf(stderr, "GTKWAVE | GtkPlug widget is unavailable\n"); 26 + + exit(1); 27 + +#endif 28 + } 29 + #endif 30 + } 31 + diff --git a/src/twinwave.c b/src/twinwave.c 32 + index 590c7f6..d5c60f2 100644 33 + --- a/src/twinwave.c 34 + +++ b/src/twinwave.c 35 + @@ -143,15 +143,19 @@ if(GDK_IS_WAYLAND_DISPLAY(gdk_display_get_default())) 36 + use_embedded = 0; 37 + } 38 + #endif 39 + +#if defined(__GTK_SOCKET_H__) && defined(GDK_WINDOWING_X11) 40 + { 41 + xsocket[0] = gtk_socket_new (); 42 + xsocket[1] = gtk_socket_new (); 43 + gtk_widget_show (xsocket[0]); 44 + gtk_widget_show (xsocket[1]); 45 + } 46 + +#endif 47 + 48 + +#if defined(__GTK_SOCKET_H__) && defined(GDK_WINDOWING_X11) 49 + if(!twinwayland) 50 + g_signal_connect(XXX_GTK_OBJECT(xsocket[0]), "plug-removed", G_CALLBACK(plug_removed), NULL); 51 + +#endif 52 + 53 + #if GTK_CHECK_VERSION(3,0,0) 54 + main_vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5); 55 + @@ -208,7 +212,7 @@ if(hMapFile != NULL) 56 + memset(&pi, 0, sizeof(PROCESS_INFORMATION)); 57 + 58 + sprintf(buf, "0+%08X", shmid); 59 + -#ifdef MINGW_USE_XID 60 + +#if defined(MINGW_USE_XID) && defined(__GTK_SOCKET_H__) && defined(GDK_WINDOWING_X11) 61 + sprintf(buf2, "%x", gtk_socket_get_id (GTK_SOCKET(xsocket[0]))); 62 + #else 63 + sprintf(buf2, "%x", 0); 64 + @@ -279,7 +283,7 @@ if(hMapFile != NULL) 65 + memset(&pi, 0, sizeof(PROCESS_INFORMATION)); 66 + 67 + sprintf(buf, "1+%08X", shmid); 68 + -#ifdef MINGW_USE_XID 69 + +#if defined(MINGW_USE_XID) && defined(__GTK_SOCKET_H__) && defined(GDK_WINDOWING_X11) 70 + sprintf(buf2, "%x", gtk_socket_get_id (GTK_SOCKET(xsocket[1]))); 71 + #else 72 + sprintf(buf2, "%x", 0); 73 + @@ -429,10 +433,12 @@ if(shmid >=0) 74 + sprintf(buf, "0+%08X", shmid); 75 + if(use_embedded) 76 + { 77 + +#if defined(__GTK_SOCKET_H__) && defined(GDK_WINDOWING_X11) 78 + #ifdef MAC_INTEGRATION 79 + sprintf(buf2, "%x", gtk_socket_get_id (GTK_SOCKET(xsocket[0]))); 80 + #else 81 + sprintf(buf2, "%lx", (long)gtk_socket_get_id (GTK_SOCKET(xsocket[0]))); 82 + +#endif 83 + #endif 84 + } 85 + else 86 + @@ -467,10 +473,12 @@ if(shmid >=0) 87 + sprintf(buf, "1+%08X", shmid); 88 + if(use_embedded) 89 + { 90 + +#if defined(__GTK_SOCKET_H__) && defined(GDK_WINDOWING_X11) 91 + #ifdef MAC_INTEGRATION 92 + sprintf(buf2, "%x", gtk_socket_get_id (GTK_SOCKET(xsocket[1]))); 93 + #else 94 + sprintf(buf2, "%lx", (long)gtk_socket_get_id (GTK_SOCKET(xsocket[1]))); 95 + +#endif 96 + #endif 97 + } 98 + else 99 + -- 100 + 2.36.1 101 +
+13 -3
pkgs/applications/science/electronics/gtkwave/default.nix
··· 3 3 , glib 4 4 , gperf 5 5 , gtk3 6 + , gtk-mac-integration 6 7 , judy 7 8 , lib 8 9 , pkg-config ··· 23 24 }; 24 25 25 26 nativeBuildInputs = [ pkg-config wrapGAppsHook ]; 26 - buildInputs = [ bzip2 glib gperf gtk3 judy tcl tk xz ]; 27 + buildInputs = [ bzip2 glib gperf gtk3 judy tcl tk xz ] 28 + ++ lib.optional stdenv.isDarwin gtk-mac-integration; 29 + 30 + # fix compilation under Darwin 31 + # remove these patches upon next release 32 + # https://github.com/gtkwave/gtkwave/pull/136 33 + patches = [ 34 + ./0001-Fix-detection-of-quartz-in-gdk-3.0-target.patch 35 + ./0002-Check-GDK_WINDOWING_X11-macro-when-using-GtkPlug.patch 36 + ]; 27 37 28 38 configureFlags = [ 29 39 "--with-tcl=${tcl}/lib" ··· 36 46 description = "VCD/Waveform viewer for Unix and Win32"; 37 47 homepage = "http://gtkwave.sourceforge.net"; 38 48 license = lib.licenses.gpl2Plus; 39 - maintainers = with lib.maintainers; [ thoughtpolice ]; 40 - platforms = lib.platforms.linux; 49 + maintainers = with lib.maintainers; [ thoughtpolice jiegec ]; 50 + platforms = lib.platforms.linux ++ lib.platforms.darwin; 41 51 }; 42 52 }