summary refs log tree commit diff
path: root/pkgs/development/libraries/zlib
diff options
context:
space:
mode:
authorMatthew Bauer <mjbauer95@gmail.com>2018-12-04 21:14:41 -0600
committerMatthew Bauer <mjbauer95@gmail.com>2018-12-04 21:14:41 -0600
commite999def1597de9d03a35cfa6b62277adb0e9a7ad (patch)
treef643dcd73cde0c3a57d598c6c03633d99084e06e /pkgs/development/libraries/zlib
parent5e06294276754ef063c618a1ecb12b629cde8ac3 (diff)
downloadnixpkgs-e999def1597de9d03a35cfa6b62277adb0e9a7ad.tar
nixpkgs-e999def1597de9d03a35cfa6b62277adb0e9a7ad.tar.gz
nixpkgs-e999def1597de9d03a35cfa6b62277adb0e9a7ad.tar.bz2
nixpkgs-e999def1597de9d03a35cfa6b62277adb0e9a7ad.tar.lz
nixpkgs-e999def1597de9d03a35cfa6b62277adb0e9a7ad.tar.xz
nixpkgs-e999def1597de9d03a35cfa6b62277adb0e9a7ad.tar.zst
nixpkgs-e999def1597de9d03a35cfa6b62277adb0e9a7ad.zip
zlib: clean up static/shared distincion
This is kind of a mess, but basically:

- static=true, shared=true means to build statically but move it to
  the static output
- static=true, shared=false means to build statically and leave it in
  the main output
- static=false, shared=true means to not build static at all

Confusingly, the old default was static=true, shared=true even though
static=false? Still can’t figure out what was meant by that.
Diffstat (limited to 'pkgs/development/libraries/zlib')
-rw-r--r--pkgs/development/libraries/zlib/default.nix13
1 files changed, 8 insertions, 5 deletions
diff --git a/pkgs/development/libraries/zlib/default.nix b/pkgs/development/libraries/zlib/default.nix
index fe1c275aeda..3a5638b2281 100644
--- a/pkgs/development/libraries/zlib/default.nix
+++ b/pkgs/development/libraries/zlib/default.nix
@@ -1,6 +1,7 @@
 { stdenv
 , fetchurl
-, static ? false
+, static ? true
+, shared ? true
 }:
 
 stdenv.mkDerivation (rec {
@@ -24,13 +25,15 @@ stdenv.mkDerivation (rec {
       --replace 'ARFLAGS="-o"' 'ARFLAGS="-r"'
   '';
 
-  outputs = [ "out" "dev" "static" ];
+  outputs = [ "out" "dev" ]
+    ++ stdenv.lib.optional (shared && static) "static";
   setOutputFlags = false;
   outputDoc = "dev"; # single tiny man3 page
 
-  configureFlags = stdenv.lib.optional (!static) "--shared";
+  configureFlags = stdenv.lib.optional shared "--shared"
+                   ++ stdenv.lib.optional (static && !shared) "--static";
 
-  postInstall = ''
+  postInstall = stdenv.lib.optionalString (shared && static) ''
     moveToOutput lib/libz.a "$static"
   ''
     # jww (2015-01-06): Sometimes this library install as a .so, even on
@@ -64,7 +67,7 @@ stdenv.mkDerivation (rec {
     "PREFIX=${stdenv.cc.targetPrefix}"
   ] ++ stdenv.lib.optionals (stdenv.hostPlatform.libc == "msvcrt") [
     "-f" "win32/Makefile.gcc"
-  ] ++ stdenv.lib.optionals (!static) [
+  ] ++ stdenv.lib.optionals shared [
     "SHARED_MODE=1"
   ];