Add --swiftcopt support to swift_library

--
PiperOrigin-RevId: 144231300
MOS_MIGRATED_REVID=144231300
diff --git a/src/test/shell/bazel/apple/bazel_apple_test.sh b/src/test/shell/bazel/apple/bazel_apple_test.sh
index a83bbe3..94c4822 100755
--- a/src/test/shell/bazel/apple/bazel_apple_test.sh
+++ b/src/test/shell/bazel/apple/bazel_apple_test.sh
@@ -627,6 +627,10 @@
     #if !FLAG
     let x: String = 1 // Invalid statement, should throw compiler error when FLAG is not set
     #endif
+
+    #if !CMD_FLAG
+    let y: String = 1 // Invalid statement, should throw compiler error when CMD_FLAG is not set
+    #endif
   }
 }
 EOF
@@ -640,6 +644,7 @@
 EOF
 
   bazel build --verbose_failures --xcode_version=$XCODE_VERSION \
+      --swiftcopt=-DCMD_FLAG \
       //ios:swift_lib >$TEST_log 2>&1 || fail "should build"
 }
 
diff --git a/tools/build_defs/apple/swift.bzl b/tools/build_defs/apple/swift.bzl
index 60ed1bc..d5160f4 100644
--- a/tools/build_defs/apple/swift.bzl
+++ b/tools/build_defs/apple/swift.bzl
@@ -309,6 +309,11 @@
   args.extend(framework_args)
   args.extend(clang_args)
   args.extend(define_args)
+
+  # TODO(b/33692249): Remove conditional once bazel is released.
+  if hasattr(ctx.fragments, "swift"):
+    args.extend(ctx.fragments.swift.copts())
+
   args.extend(ctx.attr.copts)
 
   return args
@@ -459,7 +464,7 @@
 swift_library = rule(
     _swift_library_impl,
     attrs = SWIFT_LIBRARY_ATTRS,
-    fragments = ["apple", "objc"],
+    fragments = ["apple", "objc", "swift"],
     output_to_genfiles=True,
 )
 """