diff options
Diffstat (limited to 'pkgs/development/libraries/gettext')
-rw-r--r-- | pkgs/development/libraries/gettext/default.nix | 1 | ||||
-rw-r--r-- | pkgs/development/libraries/gettext/gettext-setup-hook.sh | 21 |
2 files changed, 22 insertions, 0 deletions
diff --git a/pkgs/development/libraries/gettext/default.nix b/pkgs/development/libraries/gettext/default.nix index 9c3024ce25fb..6dec7747c7e8 100644 --- a/pkgs/development/libraries/gettext/default.nix +++ b/pkgs/development/libraries/gettext/default.nix @@ -49,6 +49,7 @@ stdenv.mkDerivation rec { buildInputs = stdenv.lib.optional (!stdenv.isLinux && !hostPlatform.isCygwin) libiconv; setupHook = ./gettext-setup-hook.sh; + gettextNeedsLdflags = hostPlatform.libc != "glibc" && !hostPlatform.isMusl; enableParallelBuilding = true; diff --git a/pkgs/development/libraries/gettext/gettext-setup-hook.sh b/pkgs/development/libraries/gettext/gettext-setup-hook.sh index 5932ef6a44f9..074d313e48aa 100644 --- a/pkgs/development/libraries/gettext/gettext-setup-hook.sh +++ b/pkgs/development/libraries/gettext/gettext-setup-hook.sh @@ -5,3 +5,24 @@ gettextDataDirsHook() { } addEnvHooks "$hostOffset" gettextDataDirsHook + +# libintl must be listed in load flags on non-Glibc +# it doesn't hurt to have it in Glibc either though +gettextLdflags() { + # 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+=" -lintl" +} + +if [ ! -z "@gettextNeedsLdflags@" ]; then + addEnvHooks "$hostOffset" gettextLdflags +fi |