diff options
author | Jiajie Chen <c@jia.je> | 2022-06-22 17:52:43 +0800 |
---|---|---|
committer | Jiajie Chen <c@jia.je> | 2022-06-27 15:58:49 +0800 |
commit | 0aec6813da2cb760c0315df7287ce94b5e24b8fb (patch) | |
tree | 0147d780c68acb4270a0b6e71aa2cd61adf43544 /pkgs/applications/science | |
parent | 21caffdf42e45a2df51905a3ad75a88905dc9615 (diff) | |
download | nixpkgs-0aec6813da2cb760c0315df7287ce94b5e24b8fb.tar nixpkgs-0aec6813da2cb760c0315df7287ce94b5e24b8fb.tar.gz nixpkgs-0aec6813da2cb760c0315df7287ce94b5e24b8fb.tar.bz2 nixpkgs-0aec6813da2cb760c0315df7287ce94b5e24b8fb.tar.lz nixpkgs-0aec6813da2cb760c0315df7287ce94b5e24b8fb.tar.xz nixpkgs-0aec6813da2cb760c0315df7287ce94b5e24b8fb.tar.zst nixpkgs-0aec6813da2cb760c0315df7287ce94b5e24b8fb.zip |
gtkwave: support darwin build
Import two upstream commits to fix compilation under darwin
Diffstat (limited to 'pkgs/applications/science')
3 files changed, 154 insertions, 3 deletions
diff --git a/pkgs/applications/science/electronics/gtkwave/0001-Fix-detection-of-quartz-in-gdk-3.0-target.patch b/pkgs/applications/science/electronics/gtkwave/0001-Fix-detection-of-quartz-in-gdk-3.0-target.patch new file mode 100644 index 00000000000..b28e0b8e972 --- /dev/null +++ b/pkgs/applications/science/electronics/gtkwave/0001-Fix-detection-of-quartz-in-gdk-3.0-target.patch @@ -0,0 +1,40 @@ +From 69a6ab80cf0908c2a44430c297932ef3659a1655 Mon Sep 17 00:00:00 2001 +From: Jiajie Chen <c@jia.je> +Date: Wed, 22 Jun 2022 16:24:10 +0800 +Subject: [PATCH 1/2] Fix detection of quartz in gdk-3.0 target + +The GTK+3 built by Nix targets ``broadway quartz`` instead of only `quartz`, +thus the target check is wrong. The script is modified to look up `quartz` in a +loop. The variable name is renamed to `targets` in `gdk-3.0.pc` as well. + +--- + configure | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/configure b/configure +index 628a80f..9cb88d5 100755 +--- a/configure ++++ b/configure +@@ -7361,7 +7361,10 @@ $as_echo "yes" >&6; } + fi + GTK_VER=`$PKG_CONFIG gtk+-3.0 --modversion` + +- _gdk_tgt=`$PKG_CONFIG --variable=target gdk-3.0` ++ # gdk-3.0 may have multiple targets e.g. "broadway quartz" ++ _gdk_tgts=`$PKG_CONFIG --variable=targets gdk-3.0` ++ for _gdk_tgt in $_gdk_tgts; ++ do + if test "x$_gdk_tgt" = xquartz; then + + pkg_failed=no +@@ -7466,6 +7469,7 @@ fi + COCOA_GTK_LDFLAGS="-framework Cocoa -framework ApplicationServices" + + fi ++ done + + if test x$with_gconf = xyes; then + +-- +2.36.1 + diff --git a/pkgs/applications/science/electronics/gtkwave/0002-Check-GDK_WINDOWING_X11-macro-when-using-GtkPlug.patch b/pkgs/applications/science/electronics/gtkwave/0002-Check-GDK_WINDOWING_X11-macro-when-using-GtkPlug.patch new file mode 100644 index 00000000000..456f5fa278f --- /dev/null +++ b/pkgs/applications/science/electronics/gtkwave/0002-Check-GDK_WINDOWING_X11-macro-when-using-GtkPlug.patch @@ -0,0 +1,101 @@ +From 6045177a0d4753bb7a6a6ffc3f1a4a3e96129c6d Mon Sep 17 00:00:00 2001 +From: Jiajie Chen <c@jia.je> +Date: Wed, 22 Jun 2022 17:03:29 +0800 +Subject: [PATCH 2/2] Check GDK_WINDOWING_X11 macro when using GtkPlug + +--- + src/main.c | 5 +++++ + src/twinwave.c | 12 ++++++++++-- + 2 files changed, 15 insertions(+), 2 deletions(-) + +diff --git a/src/main.c b/src/main.c +index 81bf505..b89f629 100644 +--- a/src/main.c ++++ b/src/main.c +@@ -2080,10 +2080,15 @@ if(!GLOBALS->socket_xid) + #ifdef WAVE_USE_XID + else + { ++#ifdef GDK_WINDOWING_X11 + GLOBALS->mainwindow = gtk_plug_new(GLOBALS->socket_xid); + gtk_widget_show(GLOBALS->mainwindow); + + g_signal_connect(XXX_GTK_OBJECT(GLOBALS->mainwindow), "destroy", /* formerly was "destroy" */G_CALLBACK(plug_destroy),"Plug destroy"); ++#else ++ fprintf(stderr, "GTKWAVE | GtkPlug widget is unavailable\n"); ++ exit(1); ++#endif + } + #endif + } +diff --git a/src/twinwave.c b/src/twinwave.c +index 590c7f6..d5c60f2 100644 +--- a/src/twinwave.c ++++ b/src/twinwave.c +@@ -143,15 +143,19 @@ if(GDK_IS_WAYLAND_DISPLAY(gdk_display_get_default())) + use_embedded = 0; + } + #endif ++#if defined(__GTK_SOCKET_H__) && defined(GDK_WINDOWING_X11) + { + xsocket[0] = gtk_socket_new (); + xsocket[1] = gtk_socket_new (); + gtk_widget_show (xsocket[0]); + gtk_widget_show (xsocket[1]); + } ++#endif + ++#if defined(__GTK_SOCKET_H__) && defined(GDK_WINDOWING_X11) + if(!twinwayland) + g_signal_connect(XXX_GTK_OBJECT(xsocket[0]), "plug-removed", G_CALLBACK(plug_removed), NULL); ++#endif + + #if GTK_CHECK_VERSION(3,0,0) + main_vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5); +@@ -208,7 +212,7 @@ if(hMapFile != NULL) + memset(&pi, 0, sizeof(PROCESS_INFORMATION)); + + sprintf(buf, "0+%08X", shmid); +-#ifdef MINGW_USE_XID ++#if defined(MINGW_USE_XID) && defined(__GTK_SOCKET_H__) && defined(GDK_WINDOWING_X11) + sprintf(buf2, "%x", gtk_socket_get_id (GTK_SOCKET(xsocket[0]))); + #else + sprintf(buf2, "%x", 0); +@@ -279,7 +283,7 @@ if(hMapFile != NULL) + memset(&pi, 0, sizeof(PROCESS_INFORMATION)); + + sprintf(buf, "1+%08X", shmid); +-#ifdef MINGW_USE_XID ++#if defined(MINGW_USE_XID) && defined(__GTK_SOCKET_H__) && defined(GDK_WINDOWING_X11) + sprintf(buf2, "%x", gtk_socket_get_id (GTK_SOCKET(xsocket[1]))); + #else + sprintf(buf2, "%x", 0); +@@ -429,10 +433,12 @@ if(shmid >=0) + sprintf(buf, "0+%08X", shmid); + if(use_embedded) + { ++#if defined(__GTK_SOCKET_H__) && defined(GDK_WINDOWING_X11) + #ifdef MAC_INTEGRATION + sprintf(buf2, "%x", gtk_socket_get_id (GTK_SOCKET(xsocket[0]))); + #else + sprintf(buf2, "%lx", (long)gtk_socket_get_id (GTK_SOCKET(xsocket[0]))); ++#endif + #endif + } + else +@@ -467,10 +473,12 @@ if(shmid >=0) + sprintf(buf, "1+%08X", shmid); + if(use_embedded) + { ++#if defined(__GTK_SOCKET_H__) && defined(GDK_WINDOWING_X11) + #ifdef MAC_INTEGRATION + sprintf(buf2, "%x", gtk_socket_get_id (GTK_SOCKET(xsocket[1]))); + #else + sprintf(buf2, "%lx", (long)gtk_socket_get_id (GTK_SOCKET(xsocket[1]))); ++#endif + #endif + } + else +-- +2.36.1 + diff --git a/pkgs/applications/science/electronics/gtkwave/default.nix b/pkgs/applications/science/electronics/gtkwave/default.nix index bb6af8a20fd..10dcb2327c0 100644 --- a/pkgs/applications/science/electronics/gtkwave/default.nix +++ b/pkgs/applications/science/electronics/gtkwave/default.nix @@ -3,6 +3,7 @@ , glib , gperf , gtk3 +, gtk-mac-integration , judy , lib , pkg-config @@ -23,7 +24,16 @@ stdenv.mkDerivation rec { }; nativeBuildInputs = [ pkg-config wrapGAppsHook ]; - buildInputs = [ bzip2 glib gperf gtk3 judy tcl tk xz ]; + buildInputs = [ bzip2 glib gperf gtk3 judy tcl tk xz ] + ++ lib.optional stdenv.isDarwin gtk-mac-integration; + + # fix compilation under Darwin + # remove these patches upon next release + # https://github.com/gtkwave/gtkwave/pull/136 + patches = [ + ./0001-Fix-detection-of-quartz-in-gdk-3.0-target.patch + ./0002-Check-GDK_WINDOWING_X11-macro-when-using-GtkPlug.patch + ]; configureFlags = [ "--with-tcl=${tcl}/lib" @@ -36,7 +46,7 @@ stdenv.mkDerivation rec { description = "VCD/Waveform viewer for Unix and Win32"; homepage = "http://gtkwave.sourceforge.net"; license = lib.licenses.gpl2Plus; - maintainers = with lib.maintainers; [ thoughtpolice ]; - platforms = lib.platforms.linux; + maintainers = with lib.maintainers; [ thoughtpolice jiegec ]; + platforms = lib.platforms.linux ++ lib.platforms.darwin; }; } |