diff --git a/src/TulsiGenerator/Bazel/tulsi/tulsi_aspects.bzl b/src/TulsiGenerator/Bazel/tulsi/tulsi_aspects.bzl
index 9aea119..3f6a9ef 100644
--- a/src/TulsiGenerator/Bazel/tulsi/tulsi_aspects.bzl
+++ b/src/TulsiGenerator/Bazel/tulsi/tulsi_aspects.bzl
@@ -23,6 +23,7 @@
     "AppleBundleInfo",
     "AppleTestInfo",
     "IosExtensionBundleInfo",
+    "SwiftClangModuleInfo",
     "SwiftInfo",
 )
 load("@bazel_tools//tools/cpp:toolchain_utils.bzl", "find_cpp_toolchain")
@@ -597,14 +598,32 @@
             return swift_info.transitive_swiftmodules
     return depset()
 
-def _collect_module_maps(target):
+def _collect_module_maps(target, rule_attr):
     """Returns a depset of Clang module maps found on the given target."""
     if SwiftInfo in target and apple_common.Objc in target:
+        depsets = []
         objc = target[apple_common.Objc]
         if hasattr(objc, "module_map"):
-            return objc.module_map
+            depsets.append(objc.module_map)
+
+        for dep in _collect_dependencies(rule_attr, "deps"):
+            if SwiftClangModuleInfo in dep:
+                module_info = dep[SwiftClangModuleInfo]
+                if hasattr(module_info, "transitive_modulemaps"):
+                    depsets.append(module_info.transitive_modulemaps)
+        return depset(transitive = depsets)
     return depset()
 
+def _collect_objc_defines(objc_provider, rule_attr):
+    """Returns a depset of C-compiler defines."""
+    depsets = [objc_provider.define] if objc_provider else []
+    for dep in _collect_dependencies(rule_attr, "deps"):
+        if SwiftClangModuleInfo in dep:
+            module_info = dep[SwiftClangModuleInfo]
+            if hasattr(module_info, "transitive_defines"):
+                depsets.append(module_info.transitive_defines)
+    return depset(transitive = depsets)
+
 # TODO(b/64490743): Add these files to the Xcode project.
 def _collect_swift_header(target):
     """Returns a depset of Swift generated headers found on the given target."""
@@ -673,7 +692,7 @@
 
     # Collect ObjC module maps dependencies for Swift targets.
     objc_module_maps = depset(
-        _depset_to_file_metadata_list(_collect_module_maps(target)),
+        _depset_to_file_metadata_list(_collect_module_maps(target, rule_attr)),
     )
 
     # Collect the dependencies of this rule, dropping any .jar files (which may be
@@ -784,7 +803,7 @@
             _convert_outpath_to_symlink_path(x)
             for x in objc_provider.include
         ]
-        objc_defines = objc_provider.define.to_list()
+    objc_defines = _collect_objc_defines(objc_provider, rule_attr).to_list()
 
     platform_type, os_deployment_target = _get_deployment_info(target, ctx)
     non_arc_srcs = _collect_files(rule, "attr.non_arc_srcs")
@@ -1026,7 +1045,7 @@
 
     all_files_depsets.append(_collect_swift_header(target))
     all_files_depsets.append(_collect_swift_modules(target))
-    all_files_depsets.append(_collect_module_maps(target))
+    all_files_depsets.append(_collect_module_maps(target, rule_attr))
 
     source_files = [
         x
diff --git a/src/TulsiGenerator/Bazel/tulsi/tulsi_aspects_paths.bzl b/src/TulsiGenerator/Bazel/tulsi/tulsi_aspects_paths.bzl
index a79a7c5..706591f 100644
--- a/src/TulsiGenerator/Bazel/tulsi/tulsi_aspects_paths.bzl
+++ b/src/TulsiGenerator/Bazel/tulsi/tulsi_aspects_paths.bzl
@@ -28,6 +28,7 @@
 )
 load(
     "@build_bazel_rules_swift//swift:swift.bzl",
+    _SwiftClangModuleInfo = "SwiftClangModuleInfo",
     _SwiftInfo = "SwiftInfo",
 )
 
@@ -38,4 +39,6 @@
 
 IosExtensionBundleInfo = _IosExtensionBundleInfo
 
+SwiftClangModuleInfo = _SwiftClangModuleInfo
+
 SwiftInfo = _SwiftInfo
