aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Dmitry Shevchenko <dmishe@google.com>2016-12-15 23:10:55 +0000
committerGravatar John Cater <jcater@google.com>2016-12-16 15:35:45 +0000
commitcf1c437c03588b3271d3fd786982fa2e51cd866f (patch)
treefa9d0307f801103326ad511d3ae62213bf498c24
parent2d87bf1937c81ef84358fd5f6a372875f6c6fabf (diff)
Expose apple_generate_dsym value to Skylark and use in swift_library
-- PiperOrigin-RevId: 142194378 MOS_MIGRATED_REVID=142194378
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java4
-rwxr-xr-xsrc/test/shell/bazel/apple/bazel_apple_test.sh28
-rw-r--r--tools/build_defs/apple/swift.bzl14
3 files changed, 43 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java
index 84fa4a522c..1beb64b7f1 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java
@@ -173,6 +173,10 @@ public class ObjcConfiguration extends BuildConfiguration.Fragment {
/**
* Returns whether dSYM generation is enabled.
*/
+ @SkylarkCallable(
+ name = "generate_dsym",
+ doc = "Whether to generate debug symbol(.dSYM) artifacts.",
+ structField = true)
public boolean generateDsym() {
return generateDsym;
}
diff --git a/src/test/shell/bazel/apple/bazel_apple_test.sh b/src/test/shell/bazel/apple/bazel_apple_test.sh
index 36d7413eaf..b1027c34cb 100755
--- a/src/test/shell/bazel/apple/bazel_apple_test.sh
+++ b/src/test/shell/bazel/apple/bazel_apple_test.sh
@@ -873,4 +873,32 @@ EOF
//ios:swift_lib >$TEST_log 2>&1 || fail "should build"
}
+function test_swift_dsym() {
+ rm -rf ios
+ mkdir -p ios
+
+ cat >ios/main.swift <<EOF
+import Foundation
+
+public class SwiftClass {
+ public func bar() -> String { return "foo" } }
+EOF
+
+cat >ios/BUILD <<EOF
+load("//tools/build_defs/apple:swift.bzl", "swift_library")
+
+swift_library(name = "swift_lib",
+ srcs = ["main.swift"])
+EOF
+
+ bazel build -c opt --apple_generate_dsym \
+ --verbose_failures --xcode_version=$XCODE_VERSION \
+ //ios:swift_lib >$TEST_log 2>&1 || fail "should build"
+
+ # Verify that debug info is present.
+ dwarfdump -R bazel-genfiles/ios/swift_lib/_objs/ios_swift_lib.a \
+ | grep -sq "__DWARF" \
+ || fail "should contain DWARF data"
+}
+
run_suite "apple_tests"
diff --git a/tools/build_defs/apple/swift.bzl b/tools/build_defs/apple/swift.bzl
index abee93da44..d45a447d82 100644
--- a/tools/build_defs/apple/swift.bzl
+++ b/tools/build_defs/apple/swift.bzl
@@ -47,12 +47,20 @@ def _swift_target(cpu, platform, sdk_version):
def _swift_compilation_mode_flags(ctx):
"""Returns additional swiftc flags for the current compilation mode."""
mode = ctx.var["COMPILATION_MODE"]
+
+ flags = []
if mode == "dbg":
- return ["-Onone", "-DDEBUG", "-g", "-enable-testing"]
+ flags += ["-Onone", "-DDEBUG", "-enable-testing"]
elif mode == "fastbuild":
- return ["-Onone", "-DDEBUG", "-enable-testing"]
+ flags += ["-Onone", "-DDEBUG", "-enable-testing"]
elif mode == "opt":
- return ["-O", "-DNDEBUG"]
+ flags += ["-O", "-DNDEBUG"]
+
+ if mode == "dbg" or (hasattr(ctx.fragments.objc, "generate_dsym") and
+ getattr(ctx.fragments.objc, "generate_dsym")):
+ flags.append("-g")
+
+ return flags
def _clang_compilation_mode_flags(ctx):