diff options
Diffstat (limited to 'pkgs/development/tools/xcbuild/wrapper.nix')
-rw-r--r-- | pkgs/development/tools/xcbuild/wrapper.nix | 72 |
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; +} |