Add new package for Apple's XCode.
This package provides the SDK and standard library needed for cross-compiling to Mac US X. We're using xpwn here to extract the DMG. Also, this version (XCode 5.0.2) only contains the SDKs for version 10.9 and 10.8, so we might need to add requireFile directives for older versions as well. Signed-off-by: aszlig <aszlig@redmoonstudios.org>
This commit is contained in:
parent
5e565754ab
commit
83dd414ca2
37
pkgs/os-specific/darwin/xcode/default.nix
Normal file
37
pkgs/os-specific/darwin/xcode/default.nix
Normal file
@ -0,0 +1,37 @@
|
||||
{ stdenv, requireFile, xpwn }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "xcode-${version}";
|
||||
version = "5.0.2";
|
||||
|
||||
src = requireFile {
|
||||
name = "xcode_${version}.dmg";
|
||||
url = meta.homepage;
|
||||
sha256 = "0mrligqkfqwx8cy883pxm4w5w7a17nfh227zdspfll23r9agf32k";
|
||||
};
|
||||
|
||||
phases = [ "unpackPhase" "installPhase" "fixupPhase" ];
|
||||
|
||||
unpackCmd = let
|
||||
basePath = "Xcode.app/Contents/Developer/Platforms/MacOSX.platform";
|
||||
sdkPath = "${basePath}/Developer/SDKs";
|
||||
in ''
|
||||
${xpwn}/bin/dmg extract "$curSrc" main.hfs > /dev/null
|
||||
${xpwn}/bin/hfsplus main.hfs extractall "${sdkPath}" > /dev/null
|
||||
'';
|
||||
|
||||
setSourceRoot = "sourceRoot=MacOSX10.9.sdk";
|
||||
|
||||
installPhase = ''
|
||||
ensureDir "$out/share/sysroot"
|
||||
cp -a * "$out/share/sysroot/"
|
||||
ln -s "$out/usr/lib" "$out/lib"
|
||||
ln -s "$out/usr/include" "$out/include"
|
||||
'';
|
||||
|
||||
meta = {
|
||||
homepage = "https://developer.apple.com/downloads/";
|
||||
description = "Apple's XCode SDK";
|
||||
license = stdenv.lib.licenses.unfree;
|
||||
};
|
||||
}
|
@ -6546,6 +6546,8 @@ let
|
||||
|
||||
cramfsswap = callPackage ../os-specific/linux/cramfsswap { };
|
||||
|
||||
darwin.xcode = callPackage ../os-specific/darwin/xcode { };
|
||||
|
||||
devicemapper = lvm2;
|
||||
|
||||
dmidecode = callPackage ../os-specific/linux/dmidecode { };
|
||||
|
Loading…
Reference in New Issue
Block a user