diff options
3 files changed, 22 insertions, 8 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/XcodeProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/XcodeProvider.java index 4dda17938a..10fd279e68 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/XcodeProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/XcodeProvider.java @@ -19,6 +19,7 @@ import static com.google.devtools.build.lib.rules.objc.ObjcProvider.CC_LIBRARY; import static com.google.devtools.build.lib.rules.objc.ObjcProvider.DEFINE; import static com.google.devtools.build.lib.rules.objc.ObjcProvider.FORCE_LOAD_FOR_XCODEGEN; import static com.google.devtools.build.lib.rules.objc.ObjcProvider.FRAMEWORK_DIR; +import static com.google.devtools.build.lib.rules.objc.ObjcProvider.FRAMEWORK_SEARCH_PATH_ONLY; import static com.google.devtools.build.lib.rules.objc.ObjcProvider.GENERAL_RESOURCE_DIR; import static com.google.devtools.build.lib.rules.objc.ObjcProvider.GENERAL_RESOURCE_FILE; import static com.google.devtools.build.lib.rules.objc.ObjcProvider.IMPORTED_LIBRARY; @@ -581,9 +582,12 @@ public final class XcodeProvider implements TransitiveInfoProvider { .addAllBuildSetting(AppleToolchain.defaultWarningsForXcode()) .addAllSdkFramework(SdkFramework.names(objcProvider.get(SDK_FRAMEWORK))) .addAllFramework(PathFragment.safePathStrings(objcProvider.get(FRAMEWORK_DIR))) + .addAllFrameworkSearchPathOnly( + PathFragment.safePathStrings(objcProvider.get(FRAMEWORK_SEARCH_PATH_ONLY))) .addAllXcassetsDir(PathFragment.safePathStrings(objcProvider.get(XCASSETS_DIR))) - .addAllXcdatamodel(PathFragment.safePathStrings( - Xcdatamodels.datamodelDirs(objcProvider.get(XCDATAMODEL)))) + .addAllXcdatamodel( + PathFragment.safePathStrings( + Xcdatamodels.datamodelDirs(objcProvider.get(XCDATAMODEL)))) .addAllBundleImport(PathFragment.safePathStrings(objcProvider.get(BUNDLE_IMPORT_DIR))) .addAllSdkDylib(objcProvider.get(SDK_DYLIB)) .addAllGeneralResourceFile( diff --git a/src/main/protobuf/xcodegen.proto b/src/main/protobuf/xcodegen.proto index 56a1769d62..0349eb6649 100644 --- a/src/main/protobuf/xcodegen.proto +++ b/src/main/protobuf/xcodegen.proto @@ -55,7 +55,7 @@ message DependencyControl { } // Contains information specific to a single target in the project file. -// Next ID: 23 +// Next ID: 24 message TargetControl { // A short name for the target that need not be unique. For instance, for // binary targets this corresponds to the product name. @@ -120,6 +120,12 @@ message TargetControl { // framework required by the targets in the transitive dependency tree. repeated string framework = 21; + // Paths to non-SDK frameworks relative to the same path as every other path + // in the control file. These frameworks will be added to framework search + // paths for the target (with -F) but will not actually be linked (that is, + // there will be no -framework). + repeated string framework_search_path_only = 23; + // Path to all .xcdatamodel directories required. All directories inside // a .xcdatamodeld directory are grouped into XCVersionGroups by the path of // the .xcdatamodeld directory. diff --git a/src/objc_tools/xcodegen/java/com/google/devtools/build/xcode/xcodegen/XcodeprojGeneration.java b/src/objc_tools/xcodegen/java/com/google/devtools/build/xcode/xcodegen/XcodeprojGeneration.java index f92efd48ce..c3f70725e4 100644 --- a/src/objc_tools/xcodegen/java/com/google/devtools/build/xcode/xcodegen/XcodeprojGeneration.java +++ b/src/objc_tools/xcodegen/java/com/google/devtools/build/xcode/xcodegen/XcodeprojGeneration.java @@ -500,11 +500,15 @@ public class XcodeprojGeneration { targetBuildConfigMap.put("USER_HEADER_SEARCH_PATHS", headerSearchPaths( plus(targetControl.getUserHeaderSearchPathList(), "$(WORKSPACE_ROOT)"))); - targetBuildConfigMap.put("HEADER_SEARCH_PATHS", - headerSearchPaths( - plus(targetControl.getHeaderSearchPathList(), "$(inherited)"))); - targetBuildConfigMap.put("FRAMEWORK_SEARCH_PATHS", - frameworkSearchPaths(targetControl.getFrameworkList())); + targetBuildConfigMap.put( + "HEADER_SEARCH_PATHS", + headerSearchPaths(plus(targetControl.getHeaderSearchPathList(), "$(inherited)"))); + targetBuildConfigMap.put( + "FRAMEWORK_SEARCH_PATHS", + frameworkSearchPaths( + Iterables.concat( + targetControl.getFrameworkList(), + targetControl.getFrameworkSearchPathOnlyList()))); targetBuildConfigMap.put("WORKSPACE_ROOT", workspaceRoot.toString()); |