aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/XcodeProvider.java8
-rw-r--r--src/main/protobuf/xcodegen.proto8
-rw-r--r--src/objc_tools/xcodegen/java/com/google/devtools/build/xcode/xcodegen/XcodeprojGeneration.java14
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());