fece3eb2e9
Build the llvm support libraries (libcxx, libcxxabi) from scratch without using the existing llvm libraries. This is the same spirit and similar implementation as the "useLLVM" bootstrap in llvm package sets. Critically it avoids having libcxxabi provided by the cc-wrapper when building libcxx, which otherwise results in two libcxxabi instances. $ otool -L /nix/store/vd4vvgs9xngqbjzpg3qc41wl6jh42s9i-libc++-7.1.0/lib/libc++.dylib /nix/store/vd4vvgs9xngqbjzpg3qc41wl6jh42s9i-libc++-7.1.0/lib/libc++.dylib: /nix/store/vd4vvgs9xngqbjzpg3qc41wl6jh42s9i-libc++-7.1.0/lib/libc++.1.0.dylib (compatibility version 1.0.0, current version 1.0.0) /nix/store/gmpwk5fyp3iasppqrrdpswxvid6kcp8r-libc++abi-7.1.0/lib/libc++abi.dylib (compatibility version 1.0.0, current version 1.0.0) /nix/store/3hn7azynqgp2pm5gpdg45gpq0ia72skg-libc++abi-7.1.0/lib/libc++abi.dylib (compatibility version 1.0.0, current version 1.0.0) /nix/store/1nq94scbxs6bk7pimqhvz76q6cfmbv97-Libsystem-osx-10.12.6/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1) Additionally move some utilities (clang, binutils, coreutils, gnugrep) to the stage layers so they can be replaced before the final stdenv. This should cause most of stage4 to be built from the toolchain assembled as of stage3 instead of the bootstrap toolchain.
523 lines
18 KiB
Nix
523 lines
18 KiB
Nix
{ lib
|
|
, localSystem, crossSystem, config, overlays, crossOverlays ? []
|
|
# The version of darwin.apple_sdk used for sources provided by apple.
|
|
, appleSdkVersion ? "10.12"
|
|
# Minimum required macOS version, used both for compatibility as well as reproducability.
|
|
, macosVersionMin ? "10.12"
|
|
# Allow passing in bootstrap files directly so we can test the stdenv bootstrap process when changing the bootstrap tools
|
|
, bootstrapFiles ? let
|
|
fetch = { file, sha256, executable ? true }: import <nix/fetchurl.nix> {
|
|
url = "http://tarballs.nixos.org/stdenv-darwin/x86_64/5ab5783e4f46c373c6de84deac9ad59b608bb2e6/${file}";
|
|
inherit (localSystem) system;
|
|
inherit sha256 executable;
|
|
}; in {
|
|
sh = fetch { file = "sh"; sha256 = "sha256-nbb4XEk3go7ttiWrQyKQMLzPr+qUnwnHkWMtVCZsMCs="; };
|
|
bzip2 = fetch { file = "bzip2"; sha256 = "sha256-ybnA+JWrKhXSfn20+GVKXkHFTp2Zt79hat8hAVmsUOc="; };
|
|
mkdir = fetch { file = "mkdir"; sha256 = "sha256-nmvMxmfcY41/60Z/E8L9u0vgePW5l30Dqw1z+Nr02Hk="; };
|
|
cpio = fetch { file = "cpio"; sha256 = "sha256-cB36rN3NLj19Tk37Kc5bodMFMO+mCpEQkKKo0AEMkaU="; };
|
|
tarball = fetch { file = "bootstrap-tools.cpio.bz2"; sha256 = "sha256-kh2vKmjCr/HvR06czZbxUxV5KDRxSF27M6nN3cyofRI="; executable = false; };
|
|
}
|
|
}:
|
|
|
|
assert crossSystem == localSystem;
|
|
|
|
let
|
|
inherit (localSystem) system platform;
|
|
|
|
bootstrapClangVersion = "7.1.0";
|
|
|
|
commonImpureHostDeps = [
|
|
"/bin/sh"
|
|
"/usr/lib/libSystem.B.dylib"
|
|
"/usr/lib/system/libunc.dylib" # This dependency is "hidden", so our scanning code doesn't pick it up
|
|
];
|
|
in rec {
|
|
commonPreHook = ''
|
|
export NIX_ENFORCE_NO_NATIVE=''${NIX_ENFORCE_NO_NATIVE-1}
|
|
export NIX_ENFORCE_PURITY=''${NIX_ENFORCE_PURITY-1}
|
|
export NIX_IGNORE_LD_THROUGH_GCC=1
|
|
unset SDKROOT
|
|
|
|
export MACOSX_DEPLOYMENT_TARGET=${macosVersionMin}
|
|
|
|
# Workaround for https://openradar.appspot.com/22671534 on 10.11.
|
|
export gl_cv_func_getcwd_abort_bug=no
|
|
|
|
stripAllFlags=" " # the Darwin "strip" command doesn't know "-s"
|
|
'';
|
|
|
|
bootstrapTools = derivation {
|
|
inherit system;
|
|
|
|
name = "bootstrap-tools";
|
|
builder = bootstrapFiles.sh; # Not a filename! Attribute 'sh' on bootstrapFiles
|
|
args = [ ./unpack-bootstrap-tools.sh ];
|
|
|
|
inherit (bootstrapFiles) mkdir bzip2 cpio tarball;
|
|
reexportedLibrariesFile =
|
|
../../os-specific/darwin/apple-source-releases/Libsystem/reexported_libraries;
|
|
|
|
__impureHostDeps = commonImpureHostDeps;
|
|
};
|
|
|
|
stageFun = step: last: {shell ? "${bootstrapTools}/bin/bash",
|
|
overrides ? (self: super: {}),
|
|
extraPreHook ? "",
|
|
extraNativeBuildInputs,
|
|
extraBuildInputs,
|
|
libcxx,
|
|
allowedRequisites ? null}:
|
|
let
|
|
name = "bootstrap-stage${toString step}";
|
|
|
|
buildPackages = lib.optionalAttrs (last ? stdenv) {
|
|
inherit (last) stdenv;
|
|
};
|
|
|
|
mkExtraBuildCommands = cc: ''
|
|
rsrc="$out/resource-root"
|
|
mkdir "$rsrc"
|
|
ln -s "${cc}/lib/clang/${cc.version}/include" "$rsrc"
|
|
ln -s "${last.pkgs.llvmPackages_7.compiler-rt.out}/lib" "$rsrc/lib"
|
|
echo "-resource-dir=$rsrc" >> $out/nix-support/cc-cflags
|
|
'';
|
|
|
|
mkCC = overrides: import ../../build-support/cc-wrapper (
|
|
let args = {
|
|
inherit shell;
|
|
inherit (last) stdenvNoCC;
|
|
|
|
nativeTools = false;
|
|
nativeLibc = false;
|
|
inherit buildPackages libcxx;
|
|
inherit (last.pkgs) coreutils gnugrep;
|
|
bintools = last.pkgs.darwin.binutils;
|
|
libc = last.pkgs.darwin.Libsystem;
|
|
isClang = true;
|
|
cc = last.pkgs.llvmPackages_7.clang-unwrapped;
|
|
}; in args // (overrides args));
|
|
|
|
cc = if last == null then "/dev/null" else mkCC ({ cc, ... }: {
|
|
extraPackages = [
|
|
last.pkgs.llvmPackages_7.libcxxabi
|
|
last.pkgs.llvmPackages_7.compiler-rt
|
|
];
|
|
extraBuildCommands = mkExtraBuildCommands cc;
|
|
});
|
|
|
|
ccNoLibcxx = if last == null then "/dev/null" else mkCC ({ cc, ... }: {
|
|
libcxx = null;
|
|
extraPackages = [
|
|
last.pkgs.llvmPackages_7.compiler-rt
|
|
];
|
|
extraBuildCommands = ''
|
|
echo "-rtlib=compiler-rt" >> $out/nix-support/cc-cflags
|
|
echo "-B${last.pkgs.llvmPackages_7.compiler-rt}/lib" >> $out/nix-support/cc-cflags
|
|
echo "-nostdlib++" >> $out/nix-support/cc-cflags
|
|
'' + mkExtraBuildCommands cc;
|
|
});
|
|
|
|
thisStdenv = import ../generic {
|
|
name = "${name}-stdenv-darwin";
|
|
|
|
inherit config shell extraNativeBuildInputs extraBuildInputs;
|
|
allowedRequisites = if allowedRequisites == null then null else allowedRequisites ++ [
|
|
cc.expand-response-params cc.bintools
|
|
];
|
|
|
|
buildPlatform = localSystem;
|
|
hostPlatform = localSystem;
|
|
targetPlatform = localSystem;
|
|
|
|
inherit cc;
|
|
|
|
preHook = lib.optionalString (shell == "${bootstrapTools}/bin/bash") ''
|
|
# Don't patch #!/interpreter because it leads to retained
|
|
# dependencies on the bootstrapTools in the final stdenv.
|
|
dontPatchShebangs=1
|
|
'' + ''
|
|
${commonPreHook}
|
|
${extraPreHook}
|
|
'';
|
|
initialPath = [ bootstrapTools ];
|
|
|
|
fetchurlBoot = import ../../build-support/fetchurl {
|
|
inherit lib;
|
|
stdenvNoCC = stage0.stdenv;
|
|
curl = bootstrapTools;
|
|
};
|
|
|
|
# The stdenvs themselves don't use mkDerivation, so I need to specify this here
|
|
__stdenvImpureHostDeps = commonImpureHostDeps;
|
|
__extraImpureHostDeps = commonImpureHostDeps;
|
|
|
|
extraAttrs = {
|
|
inherit macosVersionMin appleSdkVersion platform;
|
|
};
|
|
overrides = self: super: (overrides self super) // {
|
|
inherit ccNoLibcxx;
|
|
fetchurl = thisStdenv.fetchurlBoot;
|
|
};
|
|
};
|
|
|
|
in {
|
|
inherit config overlays;
|
|
stdenv = thisStdenv;
|
|
};
|
|
|
|
stage0 = stageFun 0 null {
|
|
overrides = self: super: with stage0; {
|
|
coreutils = { name = "bootstrap-stage0-coreutils"; outPath = bootstrapTools; };
|
|
gnugrep = { name = "bootstrap-stage0-gnugrep"; outPath = bootstrapTools; };
|
|
|
|
darwin = super.darwin // {
|
|
Libsystem = stdenv.mkDerivation {
|
|
name = "bootstrap-stage0-Libsystem";
|
|
buildCommand = ''
|
|
mkdir -p $out
|
|
ln -s ${bootstrapTools}/lib $out/lib
|
|
ln -s ${bootstrapTools}/include-Libsystem $out/include
|
|
'';
|
|
};
|
|
dyld = bootstrapTools;
|
|
|
|
binutils = lib.makeOverridable (import ../../build-support/bintools-wrapper) {
|
|
shell = "${bootstrapTools}/bin/bash";
|
|
inherit (self) stdenvNoCC;
|
|
|
|
nativeTools = false;
|
|
nativeLibc = false;
|
|
inherit (self) buildPackages coreutils gnugrep;
|
|
libc = self.pkgs.darwin.Libsystem;
|
|
bintools = { name = "bootstrap-stage0-binutils"; outPath = bootstrapTools; };
|
|
};
|
|
};
|
|
|
|
llvmPackages_7 = {
|
|
clang-unwrapped = {
|
|
name = "bootstrap-stage0-clang";
|
|
outPath = bootstrapTools;
|
|
version = bootstrapClangVersion;
|
|
};
|
|
|
|
libcxx = stdenv.mkDerivation {
|
|
name = "bootstrap-stage0-libcxx";
|
|
phases = [ "installPhase" "fixupPhase" ];
|
|
installPhase = ''
|
|
mkdir -p $out/lib $out/include
|
|
ln -s ${bootstrapTools}/lib/libc++.dylib $out/lib/libc++.dylib
|
|
ln -s ${bootstrapTools}/include/c++ $out/include/c++
|
|
'';
|
|
passthru = {
|
|
isLLVM = true;
|
|
};
|
|
};
|
|
|
|
libcxxabi = stdenv.mkDerivation {
|
|
name = "bootstrap-stage0-libcxxabi";
|
|
buildCommand = ''
|
|
mkdir -p $out/lib
|
|
ln -s ${bootstrapTools}/lib/libc++abi.dylib $out/lib/libc++abi.dylib
|
|
'';
|
|
};
|
|
|
|
compiler-rt = stdenv.mkDerivation {
|
|
name = "bootstrap-stage0-compiler-rt";
|
|
buildCommand = ''
|
|
mkdir -p $out/lib
|
|
ln -s ${bootstrapTools}/lib/libclang_rt* $out/lib
|
|
ln -s ${bootstrapTools}/lib/darwin $out/lib/darwin
|
|
'';
|
|
};
|
|
};
|
|
};
|
|
|
|
extraNativeBuildInputs = [];
|
|
extraBuildInputs = [];
|
|
libcxx = null;
|
|
};
|
|
|
|
stage1 = prevStage: let
|
|
persistent = self: super: with prevStage; {
|
|
cmake = super.cmakeMinimal;
|
|
|
|
python3 = super.python3Minimal;
|
|
|
|
ninja = super.ninja.override { buildDocs = false; };
|
|
|
|
llvmPackages_7 = super.llvmPackages_7 // (let
|
|
tools = super.llvmPackages_7.tools.extend (_: _: {
|
|
inherit (llvmPackages_7) clang-unwrapped;
|
|
});
|
|
libraries = super.llvmPackages_7.libraries.extend (_: _: {
|
|
inherit (llvmPackages_7) compiler-rt libcxx libcxxabi;
|
|
});
|
|
in { inherit tools libraries; } // tools // libraries);
|
|
|
|
darwin = super.darwin // {
|
|
binutils = darwin.binutils.override {
|
|
libc = self.darwin.Libsystem;
|
|
};
|
|
};
|
|
};
|
|
in with prevStage; stageFun 1 prevStage {
|
|
extraPreHook = "export NIX_CFLAGS_COMPILE+=\" -F${bootstrapTools}/Library/Frameworks\"";
|
|
extraNativeBuildInputs = [];
|
|
extraBuildInputs = [ ];
|
|
libcxx = pkgs.libcxx;
|
|
|
|
allowedRequisites =
|
|
[ bootstrapTools ] ++
|
|
(with pkgs; [ libcxx libcxxabi llvmPackages_7.compiler-rt ]) ++
|
|
(with pkgs.darwin; [ Libsystem ]);
|
|
|
|
overrides = persistent;
|
|
};
|
|
|
|
stage2 = prevStage: let
|
|
persistent = self: super: with prevStage; {
|
|
inherit
|
|
zlib patchutils m4 scons flex perl bison unifdef unzip openssl python3
|
|
libxml2 gettext sharutils gmp libarchive ncurses pkg-config libedit groff
|
|
openssh sqlite sed serf openldap db cyrus-sasl expat apr-util subversion xz
|
|
findfreetype libssh curl cmake autoconf automake libtool ed cpio coreutils
|
|
libssh2 nghttp2 libkrb5 ninja;
|
|
|
|
llvmPackages_7 = super.llvmPackages_7 // (let
|
|
tools = super.llvmPackages_7.tools.extend (_: _: {
|
|
inherit (llvmPackages_7) clang-unwrapped;
|
|
});
|
|
libraries = super.llvmPackages_7.libraries.extend (_: libSuper: {
|
|
inherit (llvmPackages_7) compiler-rt;
|
|
libcxx = libSuper.libcxx.override {
|
|
stdenv = overrideCC self.stdenv self.ccNoLibcxx;
|
|
};
|
|
libcxxabi = libSuper.libcxxabi.override {
|
|
stdenv = overrideCC self.stdenv self.ccNoLibcxx;
|
|
standalone = true;
|
|
};
|
|
});
|
|
in { inherit tools libraries; } // tools // libraries);
|
|
|
|
darwin = super.darwin // {
|
|
inherit (darwin)
|
|
binutils dyld Libsystem xnu configd ICU libdispatch libclosure launchd CF;
|
|
};
|
|
};
|
|
in with prevStage; stageFun 2 prevStage {
|
|
extraPreHook = ''
|
|
export PATH_LOCALE=${pkgs.darwin.locale}/share/locale
|
|
'';
|
|
|
|
extraNativeBuildInputs = [ pkgs.xz ];
|
|
extraBuildInputs = [ pkgs.darwin.CF ];
|
|
libcxx = pkgs.libcxx;
|
|
|
|
allowedRequisites =
|
|
[ bootstrapTools ] ++
|
|
(with pkgs; [
|
|
xz.bin xz.out libcxx libcxxabi llvmPackages_7.compiler-rt
|
|
zlib libxml2.out curl.out openssl.out libssh2.out
|
|
nghttp2.lib libkrb5 coreutils gnugrep pcre.out gmp libiconv
|
|
]) ++
|
|
(with pkgs.darwin; [ dyld Libsystem CF ICU locale ]);
|
|
|
|
overrides = persistent;
|
|
};
|
|
|
|
stage3 = prevStage: let
|
|
persistent = self: super: with prevStage; {
|
|
inherit
|
|
patchutils m4 scons flex perl bison unifdef unzip openssl python3
|
|
gettext sharutils libarchive pkg-config groff bash subversion
|
|
openssh sqlite sed serf openldap db cyrus-sasl expat apr-util
|
|
findfreetype libssh curl cmake autoconf automake libtool cpio
|
|
libssh2 nghttp2 libkrb5 ninja;
|
|
|
|
# Avoid pulling in a full python and its extra dependencies for the llvm/clang builds.
|
|
libxml2 = super.libxml2.override { pythonSupport = false; };
|
|
|
|
llvmPackages_7 = super.llvmPackages_7 // (let
|
|
libraries = super.llvmPackages_7.libraries.extend (_: _: {
|
|
inherit (llvmPackages_7) libcxx libcxxabi;
|
|
});
|
|
in { inherit libraries; } // libraries);
|
|
|
|
darwin = super.darwin // {
|
|
inherit (darwin)
|
|
dyld Libsystem xnu configd libdispatch libclosure launchd libiconv locale;
|
|
};
|
|
};
|
|
in with prevStage; stageFun 3 prevStage {
|
|
shell = "${pkgs.bash}/bin/bash";
|
|
|
|
# We have a valid shell here (this one has no bootstrap-tools runtime deps) so stageFun
|
|
# enables patchShebangs above. Unfortunately, patchShebangs ignores our $SHELL setting
|
|
# and instead goes by $PATH, which happens to contain bootstrapTools. So it goes and
|
|
# patches our shebangs back to point at bootstrapTools. This makes sure bash comes first.
|
|
extraNativeBuildInputs = with pkgs; [ xz ];
|
|
extraBuildInputs = [ pkgs.darwin.CF pkgs.bash ];
|
|
libcxx = pkgs.libcxx;
|
|
|
|
extraPreHook = ''
|
|
export PATH=${pkgs.bash}/bin:$PATH
|
|
export PATH_LOCALE=${pkgs.darwin.locale}/share/locale
|
|
'';
|
|
|
|
allowedRequisites =
|
|
[ bootstrapTools ] ++
|
|
(with pkgs; [
|
|
xz.bin xz.out bash libcxx libcxxabi llvmPackages_7.compiler-rt
|
|
zlib libxml2.out curl.out openssl.out libssh2.out
|
|
nghttp2.lib libkrb5 coreutils gnugrep pcre.out gmp libiconv
|
|
]) ++
|
|
(with pkgs.darwin; [ dyld ICU Libsystem locale ]);
|
|
|
|
overrides = persistent;
|
|
};
|
|
|
|
stage4 = prevStage: let
|
|
persistent = self: super: with prevStage; {
|
|
inherit
|
|
gnumake gzip gnused bzip2 gawk ed xz patch bash python3
|
|
ncurses libffi zlib gmp pcre gnugrep cmake
|
|
coreutils findutils diffutils patchutils ninja libxml2;
|
|
|
|
# Hack to make sure we don't link ncurses in bootstrap tools. The proper
|
|
# solution is to avoid passing -L/nix-store/...-bootstrap-tools/lib,
|
|
# quite a sledgehammer just to get the C runtime.
|
|
gettext = super.gettext.overrideAttrs (drv: {
|
|
configureFlags = drv.configureFlags ++ [
|
|
"--disable-curses"
|
|
];
|
|
});
|
|
|
|
llvmPackages_7 = super.llvmPackages_7 // (let
|
|
tools = super.llvmPackages_7.tools.extend (llvmSelf: _: {
|
|
clang-unwrapped = llvmPackages_7.clang-unwrapped.override { llvm = llvmSelf.llvm; };
|
|
llvm = llvmPackages_7.llvm.override { inherit libxml2; };
|
|
});
|
|
libraries = super.llvmPackages_7.libraries.extend (llvmSelf: _: {
|
|
inherit (llvmPackages_7) libcxx libcxxabi compiler-rt;
|
|
});
|
|
in { inherit tools libraries; } // tools // libraries);
|
|
|
|
darwin = super.darwin // rec {
|
|
inherit (darwin) dyld Libsystem libiconv locale;
|
|
|
|
CF = super.darwin.CF.override {
|
|
inherit libxml2;
|
|
python3 = prevStage.python3;
|
|
};
|
|
};
|
|
};
|
|
in with prevStage; stageFun 4 prevStage {
|
|
shell = "${pkgs.bash}/bin/bash";
|
|
extraNativeBuildInputs = with pkgs; [ xz ];
|
|
extraBuildInputs = [ pkgs.darwin.CF pkgs.bash ];
|
|
libcxx = pkgs.libcxx;
|
|
|
|
extraPreHook = ''
|
|
export PATH_LOCALE=${pkgs.darwin.locale}/share/locale
|
|
'';
|
|
overrides = persistent;
|
|
};
|
|
|
|
stdenvDarwin = prevStage: let
|
|
pkgs = prevStage;
|
|
persistent = self: super: with prevStage; {
|
|
inherit
|
|
gnumake gzip gnused bzip2 gawk ed xz patch bash
|
|
ncurses libffi zlib llvm gmp pcre gnugrep
|
|
coreutils findutils diffutils patchutils;
|
|
|
|
llvmPackages_7 = super.llvmPackages_7 // (let
|
|
tools = super.llvmPackages_7.tools.extend (_: super: {
|
|
inherit (llvmPackages_7) llvm clang-unwrapped;
|
|
});
|
|
libraries = super.llvmPackages_7.libraries.extend (_: _: {
|
|
inherit (llvmPackages_7) compiler-rt libcxx libcxxabi;
|
|
});
|
|
in { inherit tools libraries; } // tools // libraries);
|
|
|
|
darwin = super.darwin // {
|
|
inherit (darwin) dyld ICU Libsystem libiconv;
|
|
} // lib.optionalAttrs (super.stdenv.targetPlatform == localSystem) {
|
|
inherit (darwin) binutils binutils-unwrapped cctools;
|
|
};
|
|
} // lib.optionalAttrs (super.stdenv.targetPlatform == localSystem) {
|
|
# Need to get rid of these when cross-compiling.
|
|
inherit binutils binutils-unwrapped;
|
|
};
|
|
in import ../generic rec {
|
|
name = "stdenv-darwin";
|
|
|
|
inherit config;
|
|
inherit (pkgs.stdenv) fetchurlBoot;
|
|
|
|
buildPlatform = localSystem;
|
|
hostPlatform = localSystem;
|
|
targetPlatform = localSystem;
|
|
|
|
preHook = commonPreHook + ''
|
|
export NIX_COREFOUNDATION_RPATH=${pkgs.darwin.CF}/Library/Frameworks
|
|
export PATH_LOCALE=${pkgs.darwin.locale}/share/locale
|
|
'';
|
|
|
|
__stdenvImpureHostDeps = commonImpureHostDeps;
|
|
__extraImpureHostDeps = commonImpureHostDeps;
|
|
|
|
initialPath = import ../common-path.nix { inherit pkgs; };
|
|
shell = "${pkgs.bash}/bin/bash";
|
|
|
|
cc = pkgs.llvmPackages.libcxxClang.override {
|
|
cc = pkgs.llvmPackages.clang-unwrapped;
|
|
};
|
|
|
|
extraNativeBuildInputs = [];
|
|
extraBuildInputs = [ pkgs.darwin.CF ];
|
|
|
|
extraAttrs = {
|
|
libc = pkgs.darwin.Libsystem;
|
|
shellPackage = pkgs.bash;
|
|
inherit macosVersionMin appleSdkVersion platform bootstrapTools;
|
|
};
|
|
|
|
allowedRequisites = (with pkgs; [
|
|
xz.out xz.bin libcxx libcxxabi gmp.out gnumake findutils bzip2.out
|
|
bzip2.bin llvmPackages.llvm llvmPackages.llvm.lib llvmPackages.compiler-rt llvmPackages.compiler-rt.dev
|
|
zlib.out zlib.dev libffi.out coreutils ed diffutils gnutar
|
|
gzip ncurses.out ncurses.dev ncurses.man gnused bash gawk
|
|
gnugrep llvmPackages.clang-unwrapped llvmPackages.clang-unwrapped.lib patch pcre.out gettext
|
|
binutils.bintools darwin.binutils darwin.binutils.bintools
|
|
curl.out openssl.out libssh2.out nghttp2.lib libkrb5
|
|
cc.expand-response-params libxml2.out
|
|
]) ++ (with pkgs.darwin; [
|
|
dyld Libsystem CF cctools ICU libiconv locale libtapi
|
|
]);
|
|
|
|
overrides = lib.composeExtensions persistent (self: super: {
|
|
clang = cc;
|
|
llvmPackages = super.llvmPackages // { clang = cc; };
|
|
inherit cc;
|
|
|
|
darwin = super.darwin // {
|
|
inherit (prevStage.darwin) CF;
|
|
xnu = super.darwin.xnu.override { inherit (prevStage) python3; };
|
|
};
|
|
});
|
|
};
|
|
|
|
stagesDarwin = [
|
|
({}: stage0)
|
|
stage1
|
|
stage2
|
|
stage3
|
|
stage4
|
|
(prevStage: {
|
|
inherit config overlays;
|
|
stdenv = stdenvDarwin prevStage;
|
|
})
|
|
];
|
|
}
|