diff options
Diffstat (limited to 'pkgs/development/libraries/libiconv')
-rw-r--r-- | pkgs/development/libraries/libiconv/default.nix | 2 | ||||
-rw-r--r-- | pkgs/development/libraries/libiconv/setup-hook.sh | 18 |
2 files changed, 20 insertions, 0 deletions
diff --git a/pkgs/development/libraries/libiconv/default.nix b/pkgs/development/libraries/libiconv/default.nix index b55fc18cb69b..a4e6fed88e1c 100644 --- a/pkgs/development/libraries/libiconv/default.nix +++ b/pkgs/development/libraries/libiconv/default.nix @@ -14,6 +14,8 @@ stdenv.mkDerivation rec { sha256 = "0y1ij745r4p48mxq84rax40p10ln7fc7m243p8k8sia519i3dxfc"; }; + setupHook = ./setup-hook.sh; + postPatch = lib.optionalString ((hostPlatform != buildPlatform && hostPlatform.libc == "msvcrt") || stdenv.cc.nativeLibc) '' diff --git a/pkgs/development/libraries/libiconv/setup-hook.sh b/pkgs/development/libraries/libiconv/setup-hook.sh new file mode 100644 index 000000000000..78222dddbf1d --- /dev/null +++ b/pkgs/development/libraries/libiconv/setup-hook.sh @@ -0,0 +1,18 @@ +# libiconv must be listed in load flags on non-Glibc +# it doesn't hurt to have it in Glibc either though +iconvLdflags() { + # The `depHostOffset` describes how the host platform of the dependencies + # are slid relative to the depending package. It is brought into scope of + # the environment hook defined as the role of the dependency being applied. + case $depHostOffset in + -1) local role='BUILD_' ;; + 0) local role='' ;; + 1) local role='TARGET_' ;; + *) echo "cc-wrapper: Error: Cannot be used with $depHostOffset-offset deps" >2; + return 1 ;; + esac + + export NIX_${role}LDFLAGS+=" -liconv" +} + +addEnvHooks "$hostOffset" iconvLdflags |