aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/objc_tools
diff options
context:
space:
mode:
authorGravatar Peter Schmitt <schmitt@google.com>2015-03-20 17:59:21 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2015-03-23 11:55:43 +0000
commit5386fa1ef6585948b59daa8e7ab9698a844084c7 (patch)
treeac1af81a2a180c5f6307c9e96f8398d18c7a91b9 /src/objc_tools
parent84ec4bfb479abea111acd2343c2602a44c09b3e5 (diff)
Remove common java code between objc tools and rules.
As we are releasing the tools somewhat independently of the rules these utility dependencies make life a lot harder. I'm sad about losing some of the enum type-safety but being able to treat the code independently is more than worth it. -- MOS_MIGRATED_REVID=89137624
Diffstat (limited to 'src/objc_tools')
-rw-r--r--src/objc_tools/bundlemerge/java/com/google/devtools/build/xcode/bundlemerge/BundleMerging.java3
-rw-r--r--src/objc_tools/plmerge/java/com/google/devtools/build/xcode/plmerge/PlistMerging.java28
-rw-r--r--src/objc_tools/xcodegen/java/com/google/devtools/build/xcode/xcodegen/XcodeprojGeneration.java8
3 files changed, 22 insertions, 17 deletions
diff --git a/src/objc_tools/bundlemerge/java/com/google/devtools/build/xcode/bundlemerge/BundleMerging.java b/src/objc_tools/bundlemerge/java/com/google/devtools/build/xcode/bundlemerge/BundleMerging.java
index 69c00d3f9c..3d3ceaaa44 100644
--- a/src/objc_tools/bundlemerge/java/com/google/devtools/build/xcode/bundlemerge/BundleMerging.java
+++ b/src/objc_tools/bundlemerge/java/com/google/devtools/build/xcode/bundlemerge/BundleMerging.java
@@ -27,7 +27,6 @@ import com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.Contr
import com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.MergeZip;
import com.google.devtools.build.xcode.bundlemerge.proto.BundleMergeProtos.VariableSubstitution;
import com.google.devtools.build.xcode.common.Platform;
-import com.google.devtools.build.xcode.common.TargetDeviceFamily;
import com.google.devtools.build.xcode.plmerge.KeysToRemoveIfEmptyString;
import com.google.devtools.build.xcode.plmerge.PlistMerging;
import com.google.devtools.build.xcode.zip.ZipFiles;
@@ -112,7 +111,7 @@ public final class BundleMerging {
PlistMerging plistMerging = PlistMerging.from(
sourcePlistFiles,
PlistMerging.automaticEntries(
- TargetDeviceFamily.fromBundleMergeNames(control.getTargetDeviceFamilyList()),
+ control.getTargetDeviceFamilyList(),
Platform.valueOf(control.getPlatform()),
control.getSdkVersion(),
control.getMinimumOsVersion()),
diff --git a/src/objc_tools/plmerge/java/com/google/devtools/build/xcode/plmerge/PlistMerging.java b/src/objc_tools/plmerge/java/com/google/devtools/build/xcode/plmerge/PlistMerging.java
index 6b7f441945..558cf466f6 100644
--- a/src/objc_tools/plmerge/java/com/google/devtools/build/xcode/plmerge/PlistMerging.java
+++ b/src/objc_tools/plmerge/java/com/google/devtools/build/xcode/plmerge/PlistMerging.java
@@ -17,13 +17,16 @@ package com.google.devtools.build.xcode.plmerge;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Optional;
import com.google.common.base.Preconditions;
+import com.google.common.collect.FluentIterable;
+import com.google.common.collect.ImmutableBiMap;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Maps;
+import com.google.common.collect.Ordering;
+import com.google.common.collect.Sets;
import com.google.common.io.ByteSource;
import com.google.devtools.build.xcode.common.Platform;
-import com.google.devtools.build.xcode.common.TargetDeviceFamily;
import com.google.devtools.build.xcode.util.Equaling;
-import com.google.devtools.build.xcode.util.Intersection;
import com.google.devtools.build.xcode.util.Mapping;
import com.google.devtools.build.xcode.util.Value;
@@ -46,6 +49,7 @@ import java.nio.file.Files;
import java.nio.file.Path;
import java.text.ParseException;
import java.util.Arrays;
+import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -58,6 +62,9 @@ import javax.xml.parsers.ParserConfigurationException;
public class PlistMerging extends Value<PlistMerging> {
private static final String BUNDLE_IDENTIFIER_PLIST_KEY = "CFBundleIdentifier";
+ private static final ImmutableBiMap<String, Integer> DEVICE_FAMILIES =
+ ImmutableBiMap.of("IPHONE", 1, "IPAD", 2);
+
/**
* Exception type thrown when validation of the plist file fails.
*/
@@ -145,14 +152,13 @@ public class PlistMerging extends Value<PlistMerging> {
* generated by Xcode automatically during the build process.
*/
public static Map<String, NSObject> automaticEntries(
- Iterable<TargetDeviceFamily> targetedDeviceFamily, Platform platform, String sdkVersion,
+ Collection<String> targetedDeviceFamily, Platform platform, String sdkVersion,
String minimumOsVersion) {
ImmutableMap.Builder<String, NSObject> result = new ImmutableMap.Builder<>();
- List<Integer> uiDeviceFamily =
- Mapping.of(
- TargetDeviceFamily.UI_DEVICE_FAMILY_VALUES,
- ImmutableSet.copyOf(targetedDeviceFamily))
- .get();
+ List<Integer> uiDeviceFamily = FluentIterable.from(targetedDeviceFamily)
+ .transform(Maps.asConverter(DEVICE_FAMILIES))
+ .toSortedList(Ordering.natural());
+
result.put("UIDeviceFamily", NSObject.wrap(uiDeviceFamily.toArray()));
result.put("DTPlatformName", NSObject.wrap(platform.getLowerCaseNameInPlist()));
result.put("DTSDKName", NSObject.wrap(platform.getLowerCaseNameInPlist() + sdkVersion));
@@ -183,10 +189,10 @@ public class PlistMerging extends Value<PlistMerging> {
throws IOException {
NSDictionary merged = PlistMerging.merge(sourceFiles);
- Set<String> conflictingEntries = Intersection.of(automaticEntries.keySet(), merged.keySet());
+ Set<String> conflictingEntries = Sets.intersection(automaticEntries.keySet(), merged.keySet());
Preconditions.checkArgument(conflictingEntries.isEmpty(),
- "The following plist entries are generated automatically, but are present in one of the "
- + "input lists: %s", conflictingEntries);
+ "The following plist entries are generated automatically, but are present in more than one "
+ + "of the input lists: %s", conflictingEntries);
merged.putAll(automaticEntries);
for (Map.Entry<String, NSObject> entry : merged.entrySet()) {
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 8d68e2ed55..7a12dfe607 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
@@ -16,7 +16,6 @@ package com.google.devtools.build.xcode.xcodegen;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkState;
-import static com.google.devtools.build.xcode.common.BuildOptionsUtil.DEFAULT_OPTIONS_NAME;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Joiner;
@@ -30,7 +29,6 @@ import com.google.common.collect.Lists;
import com.google.devtools.build.xcode.common.XcodeprojPath;
import com.google.devtools.build.xcode.util.Containing;
import com.google.devtools.build.xcode.util.Equaling;
-import com.google.devtools.build.xcode.util.Interspersing;
import com.google.devtools.build.xcode.util.Mapping;
import com.google.devtools.build.xcode.xcodegen.LibraryObjects.BuildPhaseBuilder;
import com.google.devtools.build.xcode.xcodegen.SourceFile.BuildType;
@@ -84,6 +82,7 @@ public class XcodeprojGeneration {
public static final String FILE_TYPE_WRAPPER_APPLICATION = "wrapper.application";
public static final String FILE_TYPE_WRAPPER_BUNDLE = "wrapper.cfbundle";
public static final String FILE_TYPE_APP_EXTENSION = "wrapper.app-extension";
+ private static final String DEFAULT_OPTIONS_NAME = "Debug";
@VisibleForTesting
static final String APP_NEEDS_SOURCE_ERROR =
@@ -349,8 +348,9 @@ public class XcodeprojGeneration {
ImmutableList.Builder<String> flags = new ImmutableList.Builder<>();
flags.addAll(givenFlags);
if (!Equaling.of(ProductType.STATIC_LIBRARY, productType(targetControl))) {
- flags.addAll(Interspersing.prependEach(
- "$(WORKSPACE_ROOT)/", targetControl.getImportedLibraryList()));
+ for (String importedLibrary : targetControl.getImportedLibraryList()) {
+ flags.add("$(WORKSPACE_ROOT)/" + importedLibrary);
+ }
}
return flags.build();
}