python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / pkgs / development / libraries / wxwidgets / wxGTK32.nix
blob1f4e41315453b1662dbfa0617152de3daee947bf
1 { lib
2 , stdenv
3 , expat
4 , fetchFromGitHub
5 , fetchurl
6 , gnome2
7 , gst_all_1
8 , gtk3
9 , libGL
10 , libGLU
11 , libSM
12 , libXinerama
13 , libXtst
14 , libXxf86vm
15 , libpng
16 , libtiff
17 , libjpeg_turbo
18 , zlib
19 , pcre2
20 , pkg-config
21 , xorgproto
22 , compat28 ? false
23 , compat30 ? true
24 , unicode ? true
25 , withMesa ? lib.elem stdenv.hostPlatform.system lib.platforms.mesaPlatforms
26 , withWebKit ? stdenv.isDarwin
27 , webkitgtk
28 , setfile
29 , AGL
30 , Carbon
31 , Cocoa
32 , Kernel
33 , QTKit
34 , AVFoundation
35 , AVKit
36 , WebKit
38 let
39   catch = fetchFromGitHub {
40     owner = "wxWidgets";
41     repo = "Catch";
42     rev = "5f5e4cecd1cafc85e109471356dec29e778d2160";
43     hash = "sha256-fB/E17tiAicAkq88Je/YFYohJ6EHJOO54oQaqiR/OzY=";
44   };
46   nanosvg = fetchFromGitHub {
47     owner = "wxWidgets";
48     repo = "nanosvg";
49     rev = "ccdb1995134d340a93fb20e3a3d323ccb3838dd0";
50     hash = "sha256-ymziU0NgGqxPOKHwGm0QyEdK/8jL/QYk5UdIQ3Tn8jw=";
51   };
53 stdenv.mkDerivation rec {
54   pname = "wxwidgets";
55   version = "3.2.1";
57   src = fetchFromGitHub {
58     owner = "wxWidgets";
59     repo = "wxWidgets";
60     rev = "v${version}";
61     hash = "sha256-k6td/8pF7ad7+gVm7L0jX79fHKwR7/qrOBpSFggyaI0=";
62   };
64   nativeBuildInputs = [ pkg-config ];
66   buildInputs = [
67     gst_all_1.gst-plugins-base
68     gst_all_1.gstreamer
69     libpng
70     libtiff
71     libjpeg_turbo
72     zlib
73     pcre2
74   ] ++ lib.optionals stdenv.isLinux [
75     gtk3
76     libSM
77     libXinerama
78     libXtst
79     libXxf86vm
80     xorgproto
81   ]
82   ++ lib.optional withMesa libGLU
83   ++ lib.optional (withWebKit && stdenv.isLinux) webkitgtk
84   ++ lib.optional (withWebKit && stdenv.isDarwin) WebKit
85   ++ lib.optionals stdenv.isDarwin [
86     expat
87     setfile
88     Carbon
89     Cocoa
90     Kernel
91     QTKit
92     AVFoundation
93     AVKit
94     WebKit
95   ];
97   propagatedBuildInputs = lib.optional stdenv.isDarwin AGL;
99   configureFlags = [
100     "--disable-precomp-headers"
101     # This is the default option, but be explicit
102     "--disable-monolithic"
103     "--enable-mediactrl"
104     "--with-nanosvg"
105     (if compat28 then "--enable-compat28" else "--disable-compat28")
106     (if compat30 then "--enable-compat30" else "--disable-compat30")
107   ] ++ lib.optional unicode "--enable-unicode"
108   ++ lib.optional withMesa "--with-opengl"
109   ++ lib.optionals stdenv.isDarwin [
110     "--with-osx_cocoa"
111     "--with-libiconv"
112   ] ++ lib.optionals withWebKit [
113     "--enable-webview"
114     "--enable-webviewwebkit"
115   ];
117   SEARCH_LIB = "${libGLU.out}/lib ${libGL.out}/lib";
119   preConfigure = ''
120     cp -r ${catch}/* 3rdparty/catch/
121     cp -r ${nanosvg}/* 3rdparty/nanosvg/
122   '' + lib.optionalString stdenv.isDarwin ''
123     substituteInPlace configure \
124       --replace 'ac_cv_prog_SETFILE="/Developer/Tools/SetFile"' 'ac_cv_prog_SETFILE="${setfile}/bin/SetFile"'
125     substituteInPlace configure \
126       --replace "-framework System" "-lSystem"
127   '';
129   postInstall = "
130     pushd $out/include
131     ln -s wx-*/* .
132     popd
133   ";
135   enableParallelBuilding = true;
137   passthru = {
138     inherit compat28 compat30 unicode;
139   };
141   meta = with lib; {
142     homepage = "https://www.wxwidgets.org/";
143     description = "A Cross-Platform C++ GUI Library";
144     longDescription = ''
145       wxWidgets gives you a single, easy-to-use API for writing GUI applications
146       on multiple platforms that still utilize the native platform's controls
147       and utilities. Link with the appropriate library for your platform and
148       compiler, and your application will adopt the look and feel appropriate to
149       that platform. On top of great GUI functionality, wxWidgets gives you:
150       online help, network programming, streams, clipboard and drag and drop,
151       multithreading, image loading and saving in a variety of popular formats,
152       database support, HTML viewing and printing, and much more.
153     '';
154     license = licenses.wxWindows;
155     maintainers = with maintainers; [ tfmoraes ];
156     platforms = platforms.unix;
157   };