From 0b2add4e1e285036ed615b84b60e14e2272f0bea Mon Sep 17 00:00:00 2001 From: Dmitry Shevchenko Date: Wed, 23 Mar 2016 22:11:53 +0000 Subject: Pass -F flags to Swift compilation rules. -- MOS_MIGRATED_REVID=117974145 --- .../build/lib/rules/objc/CompilationSupport.java | 23 +++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) (limited to 'src/main/java/com/google/devtools/build/lib/rules') 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 dee283496d..d26304cdef 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 @@ -505,6 +505,8 @@ public final class CompilationSupport { commandLine.add("-import-underlying-module"); } + commandLine.add(commonFrameworkFlags(objcProvider, appleConfiguration)); + ruleContext.registerAction( ObjcRuleClasses.spawnXcrunActionBuilder(ruleContext) .setMnemonic("SwiftCompile") @@ -576,6 +578,8 @@ public final class CompilationSupport { commandLine.add("-I").add(moduleMapPath.getParentDirectory().toString()); } + commandLine.add(commonFrameworkFlags(objcProvider, appleConfiguration)); + ruleContext.registerAction(ObjcRuleClasses.spawnXcrunActionBuilder(ruleContext) .setMnemonic("SwiftModuleMerge") .setExecutable(xcrunwrapper(ruleContext)) @@ -1320,14 +1324,27 @@ public final class CompilationSupport { .add("-arch", appleConfiguration.getIosCpu()) .add("-isysroot", AppleToolchain.sdkDir()) // TODO(bazel-team): Pass framework search paths to Xcodegen. + .addAll(commonFrameworkFlags(provider, appleConfiguration)) + .build(); + } + + /** + * Returns a list of framework search path flags for clang/swift actions. + */ + private static Iterable commonFrameworkFlags( + ObjcProvider provider, AppleConfiguration appleConfiguration) { + Platform platform = Platform.forIosArch(appleConfiguration.getIosCpu()); + + return new ImmutableList.Builder() .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, // include "foo" as a search path. - .addAll(Interspersing.beforeEach( - "-F", - PathFragment.safePathStrings(uniqueParentDirectories(provider.get(FRAMEWORK_DIR))))) + .addAll( + Interspersing.beforeEach( + "-F", + PathFragment.safePathStrings(uniqueParentDirectories(provider.get(FRAMEWORK_DIR))))) .build(); } -- cgit v1.2.3