diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/objc')
3 files changed, 46 insertions, 35 deletions
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 39ed3e564c..81126eab69 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 @@ -34,7 +34,6 @@ import static java.nio.charset.StandardCharsets.ISO_8859_1; import static java.util.stream.Collectors.toCollection; import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Joiner; import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.base.Predicate; @@ -1099,25 +1098,34 @@ public abstract class CompilationSupport { .getPrerequisite("$dummy_lib", Mode.TARGET, ObjcProvider.class) .get(LIBRARY)); - CustomCommandLine commandLine = + CustomCommandLine.Builder commandLineBuilder = CustomCommandLine.builder() .addExecPath("--input_archive", j2objcArchive) .addExecPath("--output_archive", prunedJ2ObjcArchive) .addExecPath("--dummy_archive", dummyArchive) - .addExecPath("--xcrunwrapper", xcrunwrapper(ruleContext).getExecutable()) - .addJoinExecPaths("--dependency_mapping_files", ",", j2ObjcDependencyMappingFiles) - .addJoinExecPaths("--header_mapping_files", ",", j2ObjcHeaderMappingFiles) - .addJoinExecPaths( - "--archive_source_mapping_files", ",", j2ObjcArchiveSourceMappingFiles) - .add("--entry_classes") - .add(Joiner.on(",").join(entryClasses)) - .build(); + .addExecPath("--xcrunwrapper", xcrunwrapper(ruleContext).getExecutable()); + if (!j2ObjcDependencyMappingFiles.isEmpty()) { + commandLineBuilder + .add("--dependency_mapping_files") + .addJoinExecPaths(",", j2ObjcDependencyMappingFiles); + } + if (!j2ObjcHeaderMappingFiles.isEmpty()) { + commandLineBuilder + .add("--header_mapping_files") + .addJoinExecPaths(",", j2ObjcHeaderMappingFiles); + } + if (!j2ObjcArchiveSourceMappingFiles.isEmpty()) { + commandLineBuilder + .add("--archive_source_mapping_files") + .addJoinExecPaths(",", j2ObjcArchiveSourceMappingFiles); + } + commandLineBuilder.add("--entry_classes").addJoinStrings(",", entryClasses); ruleContext.registerAction( new ParameterFileWriteAction( ruleContext.getActionOwner(), paramFile, - commandLine, + commandLineBuilder.build(), ParameterFile.ParameterFileType.UNQUOTED, ISO_8859_1)); ruleContext.registerAction( @@ -1139,7 +1147,7 @@ public abstract class CompilationSupport { .build(ruleContext)); } } - + /** Returns archives arising from j2objc transpilation after dead code removal. */ protected Iterable<Artifact> computeAndStripPrunedJ2ObjcArchives( J2ObjcEntryClassProvider j2ObjcEntryClassProvider, @@ -1421,9 +1429,7 @@ public abstract class CompilationSupport { .add(appleConfiguration.getXcodeVersion().toStringWithMinimumComponents(2)) .add("--"); for (ObjcHeaderThinningInfo info : infos) { - cmdLine.addJoinPaths( - ":", - Lists.newArrayList(info.sourceFile.getExecPath(), info.headersListFile.getExecPath())); + cmdLine.addJoinExecPaths(":", ImmutableList.of(info.sourceFile, info.headersListFile)); builder.addInput(info.sourceFile).addOutput(info.headersListFile); } ruleContext.registerAction( diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java index 60a24514e0..f2cf27fe0b 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java @@ -492,8 +492,10 @@ public class J2ObjcAspect extends NativeAspectClass implements ConfiguredAspectF ImmutableList.Builder<Artifact> sourceJarOutputFiles = ImmutableList.builder(); if (!Iterables.isEmpty(sourceJars)) { sourceJarOutputFiles.addAll(sourceJarOutputs(ruleContext)); - argBuilder.addJoinExecPaths("--src_jars", ",", sourceJars); - argBuilder.add(sourceJarFlags(ruleContext)); + argBuilder + .add("--src_jars") + .addJoinExecPaths(",", sourceJars) + .add(sourceJarFlags(ruleContext)); } Iterable<String> translationFlags = ruleContext @@ -504,7 +506,7 @@ public class J2ObjcAspect extends NativeAspectClass implements ConfiguredAspectF NestedSet<Artifact> depsHeaderMappingFiles = depJ2ObjcMappingFileProvider.getHeaderMappingFiles(); if (!depsHeaderMappingFiles.isEmpty()) { - argBuilder.addJoinExecPaths("--header-mapping", ",", depsHeaderMappingFiles); + argBuilder.add("--header-mapping").addJoinExecPaths(",", depsHeaderMappingFiles); } boolean experimentalJ2ObjcHeaderMap = @@ -516,7 +518,7 @@ public class J2ObjcAspect extends NativeAspectClass implements ConfiguredAspectF NestedSet<Artifact> depsClassMappingFiles = depJ2ObjcMappingFileProvider.getClassMappingFiles(); if (!depsClassMappingFiles.isEmpty()) { - argBuilder.addJoinExecPaths("--mapping", ",", depsClassMappingFiles); + argBuilder.add("--mapping").addJoinExecPaths(",", depsClassMappingFiles); } Artifact archiveSourceMappingFile = j2ObjcOutputArchiveSourceMappingFile(ruleContext); @@ -538,7 +540,7 @@ public class J2ObjcAspect extends NativeAspectClass implements ConfiguredAspectF NestedSet<Artifact> compileTimeJars = compArgsProvider.getRecursiveJavaCompilationArgs().getCompileTimeJars(); if (!compileTimeJars.isEmpty()) { - argBuilder.addJoinExecPaths("-classpath", ":", compileTimeJars); + argBuilder.add("-classpath").addJoinExecPaths(":", compileTimeJars); } argBuilder.addExecPaths(sources); @@ -584,10 +586,10 @@ public class J2ObjcAspect extends NativeAspectClass implements ConfiguredAspectF if (experimentalJ2ObjcHeaderMap) { CustomCommandLine.Builder headerMapCommandLine = CustomCommandLine.builder(); if (!Iterables.isEmpty(sources)) { - headerMapCommandLine.addJoinExecPaths("--source_files", ",", sources); + headerMapCommandLine.add("--source_files").addJoinExecPaths(",", sources); } if (!Iterables.isEmpty(sourceJars)) { - headerMapCommandLine.addJoinExecPaths("--source_jars", ",", sourceJars); + headerMapCommandLine.add("--source_jars").addJoinExecPaths(",", sourceJars); } headerMapCommandLine.addExecPath("--output_mapping_file", outputHeaderMappingFile); ruleContext.registerAction(new SpawnAction.Builder() diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/LipoSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/LipoSupport.java index 41487ecc43..bad646175a 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/LipoSupport.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/LipoSupport.java @@ -29,7 +29,7 @@ import com.google.devtools.build.lib.rules.apple.ApplePlatform; */ public class LipoSupport { private final RuleContext ruleContext; - + public LipoSupport(RuleContext ruleContext) { this.ruleContext = ruleContext; } @@ -46,18 +46,21 @@ public class LipoSupport { public LipoSupport registerCombineArchitecturesAction( NestedSet<Artifact> inputBinaries, Artifact outputBinary, ApplePlatform platform) { if (inputBinaries.toList().size() > 1) { - ruleContext.registerAction(ObjcRuleClasses.spawnAppleEnvActionBuilder( - ruleContext.getFragment(AppleConfiguration.class), platform) - .setMnemonic("ObjcCombiningArchitectures") - .addTransitiveInputs(inputBinaries) - .addOutput(outputBinary) - .setExecutable(CompilationSupport.xcrunwrapper(ruleContext)) - .setCommandLine(CustomCommandLine.builder() - .add(ObjcRuleClasses.LIPO) - .addExecPaths("-create", inputBinaries) - .addExecPath("-o", outputBinary) - .build()) - .build(ruleContext)); + ruleContext.registerAction( + ObjcRuleClasses.spawnAppleEnvActionBuilder( + ruleContext.getFragment(AppleConfiguration.class), platform) + .setMnemonic("ObjcCombiningArchitectures") + .addTransitiveInputs(inputBinaries) + .addOutput(outputBinary) + .setExecutable(CompilationSupport.xcrunwrapper(ruleContext)) + .setCommandLine( + CustomCommandLine.builder() + .add(ObjcRuleClasses.LIPO) + .add("-create") + .addExecPaths(inputBinaries) + .addExecPath("-o", outputBinary) + .build()) + .build(ruleContext)); } else { ruleContext.registerAction(new SymlinkAction( ruleContext.getActionOwner(), |