diff options
Diffstat (limited to 'nixpkgs/pkgs/os-specific/linux/klibc/default.nix')
-rw-r--r-- | nixpkgs/pkgs/os-specific/linux/klibc/default.nix | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/os-specific/linux/klibc/default.nix b/nixpkgs/pkgs/os-specific/linux/klibc/default.nix new file mode 100644 index 000000000000..8cae61d56a92 --- /dev/null +++ b/nixpkgs/pkgs/os-specific/linux/klibc/default.nix @@ -0,0 +1,48 @@ +{ stdenv, fetchurl, linuxHeaders, perl }: + +let + commonMakeFlags = [ + "prefix=$(out)" + "SHLIBDIR=$(out)/lib" + ]; +in + +stdenv.mkDerivation rec { + name = "klibc-${version}"; + version = "2.0.4"; + + src = fetchurl { + url = "mirror://kernel/linux/libs/klibc/2.0/klibc-${version}.tar.xz"; + sha256 = "7f9a0850586def7cf4faeeb75e5d0f66e613674c524f6e77b0f4d93a26c801cb"; + }; + + patches = [ ./no-reinstall-kernel-headers.patch ]; + + nativeBuildInputs = [ perl ]; + + hardeningDisable = [ "format" "stackprotector" ]; + + makeFlags = commonMakeFlags ++ [ + "KLIBCARCH=${stdenv.hostPlatform.platform.kernelArch}" + "KLIBCKERNELSRC=${linuxHeaders}" + ] # TODO(@Ericson2314): We now can get the ABI from + # `stdenv.hostPlatform.parsed.abi`, is this still a good idea? + ++ stdenv.lib.optional (stdenv.hostPlatform.platform.kernelArch == "arm") "CONFIG_AEABI=y" + ++ stdenv.lib.optional (stdenv.hostPlatform != stdenv.buildPlatform) "CROSS_COMPILE=${stdenv.cc.targetPrefix}"; + + # Install static binaries as well. + postInstall = '' + dir=$out/lib/klibc/bin.static + mkdir $dir + cp $(find $(find . -name static) -type f ! -name "*.g" -a ! -name ".*") $dir/ + cp usr/dash/sh $dir/ + + for file in ${linuxHeaders}/include/*; do + ln -sv $file $out/lib/klibc/include + done + ''; + + meta = { + platforms = [ "x86_64-linux" ]; + }; +} |