xcbuild: add wrapper
Also updates xcbuild version. This changes the raw string expressions into nix expressions that are then converted into json by builtins.toJSON. Then, converted to Plist XML by Apple's plutil. Sadly, xcbuild does not support using raw JSON but Apple's plutil does so we just convert the file from JSON to XML using Apple's plutil. The result is not ideal but it looks like all OS X systems have working plutil's. - set mac version to 10.10 - add setup hook.
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
{ stdenv, callPackage, makeWrapper, writeText, CoreServices, ImageIO, CoreGraphics
|
||||
, cctools, bootstrap_cmds}:
|
||||
|
||||
let
|
||||
|
||||
toolchainName = "com.apple.dt.toolchain.XcodeDefault";
|
||||
platformName = "com.apple.platform.macosx";
|
||||
sdkName = "macosx10.9";
|
||||
|
||||
xcbuild = callPackage ./default.nix {
|
||||
inherit CoreServices ImageIO CoreGraphics;
|
||||
};
|
||||
|
||||
toolchain = callPackage ./toolchain.nix {
|
||||
inherit cctools bootstrap_cmds toolchainName xcbuild;
|
||||
cc = stdenv.cc;
|
||||
};
|
||||
|
||||
sdk = callPackage ./sdk.nix {
|
||||
inherit toolchainName sdkName xcbuild;
|
||||
};
|
||||
|
||||
platform = callPackage ./platform.nix {
|
||||
inherit sdk platformName xcbuild;
|
||||
};
|
||||
|
||||
developer = callPackage ./developer.nix {
|
||||
inherit platform toolchain 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
|
||||
|
||||
wrapProgram $out/bin/xcodebuild \
|
||||
--add-flags "-xcconfig ${xcconfig}" \
|
||||
--add-flags "DERIVED_DATA_DIR=." \
|
||||
--set DEVELOPER_DIR "${developer}"
|
||||
wrapProgram $out/bin/xcrun \
|
||||
--add-flags "-sdk ${sdkName}" \
|
||||
--set DEVELOPER_DIR "${developer}"
|
||||
'';
|
||||
|
||||
preferLocalBuild = true;
|
||||
}
|
||||
Reference in New Issue
Block a user