nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at devShellTools-shell 73 lines 1.9 kB view raw
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}