45 lines
1.2 KiB
Nix
45 lines
1.2 KiB
Nix
{ ... }:
|
|
res: pkgs: super:
|
|
|
|
with pkgs; {
|
|
# GNU libc provides libiconv so systems with glibc don't need to
|
|
# build libiconv separately. Additionally, Apple forked/repackaged
|
|
# libiconv so we use that instead of the vanilla version on that OS,
|
|
# and BSDs include libiconv in libc.
|
|
#
|
|
# We also provide `libiconvReal`, which will always be a standalone libiconv,
|
|
# just in case you want it regardless of platform.
|
|
libiconv = if lib.elem stdenv.hostPlatform.libc [
|
|
"glibc"
|
|
"musl"
|
|
"nblibc"
|
|
"wasilibc"
|
|
] then
|
|
libcIconv (if stdenv.hostPlatform != stdenv.buildPlatform then
|
|
libcCross
|
|
else
|
|
stdenv.cc.libc)
|
|
# else if stdenv.hostPlatform.isDarwin
|
|
# then darwin.libiconv
|
|
else
|
|
libiconvReal;
|
|
|
|
libcIconv = libc:
|
|
let
|
|
inherit (libc) pname version;
|
|
libcDev = lib.getDev libc;
|
|
in runCommand "${pname}-iconv-${version}" { strictDeps = true; } ''
|
|
mkdir -p $out/include
|
|
ln -sv ${libcDev}/include/iconv.h $out/include
|
|
'';
|
|
|
|
libiconvReal = callPackage ./. { };
|
|
|
|
iconv = if lib.elem stdenv.hostPlatform.libc [ "glibc" "musl" ] then
|
|
lib.getBin stdenv.cc.libc
|
|
else if stdenv.hostPlatform.isDarwin then
|
|
lib.getBin darwin.libiconv
|
|
else
|
|
lib.getBin libiconvReal;
|
|
}
|