diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/wxwidgets')
6 files changed, 662 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/wxwidgets/0001-fix-assertion-using-hide-in-destroy.patch b/nixpkgs/pkgs/development/libraries/wxwidgets/0001-fix-assertion-using-hide-in-destroy.patch new file mode 100644 index 000000000000..ca9eb8bf612a --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/wxwidgets/0001-fix-assertion-using-hide-in-destroy.patch @@ -0,0 +1,43 @@ +commit 56a60ee50122613d3a356ce74b4bd77b5e7be235 +Author: Tim Kosse <tim.kosse@filezilla-project.org> +Date: Sat Aug 26 15:37:30 2017 +0200 + + If a wxTopLevelWindow has been instanced, but Create has not been called, calling Destroy on the window results in an assertion in Show(false), at least under wxGTK. Fix this by only hiding a top level window during destruction if it is actually shown. + +diff --git a/src/common/toplvcmn.cpp b/src/common/toplvcmn.cpp +index ef693690c5..8d07812031 100644 +--- a/src/common/toplvcmn.cpp ++++ b/src/common/toplvcmn.cpp +@@ -122,19 +122,21 @@ bool wxTopLevelWindowBase::Destroy() + // any more as no events will be sent to the hidden window and without idle + // events we won't prune wxPendingDelete list and the application won't + // terminate +- for ( wxWindowList::const_iterator i = wxTopLevelWindows.begin(), +- end = wxTopLevelWindows.end(); +- i != end; +- ++i ) +- { +- wxTopLevelWindow * const win = static_cast<wxTopLevelWindow *>(*i); +- if ( win != this && win->IsShown() ) ++ if ( IsShown() ) { ++ for ( wxWindowList::const_iterator i = wxTopLevelWindows.begin(), ++ end = wxTopLevelWindows.end(); ++ i != end; ++ ++i ) + { +- // there remains at least one other visible TLW, we can hide this +- // one +- Hide(); ++ wxTopLevelWindow * const win = static_cast<wxTopLevelWindow *>(*i); ++ if ( win != this && win->IsShown() ) ++ { ++ // there remains at least one other visible TLW, we can hide this ++ // one ++ Hide(); + +- break; ++ break; ++ } + } + } + diff --git a/nixpkgs/pkgs/development/libraries/wxwidgets/2.8/default.nix b/nixpkgs/pkgs/development/libraries/wxwidgets/2.8/default.nix new file mode 100644 index 000000000000..bc8fc6f5b047 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/wxwidgets/2.8/default.nix @@ -0,0 +1,117 @@ +{ lib +, stdenv +, fetchurl +, cairo +, gtk2 +, libGL +, libGLU +, libSM +, libX11 +, libXinerama +, libXxf86vm +, pkg-config +, xorgproto +, compat24 ? false +, compat26 ? true +, unicode ? true +, withMesa ? lib.elem stdenv.hostPlatform.system lib.platforms.mesaPlatforms +}: + +assert withMesa -> libGLU != null && libGL != null; + +stdenv.mkDerivation rec { + pname = "wxGTK"; + version = "2.8.12.1"; + + src = fetchurl { + url = "mirror://sourceforge/wxpython/wxPython-src-${version}.tar.bz2"; + hash = "sha256-Hz8VPZ8VBMbOLSxLI+lAuPWLgfTLo1zaGluzEUIkPNA="; + }; + + nativeBuildInputs = [ + pkg-config + ]; + + buildInputs = [ + cairo + gtk2 + libSM + libX11 + libXinerama + libXxf86vm + xorgproto + ] + ++ lib.optional withMesa libGLU; + + configureFlags = [ + "--enable-gtk2" + "--disable-precomp-headers" + "--enable-mediactrl" + "--enable-graphics_ctx" + (if compat24 then "--enable-compat24" else "--disable-compat24") + (if compat26 then "--enable-compat26" else "--disable-compat26") + ] + ++ lib.optional unicode "--enable-unicode" + ++ lib.optional withMesa "--with-opengl"; + + hardeningDisable = [ "format" ]; + + # These variables are used by configure to find some dependencies. + SEARCH_INCLUDE = + "${libXinerama.dev}/include ${libSM.dev}/include ${libXxf86vm.dev}/include"; + SEARCH_LIB = + "${libXinerama.out}/lib ${libSM.out}/lib ${libXxf86vm.out}/lib " + + lib.optionalString withMesa "${libGLU.out}/lib ${libGL.out}/lib "; + + # Work around a bug in configure. + NIX_CFLAGS_COMPILE = "-DHAVE_X11_XLIB_H=1 -lX11 -lcairo -Wno-narrowing"; + + preConfigure = '' + substituteInPlace configure --replace \ + 'SEARCH_INCLUDE=' 'DUMMY_SEARCH_INCLUDE=' + substituteInPlace configure --replace \ + 'SEARCH_LIB=' 'DUMMY_SEARCH_LIB=' + substituteInPlace configure --replace \ + /usr /no-such-path + ''; + + postBuild = '' + pushd contrib/src + make + popd + ''; + + postInstall = '' + pushd contrib/src + make install + popd + pushd $out/include + ln -s wx-*/* . + popd + ''; + + enableParallelBuilding = true; + + meta = with lib; { + homepage = "https://www.wxwidgets.org/"; + description = "A Cross-Platform C++ GUI Library"; + longDescription = '' + wxWidgets gives you a single, easy-to-use API for writing GUI applications + on multiple platforms that still utilize the native platform's controls + and utilities. Link with the appropriate library for your platform and + compiler, and your application will adopt the look and feel appropriate to + that platform. On top of great GUI functionality, wxWidgets gives you: + online help, network programming, streams, clipboard and drag and drop, + multithreading, image loading and saving in a variety of popular formats, + database support, HTML viewing and printing, and much more. + ''; + license = licenses.wxWindows; + maintainers = with maintainers; [ AndersonTorres ]; + platforms = platforms.linux; + }; + + passthru = { + inherit compat24 compat26 unicode; + gtk = gtk2; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/wxwidgets/2.9/default.nix b/nixpkgs/pkgs/development/libraries/wxwidgets/2.9/default.nix new file mode 100644 index 000000000000..46ef04dcb7a1 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/wxwidgets/2.9/default.nix @@ -0,0 +1,127 @@ +{ lib +, stdenv +, fetchFromGitHub +, autoconf +, gtk2 +, libGL +, libGLU +, libSM +, libXinerama +, libXxf86vm +, pkg-config +, xorgproto +, compat24 ? false +, compat26 ? true +, unicode ? true +, withMesa ? lib.elem stdenv.hostPlatform.system lib.platforms.mesaPlatforms +, darwin +}: + +assert withMesa -> libGLU != null && libGL != null; +let + inherit (darwin.stubs) setfile; + inherit (darwin.apple_sdk.frameworks) AGL Carbon Cocoa Kernel QuickTime; +in +stdenv.mkDerivation rec { + pname = "wxGTK"; + version = "2.9.5"; + + src = fetchFromGitHub { + owner = "wxWidgets"; + repo = "wxWidgets"; + rev = "v${version}"; + hash = "sha256-izefAPU4lORZxQja7/InHyElJ1++2lDloR+xPudsRNE="; + }; + + patches = [ + # https://github.com/wxWidgets/wxWidgets/issues/17942 + ../0001-fix-assertion-using-hide-in-destroy.patch + ]; + + nativeBuildInputs = [ + autoconf + pkg-config + ]; + + buildInputs = [ + gtk2 + libSM + libXinerama + libXxf86vm + xorgproto + ] + ++ lib.optional withMesa libGLU + ++ lib.optionals stdenv.isDarwin [ + Carbon + Cocoa + Kernel + QuickTime + setfile + ]; + + propagatedBuildInputs = lib.optional stdenv.isDarwin AGL; + + configureFlags = [ + "--disable-precomp-headers" + "--enable-gtk2" + (if compat24 then "--enable-compat24" else "--disable-compat24") + (if compat26 then "--enable-compat26" else "--disable-compat26") + ] + ++ lib.optional unicode "--enable-unicode" + ++ lib.optional withMesa "--with-opengl" + ++ lib.optionals stdenv.isDarwin [ # allow building on 64-bit + "--enable-universal-binaries" + "--with-cocoa" + "--with-macosx-version-min=10.7" + ]; + + SEARCH_LIB = "${libGLU.out}/lib ${libGL.out}/lib "; + + preConfigure = '' + ./autogen.sh + substituteInPlace configure --replace \ + 'SEARCH_INCLUDE=' 'DUMMY_SEARCH_INCLUDE=' + substituteInPlace configure --replace \ + 'SEARCH_LIB=' 'DUMMY_SEARCH_LIB=' + substituteInPlace configure --replace \ + /usr /no-such-path + '' + lib.optionalString stdenv.isDarwin '' + substituteInPlace configure --replace \ + 'ac_cv_prog_SETFILE="/Developer/Tools/SetFile"' \ + 'ac_cv_prog_SETFILE="${setfile}/bin/SetFile"' + substituteInPlace configure --replace \ + "-framework System" "-lSystem" + ''; + + postInstall = '' + pushd $out/include + ln -s wx-*/* . + popd + ''; + + enableParallelBuilding = true; + + meta = with lib; { + homepage = "https://www.wxwidgets.org/"; + description = "A Cross-Platform C++ GUI Library"; + longDescription = '' + wxWidgets gives you a single, easy-to-use API for writing GUI applications + on multiple platforms that still utilize the native platform's controls + and utilities. Link with the appropriate library for your platform and + compiler, and your application will adopt the look and feel appropriate to + that platform. On top of great GUI functionality, wxWidgets gives you: + online help, network programming, streams, clipboard and drag and drop, + multithreading, image loading and saving in a variety of popular formats, + database support, HTML viewing and printing, and much more. + ''; + license = licenses.wxWindows; + maintainers = with maintainers; [ AndersonTorres ]; + platforms = platforms.darwin ++ platforms.linux; + badPlatforms = [ "x86_64-darwin" ]; + }; + + passthru = { + inherit compat24 compat26 unicode; + gtk = gtk2; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/wxwidgets/3.0/default.nix b/nixpkgs/pkgs/development/libraries/wxwidgets/3.0/default.nix new file mode 100644 index 000000000000..0469ccbd0dfb --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/wxwidgets/3.0/default.nix @@ -0,0 +1,138 @@ +{ lib +, stdenv +, fetchFromGitHub +, gst_all_1 +, gtk2 +, gtk3 +, libGL +, libGLU +, libSM +, libXinerama +, libXxf86vm +, pkg-config +, xorgproto +, withMesa ? lib.elem stdenv.hostPlatform.system lib.platforms.mesaPlatforms +, compat24 ? false +, compat26 ? true +, unicode ? true +, withGtk2 ? true +, withWebKit ? false, webkitgtk +, darwin +}: + +assert withGtk2 -> (!withWebKit); + +let + inherit (darwin.stubs) setfile; + inherit (darwin.apple_sdk.frameworks) AGL Carbon Cocoa Kernel QTKit; + inherit (gst_all_1) gstreamer gst-plugins-base; + gtk = if withGtk2 then gtk2 else gtk3; +in +stdenv.mkDerivation rec { + pname = "wxwidgets"; + version = "3.0.5"; + + src = fetchFromGitHub { + owner = "wxWidgets"; + repo = "wxWidgets"; + rev = "v${version}"; + hash = "sha256-p69nNCg552j+nldGY0oL65uFRVu4xXCkoE10F5MwY9A="; + }; + + nativeBuildInputs = [ + pkg-config + ]; + + buildInputs = [ + gstreamer + gst-plugins-base + gtk + libSM + libXinerama + libXxf86vm + xorgproto + ] + ++ lib.optional withMesa libGLU + ++ lib.optional withWebKit webkitgtk + ++ lib.optionals stdenv.isDarwin [ + Carbon + Cocoa + Kernel + QTKit + setfile + ]; + + propagatedBuildInputs = lib.optional stdenv.isDarwin AGL; + + patches = [ + # https://github.com/wxWidgets/wxWidgets/issues/17942 + ../0001-fix-assertion-using-hide-in-destroy.patch + ]; + + configureFlags = [ + "--disable-precomp-headers" + "--enable-mediactrl" + (if compat24 then "--enable-compat24" else "--disable-compat24") + (if compat26 then "--enable-compat26" else "--disable-compat26") + ] + ++ lib.optional unicode "--enable-unicode" + ++ lib.optional withMesa "--with-opengl" + ++ lib.optionals stdenv.isDarwin [ # allow building on 64-bit + "--enable-universal-binaries" + "--with-cocoa" + "--with-macosx-version-min=10.7" + ] + ++ lib.optionals withWebKit [ + "--enable-webview" + "--enable-webview-webkit" + ]; + + SEARCH_LIB = "${libGLU.out}/lib ${libGL.out}/lib "; + + preConfigure = '' + substituteInPlace configure --replace \ + 'SEARCH_INCLUDE=' 'DUMMY_SEARCH_INCLUDE=' + substituteInPlace configure --replace \ + 'SEARCH_LIB=' 'DUMMY_SEARCH_LIB=' + substituteInPlace configure --replace \ + /usr /no-such-path + '' + lib.optionalString stdenv.isDarwin '' + substituteInPlace configure --replace \ + 'ac_cv_prog_SETFILE="/Developer/Tools/SetFile"' \ + 'ac_cv_prog_SETFILE="${setfile}/bin/SetFile"' + substituteInPlace configure --replace \ + "-framework System" "-lSystem" + ''; + + postInstall = '' + pushd $out/include + ln -s wx-*/* . + popd + ''; + + enableParallelBuilding = true; + + meta = with lib; { + homepage = "https://www.wxwidgets.org/"; + description = "A Cross-Platform C++ GUI Library"; + longDescription = '' + wxWidgets gives you a single, easy-to-use API for writing GUI applications + on multiple platforms that still utilize the native platform's controls + and utilities. Link with the appropriate library for your platform and + compiler, and your application will adopt the look and feel appropriate to + that platform. On top of great GUI functionality, wxWidgets gives you: + online help, network programming, streams, clipboard and drag and drop, + multithreading, image loading and saving in a variety of popular formats, + database support, HTML viewing and printing, and much more. + ''; + license = licenses.wxWindows; + maintainers = with maintainers; [ AndersonTorres ]; + platforms = platforms.linux ++ platforms.darwin; + badPlatforms = [ "x86_64-darwin" ]; + }; + + passthru = { + inherit gtk; + inherit compat24 compat26 unicode; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/wxwidgets/3.0/mac.nix b/nixpkgs/pkgs/development/libraries/wxwidgets/3.0/mac.nix new file mode 100644 index 000000000000..e1f732929cec --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/wxwidgets/3.0/mac.nix @@ -0,0 +1,99 @@ +{ lib +, stdenv +, fetchFromGitHub +, expat +, libiconv +, libjpeg +, libpng +, libtiff +, zlib +, darwin +}: + +let + inherit (darwin.apple_sdk.frameworks) AGL Cocoa Kernel WebKit; + inherit (darwin.stubs) derez rez setfile; +in +stdenv.mkDerivation rec { + pname = "wxmac"; + version = "3.0.5.1"; + + src = fetchFromGitHub { + owner = "wxWidgets"; + repo = "wxWidgets"; + rev = "v${version}"; + hash = "sha256-I91douzXDAfDgm4Pplf17iepv4vIRhXZDRFl9keJJq0="; + }; + + buildInputs = [ + expat + libiconv + libjpeg + libpng + libtiff + zlib + AGL + Cocoa + Kernel + WebKit + derez + rez + setfile + ]; + + postPatch = '' + substituteInPlace configure --replace "-framework System" "-lSystem" + ''; + + configureFlags = [ + "--disable-mediactrl" + "--disable-precomp-headers" + "--enable-clipboard" + "--enable-controls" + "--enable-dataviewctrl" + "--enable-display" + "--enable-dnd" + "--enable-graphics_ctx" + "--enable-std_string" + "--enable-svg" + "--enable-unicode" + "--enable-webkit" + "--with-expat" + "--with-libjpeg" + "--with-libpng" + "--with-libtiff" + "--with-macosx-version-min=10.7" + "--with-opengl" + "--with-osx_cocoa" + "--with-zlib" + "--without-liblzma" + "wx_cv_std_libfullpath=/var/empty" + ]; + + doCheck = true; + checkPhase = '' + ./wx-config --libs + ''; + + NIX_CFLAGS_COMPILE = "-Wno-undef"; + + enableParallelBuilding = true; + + meta = with lib; { + homepage = "https://www.wxwidgets.org/"; + description = "A Cross-Platform C++ GUI Library - MacOS-only build"; + longDescription = '' + wxWidgets gives you a single, easy-to-use API for writing GUI applications + on multiple platforms that still utilize the native platform's controls + and utilities. Link with the appropriate library for your platform and + compiler, and your application will adopt the look and feel appropriate to + that platform. On top of great GUI functionality, wxWidgets gives you: + online help, network programming, streams, clipboard and drag and drop, + multithreading, image loading and saving in a variety of popular formats, + database support, HTML viewing and printing, and much more. + ''; + license = licenses.wxWindows; + maintainers = with maintainers; [ lnl7 ]; + platforms = platforms.darwin; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/wxwidgets/3.1/default.nix b/nixpkgs/pkgs/development/libraries/wxwidgets/3.1/default.nix new file mode 100644 index 000000000000..cab0197c9390 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/wxwidgets/3.1/default.nix @@ -0,0 +1,138 @@ +{ lib, stdenv +, fetchFromGitHub +, fetchurl +, pkg-config +, libXinerama +, libSM +, libXxf86vm +, libXtst +, gtk2 +, GConf ? null +, gtk3 +, xorgproto +, gst_all_1 +, setfile +, libGLSupported ? lib.elem stdenv.hostPlatform.system lib.platforms.mesaPlatforms +, withMesa ? libGLSupported +, libGLU ? null +, libGL ? null +, compat28 ? false +, compat30 ? true +, unicode ? true +, withGtk2 ? true +, withWebKit ? false +, webkitgtk ? null +, AGL ? null +, Carbon ? null +, Cocoa ? null +, Kernel ? null +, QTKit ? null +}: + +with lib; + +assert withMesa -> libGLU != null && libGL != null; +assert withWebKit -> webkitgtk != null; + +assert assertMsg (withGtk2 -> withWebKit == false) "wxGTK31: You cannot enable withWebKit when using withGtk2."; + +stdenv.mkDerivation rec { + version = "3.1.4"; + pname = "wxwidgets"; + + src = fetchFromGitHub { + owner = "wxWidgets"; + repo = "wxWidgets"; + rev = "v${version}"; + sha256 = "1fwzrk6w5k0vs8kqdq5lpzdbp5c09hx740wg6mi6vgmc1r67dv67"; + fetchSubmodules = true; + }; + + buildInputs = [ + libXinerama + libSM + libXxf86vm + libXtst + xorgproto + gst_all_1.gstreamer + gst_all_1.gst-plugins-base + ] ++ optionals withGtk2 [ gtk2 GConf ] + ++ optional (!withGtk2) gtk3 + ++ optional withMesa libGLU + ++ optional withWebKit webkitgtk + ++ optionals stdenv.isDarwin [ setfile Carbon Cocoa Kernel QTKit ]; + + nativeBuildInputs = [ pkg-config ]; + + propagatedBuildInputs = optional stdenv.isDarwin AGL; + + patches = [ + (fetchurl { + # https://trac.wxwidgets.org/ticket/17942 + url = "https://trac.wxwidgets.org/raw-attachment/ticket/17942/" + + "fix_assertion_using_hide_in_destroy.diff"; + sha256 = "009y3dav79wiig789vkkc07g1qdqprg1544lih79199kb1h64lvy"; + }) + ]; + + configureFlags = + [ + "--disable-precomp-headers" + "--enable-mediactrl" + (if compat28 then "--enable-compat28" else "--disable-compat28") + (if compat30 then "--enable-compat30" else "--disable-compat30") + ] + ++ optional unicode "--enable-unicode" + ++ optional withMesa "--with-opengl" + ++ optionals stdenv.isDarwin + # allow building on 64-bit + [ "--with-cocoa" "--enable-universal-binaries" "--with-macosx-version-min=10.7" ] + ++ optionals withWebKit + [ "--enable-webview" "--enable-webviewwebkit" ]; + + SEARCH_LIB = "${libGLU.out}/lib ${libGL.out}/lib "; + + preConfigure = " + substituteInPlace configure --replace 'SEARCH_INCLUDE=' 'DUMMY_SEARCH_INCLUDE=' + substituteInPlace configure --replace 'SEARCH_LIB=' 'DUMMY_SEARCH_LIB=' + substituteInPlace configure --replace /usr /no-such-path + " + optionalString stdenv.isDarwin '' + substituteInPlace configure --replace \ + 'ac_cv_prog_SETFILE="/Developer/Tools/SetFile"' \ + 'ac_cv_prog_SETFILE="${setfile}/bin/SetFile"' + substituteInPlace configure --replace \ + "-framework System" \ + -lSystem + ''; + + postInstall = " + (cd $out/include && ln -s wx-*/* .) + "; + + passthru = { + inherit compat28 compat30 unicode; + gtk = if withGtk2 then gtk2 else gtk3; + }; + + enableParallelBuilding = true; + + meta = { + platforms = with platforms; darwin ++ linux; + license = licenses.wxWindows; + homepage = "https://www.wxwidgets.org/"; + description = "A C++ library that lets developers create applications for Windows, macOS, Linux and other platforms with a single code base"; + longDescription = '' + WxWidgets gives you a single, easy-to-use API for + writing GUI applications on multiple platforms that still utilize the + native platform's controls and utilities. Link with the appropriate library + for your platform and compiler, and your application will adopt the look + and feel appropriate to that platform. On top of great GUI functionality, + wxWidgets gives you: online help, network programming, streams, clipboard + and drag and drop, multithreading, image loading and saving in a variety of + popular formats, database support, HTML viewing and printing, and much + more. + ''; + badPlatforms = [ "x86_64-darwin" ]; + maintainers = with maintainers; [ tfmoraes ]; + }; +} |