diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/apple/AppleToolchain.java | 28 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java | 5 |
2 files changed, 29 insertions, 4 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/AppleToolchain.java b/src/main/java/com/google/devtools/build/lib/rules/apple/AppleToolchain.java index 19693a9973..89b04da680 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/apple/AppleToolchain.java +++ b/src/main/java/com/google/devtools/build/lib/rules/apple/AppleToolchain.java @@ -14,6 +14,7 @@ package com.google.devtools.build.lib.rules.apple; +import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Function; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables; @@ -29,6 +30,12 @@ public class AppleToolchain { private static final String DEVELOPER_DIR = "__BAZEL_XCODE_DEVELOPER_DIR__"; private static final String SDKROOT_DIR = "__BAZEL_XCODE_SDKROOT__"; + // These two paths are framework paths relative to SDKROOT. + @VisibleForTesting + public static final String DEVELOPER_FRAMEWORK_PATH = "/Developer/Library/Frameworks"; + @VisibleForTesting + public static final String SYSTEM_FRAMEWORK_PATH = "/System/Library/Frameworks"; + // There is a handy reference to many clang warning flags at // http://nshipster.com/clang-diagnostics/ // There is also a useful narrative for many Xcode settings at @@ -95,8 +102,25 @@ public class AppleToolchain { /** * Returns the SDK frameworks directory inside of Xcode for a given configuration. */ - public static String sdkDeveloperFrameworkDir() { - return sdkDir() + "/Developer/Library/Frameworks"; + public static String sdkFrameworkDir(Platform targetPlatform, + AppleConfiguration configuration) { + String relativePath; + switch (targetPlatform) { + case IOS_DEVICE: + case IOS_SIMULATOR: + if (configuration.getIosSdkVersion().compareTo(DottedVersion.fromString("9.0")) >= 0) { + relativePath = SYSTEM_FRAMEWORK_PATH; + } else { + relativePath = DEVELOPER_FRAMEWORK_PATH; + } + break; + case MACOSX: + relativePath = DEVELOPER_FRAMEWORK_PATH; + break; + default: + throw new IllegalArgumentException("Unhandled platform " + targetPlatform); + } + return sdkDir() + relativePath; } /** diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java index 40260085e1..b5f134b46f 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java @@ -1306,7 +1306,8 @@ public final class CompilationSupport { ObjcProvider provider, ObjcConfiguration objcConfiguration, AppleConfiguration appleConfiguration) { ImmutableList.Builder<String> builder = new ImmutableList.Builder<>(); - if (Platform.forIosArch(appleConfiguration.getIosCpu()) == Platform.IOS_SIMULATOR) { + Platform platform = Platform.forIosArch(appleConfiguration.getIosCpu()); + if (platform == Platform.IOS_SIMULATOR) { builder.add("-mios-simulator-version-min=" + objcConfiguration.getMinimumOs()); } else { builder.add("-miphoneos-version-min=" + objcConfiguration.getMinimumOs()); @@ -1320,7 +1321,7 @@ public final class CompilationSupport { .add("-arch", appleConfiguration.getIosCpu()) .add("-isysroot", AppleToolchain.sdkDir()) // TODO(bazel-team): Pass framework search paths to Xcodegen. - .add("-F", AppleToolchain.sdkDeveloperFrameworkDir()) + .add("-F", AppleToolchain.sdkFrameworkDir(platform, appleConfiguration)) // As of sdk8.1, XCTest is in a base Framework dir .add("-F", AppleToolchain.platformDeveloperFrameworkDir(appleConfiguration)) // Add custom (non-SDK) framework search paths. For each framework foo/bar.framework, |