From 422c731fbefb098962813b3e0914a9192c72e549 Mon Sep 17 00:00:00 2001 From: Peter Schmitt Date: Tue, 31 Mar 2015 15:53:10 +0000 Subject: Always define OS_IOS in iOS builds. RELNOTES: Always define OS_IOS in iOS builds. -- MOS_MIGRATED_REVID=89969990 --- .../google/devtools/build/lib/rules/objc/IosSdkCommands.java | 12 ++++++++---- .../devtools/build/lib/rules/objc/ObjcActionsBuilder.java | 8 ++++---- .../google/devtools/build/lib/rules/objc/XcodeProvider.java | 2 +- 3 files changed, 13 insertions(+), 9 deletions(-) (limited to 'src/main/java/com/google/devtools') diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/IosSdkCommands.java b/src/main/java/com/google/devtools/build/lib/rules/objc/IosSdkCommands.java index dc9f938902..147a7773c1 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/IosSdkCommands.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/IosSdkCommands.java @@ -61,6 +61,8 @@ public class IosSdkCommands { .put("GCC_WARN_UNUSED_VARIABLE", "-Wunused-variable") .build(); + static final ImmutableList DEFAULT_COMPILER_FLAGS = ImmutableList.of("-DOS_IOS"); + static final ImmutableList DEFAULT_LINKER_FLAGS = ImmutableList.of("-ObjC"); private IosSdkCommands() { @@ -92,7 +94,7 @@ public class IosSdkCommands { return parents.build(); } - public static List commonLinkAndCompileArgsForClang( + public static List commonLinkAndCompileFlagsForClang( ObjcProvider provider, ObjcConfiguration configuration) { ImmutableList.Builder builder = new ImmutableList.Builder<>(); if (Platform.forArch(configuration.getIosCpu()) == Platform.SIMULATOR) { @@ -120,14 +122,16 @@ public class IosSdkCommands { .build(); } - public static Iterable compileArgsForClang(ObjcConfiguration configuration) { + public static Iterable compileFlagsForClang(ObjcConfiguration configuration) { return Iterables.concat( DEFAULT_WARNINGS.values(), - platformSpecificCompileArgsForClang(configuration) + platformSpecificCompileFlagsForClang(configuration), + DEFAULT_COMPILER_FLAGS ); } - private static List platformSpecificCompileArgsForClang(ObjcConfiguration configuration) { + private static List platformSpecificCompileFlagsForClang( + ObjcConfiguration configuration) { switch (Platform.forArch(configuration.getIosCpu())) { case DEVICE: return ImmutableList.of(); diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcActionsBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcActionsBuilder.java index 713e63319c..57244b2d1d 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcActionsBuilder.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcActionsBuilder.java @@ -122,8 +122,8 @@ final class ObjcActionsBuilder { commandLine.add("-stdlib=libc++"); } commandLine - .add(IosSdkCommands.compileArgsForClang(objcConfiguration)) - .add(IosSdkCommands.commonLinkAndCompileArgsForClang( + .add(IosSdkCommands.compileFlagsForClang(objcConfiguration)) + .add(IosSdkCommands.commonLinkAndCompileFlagsForClang( objcProvider, objcConfiguration)) .add(objcConfiguration.getCoptsForCompilationMode()) .addBeforeEachPath("-iquote", ObjcCommon.userHeaderSearchPaths(buildConfiguration)) @@ -280,7 +280,7 @@ final class ObjcActionsBuilder { * All framework names to pass to the linker using {@code -framework} flags. For a framework in * the directory foo/bar.framework, the name is "bar". Each framework is found without using the * full path by means of the framework search paths. The search paths are added by - * {@link IosSdkCommands#commonLinkAndCompileArgsForClang(ObjcProvider, ObjcConfiguration)}). + * {@link IosSdkCommands#commonLinkAndCompileFlagsForClang(ObjcProvider, ObjcConfiguration)}). * *

It's awful that we can't pass the full path to the framework and avoid framework search * paths, but this is imposed on us by clang. clang does not support passing the full path to the @@ -359,7 +359,7 @@ final class ObjcActionsBuilder { .add(objcProvider.is(USES_CPP) ? CLANG_PLUSPLUS.toString() : CLANG.toString()) .addAll(objcProvider.is(USES_CPP) ? ImmutableList.of("-stdlib=libc++") : ImmutableList.of()) - .addAll(IosSdkCommands.commonLinkAndCompileArgsForClang(objcProvider, objcConfiguration)) + .addAll(IosSdkCommands.commonLinkAndCompileFlagsForClang(objcProvider, objcConfiguration)) .add("-Xlinker", "-objc_abi_version") .add("-Xlinker", "2") .add("-fobjc-link-runtime") 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 07c61f2ed2..07f9885c51 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 @@ -32,7 +32,6 @@ import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.base.Splitter; import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableList.Builder; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import com.google.devtools.build.lib.actions.Artifact; @@ -396,6 +395,7 @@ public final class XcodeProvider implements TransitiveInfoProvider { .addAllHeaderSearchPath(headerSearchPaths) .addAllSupportFile(Artifact.toExecPaths(headers)) .addAllCopt(compilationModeCopts) + .addAllCopt(IosSdkCommands.DEFAULT_COMPILER_FLAGS) .addAllCopt(Interspersing.prependEach("-D", objcProvider.get(DEFINE))) .addAllCopt(copts) .addAllLinkopt( -- cgit v1.2.3