diff options
author | Peter Schmitt <schmitt@google.com> | 2015-03-20 17:59:21 +0000 |
---|---|---|
committer | Damien Martin-Guillerez <dmarting@google.com> | 2015-03-23 11:55:43 +0000 |
commit | 5386fa1ef6585948b59daa8e7ab9698a844084c7 (patch) | |
tree | ac1af81a2a180c5f6307c9e96f8398d18c7a91b9 /src/objc_tools | |
parent | 84ec4bfb479abea111acd2343c2602a44c09b3e5 (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')
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(); } |