diff --git a/src/TulsiGenerator/Bazel/tulsi/tulsi_aspects.bzl b/src/TulsiGenerator/Bazel/tulsi/tulsi_aspects.bzl
index c532e96..04c0e3f 100644
--- a/src/TulsiGenerator/Bazel/tulsi/tulsi_aspects.bzl
+++ b/src/TulsiGenerator/Bazel/tulsi/tulsi_aspects.bzl
@@ -509,6 +509,7 @@
 
   tulsi_info_files = depset()
   transitive_attributes = dict()
+  transitive_deps_artifacts = depset()
   for attr_name in _TULSI_COMPILE_DEPS:
     deps = _getattr_as_list(rule_attr, attr_name)
     for dep in deps:
@@ -516,6 +517,10 @@
         tulsi_info_files += dep.tulsi_info_files
       if hasattr(dep, 'transitive_attributes'):
         transitive_attributes += dep.transitive_attributes
+      if getattr(dep, 'artifacts', None):
+        transitive_deps_artifacts += dep.artifacts
+      if hasattr(dep, 'transitive_deps_artifacts'):
+        transitive_deps_artifacts += dep.transitive_deps_artifacts
 
   artifacts = _get_opt_attr(target, 'files')
   if artifacts:
@@ -630,6 +635,7 @@
 
   info = _struct_omitting_none(
       artifacts=artifacts,
+      transitive_deps_artifacts=transitive_deps_artifacts.to_list(),
       attr=_struct_omitting_none(**all_attributes),
       build_file=ctx.build_file_path,
       bundle_id=bundle_id,
@@ -661,6 +667,8 @@
   if infoplist:
     tulsi_info_files += [infoplist]
 
+  artifacts_depset = depset(artifacts) if artifacts else depset()
+
   return struct(
       # Matches the --output_groups on the bazel commandline.
       output_groups={
@@ -675,6 +683,10 @@
       # Transitive info that should be applied to every rule that depends on
       # this rule.
       transitive_attributes=transitive_attributes,
+      # Artifacts from this rule.
+      artifacts=artifacts_depset,
+      # Artifacts from the transitive deps of this rule.
+      transitive_deps_artifacts=transitive_deps_artifacts,
   )
 
 
diff --git a/src/TulsiGenerator/BazelAspectInfoExtractor.swift b/src/TulsiGenerator/BazelAspectInfoExtractor.swift
index c4a7bbf..dfb2017 100644
--- a/src/TulsiGenerator/BazelAspectInfoExtractor.swift
+++ b/src/TulsiGenerator/BazelAspectInfoExtractor.swift
@@ -296,6 +296,7 @@
       }
 
       let artifacts = MakeBazelFileInfos("artifacts")
+      let transitiveDepsArtifacts = MakeBazelFileInfos("transitive_deps_artifacts")
       var sources = MakeBazelFileInfos("srcs")
 
       // Appends BazelFileInfo objects to the given array for any info dictionaries representing
@@ -382,6 +383,7 @@
                                 dependencies: dependencies,
                                 frameworkImports: frameworkImports,
                                 secondaryArtifacts: secondaryArtifacts,
+                                transitiveDepsArtifacts: Set(transitiveDepsArtifacts),
                                 extensions: extensions,
                                 bundleID: bundleID,
                                 bundleName: bundleName,
diff --git a/src/TulsiGenerator/PBXTargetGenerator.swift b/src/TulsiGenerator/PBXTargetGenerator.swift
index db571f2..6fbcfd6 100644
--- a/src/TulsiGenerator/PBXTargetGenerator.swift
+++ b/src/TulsiGenerator/PBXTargetGenerator.swift
@@ -75,10 +75,13 @@
   func generateFileReferencesForFilePaths(_ paths: [String], pathFilters: Set<String>?)
 
   /// Registers the given Bazel rule and its transitive dependencies for inclusion by the Xcode
-  /// indexer, adding source files whose directories are present in pathFilters.
-  func registerRuleEntryForIndexer(_ ruleEntries: RuleEntry,
+  /// indexer, adding source files whose directories are present in pathFilters. The rule will
+  /// only be processed if it hasn't already (and therefore isn't in processedEntries).
+  /// - processedEntries: Map of RuleEntry to cumulative preprocessor framework search paths.
+  func registerRuleEntryForIndexer(_ ruleEntry: RuleEntry,
                                    ruleEntryMap: RuleEntryMap,
-                                   pathFilters: Set<String>)
+                                   pathFilters: Set<String>,
+                                   processedEntries: inout [RuleEntry: (NSOrderedSet)])
 
   /// Generates indexer targets for rules that were previously registered through
   /// registerRuleEntryForIndexer. This method may only be called once, after all rule entries have
@@ -448,9 +451,14 @@
     }
   }
 
+  /// Registers the given Bazel rule and its transitive dependencies for inclusion by the Xcode
+  /// indexer, adding source files whose directories are present in pathFilters. The rule will
+  /// only be processed if it hasn't already (and therefore isn't in processedEntries).
+  /// - processedEntries: Map of RuleEntry to cumulative preprocessor framework search paths.
   func registerRuleEntryForIndexer(_ ruleEntry: RuleEntry,
                                    ruleEntryMap: RuleEntryMap,
-                                   pathFilters: Set<String>) {
+                                   pathFilters: Set<String>,
+                                   processedEntries: inout [RuleEntry: (NSOrderedSet)]) {
     let includePathInProject = pathFilterFunc(pathFilters)
     func includeFileInProject(_ info: BazelFileInfo) -> Bool {
       return includePathInProject(info.fullPath)
@@ -468,10 +476,8 @@
       project.getOrCreateGroupsAndFileReferencesForPaths([buildFilePath])
     }
 
-    // Map of build label to cumulative preprocessor framework search paths.
     // TODO(b/63628175): Clean this nested method to also retrieve framework_dir and framework_file
     // from the ObjcProvider, for both static and dynamic frameworks.
-    var processedEntries = [RuleEntry: (NSOrderedSet)]()
     @discardableResult
     func generateIndexerTargetGraphForRuleEntry(_ ruleEntry: RuleEntry) -> (NSOrderedSet) {
       if let data = processedEntries[ruleEntry] {
@@ -797,12 +803,12 @@
       }
 
       switch entry.pbxTargetType {
-        case .Watch2App?:
-          watchAppTargets[name] = (target, entry)
-        case .Watch2Extension?:
-          watchExtensionsByEntry[entry] = target
-        default:
-          break
+      case .Watch2App?:
+        watchAppTargets[name] = (target, entry)
+      case .Watch2Extension?:
+        watchExtensionsByEntry[entry] = target
+      default:
+        break
       }
     }
 
@@ -1556,15 +1562,14 @@
     // removed, but requires changes to LLDB.
     let dSYMEnabled = entry.attributes[.has_swift_dependency] as? Bool ?? false
     buildSettings["TULSI_USE_DSYM"] = dSYMEnabled ? "YES" : "NO"
-    let intermediateArtifacts: [String]
+    let transitiveDepsArtifacts: [String]
     if !dSYMEnabled {
       // For targets that will not generate dSYMs, the set of intermediate libraries generated for
       // dependencies is provided so that downstream utilities may locate them (e.g., to patch DWARF
       // symbols).
-      intermediateArtifacts =
-          entry.discoverIntermediateArtifacts(ruleEntryMap).flatMap({ $0.fullPath }).sorted()
+      transitiveDepsArtifacts = entry.transitiveDepsArtifacts.flatMap({ $0.fullPath }).sorted()
     } else {
-      intermediateArtifacts = []
+      transitiveDepsArtifacts = []
     }
 
     // Disable Xcode's attempts at generating dSYM bundles as it conflicts with the operation of the
@@ -1589,7 +1594,7 @@
                                 first: true)
     }
 
-    return (target, intermediateArtifacts)
+    return (target, transitiveDepsArtifacts)
   }
 
   private func createGenerateSwiftDummyFilesTestBuildPhase() -> PBXShellScriptBuildPhase {
diff --git a/src/TulsiGenerator/RuleEntry.swift b/src/TulsiGenerator/RuleEntry.swift
index ae7fd4e..2166658 100644
--- a/src/TulsiGenerator/RuleEntry.swift
+++ b/src/TulsiGenerator/RuleEntry.swift
@@ -223,6 +223,9 @@
   /// List of implicit artifacts that are generated by this rule.
   public let secondaryArtifacts: [BazelFileInfo]
 
+  /// Transitive list of artifacts produced by the dependencies of this RuleEntry.
+  public let transitiveDepsArtifacts: Set<BazelFileInfo>
+
   /// The Swift language version used by this target.
   public let swiftLanguageVersion: String?
 
@@ -247,10 +250,6 @@
   // of the aspect.
   public var weakDependencies = Set<BuildLabel>()
 
-  /// Transitive set of artifacts produced by the dependencies of this RuleEntry. Note that this
-  /// must be populated via the discoverIntermediateArtifacts method.
-  private(set) public var intermediateArtifacts: Set<BazelFileInfo>? = nil
-
   /// The BUILD file that this rule was defined in.
   public let buildFilePath: String?
 
@@ -327,6 +326,7 @@
        dependencies: Set<String> = Set(),
        frameworkImports: [BazelFileInfo] = [],
        secondaryArtifacts: [BazelFileInfo] = [],
+       transitiveDepsArtifacts: Set<BazelFileInfo> = Set(),
        weakDependencies: Set<BuildLabel>? = nil,
        extensions: Set<BuildLabel>? = nil,
        bundleID: String? = nil,
@@ -366,6 +366,7 @@
     self.dependencies = dependencies
     self.frameworkImports = frameworkImports
     self.secondaryArtifacts = secondaryArtifacts
+    self.transitiveDepsArtifacts = transitiveDepsArtifacts
     if let weakDependencies = weakDependencies {
       self.weakDependencies = weakDependencies
     }
@@ -411,6 +412,7 @@
                    dependencies: Set<String> = Set(),
                    frameworkImports: [BazelFileInfo] = [],
                    secondaryArtifacts: [BazelFileInfo] = [],
+                   transitiveDepsArtifacts: Set<BazelFileInfo> = Set(),
                    weakDependencies: Set<BuildLabel>? = nil,
                    extensions: Set<BuildLabel>? = nil,
                    bundleID: String? = nil,
@@ -435,6 +437,7 @@
               dependencies: dependencies,
               frameworkImports: frameworkImports,
               secondaryArtifacts: secondaryArtifacts,
+              transitiveDepsArtifacts: transitiveDepsArtifacts,
               weakDependencies: weakDependencies,
               extensions: extensions,
               bundleID: bundleID,
@@ -452,26 +455,6 @@
               extensionType: extensionType)
   }
 
-  public func discoverIntermediateArtifacts(_ ruleEntryMap: RuleEntryMap) -> Set<BazelFileInfo> {
-    if intermediateArtifacts != nil { return intermediateArtifacts! }
-
-    var collectedArtifacts = Set<BazelFileInfo>()
-    for dep in dependencies {
-      guard let dependentEntry = ruleEntryMap.ruleEntry(buildLabel: BuildLabel(dep), depender: self) else {
-        // TODO(abaire): Consider making this a standard Tulsi warning.
-        // In theory it shouldn't happen and the unknown dep should be tracked elsewhere.
-        print("Tulsi rule '\(label.value)' - Ignoring unknown dependency '\(dep)'")
-        continue
-      }
-
-      collectedArtifacts.formUnion(dependentEntry.artifacts)
-      collectedArtifacts.formUnion(dependentEntry.discoverIntermediateArtifacts(ruleEntryMap))
-    }
-
-    intermediateArtifacts = collectedArtifacts
-    return intermediateArtifacts!
-  }
-
   // MARK: Private methods
 
   private func parseFileDescriptionListAttribute(_ attribute: RuleEntry.Attribute) -> [BazelFileInfo]? {
diff --git a/src/TulsiGenerator/XcodeProjectGenerator.swift b/src/TulsiGenerator/XcodeProjectGenerator.swift
index 28ddcb2..5640f38 100644
--- a/src/TulsiGenerator/XcodeProjectGenerator.swift
+++ b/src/TulsiGenerator/XcodeProjectGenerator.swift
@@ -350,6 +350,10 @@
     }
 
     profileAction("gathering_sources_for_indexers") {
+      // Map from RuleEntry to cumulative preprocessor framework search paths.
+      // This is used to propagate framework search paths up the graph while also making sure that
+      // each RuleEntry is only registered once.
+      var processedEntries = [RuleEntry: (NSOrderedSet)]()
       let progressNotifier = ProgressNotifier(name: GatheringIndexerSources,
                                               maxValue: expandedTargetLabels.count)
       for label in expandedTargetLabels {
@@ -370,7 +374,8 @@
           autoreleasepool {
             generator.registerRuleEntryForIndexer(ruleEntry,
                                                   ruleEntryMap: ruleEntryMap,
-                                                  pathFilters: config.pathFilters)
+                                                  pathFilters: config.pathFilters,
+                                                  processedEntries: &processedEntries)
           }
         }
       }
diff --git a/src/TulsiGeneratorTests/PBXTargetGeneratorTests.swift b/src/TulsiGeneratorTests/PBXTargetGeneratorTests.swift
index 431bacd..f3f7f42 100644
--- a/src/TulsiGeneratorTests/PBXTargetGeneratorTests.swift
+++ b/src/TulsiGeneratorTests/PBXTargetGeneratorTests.swift
@@ -2105,9 +2105,11 @@
 
   func testGenerateIndexerWithNoSources() {
     let ruleEntry = makeTestRuleEntry("test/app:TestApp", type: "ios_application")
+    var proccessedEntries = [RuleEntry: (NSOrderedSet)]()
     targetGenerator.registerRuleEntryForIndexer(ruleEntry,
                                                 ruleEntryMap: RuleEntryMap(),
-                                                pathFilters: pathFilters)
+                                                pathFilters: pathFilters,
+                                                processedEntries: &proccessedEntries)
     targetGenerator.generateIndexerTargets()
     let targets = project.targetByName
     XCTAssert(targets.isEmpty)
@@ -2118,11 +2120,13 @@
     let ruleEntry = makeTestRuleEntry(buildLabel,
                                       type: "ios_application",
                                       sourceFiles: sourceFileNames)
+    var proccessedEntries = [RuleEntry: (NSOrderedSet)]()
     let indexerTargetName = String(format: "_idx_TestApp_%08X_ios_min9.0", buildLabel.hashValue)
 
     targetGenerator.registerRuleEntryForIndexer(ruleEntry,
                                                 ruleEntryMap: RuleEntryMap(),
-                                                pathFilters: pathFilters)
+                                                pathFilters: pathFilters,
+                                                processedEntries: &proccessedEntries)
     targetGenerator.generateIndexerTargets()
 
     let targets = project.targetByName
@@ -2136,11 +2140,13 @@
                                       type: "ios_application",
                                       attributes: ["pch": ["path": pchFile.path!, "src": true] as AnyObject],
                                       sourceFiles: sourceFileNames)
+    var proccessedEntries = [RuleEntry: (NSOrderedSet)]()
     let indexerTargetName = String(format: "_idx_TestApp_%08X_ios_min9.0", buildLabel.hashValue)
 
     targetGenerator.registerRuleEntryForIndexer(ruleEntry,
                                                 ruleEntryMap: RuleEntryMap(),
-                                                pathFilters: pathFilters)
+                                                pathFilters: pathFilters,
+                                                processedEntries: &proccessedEntries)
     targetGenerator.generateIndexerTargets()
 
     let targets = project.targetByName
@@ -2157,11 +2163,13 @@
                                       type: "ios_binary",
                                       attributes: ruleAttributes as [String : AnyObject],
                                       sourceFiles: sourceFileNames)
+    var proccessedEntries = [RuleEntry: (NSOrderedSet)]()
     let indexerTargetName = String(format: "_idx_TestApp_%08X_ios_min9.0", buildLabel.hashValue)
 
     targetGenerator.registerRuleEntryForIndexer(ruleEntry,
                                                 ruleEntryMap: RuleEntryMap(),
-                                                pathFilters: pathFilters)
+                                                pathFilters: pathFilters,
+                                                processedEntries: &proccessedEntries)
     targetGenerator.generateIndexerTargets()
 
     let targets = project.targetByName
@@ -2184,11 +2192,13 @@
                                       type: "ios_binary",
                                       attributes: ruleAttributes as [String : AnyObject],
                                       sourceFiles: sourceFileNames)
+    var proccessedEntries = [RuleEntry: (NSOrderedSet)]()
     let indexerTargetName = String(format: "_idx_TestApp_%08X_ios_min9.0", buildLabel.hashValue)
 
     targetGenerator.registerRuleEntryForIndexer(ruleEntry,
                                                 ruleEntryMap: RuleEntryMap(),
-                                                pathFilters: pathFilters)
+                                                pathFilters: pathFilters,
+                                                processedEntries: &proccessedEntries)
     targetGenerator.generateIndexerTargets()
 
     let targets = project.targetByName
@@ -2209,11 +2219,13 @@
                                       type: "ios_binary",
                                       attributes: ruleAttributes as [String : AnyObject],
                                       sourceFiles: sourceFileNames)
+    var proccessedEntries = [RuleEntry: (NSOrderedSet)]()
     let indexerTargetName = String(format: "_idx_TestApp_%08X_ios_min9.0", buildLabel.hashValue)
 
     targetGenerator.registerRuleEntryForIndexer(ruleEntry,
                                                 ruleEntryMap: RuleEntryMap(),
-                                                pathFilters: pathFilters.union(Set([dataModel])))
+                                                pathFilters: pathFilters.union(Set([dataModel])),
+                                                processedEntries: &proccessedEntries)
     targetGenerator.generateIndexerTargets()
 
     var allSourceFiles = sourceFileNames
@@ -2238,11 +2250,13 @@
     let ruleEntry = makeTestRuleEntry(buildLabel,
                                       type: "ios_application",
                                       sourceFiles: allSourceFiles)
+    var proccessedEntries = [RuleEntry: (NSOrderedSet)]()
     let indexerTargetName = String(format: "_idx_TestApp_%08X_ios_min9.0", buildLabel.hashValue)
 
     targetGenerator.registerRuleEntryForIndexer(ruleEntry,
                                                 ruleEntryMap: RuleEntryMap(),
-                                                pathFilters: pathFilters)
+                                                pathFilters: pathFilters,
+                                                processedEntries: &proccessedEntries)
     targetGenerator.generateIndexerTargets()
 
     let targets = project.targetByName
@@ -2263,11 +2277,13 @@
     let ruleEntry = makeTestRuleEntry(buildLabel,
                                       type: "ios_application",
                                       sourceFiles: allSourceFiles)
+    var proccessedEntries = [RuleEntry: (NSOrderedSet)]()
     let indexerTargetName = String(format: "_idx_TestApp_%08X_ios_min9.0", buildLabel.hashValue)
 
     targetGenerator.registerRuleEntryForIndexer(ruleEntry,
                                                 ruleEntryMap: RuleEntryMap(),
-                                                pathFilters: pathFilters)
+                                                pathFilters: pathFilters,
+                                                processedEntries: &proccessedEntries)
     targetGenerator.generateIndexerTargets()
 
     let targets = project.targetByName
@@ -2283,9 +2299,11 @@
                                       type: "ios_application",
                                       sourceFiles: sourceFileNames,
                                       buildFilePath: buildFilePath)
+    var proccessedEntries = [RuleEntry: (NSOrderedSet)]()
     targetGenerator.registerRuleEntryForIndexer(ruleEntry,
                                                 ruleEntryMap: RuleEntryMap(),
-                                                pathFilters: pathFilters)
+                                                pathFilters: pathFilters,
+                                                processedEntries: &proccessedEntries)
     targetGenerator.generateIndexerTargets()
     XCTAssertNil(fileRefForPath(buildFilePath))
   }
@@ -2298,9 +2316,11 @@
                                       type: "ios_application",
                                       sourceFiles: sourceFileNames,
                                       buildFilePath: buildFilePath)
+    var proccessedEntries = [RuleEntry: (NSOrderedSet)]()
     targetGenerator.registerRuleEntryForIndexer(ruleEntry,
                                                 ruleEntryMap: RuleEntryMap(),
-                                                pathFilters: pathFilters)
+                                                pathFilters: pathFilters,
+                                                processedEntries: &proccessedEntries)
     targetGenerator.generateIndexerTargets()
     XCTAssertNotNil(fileRefForPath(buildFilePath))
   }
@@ -2313,9 +2333,11 @@
                                       type: "ios_application",
                                       sourceFiles: sourceFileNames,
                                       buildFilePath: buildFilePath)
+    var proccessedEntries = [RuleEntry: (NSOrderedSet)]()
     targetGenerator.registerRuleEntryForIndexer(ruleEntry,
                                                 ruleEntryMap: RuleEntryMap(),
-                                                pathFilters: pathFilters)
+                                                pathFilters: pathFilters,
+                                                processedEntries: &proccessedEntries)
     targetGenerator.generateIndexerTargets()
     XCTAssertNotNil(fileRefForPath(buildFilePath))
   }
@@ -2328,9 +2350,11 @@
                                        type: "ios_binary",
                                        attributes: ["pch": ["path": pchFile.path!, "src": true] as AnyObject],
                                        sourceFiles: sourceFiles1)
+    var proccessedEntries = [RuleEntry: (NSOrderedSet)]()
     targetGenerator.registerRuleEntryForIndexer(ruleEntry1,
                                                 ruleEntryMap: RuleEntryMap(),
-                                                pathFilters: pathFilters)
+                                                pathFilters: pathFilters,
+                                                processedEntries: &proccessedEntries)
 
     let sourceFiles2 = ["2.swift"]
     let buildLabel2 = BuildLabel("test/app:TestLibrary")
@@ -2340,7 +2364,8 @@
                                        sourceFiles: sourceFiles2)
     targetGenerator.registerRuleEntryForIndexer(ruleEntry2,
                                                 ruleEntryMap: RuleEntryMap(),
-                                                pathFilters: pathFilters)
+                                                pathFilters: pathFilters,
+                                                processedEntries: &proccessedEntries)
     targetGenerator.generateIndexerTargets()
 
     let targets = project.targetByName
@@ -2362,9 +2387,11 @@
                                        type: "ios_binary",
                                        attributes: ["pch": ["path": pchFile.path!, "src": true] as AnyObject],
                                        sourceFiles: sourceFiles1)
+    var proccessedEntries = [RuleEntry: (NSOrderedSet)]()
     targetGenerator.registerRuleEntryForIndexer(ruleEntry1,
                                                 ruleEntryMap: RuleEntryMap(),
-                                                pathFilters: pathFilters)
+                                                pathFilters: pathFilters,
+                                                processedEntries: &proccessedEntries)
     targetGenerator.generateIndexerTargets()
 
     let targets = project.targetByName
@@ -2387,9 +2414,11 @@
                                        type: "ios_binary",
                                        attributes: ["pch": ["path": pchFile.path!, "src": true] as AnyObject],
                                        sourceFiles: sourceFiles1)
+    var proccessedEntries = [RuleEntry: (NSOrderedSet)]()
     targetGenerator.registerRuleEntryForIndexer(ruleEntry1,
                                                 ruleEntryMap: RuleEntryMap(),
-                                                pathFilters: pathFilters)
+                                                pathFilters: pathFilters,
+                                                processedEntries: &proccessedEntries)
 
     let sourceFiles2 = ["2.swift"]
     let buildTargetName2 = String(repeating: "B", count: 255)
@@ -2400,7 +2429,8 @@
                                        sourceFiles: sourceFiles2)
     targetGenerator.registerRuleEntryForIndexer(ruleEntry2,
                                                 ruleEntryMap: RuleEntryMap(),
-                                                pathFilters: pathFilters)
+                                                pathFilters: pathFilters,
+                                                processedEntries: &proccessedEntries)
     targetGenerator.generateIndexerTargets()
 
     let targets = project.targetByName
@@ -2421,10 +2451,12 @@
                                        type: "ios_binary",
                                        attributes: ["pch": ["path": pchFile.path!, "src": true] as AnyObject],
                                        sourceFiles: sourceFileNames)
+    var proccessedEntries = [RuleEntry: (NSOrderedSet)]()
     let indexer1TargetName = String(format: "_idx_TestBinary_%08X_ios_min9.0", buildLabel1.hashValue)
     targetGenerator.registerRuleEntryForIndexer(ruleEntry1,
                                                 ruleEntryMap: RuleEntryMap(),
-                                                pathFilters: pathFilters)
+                                                pathFilters: pathFilters,
+                                                processedEntries: &proccessedEntries)
 
     let buildLabel2 = BuildLabel("test/app:TestLibrary")
     let ruleEntry2 = makeTestRuleEntry(buildLabel2,
@@ -2434,7 +2466,8 @@
     let indexer2TargetName = String(format: "_idx_TestLibrary_%08X_ios_min9.0", buildLabel2.hashValue)
     targetGenerator.registerRuleEntryForIndexer(ruleEntry2,
                                                 ruleEntryMap: RuleEntryMap(),
-                                                pathFilters: pathFilters)
+                                                pathFilters: pathFilters,
+                                                processedEntries: &proccessedEntries)
     targetGenerator.generateIndexerTargets()
 
     let targets = project.targetByName
@@ -2460,10 +2493,12 @@
                                        type: "ios_binary",
                                        attributes: ruleAttributes1 as [String : AnyObject],
                                        sourceFiles: sourceFileNames)
+    var proccessedEntries = [RuleEntry: (NSOrderedSet)]()
     let indexer1TargetName = String(format: "_idx_TestBinary_%08X_ios_min9.0", buildLabel1.hashValue)
     targetGenerator.registerRuleEntryForIndexer(ruleEntry1,
                                                 ruleEntryMap: RuleEntryMap(),
-                                                pathFilters: pathFilters)
+                                                pathFilters: pathFilters,
+                                                processedEntries: &proccessedEntries)
 
     let buildLabel2 = BuildLabel("test/app:TestLibrary")
     let ruleEntry2 = makeTestRuleEntry(buildLabel2,
@@ -2473,7 +2508,8 @@
     let indexer2TargetName = String(format: "_idx_TestLibrary_%08X_ios_min9.0", buildLabel2.hashValue)
     targetGenerator.registerRuleEntryForIndexer(ruleEntry2,
                                                 ruleEntryMap: RuleEntryMap(),
-                                                pathFilters: pathFilters)
+                                                pathFilters: pathFilters,
+                                                processedEntries: &proccessedEntries)
     targetGenerator.generateIndexerTargets()
 
     let targets = project.targetByName
diff --git a/src/TulsiGeneratorTests/XcodeProjectGeneratorTests.swift b/src/TulsiGeneratorTests/XcodeProjectGeneratorTests.swift
index 53aada2..7ca11c6 100644
--- a/src/TulsiGeneratorTests/XcodeProjectGeneratorTests.swift
+++ b/src/TulsiGeneratorTests/XcodeProjectGeneratorTests.swift
@@ -432,7 +432,8 @@
 
   func registerRuleEntryForIndexer(_ ruleEntry: RuleEntry,
                                    ruleEntryMap: RuleEntryMap,
-                                   pathFilters: Set<String>) {
+                                   pathFilters: Set<String>,
+                                   processedEntries: inout [RuleEntry: (NSOrderedSet)]) {
   }
 
   func generateIndexerTargets() -> [String: PBXTarget] {
