From 0bfffbc5e19f1a16c19f3cec5272174555006869 Mon Sep 17 00:00:00 2001 From: Matthew Bauer Date: Mon, 25 Jun 2018 22:18:23 -0400 Subject: [PATCH] xcode: add xcodePlatform to system This give us a little bit more control over what target we are using. Eventually we can target other things like WatchOS or MacOS. --- lib/systems/default.nix | 1 - lib/systems/examples.nix | 6 ++++-- .../{ios-sdk-pkgs/default.nix => xcode/sdk-pkgs.nix} | 11 +++++++---- pkgs/top-level/darwin-packages.nix | 2 +- 4 files changed, 12 insertions(+), 8 deletions(-) rename pkgs/os-specific/darwin/{ios-sdk-pkgs/default.nix => xcode/sdk-pkgs.nix} (71%) diff --git a/lib/systems/default.nix b/lib/systems/default.nix index ee4c29660a5..5eacc9eb23e 100644 --- a/lib/systems/default.nix +++ b/lib/systems/default.nix @@ -46,7 +46,6 @@ rec { # Misc boolean options useAndroidPrebuilt = false; useiOSPrebuilt = false; - isiPhoneSimulator = false; } // mapAttrs (n: v: v final.parsed) inspect.predicates // args; in assert final.useAndroidPrebuilt -> final.isAndroid; diff --git a/lib/systems/examples.nix b/lib/systems/examples.nix index 1817a6380dd..31772ba0054 100644 --- a/lib/systems/examples.nix +++ b/lib/systems/examples.nix @@ -101,6 +101,7 @@ rec { # config = "aarch64-apple-darwin14"; sdkVer = "10.2"; xcodeVer = "8.2"; + xcodePlatform = "iPhoneOS"; useiOSPrebuilt = true; platform = {}; }; @@ -110,6 +111,7 @@ rec { # config = "arm-apple-darwin10"; sdkVer = "10.2"; xcodeVer = "8.2"; + xcodePlatform = "iPhoneOS"; useiOSPrebuilt = true; platform = {}; }; @@ -119,8 +121,8 @@ rec { # config = "x86_64-apple-darwin14"; sdkVer = "10.2"; xcodeVer = "8.2"; + xcodePlatform = "iPhoneSimulator"; useiOSPrebuilt = true; - isiPhoneSimulator = true; platform = {}; }; @@ -129,8 +131,8 @@ rec { # config = "i386-apple-darwin11"; sdkVer = "10.2"; xcodeVer = "8.2"; + xcodePlatform = "iPhoneSimulator"; useiOSPrebuilt = true; - isiPhoneSimulator = true; platform = {}; }; diff --git a/pkgs/os-specific/darwin/ios-sdk-pkgs/default.nix b/pkgs/os-specific/darwin/xcode/sdk-pkgs.nix similarity index 71% rename from pkgs/os-specific/darwin/ios-sdk-pkgs/default.nix rename to pkgs/os-specific/darwin/xcode/sdk-pkgs.nix index ebca738431c..d5ed21cd9e2 100644 --- a/pkgs/os-specific/darwin/ios-sdk-pkgs/default.nix +++ b/pkgs/os-specific/darwin/xcode/sdk-pkgs.nix @@ -25,9 +25,9 @@ rec { sdk = rec { name = "ios-sdk"; type = "derivation"; - outPath = xcode + "/Contents/Developer/Platforms/iPhone${sdkType}.platform/Developer/SDKs/iPhone${sdkType}${version}.sdk"; + outPath = xcode + "/Contents/Developer/Platforms/${platform}.platform/Developer/SDKs/${platform}${version}.sdk"; - sdkType = if targetPlatform.isiPhoneSimulator then "Simulator" else "OS"; + platform = targetPlatform.xcodePlatform; version = targetPlatform.sdkVer; }; @@ -48,7 +48,10 @@ rec { mv cc-cflags.tmp $out/nix-support/cc-cflags echo "-target ${targetPlatform.config} -arch ${iosPlatformArch targetPlatform}" >> $out/nix-support/cc-cflags echo "-isystem ${sdk}/usr/include -isystem ${sdk}/usr/include/c++/4.2.1/ -stdlib=libstdc++" >> $out/nix-support/cc-cflags - echo "${if targetPlatform.isiPhoneSimulator then "-mios-simulator-version-min" else "-miphoneos-version-min"}=${minSdkVersion}" >> $out/nix-support/cc-cflags + '' + stdenv.lib.optionalString (sdk.platform == "iPhoneSimulator") '' + echo "-mios-simulator-version-min=${minSdkVersion}" >> $out/nix-support/cc-cflags + '' + stdenv.lib.optionalString (sdk.platform == "iPhoneOS") '' + echo "-miphoneos-version-min=${minSdkVersion}" >> $out/nix-support/cc-cflags ''; }) // { inherit sdk; @@ -60,7 +63,7 @@ rec { }; } '' if ! [ -d ${sdk} ]; then - echo "You must have version ${sdk.version} of the iPhone${sdk.sdkType} sdk installed at ${sdk}" >&2 + echo "You must have version ${sdk.version} of the ${sdk.platform} sdk installed at ${sdk}" >&2 exit 1 fi ln -s ${sdk}/usr $out diff --git a/pkgs/top-level/darwin-packages.nix b/pkgs/top-level/darwin-packages.nix index 03a32260710..047eab83bb4 100644 --- a/pkgs/top-level/darwin-packages.nix +++ b/pkgs/top-level/darwin-packages.nix @@ -44,7 +44,7 @@ in insert_dylib = callPackage ../os-specific/darwin/insert_dylib { }; - iosSdkPkgs = darwin.callPackage ../os-specific/darwin/ios-sdk-pkgs { + iosSdkPkgs = darwin.callPackage ../os-specific/darwin/xcode/sdk-pkgs.nix { buildIosSdk = buildPackages.darwin.iosSdkPkgs.sdk; targetIosSdkPkgs = targetPackages.darwin.iosSdkPkgs; xcode = darwin.xcode;