nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 stdenv,
3 clang-unwrapped,
4 binutils-unwrapped,
5 runCommand,
6
7 wrapBintoolsWith,
8 wrapCCWith,
9 buildIosSdk,
10 targetIosSdkPkgs,
11 xcode,
12 lib,
13}:
14
15let
16
17 minSdkVersion = stdenv.targetPlatform.minSdkVersion or "9.0";
18
19in
20
21rec {
22 sdk = rec {
23 name = "ios-sdk";
24 type = "derivation";
25 outPath =
26 xcode
27 + "/Contents/Developer/Platforms/${platform}.platform/Developer/SDKs/${platform}${version}.sdk";
28
29 platform = stdenv.targetPlatform.xcodePlatform or "";
30 version = stdenv.targetPlatform.sdkVer or "";
31 };
32
33 binutils = wrapBintoolsWith {
34 libc = targetIosSdkPkgs.libraries;
35 bintools = binutils-unwrapped;
36 };
37
38 clang =
39 (wrapCCWith {
40 cc = clang-unwrapped;
41 bintools = binutils;
42 libc = targetIosSdkPkgs.libraries;
43 extraPackages = [ "${sdk}/System" ];
44 extraBuildCommands = ''
45 tr '\n' ' ' < $out/nix-support/cc-cflags > cc-cflags.tmp
46 mv cc-cflags.tmp $out/nix-support/cc-cflags
47 echo "-target ${stdenv.targetPlatform.config}" >> $out/nix-support/cc-cflags
48 echo "-isystem ${sdk}/usr/include${lib.optionalString (lib.versionAtLeast "10" sdk.version) " -isystem ${sdk}/usr/include/c++/4.2.1/ -stdlib=libstdc++"}" >> $out/nix-support/cc-cflags
49 ${lib.optionalString (lib.versionAtLeast sdk.version "14") "echo -isystem ${xcode}/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 >> $out/nix-support/cc-cflags"}
50 '';
51 })
52 // {
53 inherit sdk;
54 };
55
56 libraries =
57 let
58 sdk = buildIosSdk;
59 in
60 runCommand "libSystem-prebuilt"
61 {
62 passthru = {
63 inherit sdk;
64 };
65 }
66 ''
67 if ! [ -d ${sdk} ]; then
68 echo "You must have version ${sdk.version} of the ${sdk.platform} sdk installed at ${sdk}" >&2
69 exit 1
70 fi
71 ln -s ${sdk}/usr $out
72 '';
73}