lol
1{ lib, stdenv, fetchzip, atk, cairo, dcompiler, gdk-pixbuf, gnome, gst_all_1, librsvg
2, glib, gtk3, gtksourceview4, libgda, libpeas, pango, pkg-config, which, vte }:
3
4let
5 inherit (gst_all_1) gstreamer gst-plugins-base gst-plugins-bad;
6in stdenv.mkDerivation rec {
7 pname = "gtkd";
8 version = "3.10.0";
9
10 src = fetchzip {
11 url = "https://gtkd.org/Downloads/sources/GtkD-${version}.zip";
12 sha256 = "DEKVDexGyg/T3SdnnvRjaHq1LbDo8ekNslxKROpMCCE=";
13 stripRoot = false;
14 };
15
16 nativeBuildInputs = [ dcompiler pkg-config which ];
17 propagatedBuildInputs = [
18 atk cairo gdk-pixbuf glib gstreamer gst-plugins-base gtk3 gtksourceview4
19 libgda libpeas librsvg pango vte
20 ];
21
22 postPatch = ''
23 substituteAll ${./paths.d} generated/gtkd/gtkd/paths.d
24
25 substituteInPlace generated/gstreamer/gst/app/c/functions.d \
26 --replace libgstapp-1.0.so.0 ${gst-plugins-base}/lib/libgstapp-1.0.so.0 \
27 --replace libgstapp-1.0.0.dylib ${gst-plugins-base}/lib/libgstapp-1.0.0.dylib
28
29 substituteInPlace generated/gstreamer/gst/base/c/functions.d \
30 --replace libgstbase-1.0.so.0 ${gstreamer.out}/lib/libgstbase-1.0.so.0 \
31 --replace libgstbase-1.0.0.dylib ${gstreamer.out}/lib/libgstbase-1.0.0.dylib
32
33 substituteInPlace generated/gstreamer/gst/mpegts/c/functions.d \
34 --replace libgstmpegts-1.0.so.0 ${gst-plugins-bad.out}/lib/libgstmpegts-1.0.so.0 \
35 --replace libgstmpegts-1.0.0.dylib ${gst-plugins-bad.out}/lib/libgstmpegts-1.0.0.dylib
36
37 substituteInPlace generated/gstreamer/gstinterfaces/c/functions.d \
38 --replace libgstvideo-1.0.so.0 ${gst-plugins-base}/lib/libgstvideo-1.0.so.0 \
39 --replace libgstvideo-1.0.0.dylib ${gst-plugins-base}/lib/libgstvideo-1.0.0.dylib
40
41 substituteInPlace generated/gstreamer/gstreamer/c/functions.d \
42 --replace libgstreamer-1.0.so.0 ${gstreamer}/lib/libgstreamer-1.0.so.0 \
43 --replace libgstreamer-1.0.0.dylib ${gstreamer}/lib/libgstreamer-1.0.0.dylib
44
45 substituteInPlace generated/gtkd/atk/c/functions.d \
46 --replace libatk-1.0.so.0 ${atk}/lib/libatk-1.0.so.0 \
47 --replace libatk-1.0.0.dylib ${atk}/lib/libatk-1.0.0.dylib
48
49 substituteInPlace generated/gtkd/cairo/c/functions.d \
50 --replace libcairo.so.2 ${cairo}/lib/libcairo.so.2 \
51 --replace libcairo.dylib ${cairo}/lib/libcairo.dylib
52
53 substituteInPlace generated/gtkd/gdk/c/functions.d \
54 --replace libgdk-3.so.0 ${gtk3}/lib/libgdk-3.so.0 \
55 --replace libgdk-3.0.dylib ${gtk3}/lib/libgdk-3.0.dylib
56
57 substituteInPlace generated/gtkd/gdkpixbuf/c/functions.d \
58 --replace libgdk_pixbuf-2.0.so.0 ${gdk-pixbuf}/lib/libgdk_pixbuf-2.0.so.0 \
59 --replace libgdk_pixbuf-2.0.0.dylib ${gdk-pixbuf}/lib/libgdk_pixbuf-2.0.0.dylib
60
61 substituteInPlace generated/gtkd/gio/c/functions.d \
62 --replace libgio-2.0.so.0 ${glib.out}/lib/libgio-2.0.so.0 \
63 --replace libgio-2.0.0.dylib ${glib.out}/lib/libgio-2.0.0.dylib
64
65 substituteInPlace generated/gtkd/glib/c/functions.d \
66 --replace libglib-2.0.so.0 ${glib.out}/lib/libglib-2.0.so.0 \
67 --replace libgmodule-2.0.so.0 ${glib.out}/lib/libgmodule-2.0.so.0 \
68 --replace libgobject-2.0.so.0 ${glib.out}/lib/libgobject-2.0.so.0 \
69 --replace libglib-2.0.0.dylib ${glib.out}/lib/libglib-2.0.0.dylib \
70 --replace libgmodule-2.0.0.dylib ${glib.out}/lib/libgmodule-2.0.0.dylib \
71 --replace libgobject-2.0.0.dylib ${glib.out}/lib/libgobject-2.0.0.dylib
72
73 substituteInPlace generated/gtkd/gobject/c/functions.d \
74 --replace libgobject-2.0.so.0 ${glib.out}/lib/libgobject-2.0.so.0 \
75 --replace libgobject-2.0.0.dylib ${glib.out}/lib/libgobject-2.0.0.dylib
76
77 substituteInPlace generated/gtkd/gtk/c/functions.d \
78 --replace libgdk-3.so.0 ${gtk3}/lib/libgdk-3.so.0 \
79 --replace libgtk-3.so.0 ${gtk3}/lib/libgtk-3.so.0 \
80 --replace libgdk-3.0.dylib ${gtk3}/lib/libgdk-3.0.dylib \
81 --replace libgtk-3.0.dylib ${gtk3}/lib/libgtk-3.0.dylib
82
83 substituteInPlace generated/gtkd/pango/c/functions.d \
84 --replace libpango-1.0.so.0 ${pango.out}/lib/libpango-1.0.so.0 \
85 --replace libpangocairo-1.0.so.0 ${pango.out}/lib/libpangocairo-1.0.so.0 \
86 --replace libpango-1.0.0.dylib ${pango.out}/lib/libpango-1.0.0.dylib \
87 --replace libpangocairo-1.0.0.dylib ${pango.out}/lib/libpangocairo-1.0.0.dylib
88
89 substituteInPlace generated/gtkd/rsvg/c/functions.d \
90 --replace librsvg-2.so.2 ${librsvg}/lib/librsvg-2.so.2 \
91 --replace librsvg-2.2.dylib ${librsvg}/lib/librsvg-2.2.dylib
92
93 substituteInPlace generated/peas/peas/c/functions.d \
94 --replace libpeas-1.0.so.0 ${libpeas}/lib/libpeas-1.0.so.0 \
95 --replace libpeas-gtk-1.0.so.0 ${libpeas}/lib/libpeas-gtk-1.0.so.0 \
96 --replace libpeas-1.0.0.dylib ${libpeas}/lib/libpeas-1.0.0.dylib \
97 --replace gtk-1.0.0.dylib ${libpeas}/lib/gtk-1.0.0.dylib
98
99 substituteInPlace generated/sourceview/gsv/c/functions.d \
100 --replace libgtksourceview-4.so.0 ${gtksourceview4}/lib/libgtksourceview-4.so.0 \
101 --replace libgtksourceview-4.0.dylib ${gtksourceview4}/lib/libgtksourceview-4.0.dylib
102
103 substituteInPlace generated/vte/vte/c/functions.d \
104 --replace libvte-2.91.so.0 ${vte}/lib/libvte-2.91.so.0 \
105 --replace libvte-2.91.0.dylib ${vte}/lib/libvte-2.91.0.dylib
106 '';
107
108 makeFlags = [
109 "prefix=${placeholder "out"}"
110 "PKG_CONFIG=${pkg-config}/bin/${pkg-config.targetPrefix}pkg-config"
111 ];
112
113 # The .pc files does not declare an `includedir=`, so the multiple
114 # outputs setup hook misses this.
115 postFixup = ''
116 for pc in $dev/lib/pkgconfig/*; do
117 substituteInPlace $pc \
118 --replace "$out/include" "$dev/include"
119 done
120 '';
121
122 passthru = {
123 inherit dcompiler;
124 };
125
126 meta = with lib; {
127 description = "D binding and OO wrapper for GTK";
128 homepage = "https://gtkd.org";
129 license = licenses.lgpl3Plus;
130 platforms = platforms.linux ++ platforms.darwin;
131 };
132}