1{ stdenv, callPackage, makeWrapper, writeText, CoreServices, ImageIO, CoreGraphics
2, cctools, bootstrap_cmds, binutils}:
3
4let
5
6 toolchainName = "com.apple.dt.toolchain.XcodeDefault";
7 platformName = "com.apple.platform.macosx";
8 sdkName = "macosx10.10";
9
10 xcbuild = callPackage ./default.nix {
11 inherit CoreServices ImageIO CoreGraphics;
12 };
13
14 toolchain = callPackage ./toolchain.nix {
15 inherit cctools bootstrap_cmds toolchainName xcbuild binutils stdenv;
16 };
17
18 sdk = callPackage ./sdk.nix {
19 inherit toolchainName sdkName xcbuild;
20 };
21
22 platform = callPackage ./platform.nix {
23 inherit sdk platformName xcbuild;
24 };
25
26 xcconfig = writeText "nix.xcconfig" ''
27 SDKROOT=${sdkName}
28 '';
29
30in
31
32stdenv.mkDerivation {
33 name = "xcbuild-wrapper-${xcbuild.version}";
34
35 buildInputs = [ xcbuild makeWrapper ];
36
37 setupHook = ./setup-hook.sh;
38
39 phases = [ "installPhase" "fixupPhase" ];
40
41 installPhase = ''
42 mkdir -p $out/bin
43 cd $out/bin/
44
45 for file in ${xcbuild}/bin/*; do
46 ln -s $file
47 done
48
49 mkdir -p $out/Library/Xcode/
50 ln -s ${xcbuild}/Library/Xcode/Specifications $out/Library/Xcode/Specifications
51
52 mkdir -p $out/Platforms/
53 ln -s ${platform} $out/Platforms/nixpkgs.platform
54
55 mkdir -p $out/Toolchains/
56 ln -s ${toolchain} $out/Toolchains/nixpkgs.xctoolchain
57
58 wrapProgram $out/bin/xcodebuild \
59 --add-flags "-xcconfig ${xcconfig}" \
60 --add-flags "DERIVED_DATA_DIR=." \
61 --set DEVELOPER_DIR "$out" \
62 --set SDKROOT ${sdkName}
63 wrapProgram $out/bin/xcrun \
64 --set DEVELOPER_DIR "$out" \
65 --set SDKROOT ${sdkName}
66 wrapProgram $out/bin/xcode-select \
67 --set DEVELOPER_DIR "$out" \
68 --set SDKROOT ${sdkName}
69 '';
70
71 inherit (xcbuild) meta;
72
73 passthru = {
74 raw = xcbuild;
75 };
76
77 preferLocalBuild = true;
78}