2022-07-07 00:40:34 +01:00
|
|
|
{ stdenvNoCC, fetchurl, newScope, lib, pkgs
|
2022-06-07 21:01:28 +01:00
|
|
|
, stdenv, overrideCC
|
2020-11-19 08:14:51 +00:00
|
|
|
, xar, cpio, python3, pbzx }:
|
|
|
|
|
|
|
|
let
|
|
|
|
MacOSX-SDK = stdenvNoCC.mkDerivation rec {
|
|
|
|
pname = "MacOSX-SDK";
|
|
|
|
version = "11.0.0";
|
|
|
|
|
2021-05-31 05:48:04 +01:00
|
|
|
# https://swscan.apple.com/content/catalogs/others/index-11-10.15-10.14-10.13-10.12-10.11-10.10-10.9-mountainlion-lion-snowleopard-leopard.merged-1.sucatalog
|
2020-11-19 08:14:51 +00:00
|
|
|
src = fetchurl {
|
2021-05-31 05:48:04 +01:00
|
|
|
url = "http://swcdn.apple.com/content/downloads/46/21/001-89745-A_56FM390IW5/v1um2qppgfdnam2e9cdqcqu2r6k8aa3lis/CLTools_macOSNMOS_SDK.pkg";
|
|
|
|
sha256 = "0n425smj4q1vxbza8fzwnk323fyzbbq866q32w288c44hl5yhwsf";
|
2020-11-19 08:14:51 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
dontBuild = true;
|
|
|
|
darwinDontCodeSign = true;
|
|
|
|
|
|
|
|
nativeBuildInputs = [ cpio pbzx ];
|
|
|
|
|
|
|
|
outputs = [ "out" ];
|
|
|
|
|
|
|
|
unpackPhase = ''
|
|
|
|
pbzx $src | cpio -idm
|
|
|
|
'';
|
|
|
|
|
|
|
|
installPhase = ''
|
2021-05-31 05:48:04 +01:00
|
|
|
cd Library/Developer/CommandLineTools/SDKs/MacOSX11.1.sdk
|
2020-11-19 08:14:51 +00:00
|
|
|
|
|
|
|
mkdir $out
|
|
|
|
cp -r System usr $out/
|
|
|
|
'';
|
|
|
|
|
|
|
|
passthru = {
|
|
|
|
inherit version;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
callPackage = newScope (packages // pkgs.darwin // { inherit MacOSX-SDK; });
|
|
|
|
|
|
|
|
packages = {
|
|
|
|
inherit (callPackage ./apple_sdk.nix {}) frameworks libs;
|
|
|
|
|
|
|
|
# TODO: this is nice to be private. is it worth the callPackage above?
|
|
|
|
# Probably, I don't think that callPackage costs much at all.
|
|
|
|
inherit MacOSX-SDK;
|
|
|
|
|
|
|
|
Libsystem = callPackage ./libSystem.nix {};
|
|
|
|
LibsystemCross = pkgs.darwin.Libsystem;
|
|
|
|
libcharset = callPackage ./libcharset.nix {};
|
|
|
|
libunwind = callPackage ./libunwind.nix {};
|
|
|
|
libnetwork = callPackage ./libnetwork.nix {};
|
2022-07-19 14:20:53 +01:00
|
|
|
# Avoid introducing a new objc4 if stdenv already has one, to prevent
|
|
|
|
# conflicting LLVM modules.
|
|
|
|
objc4 = if stdenv ? objc4 then stdenv.objc4 else callPackage ./libobjc.nix {};
|
2020-11-19 08:14:51 +00:00
|
|
|
|
|
|
|
# questionable aliases
|
|
|
|
configd = pkgs.darwin.apple_sdk.frameworks.SystemConfiguration;
|
|
|
|
IOKit = pkgs.darwin.apple_sdk.frameworks.IOKit;
|
2022-06-07 21:01:28 +01:00
|
|
|
|
2022-07-07 00:40:34 +01:00
|
|
|
callPackage = newScope (lib.optionalAttrs stdenv.isDarwin rec {
|
|
|
|
inherit (pkgs.darwin.apple_sdk_11_0) stdenv;
|
|
|
|
darwin = pkgs.darwin.overrideScope (_: prev: {
|
|
|
|
inherit (prev.darwin.apple_sdk_11_0) Libsystem LibsystemCross libcharset libunwind objc4 configd IOKit Security;
|
|
|
|
apple_sdk = prev.darwin.apple_sdk_11_0;
|
|
|
|
CF = prev.darwin.apple_sdk_11_0.CoreFoundation;
|
|
|
|
});
|
|
|
|
xcodebuild = pkgs.xcbuild.override {
|
|
|
|
inherit (pkgs.darwin.apple_sdk_11_0.frameworks) CoreServices CoreGraphics ImageIO;
|
|
|
|
inherit stdenv;
|
|
|
|
};
|
|
|
|
xcbuild = xcodebuild;
|
|
|
|
});
|
|
|
|
|
2022-06-07 21:01:28 +01:00
|
|
|
stdenv =
|
|
|
|
let
|
|
|
|
clang = stdenv.cc.override {
|
|
|
|
bintools = stdenv.cc.bintools.override { libc = packages.Libsystem; };
|
|
|
|
libc = packages.Libsystem;
|
|
|
|
};
|
|
|
|
in
|
|
|
|
if stdenv.isAarch64 then stdenv
|
|
|
|
else
|
|
|
|
(overrideCC stdenv clang).override {
|
|
|
|
targetPlatform = stdenv.targetPlatform // {
|
|
|
|
darwinMinVersion = "10.12";
|
|
|
|
darwinSdkVersion = "11.0";
|
|
|
|
};
|
|
|
|
};
|
2020-11-19 08:14:51 +00:00
|
|
|
};
|
|
|
|
in packages
|