112 lines
2.6 KiB
Nix
112 lines
2.6 KiB
Nix
# SPDX-FileCopyrightText: Emery Hemingway
|
|
#
|
|
# SPDX-License-Identifier: LicenseRef-Hippocratic-1.1
|
|
|
|
{ stdenv, fetchgit, fetchurl, genodeHeaders, bison, flex, glibc, writeText }:
|
|
|
|
let
|
|
archInfo = with stdenv.hostPlatform;
|
|
if isAarch32 then {
|
|
inherit isArm isAarch32;
|
|
} else if isAarch64 then {
|
|
inherit isArm isAarch64;
|
|
} else if isx86_32 then {
|
|
inherit isx86 isx86_32;
|
|
} else if isx86_64 then {
|
|
inherit isx86 isx86_64;
|
|
} else
|
|
{ };
|
|
in stdenv.mkDerivation (archInfo // {
|
|
pname = "libgenode";
|
|
version = "19.11";
|
|
|
|
inherit genodeHeaders;
|
|
|
|
depsBuildBuild = [
|
|
bison
|
|
flex
|
|
glibc # provides rpcgen
|
|
];
|
|
|
|
src = fetchurl {
|
|
url =
|
|
"http://ftp.freebsd.org/pub/FreeBSD/releases/amd64/12.0-RELEASE/src.txz";
|
|
sha256 = "0da393ac2174168a71c1c527d1453e07372295187d05c288250800cb152a889b";
|
|
};
|
|
|
|
unpackPhase = "tar xf $src $tarFlags";
|
|
|
|
tarFlags = [
|
|
"--strip-components=2"
|
|
"usr/src/contrib/gdtoa"
|
|
"usr/src/contrib/libc-vis"
|
|
"usr/src/contrib/tzcode/stdtime"
|
|
"usr/src/include"
|
|
"usr/src/lib/libc"
|
|
"usr/src/lib/msun"
|
|
"usr/src/sys/amd64"
|
|
"usr/src/sys/arm"
|
|
"usr/src/sys/arm64"
|
|
"usr/src/sys/bsm"
|
|
"usr/src/sys/crypto/chacha20"
|
|
"usr/src/sys/i386"
|
|
"usr/src/sys/libkern"
|
|
"usr/src/sys/net"
|
|
"usr/src/sys/netinet"
|
|
"usr/src/sys/netinet6"
|
|
"usr/src/sys/riscv"
|
|
"usr/src/sys/rpc"
|
|
"usr/src/sys/sys"
|
|
"usr/src/sys/vm"
|
|
"usr/src/sys/x86"
|
|
];
|
|
|
|
patches = [
|
|
./cdefs_no_hidden.patch
|
|
./_CurrentRuneLocale.patch
|
|
./gdtoa.patch
|
|
./log2.patch
|
|
./MB_CUR_MAX.patch
|
|
./mktime.patch
|
|
./printfcommon.patch
|
|
./rcmd.patch
|
|
./res_init_c.patch
|
|
./runetype.patch
|
|
./semaphore.patch
|
|
./thread_local.patch
|
|
./types.patch
|
|
./vfwprintf_c_warn.patch
|
|
./xlocale.patch
|
|
./xlocale_private.patch
|
|
./xprintf_float.patch
|
|
];
|
|
|
|
patchFlags = "-p0 --strip 3";
|
|
|
|
genodeRelLd = "${genodeHeaders}/ld/genode_rel.ld";
|
|
|
|
genodePrgPcIn = ./genode-prg.pc.in;
|
|
libcSymbols = ./libc.symbols;
|
|
|
|
ldSymbols = ./ld.symbols;
|
|
linkerLd = ./linker.ld;
|
|
|
|
vfsSymbols = ./vfs.symbols;
|
|
|
|
builder = writeText "builder.sh" ''
|
|
source $stdenv/setup
|
|
export includedir=$out/include
|
|
export pkgconfigdir=$out/lib/pkgconfig
|
|
export lddir=${genodeHeaders}/ld
|
|
mkdir -p $pkgconfigdir $out/lib
|
|
|
|
source ${./libc-builder.sh}
|
|
|
|
substituteAll ${./libc.pc.in} $pkgconfigdir/libc.pc
|
|
substituteAll ${./vfs.pc.in} $pkgconfigdir/vfs.pc
|
|
substituteAll ${./genode-prg.pc.in} $pkgconfigdir/genode-prg.pc
|
|
|
|
ln -s $out/lib/libc.lib.so $out/lib/libc.so
|
|
'';
|
|
})
|