diff options
author | 2016-04-27 17:31:01 +0000 | |
---|---|---|
committer | 2016-04-28 07:29:54 +0000 | |
commit | 36e4c80a6f7aaa15954dcf70ec8e1ace5e6961f4 (patch) | |
tree | b34396640b2699d389d9630c45bd7e13d4b1e4e7 /src/main/java/com/google | |
parent | 93fbc3e455d1a81abf6ba911550fc7954b1b7f68 (diff) |
Adds an "otherFlags" field to ObjcCommon.
Adds -fno-strict-overflow for compiling all J2ObjC generated sources.
RELNOTES: Fixes integer overflow in J2ObjC sources to be Java-compatible.
--
MOS_MIGRATED_REVID=120929114
Diffstat (limited to 'src/main/java/com/google')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java | 31 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java | 6 |
2 files changed, 33 insertions, 4 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 c2547836bc..1b84341fec 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 @@ -187,6 +187,16 @@ public final class CompilationSupport { } } + /** + * Iterable wrapper providing strong type safety for extra compile flags. + */ + static final class ExtraCompileArgs extends IterableWrapper<String> { + static final ExtraCompileArgs NONE = new ExtraCompileArgs(); + ExtraCompileArgs(String... args) { + super(args); + } + } + @VisibleForTesting static final String FILE_IN_SRCS_AND_HDRS_WARNING_FORMAT = "File '%s' is in both srcs and hdrs."; @@ -268,6 +278,19 @@ public final class CompilationSupport { * @return this compilation support */ CompilationSupport registerCompileAndArchiveActions(ObjcCommon common) { + return registerCompileAndArchiveActions(common, ExtraCompileArgs.NONE); + } + + /** + * Registers all actions necessary to compile this rule's sources and archive them. + * + * @param common common information about this rule and its dependencies + * @param extraCompileArgs args to be added to compile actions + * @return this compilation support + */ + CompilationSupport registerCompileAndArchiveActions( + ObjcCommon common, + ExtraCompileArgs extraCompileArgs) { if (common.getCompilationArtifacts().isPresent()) { registerGenerateModuleMapAction(common.getCompilationArtifacts()); Optional<CppModuleMap> moduleMap; @@ -279,6 +302,7 @@ public final class CompilationSupport { registerCompileAndArchiveActions( common.getCompilationArtifacts().get(), common.getObjcProvider(), + extraCompileArgs, moduleMap, buildConfiguration.isCodeCoverageEnabled()); } @@ -292,6 +316,7 @@ public final class CompilationSupport { private void registerCompileAndArchiveActions( CompilationArtifacts compilationArtifacts, ObjcProvider objcProvider, + ExtraCompileArgs extraCompileArgs, Optional<CppModuleMap> moduleMap, boolean isCodeCoverageEnabled) { ImmutableList.Builder<Artifact> objFiles = new ImmutableList.Builder<>(); @@ -307,7 +332,7 @@ public final class CompilationSupport { objcProvider, moduleMap, compilationArtifacts, - ImmutableList.of("-fobjc-arc"), + Iterables.concat(extraCompileArgs, ImmutableList.of("-fobjc-arc")), isCodeCoverageEnabled); } } @@ -320,12 +345,12 @@ public final class CompilationSupport { objcProvider, moduleMap, compilationArtifacts, - ImmutableList.of("-fno-objc-arc"), + Iterables.concat(extraCompileArgs, ImmutableList.of("-fno-objc-arc")), isCodeCoverageEnabled); } objFiles.addAll(compilationArtifacts.getPrecompiledSrcs()); - + if (compilationArtifacts.hasSwiftSources()) { registerSwiftModuleMergeAction(compilationArtifacts, objcProvider); } 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 5bce361311..198896ccb4 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 @@ -48,6 +48,7 @@ import com.google.devtools.build.lib.rules.java.JavaCompilationArgsProvider; import com.google.devtools.build.lib.rules.java.JavaHelper; import com.google.devtools.build.lib.rules.java.JavaSourceInfoProvider; import com.google.devtools.build.lib.rules.java.Jvm; +import com.google.devtools.build.lib.rules.objc.CompilationSupport.ExtraCompileArgs; import com.google.devtools.build.lib.rules.objc.J2ObjcSource.SourceType; import com.google.devtools.build.lib.util.FileType; import com.google.devtools.build.lib.vfs.PathFragment; @@ -62,6 +63,9 @@ public class J2ObjcAspect extends NativeAspectClass implements ConfiguredAspectF private final String toolsRepository; private final BazelJ2ObjcProtoAspect bazelJ2ObjcProtoAspect; + private static final ExtraCompileArgs EXTRA_COMPILE_ARGS = new ExtraCompileArgs( + "-fno-strict-overflow"); + public J2ObjcAspect(String toolsRepository, BazelJ2ObjcProtoAspect bazelJ2ObjcProtoAspect) { this.toolsRepository = toolsRepository; this.bazelJ2ObjcProtoAspect = bazelJ2ObjcProtoAspect; @@ -162,7 +166,7 @@ public class J2ObjcAspect extends NativeAspectClass implements ConfiguredAspectF DEPENDENT_ATTRIBUTES); new CompilationSupport(ruleContext) - .registerCompileAndArchiveActions(common) + .registerCompileAndArchiveActions(common, EXTRA_COMPILE_ARGS) .registerFullyLinkAction(common.getObjcProvider()); } else { common = common( |