about summary refs log tree commit diff
path: root/pkgs/development/tools/xcbuild/wrapper.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/tools/xcbuild/wrapper.nix')
-rw-r--r--pkgs/development/tools/xcbuild/wrapper.nix72
1 files changed, 72 insertions, 0 deletions
diff --git a/pkgs/development/tools/xcbuild/wrapper.nix b/pkgs/development/tools/xcbuild/wrapper.nix
new file mode 100644
index 000000000000..fc03c273fc58
--- /dev/null
+++ b/pkgs/development/tools/xcbuild/wrapper.nix
@@ -0,0 +1,72 @@
+{ stdenv, callPackage, makeWrapper, writeText, CoreServices, ImageIO, CoreGraphics
+, cctools, bootstrap_cmds, binutils}:
+
+let
+
+  toolchainName = "com.apple.dt.toolchain.XcodeDefault";
+  platformName = "com.apple.platform.macosx";
+  sdkName = "macosx10.10";
+
+  xcbuild = callPackage ./default.nix {
+    inherit CoreServices ImageIO CoreGraphics;
+  };
+
+  toolchain = callPackage ./toolchain.nix {
+    inherit cctools bootstrap_cmds toolchainName xcbuild binutils stdenv;
+  };
+
+  sdk = callPackage ./sdk.nix {
+    inherit toolchainName sdkName xcbuild;
+  };
+
+  platform = callPackage ./platform.nix {
+    inherit sdk platformName xcbuild;
+  };
+
+  xcconfig = writeText "nix.xcconfig" ''
+    SDKROOT=${sdkName}
+  '';
+
+in
+
+stdenv.mkDerivation {
+  name = "xcbuild-wrapper";
+
+  buildInputs = [ xcbuild makeWrapper ];
+
+  setupHook = ./setup-hook.sh;
+
+  phases = [ "installPhase" "fixupPhase" ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cd $out/bin/
+
+    for file in ${xcbuild}/bin/*; do
+      ln -s $file
+    done
+
+    mkdir -p $out/Library/Xcode/
+    ln -s ${xcbuild}/Library/Xcode/Specifications $out/Library/Xcode/Specifications
+
+    mkdir -p $out/Platforms/
+    ln -s ${platform} $out/Platforms/
+
+    mkdir -p $out/Toolchains/
+    ln -s ${toolchain} $out/Toolchains/
+
+    wrapProgram $out/bin/xcodebuild \
+      --add-flags "-xcconfig ${xcconfig}" \
+      --add-flags "DERIVED_DATA_DIR=." \
+      --set DEVELOPER_DIR "$out"
+    wrapProgram $out/bin/xcrun \
+      --add-flags "-sdk ${sdkName}" \
+      --set DEVELOPER_DIR "$out"
+  '';
+
+  passthru = {
+    raw = xcbuild;
+  };
+
+  preferLocalBuild = true;
+}