diff options
author | 2016-12-15 23:10:55 +0000 | |
---|---|---|
committer | 2016-12-16 15:35:45 +0000 | |
commit | cf1c437c03588b3271d3fd786982fa2e51cd866f (patch) | |
tree | fa9d0307f801103326ad511d3ae62213bf498c24 | |
parent | 2d87bf1937c81ef84358fd5f6a372875f6c6fabf (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.java | 4 | ||||
-rwxr-xr-x | src/test/shell/bazel/apple/bazel_apple_test.sh | 28 | ||||
-rw-r--r-- | tools/build_defs/apple/swift.bzl | 14 |
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): |