python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / pkgs / development / libraries / wxwidgets / wxGTK30.nix
blob89b7ae1f94c4e6afd4d1adeb660e38154b0604bd
1 { lib
2 , stdenv
3 , expat
4 , fetchFromGitHub
5 , gst_all_1
6 , withGtk2 ? true
7 , gtk2
8 , gtk3
9 , libGL
10 , libGLU
11 , libSM
12 , libXinerama
13 , libXxf86vm
14 , libpng
15 , libtiff
16 , libjpeg_turbo
17 , zlib
18 , pkg-config
19 , xorgproto
20 , compat26 ? false
21 , compat28 ? true
22 , unicode ? true
23 , withMesa ? lib.elem stdenv.hostPlatform.system lib.platforms.mesaPlatforms
24 , withWebKit ? false
25 , webkitgtk
26 , setfile
27 , AGL
28 , Carbon
29 , Cocoa
30 , Kernel
31 , QTKit
32 , AVFoundation
33 , AVKit
34 , WebKit
37 assert withGtk2 -> (!withWebKit);
39 let
40   gtk = if withGtk2 then gtk2 else gtk3;
42 stdenv.mkDerivation rec {
43   pname = "wxwidgets";
44   version = "3.0.5";
46   src = fetchFromGitHub {
47     owner = "wxWidgets";
48     repo = "wxWidgets";
49     rev = "v${version}";
50     hash = "sha256-p69nNCg552j+nldGY0oL65uFRVu4xXCkoE10F5MwY9A=";
51   };
53   nativeBuildInputs = [ pkg-config ];
55   buildInputs = [
56     gst_all_1.gst-plugins-base
57     gst_all_1.gstreamer
58     libpng
59     libtiff
60     libjpeg_turbo
61     zlib
62   ] ++ lib.optionals stdenv.isLinux [
63     gtk
64     libSM
65     libXinerama
66     libXxf86vm
67     xorgproto
68   ]
69   ++ lib.optional withMesa libGLU
70   ++ lib.optional (withWebKit && stdenv.isLinux) webkitgtk
71   ++ lib.optional (withWebKit && stdenv.isDarwin) WebKit
72   ++ lib.optionals stdenv.isDarwin [
73     expat
74     setfile
75     Carbon
76     Cocoa
77     Kernel
78     QTKit
79     AVFoundation
80     AVKit
81   ];
83   propagatedBuildInputs = lib.optional stdenv.isDarwin AGL;
85   patches = [
86     # https://github.com/wxWidgets/wxWidgets/issues/17942
87     ./patches/0001-fix-assertion-using-hide-in-destroy.patch
88   ];
90   configureFlags = [
91     "--disable-precomp-headers"
92     "--enable-mediactrl"
93     (if compat26 then "--enable-compat26" else "--disable-compat26")
94     (if compat28 then "--enable-compat28" else "--disable-compat28")
95   ] ++ lib.optional unicode "--enable-unicode"
96   ++ lib.optional withMesa "--with-opengl"
97   ++ lib.optionals stdenv.isDarwin [
98     # allow building on 64-bit
99     "--enable-universal-binaries"
100     "--with-macosx-version-min=10.7"
101     "--with-osx_cocoa"
102     "--with-libiconv"
103   ] ++ lib.optionals withWebKit [
104     "--enable-webview"
105     "--enable-webviewwebkit"
106   ];
108   SEARCH_LIB = "${libGLU.out}/lib ${libGL.out}/lib";
110   preConfigure = ''
111     substituteInPlace configure --replace \
112       'SEARCH_INCLUDE=' 'DUMMY_SEARCH_INCLUDE='
113     substituteInPlace configure --replace \
114       'SEARCH_LIB=' 'DUMMY_SEARCH_LIB='
115     substituteInPlace configure --replace \
116       /usr /no-such-path
117   '' + lib.optionalString stdenv.isDarwin ''
118     substituteInPlace configure \
119       --replace 'ac_cv_prog_SETFILE="/Developer/Tools/SetFile"' 'ac_cv_prog_SETFILE="${setfile}/bin/SetFile"'
120     substituteInPlace configure \
121       --replace "-framework System" "-lSystem"
122   '';
124   postInstall = ''
125     pushd $out/include
126     ln -s wx-*/* .
127     popd
128   '';
130   enableParallelBuilding = true;
132   meta = with lib; {
133     homepage = "https://www.wxwidgets.org/";
134     description = "A 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; [ wegank ];
147     platforms = platforms.unix;
148   };
150   passthru = {
151     inherit gtk;
152     inherit compat26 compat28 unicode;
153   };