forked from mirrors/nixpkgs
79 lines
2 KiB
Nix
79 lines
2 KiB
Nix
{ stdenvNoCC, buildPackages, MacOSX-SDK }:
|
|
|
|
stdenvNoCC.mkDerivation {
|
|
pname = "libSystem";
|
|
version = MacOSX-SDK.version;
|
|
|
|
dontBuild = true;
|
|
dontUnpack = true;
|
|
|
|
nativeBuildInputs = [ buildPackages.darwin.rewrite-tbd ];
|
|
|
|
includeDirs = [
|
|
"CommonCrypto" "_types" "architecture" "arpa" "atm" "bank" "bsd" "bsm"
|
|
"corecrypto" "corpses" "default_pager" "device" "dispatch" "hfs" "i386"
|
|
"iokit" "kern" "libkern" "mach" "mach-o" "mach_debug" "machine" "malloc"
|
|
"miscfs" "net" "netinet" "netinet6" "netkey" "nfs" "os" "osfmk" "pexpert"
|
|
"platform" "protocols" "pthread" "rpc" "rpcsvc" "secure" "security"
|
|
"servers" "sys" "uuid" "vfs" "voucher" "xlocale"
|
|
] ++ [
|
|
"arm" "xpc" "arm64"
|
|
];
|
|
|
|
csu = [
|
|
"bundle1.o" "crt0.o" "crt1.10.5.o" "crt1.10.6.o" "crt1.o" "dylib1.10.5.o"
|
|
"dylib1.o" "gcrt1.o" "lazydylib1.o"
|
|
];
|
|
|
|
installPhase = ''
|
|
mkdir -p $out/{include,lib}
|
|
|
|
for dir in $includeDirs; do
|
|
from=${MacOSX-SDK}/usr/include/$dir
|
|
if [ -e "$from" ]; then
|
|
cp -dr $from $out/include
|
|
else
|
|
echo "Header directory '$from' doesn't exist: skipping"
|
|
fi
|
|
done
|
|
|
|
cp -d \
|
|
${MacOSX-SDK}/usr/include/*.h \
|
|
$out/include
|
|
|
|
rm $out/include/tk*.h $out/include/tcl*.h
|
|
|
|
cp -dr \
|
|
${MacOSX-SDK}/usr/lib/libSystem.* \
|
|
${MacOSX-SDK}/usr/lib/system \
|
|
$out/lib
|
|
|
|
# Extra libraries
|
|
for name in c dbm dl info m mx poll proc pthread rpcsvc util gcc_s.1 resolv; do
|
|
cp -d \
|
|
${MacOSX-SDK}/usr/lib/lib$name.tbd \
|
|
${MacOSX-SDK}/usr/lib/lib$name.*.tbd \
|
|
$out/lib
|
|
done
|
|
|
|
for f in $csu; do
|
|
from=${MacOSX-SDK}/usr/lib/$f
|
|
if [ -e "$from" ]; then
|
|
cp -d $from $out/lib
|
|
else
|
|
echo "Csu file '$from' doesn't exist: skipping"
|
|
fi
|
|
done
|
|
|
|
chmod u+w -R $out/lib
|
|
find $out -name '*.tbd' -type f | while read tbd; do
|
|
rewrite-tbd \
|
|
-c /usr/lib/libsystem.dylib:$out/lib/libsystem.dylib \
|
|
-p /usr/lib/system/:$out/lib/system/ \
|
|
-r ${builtins.storeDir} \
|
|
"$tbd"
|
|
done
|
|
'';
|
|
}
|
|
|