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