anvil-editor: init at 0.4
[NixPkgs.git] / pkgs / development / libraries / wxwidgets / wxGTK31.nix
blob1379a15801e6c9fddda25ae22325ac28671dead5
1 { lib
2 , stdenv
3 , fetchFromGitHub
4 , curl
5 , gst_all_1
6 , gtk3
7 , libGL
8 , libGLU
9 , libSM
10 , libXinerama
11 , libXtst
12 , libXxf86vm
13 , pkg-config
14 , xorgproto
15 , compat28 ? false
16 , compat30 ? true
17 , unicode ? true
18 , withCurl ? false
19 , withPrivateFonts ? false
20 , withEGL ? true
21 , withMesa ? !stdenv.hostPlatform.isDarwin
22 , withWebKit ? stdenv.hostPlatform.isDarwin
23 , webkitgtk_4_0
24 , setfile
25 , AGL
26 , Carbon
27 , Cocoa
28 , Kernel
29 , QTKit
30 , AVFoundation
31 , AVKit
32 , WebKit
35 stdenv.mkDerivation rec {
36   pname = "wxwidgets";
37   version = "3.1.7";
39   src = fetchFromGitHub {
40     owner = "wxWidgets";
41     repo = "wxWidgets";
42     rev = "v${version}";
43     hash = "sha256-9qYPatpTT28H+fz77o7/Y3YVmiK0OCsiQT5QAYe93M0=";
44     fetchSubmodules = true;
45   };
47   patches = [
48     # https://github.com/wxWidgets/wxWidgets/issues/17942
49     ./patches/0001-fix-assertion-using-hide-in-destroy.patch
50   ];
52   nativeBuildInputs = [ pkg-config ];
54   buildInputs = [
55     gst_all_1.gst-plugins-base
56     gst_all_1.gstreamer
57   ] ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [
58     gtk3
59     libSM
60     libXinerama
61     libXtst
62     libXxf86vm
63     xorgproto
64   ]
65   ++ lib.optional withCurl curl
66   ++ lib.optional withMesa libGLU
67   ++ lib.optional (withWebKit && !stdenv.hostPlatform.isDarwin) webkitgtk_4_0
68   ++ lib.optional (withWebKit && stdenv.hostPlatform.isDarwin) WebKit
69   ++ lib.optionals stdenv.hostPlatform.isDarwin [
70     setfile
71     Carbon
72     Cocoa
73     Kernel
74     QTKit
75     AVFoundation
76     AVKit
77     WebKit
78   ];
80   propagatedBuildInputs = lib.optional stdenv.hostPlatform.isDarwin AGL;
82   configureFlags = [
83     "--disable-precomp-headers"
84     # This is the default option, but be explicit
85     "--disable-monolithic"
86     "--enable-mediactrl"
87     (if compat28 then "--enable-compat28" else "--disable-compat28")
88     (if compat30 then "--enable-compat30" else "--disable-compat30")
89   ]
90   ++ lib.optional (!withEGL) "--disable-glcanvasegl"
91   ++ lib.optional unicode "--enable-unicode"
92   ++ lib.optional withCurl "--enable-webrequest"
93   ++ lib.optional withPrivateFonts "--enable-privatefonts"
94   ++ lib.optional withMesa "--with-opengl"
95   ++ lib.optionals stdenv.hostPlatform.isDarwin [
96     "--with-osx_cocoa"
97     "--with-libiconv"
98   ] ++ lib.optionals withWebKit [
99     "--enable-webview"
100     "--enable-webviewwebkit"
101   ];
103   SEARCH_LIB = lib.optionalString (!stdenv.hostPlatform.isDarwin) "${libGLU.out}/lib ${libGL.out}/lib ";
105   preConfigure = ''
106     substituteInPlace configure --replace \
107       'SEARCH_INCLUDE=' 'DUMMY_SEARCH_INCLUDE='
108     substituteInPlace configure --replace \
109       'SEARCH_LIB=' 'DUMMY_SEARCH_LIB='
110     substituteInPlace configure --replace \
111       /usr /no-such-path
112   '' + lib.optionalString stdenv.hostPlatform.isDarwin ''
113     substituteInPlace configure --replace \
114       'ac_cv_prog_SETFILE="/Developer/Tools/SetFile"' \
115       'ac_cv_prog_SETFILE="${setfile}/bin/SetFile"'
116     substituteInPlace configure --replace \
117       "-framework System" "-lSystem"
118   '';
120   postInstall = "
121     pushd $out/include
122     ln -s wx-*/* .
123     popd
124   ";
126   enableParallelBuilding = true;
128   passthru = {
129     inherit compat28 compat30 unicode;
130   };
132   meta = with lib; {
133     homepage = "https://www.wxwidgets.org/";
134     description = "Cross-Platform C++ GUI Library";
135     longDescription = ''
136       wxWidgets gives you a single, easy-to-use API for writing GUI applications
137       on multiple platforms that still utilize the native platform's controls
138       and utilities. Link with the appropriate library for your platform and
139       compiler, and your application will adopt the look and feel appropriate to
140       that platform. On top of great GUI functionality, wxWidgets gives you:
141       online help, network programming, streams, clipboard and drag and drop,
142       multithreading, image loading and saving in a variety of popular formats,
143       database support, HTML viewing and printing, and much more.
144     '';
145     license = licenses.wxWindows;
146     maintainers = with maintainers; [ tfmoraes ];
147     platforms = platforms.unix;
148   };