nixpkgs/pkgs/os-specific/darwin/apple-sdk-11.0/default.nix
Randy Eckenrode 39a5f4a6ee
darwin.apple_sdk.sdkRoot: init at 10.12 and 11.0
Based on the derivation from xcbuild.sdk. apple_sdk.sdkRoot provides
version plists and a hook that passes them automatically to the compiler
as `-isysroot`. This is needed to correctly set the SDK version in
compiled binaries. Otherwise, clang will infer the SDK version to be the
same as the deployment target, which is usually not what you want.
2024-03-29 08:47:41 -04:00

161 lines
5.1 KiB
Nix

{ stdenvNoCC, fetchurl, newScope, lib, pkgs
, stdenv, overrideCC
, xar, cpio, python3, pbzx }:
let
mkSusDerivation = args: stdenvNoCC.mkDerivation (args // {
dontBuild = true;
darwinDontCodeSign = true;
nativeBuildInputs = [ cpio pbzx ];
outputs = [ "out" ];
unpackPhase = ''
pbzx $src | cpio -idm
'';
passthru = {
inherit (args) version;
};
});
MacOSX-SDK = mkSusDerivation {
pname = "MacOSX-SDK";
version = "11.0.0";
# 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
src = fetchurl {
url = "http://swcdn.apple.com/content/downloads/46/21/001-89745-A_56FM390IW5/v1um2qppgfdnam2e9cdqcqu2r6k8aa3lis/CLTools_macOSNMOS_SDK.pkg";
sha256 = "0n425smj4q1vxbza8fzwnk323fyzbbq866q32w288c44hl5yhwsf";
};
installPhase = ''
mv Library/Developer/CommandLineTools/SDKs/MacOSX11.1.sdk $out
'';
};
CLTools_Executables = mkSusDerivation {
pname = "CLTools_Executables";
version = "11.0.0";
# 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
src = fetchurl {
url = "http://swcdn.apple.com/content/downloads/46/21/001-89745-A_56FM390IW5/v1um2qppgfdnam2e9cdqcqu2r6k8aa3lis/CLTools_Executables.pkg";
sha256 = "0nvb1qx7l81l2wcl8wvgbpsg5rcn51ylhivqmlfr2hrrv3zrrpl0";
};
installPhase = ''
mv Library/Developer/CommandLineTools $out
'';
};
mkCc = cc:
if stdenv.isAarch64 then cc
else
cc.override {
bintools = stdenv.cc.bintools.override { libc = packages.Libsystem; };
libc = packages.Libsystem;
};
mkStdenv = stdenv:
if stdenv.isAarch64 then stdenv
else
let
darwinMinVersion = "10.12";
darwinSdkVersion = "11.0";
in
(overrideCC stdenv (mkCc stdenv.cc)).override {
extraBuildInputs = [ pkgs.darwin.apple_sdk_11_0.frameworks.CoreFoundation ];
buildPlatform = stdenv.buildPlatform // { inherit darwinMinVersion darwinSdkVersion; };
hostPlatform = stdenv.hostPlatform // { inherit darwinMinVersion darwinSdkVersion; };
targetPlatform = stdenv.targetPlatform // { inherit darwinMinVersion darwinSdkVersion; };
};
stdenvs = {
stdenv = mkStdenv stdenv;
} // builtins.listToAttrs (map
(v: {
name = "llvmPackages_${v}";
value = pkgs."llvmPackages_${v}" // {
stdenv = mkStdenv pkgs."llvmPackages_${v}".stdenv;
clang = mkCc pkgs."llvmPackages_${v}".clang;
};
})
[ "12" "13" "14" "15" "16" ]
);
callPackage = newScope (packages // pkgs.darwin // { inherit MacOSX-SDK; });
packages = stdenvs // {
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 CLTools_Executables;
Libsystem = callPackage ./libSystem.nix { };
LibsystemCross = pkgs.darwin.Libsystem;
libcharset = callPackage ./libcharset.nix { };
libcompression = callPackage ./libcompression.nix { };
libunwind = callPackage ./libunwind.nix { };
libnetwork = callPackage ./libnetwork.nix { };
libpm = callPackage ./libpm.nix { };
# Avoid introducing a new objc4 if stdenv already has one, to prevent
# conflicting LLVM modules.
objc4 = stdenv.objc4 or (callPackage ./libobjc.nix { });
sdkRoot = pkgs.callPackage ../apple-sdk/sdkRoot.nix { sdkVersion = "11.0"; };
# questionable aliases
configd = pkgs.darwin.apple_sdk.frameworks.SystemConfiguration;
inherit (pkgs.darwin.apple_sdk.frameworks) IOKit;
xcodebuild = pkgs.xcbuild.override {
inherit (pkgs.darwin.apple_sdk_11_0) stdenv;
inherit (pkgs.darwin.apple_sdk_11_0.frameworks) CoreServices CoreGraphics ImageIO;
};
rustPlatform = pkgs.makeRustPlatform {
inherit (pkgs.darwin.apple_sdk_11_0) stdenv;
inherit (pkgs) rustc cargo;
} // {
inherit (pkgs.callPackage ../../../build-support/rust/hooks {
inherit (pkgs.darwin.apple_sdk_11_0) stdenv;
inherit (pkgs) cargo rustc;
clang = mkCc pkgs.clang;
}) bindgenHook;
};
callPackage = newScope (lib.optionalAttrs stdenv.isDarwin (stdenvs // rec {
inherit (pkgs.darwin.apple_sdk_11_0) xcodebuild rustPlatform;
darwin = pkgs.darwin.overrideScope (_: prev: {
inherit (prev.darwin.apple_sdk_11_0)
IOKit
Libsystem
LibsystemCross
Security
configd
libcharset
libunwind
objc4
;
apple_sdk = prev.darwin.apple_sdk_11_0;
CF = prev.darwin.apple_sdk_11_0.CoreFoundation;
});
xcbuild = xcodebuild;
}));
darwin-stubs = stdenvNoCC.mkDerivation {
pname = "darwin-stubs";
inherit (MacOSX-SDK) version;
buildCommand = ''
mkdir -p "$out"
ln -s ${MacOSX-SDK}/System "$out/System"
ln -s ${MacOSX-SDK}/usr "$out/usr"
'';
};
};
in packages