about summary refs log tree commit diff
path: root/pkgs/misc
diff options
context:
space:
mode:
authorHerwig Hochleitner <herwig@bendlas.net>2016-05-29 10:43:47 +0200
committerHerwig Hochleitner <herwig@bendlas.net>2016-05-29 10:45:16 +0200
commit1c215828d5c811a523fbc599e7c38d96b586d9e8 (patch)
treec206f6e312a09bf242c1f1ae67df7abdbb50f69a /pkgs/misc
parent98d720d72c51099044597c30ad096a5a8390d27e (diff)
downloadnixlib-1c215828d5c811a523fbc599e7c38d96b586d9e8.tar
nixlib-1c215828d5c811a523fbc599e7c38d96b586d9e8.tar.gz
nixlib-1c215828d5c811a523fbc599e7c38d96b586d9e8.tar.bz2
nixlib-1c215828d5c811a523fbc599e7c38d96b586d9e8.tar.lz
nixlib-1c215828d5c811a523fbc599e7c38d96b586d9e8.tar.xz
nixlib-1c215828d5c811a523fbc599e7c38d96b586d9e8.tar.zst
nixlib-1c215828d5c811a523fbc599e7c38d96b586d9e8.zip
wine: make features configurable
Diffstat (limited to 'pkgs/misc')
-rw-r--r--pkgs/misc/emulators/wine/base.nix51
-rw-r--r--pkgs/misc/emulators/wine/default.nix40
-rw-r--r--pkgs/misc/emulators/wine/packages.nix10
3 files changed, 79 insertions, 22 deletions
diff --git a/pkgs/misc/emulators/wine/base.nix b/pkgs/misc/emulators/wine/base.nix
index 4d4e897ba9d2..f5b64f1517f6 100644
--- a/pkgs/misc/emulators/wine/base.nix
+++ b/pkgs/misc/emulators/wine/base.nix
@@ -1,7 +1,7 @@
 { stdenv, lib, pkgArches,
   name, version, src, monos, geckos, platforms,
   pkgconfig, fontforge, makeWrapper, flex, bison,
-  pulseaudioSupport,
+  supportFlags,
   buildScript ? null, configureFlags ? ""
 }:
 
@@ -19,20 +19,41 @@ stdenv.mkDerivation ((lib.optionalAttrs (! isNull buildScript) {
     pkgconfig fontforge makeWrapper flex bison
   ];
 
-  buildInputs = toBuildInputs pkgArches (pkgs: (with pkgs; [
-    freetype fontconfig mesa mesa_noglu.osmesa libdrm libpng libjpeg openssl gnutls cups ncurses
-    alsaLib libxml2 libxslt lcms2 gettext dbus mpg123 openal
-
-    libva libpcap saneBackends libv4l libgphoto2 gtk3 gsm openldap
-    opencl-headers opencl-icd gnome.glib cairo libtiff unixODBC
-    
-    ## for libnetapi
-    samba3_light
-  ])
-  ++ lib.optional pulseaudioSupport pkgs.libpulseaudio
+  buildInputs = toBuildInputs pkgArches (with supportFlags; (pkgs:
+  [ pkgs.freetype ]
+  ++ lib.optional pngSupport             pkgs.libpng
+  ++ lib.optional jpegSupport            pkgs.libjpeg
+  ++ lib.optional cupsSupport            pkgs.cups
+  ++ lib.optional colorManagementSupport pkgs.lcms2
+  ++ lib.optional gettextSupport         pkgs.gettext
+  ++ lib.optional dbusSupport            pkgs.dbus
+  ++ lib.optional mpg123Support          pkgs.mpg123
+  ++ lib.optional openalSupport          pkgs.openal
+  ++ lib.optional cairoSupport           pkgs.cairo
+  ++ lib.optional tiffSupport            pkgs.libtiff
+  ++ lib.optional odbcSupport            pkgs.unixODBC
+  ++ lib.optional netapiSupport          pkgs.samba3_light
+  ++ lib.optional cursesSupport          pkgs.ncurses
+  ++ lib.optional vaSupport              pkgs.libva
+  ++ lib.optional pcapSupport            pkgs.libpcap
+  ++ lib.optional v4lSupport             pkgs.libv4l
+  ++ lib.optional saneSupport            pkgs.saneBackends
+  ++ lib.optional gsmSupport             pkgs.gsm
+  ++ lib.optional gphoto2Support         pkgs.libgphoto2
+  ++ lib.optional ldapSupport            pkgs.openldap
+  ++ lib.optional fontconfigSupport      pkgs.fontconfig
+  ++ lib.optional alsaSupport            pkgs.alsaLib
+  ++ lib.optional pulseaudioSupport      pkgs.libpulseaudio
+  ++ lib.optional xineramaSupport        pkgs.xorg.libXinerama
+  ++ lib.optional gstreamerSupport       pkgs.gst_plugins_base
+  ++ lib.optionals gtkSupport    [ pkgs.gtk3 pkgs.gnome.glib ]
+  ++ lib.optionals openclSupport [ pkgs.opencl-headers pkgs.opencl-icd ]
+  ++ lib.optionals xmlSupport    [ pkgs.libxml2 pkgs.libxslt ]
+  ++ lib.optionals tlsSupport    [ pkgs.openssl pkgs.gnutls ]
+  ++ lib.optionals openglSupport [ pkgs.mesa pkgs.mesa_noglu.osmesa pkgs.libdrm ]
   ++ (with pkgs.xorg; [
-    libX11  libXi libXcursor libXinerama libXrandr libXrender libXxf86vm libXcomposite libXext
-  ]));
+    libX11  libXi libXcursor libXrandr libXrender libXxf86vm libXcomposite libXext
+  ])));
 
   # Wine locates a lot of libraries dynamically through dlopen().  Add
   # them to the RPATH so that the user doesn't have to set them in
@@ -40,7 +61,7 @@ stdenv.mkDerivation ((lib.optionalAttrs (! isNull buildScript) {
   NIX_LDFLAGS = map (path: "-rpath " + path) (
       map (x: "${lib.getLib x}/lib") ([ stdenv.cc.cc ] ++ buildInputs)
       # libpulsecommon.so is linked but not found otherwise
-      ++ lib.optionals pulseaudioSupport (map (x: "${lib.getLib x}/lib/pulseaudio")
+      ++ lib.optionals supportFlags.pulseaudioSupport (map (x: "${lib.getLib x}/lib/pulseaudio")
           (toBuildInputs pkgArches (pkgs: [ pkgs.libpulseaudio ])))
     );
 
diff --git a/pkgs/misc/emulators/wine/default.nix b/pkgs/misc/emulators/wine/default.nix
index a402fba69f67..deeff3c73437 100644
--- a/pkgs/misc/emulators/wine/default.nix
+++ b/pkgs/misc/emulators/wine/default.nix
@@ -9,13 +9,49 @@
 { lib, pkgs, system, callPackage,
   wineRelease ? "stable",
   wineBuild ? (if system == "x86_64-linux" then "wineWow" else "wine32"),
+  libtxc_dxtn_Name ? "libtxc_dxtn_s2tc",
+  pngSupport ? false,
+  jpegSupport ? false,
+  tiffSupport ? false,
+  gettextSupport ? false,
+  fontconfigSupport ? false,
+  alsaSupport ? false,
+  gtkSupport ? false,
+  openglSupport ? false,
+  tlsSupport ? false,
+  gstreamerSupport ? false,
+  cupsSupport ? false,
+  colorManagementSupport ? false,
+  dbusSupport ? false,
+  mpg123Support ? false,
+  openalSupport ? false,
+  openclSupport ? false,
+  cairoSupport ? false,
+  odbcSupport ? false,
+  netapiSupport ? false,
+  cursesSupport ? false,
+  vaSupport ? false,
+  pcapSupport ? false,
+  v4lSupport ? false,
+  saneSupport ? false,
+  gsmSupport ? false,
+  gphoto2Support ? false,
+  ldapSupport ? false,
   pulseaudioSupport ? false,
-  libtxc_dxtn_Name ? "libtxc_dxtn_s2tc" }:
+  xineramaSupport ? false,
+  xmlSupport ? false }:
 
 let wine-build = build: release:
       lib.getAttr build (callPackage ./packages.nix {
         wineRelease = release;
-        inherit pulseaudioSupport;
+        supportFlags = {
+          inherit pngSupport jpegSupport cupsSupport colorManagementSupport gettextSupport
+                  dbusSupport mpg123Support openalSupport cairoSupport tiffSupport odbcSupport
+                  netapiSupport cursesSupport vaSupport pcapSupport v4lSupport saneSupport
+                  gsmSupport gphoto2Support ldapSupport fontconfigSupport alsaSupport
+                  pulseaudioSupport xineramaSupport gtkSupport openclSupport xmlSupport tlsSupport
+                  openglSupport gstreamerSupport;
+        };
       });
 
 in if wineRelease == "staging" then
diff --git a/pkgs/misc/emulators/wine/packages.nix b/pkgs/misc/emulators/wine/packages.nix
index 206deb01b8bb..6c06bcb0949b 100644
--- a/pkgs/misc/emulators/wine/packages.nix
+++ b/pkgs/misc/emulators/wine/packages.nix
@@ -1,14 +1,14 @@
 { system, stdenv, stdenv_32bit, lib, pkgs, pkgsi686Linux, callPackage, callPackage_i686,
   overrideCC, wrapCCMulti, gcc49,
-  pulseaudioSupport,
-  wineRelease ? "stable"
+  wineRelease ? "stable",
+  supportFlags
 }:
 
 let src = lib.getAttr wineRelease (callPackage ./sources.nix {});
 in with src; {
   wine32 = callPackage_i686 ./base.nix {
     name = "wine-${version}";
-    inherit src version pulseaudioSupport;
+    inherit src version supportFlags;
     pkgArches = [ pkgsi686Linux ];
     geckos = [ gecko32 ];
     monos =  [ mono ];
@@ -16,7 +16,7 @@ in with src; {
   };
   wine64 = callPackage ./base.nix {
     name = "wine64-${version}";
-    inherit src version pulseaudioSupport;
+    inherit src version supportFlags;
     # FIXME: drop this when GCC is updated to >5.3.
     # Corresponding bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69140
     stdenv = overrideCC stdenv gcc49;
@@ -28,7 +28,7 @@ in with src; {
   };
   wineWow = callPackage ./base.nix {
     name = "wine-wow-${version}";
-    inherit src version pulseaudioSupport;
+    inherit src version supportFlags;
     # FIXME: see above.
     stdenv = overrideCC stdenv_32bit (wrapCCMulti gcc49);
     pkgArches = [ pkgs pkgsi686Linux ];