Multi-configuration indexer target support

This change allows libraries which target
multiple (Platform SDK, min OS) pairs to
reference multiple indexer targets. For
example, an objc_library shared between
an ios_application and watchos_extension
will now generate an indexer target for
iOS and watchOS. Similarly, an
objc_library depended on by an
ios_application with a minimum_os_version
of 9.0 and by an ios_unit_test with a
minimum_os_version of 8.0 will generate
two indexer targets, one for iOS 8 and
another for iOS 9.

- Swap over ruleEntryMap dictionary to a
  separate class which manages the entries
  in order to allow for multiple rule
  entries with the same BuildLabel
  (before this CL RuleEntries with the
  same BuildLabel would collide and only
  the last one would remain).
- Fix up the tests to run properly with
  these changes. More tests to verify
  this support will be added in another
  CL.
- In order for Tulsi to be able to
  connect the dots for multiple platforms,
  a RuleEntry's deps must either have the
  same configuration or only have one
  RuleEntry with the given BuildLabel.
  In the case that we cannot resolve
  which one to use, we default back to
  our current behavior of using the
  last RuleEntry read. In the future,
  it may be best to consider an
  alternative which keeps track of
  which RuleEntries have already
  been used (this could be used as a
  factor when deciding what to default to).
  - As a side effect of this, building
    objc_library and swift_library
    at the top-level now generates
    warnings as they are not officially
    supported due to their side effects
    of introducing "default" configurations
    which in most cases don't build properly.

--
PiperOrigin-RevId: 171818784
MOS_MIGRATED_REVID=171818784
diff --git a/src/Tulsi.xcodeproj/project.pbxproj b/src/Tulsi.xcodeproj/project.pbxproj
index b380b3e..ed03a52 100644
--- a/src/Tulsi.xcodeproj/project.pbxproj
+++ b/src/Tulsi.xcodeproj/project.pbxproj
@@ -125,6 +125,7 @@
 		546AE0B11F75C0C800FE9562 /* ShellEscapingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 546AE0B01F75C0C800FE9562 /* ShellEscapingTests.swift */; };
 		547C3C021F1949740055BAED /* Watch.BUILD in Resources */ = {isa = PBXBuildFile; fileRef = 547C3C001F1949110055BAED /* Watch.BUILD */; };
 		54BDD0181F4E0FD000AAC99A /* TulsiParameter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54BDD0171F4E0FD000AAC99A /* TulsiParameter.swift */; };
+		54EA05C81F62E3A700472AB6 /* RuleEntryMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54EA05C71F62E3A700472AB6 /* RuleEntryMap.swift */; };
 		54EF320A1F3E0804009E9C7F /* bazel_build_events.py in Resources */ = {isa = PBXBuildFile; fileRef = 54EF32091F3E0804009E9C7F /* bazel_build_events.py */; };
 		8B0F78C81BE5BC7E00357561 /* ConfigEditorSourceFilterViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B0F78C71BE5BC7E00357561 /* ConfigEditorSourceFilterViewController.swift */; };
 		8B29E2D01BF9386200680E11 /* TulsiProjectDocument.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B29E2CF1BF9386200680E11 /* TulsiProjectDocument.swift */; };
@@ -326,6 +327,7 @@
 		546AE0B01F75C0C800FE9562 /* ShellEscapingTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShellEscapingTests.swift; sourceTree = "<group>"; };
 		547C3C001F1949110055BAED /* Watch.BUILD */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Watch.BUILD; path = Resources/Watch.BUILD; sourceTree = "<group>"; };
 		54BDD0171F4E0FD000AAC99A /* TulsiParameter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TulsiParameter.swift; sourceTree = "<group>"; };
+		54EA05C71F62E3A700472AB6 /* RuleEntryMap.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RuleEntryMap.swift; sourceTree = "<group>"; };
 		54EF32091F3E0804009E9C7F /* bazel_build_events.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = bazel_build_events.py; sourceTree = "<group>"; };
 		8B0F78C71BE5BC7E00357561 /* ConfigEditorSourceFilterViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConfigEditorSourceFilterViewController.swift; sourceTree = "<group>"; };
 		8B29E2CF1BF9386200680E11 /* TulsiProjectDocument.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TulsiProjectDocument.swift; sourceTree = "<group>"; };
@@ -474,6 +476,7 @@
 				54BDD0171F4E0FD000AAC99A /* TulsiParameter.swift */,
 				2DD7C6C31F6887DB00163B92 /* DeploymentTarget.swift */,
 				E1C0EBDA1F70982300FA2054 /* XcodeGeneratorInvalidPaths.swift */,
+				54EA05C71F62E3A700472AB6 /* RuleEntryMap.swift */,
 			);
 			name = Models;
 			sourceTree = "<group>";
@@ -941,6 +944,7 @@
 				3D1F2E261CF760420008CE83 /* BazelLocator.swift in Sources */,
 				3DAEE45E1C85128600BA1C67 /* BazelWorkspacePathInfoFetcher.swift in Sources */,
 				3DCFE5DE1C80B70700D7F31B /* BazelAspectInfoExtractor.swift in Sources */,
+				54EA05C81F62E3A700472AB6 /* RuleEntryMap.swift in Sources */,
 				3D51A8001C52C10A00FE90A6 /* TulsiOption.swift in Sources */,
 				3DCFE5E21C80B92D00D7F31B /* ProgressNotifier.swift in Sources */,
 				3DA65B281C67E9720055448E /* TulsiXcodeProjectGenerator.swift in Sources */,
diff --git a/src/Tulsi/Base.lproj/Localizable.strings b/src/Tulsi/Base.lproj/Localizable.strings
index 002a0f1..21d5981 100644
--- a/src/Tulsi/Base.lproj/Localizable.strings
+++ b/src/Tulsi/Base.lproj/Localizable.strings
@@ -2,6 +2,9 @@
   Strings for the Tulsi application.
 */
 
+/* Error when the Aspect returns multiple RuleEntries for a given target. The target label is in %1$@, the rule type is in %2$@. */
+"AmbiguousBuildTarget" = "Multiple configurations found for target %1$@. Is this %2$@ being built at the root level? Or do you have a root-level library somewhere that depends on this target?";
+
 /* Message to show at the top of the Tulsi project save as panel, explaining what to do. */
 "Document_SelectTulsiProjectOutputFolderMessage" = "Select a location to save this Tulsi project.";
 
diff --git a/src/Tulsi/TulsiGeneratorConfigDocument.swift b/src/Tulsi/TulsiGeneratorConfigDocument.swift
index 1604439..405c63d 100644
--- a/src/Tulsi/TulsiGeneratorConfigDocument.swift
+++ b/src/Tulsi/TulsiGeneratorConfigDocument.swift
@@ -443,15 +443,15 @@
           self.processingTaskFinished()
         }
       }
-      let resolvedLabels: [BuildLabel: RuleEntry]
+      let ruleEntryMap: RuleEntryMap
       do {
         let startupOptions = optionSet[.BazelBuildStartupOptionsDebug]
         let buildOptions = optionSet[.BazelBuildOptionsDebug]
         let bepOption = optionSet[.BEPSupportEnabled]
-        resolvedLabels = try self.infoExtractor.ruleEntriesForLabels(selectedLabels,
-                                                                     startupOptions: startupOptions,
-                                                                     buildOptions: buildOptions,
-                                                                     bepOption: bepOption)
+        ruleEntryMap = try self.infoExtractor.ruleEntriesForLabels(selectedLabels,
+                                                                   startupOptions: startupOptions,
+                                                                   buildOptions: buildOptions,
+                                                                   bepOption: bepOption)
       } catch TulsiProjectInfoExtractor.ExtractorError.ruleEntriesFailed(let info) {
         LogMessage.postError("Label resolution failed: \(info)")
         return
@@ -463,10 +463,11 @@
       var unresolvedLabels = Set<BuildLabel>()
       var sourceRuleEntries = [RuleEntry]()
       for label in selectedLabels {
-        if let entry = resolvedLabels[label] {
-          sourceRuleEntries.append(entry)
-        } else {
+        let ruleEntries = ruleEntryMap.ruleEntries(buildLabel: label)
+        if ruleEntries.isEmpty {
           unresolvedLabels.insert(label)
+        } else {
+          sourceRuleEntries.append(contentsOf: ruleEntries)
         }
       }
 
@@ -479,12 +480,10 @@
 
       var selectedRuleEntries = [RuleEntry]()
       for selectedRuleInfo in self.selectedRuleInfos {
-        if let entry = resolvedLabels[selectedRuleInfo.label] {
-          selectedRuleEntries.append(entry)
-        }
+        selectedRuleEntries.append(contentsOf: ruleEntryMap.ruleEntries(buildLabel: selectedRuleInfo.label))
       }
 
-      var processedEntries = Set<BuildLabel>()
+      var processedEntries = Set<RuleEntry>()
 
       let componentDelimiters = CharacterSet(charactersIn: "/:")
       func addPath(_ path: String) {
@@ -504,14 +503,14 @@
       }
 
       func extractSourcePaths(_ ruleEntry: RuleEntry) {
-        if processedEntries.contains(ruleEntry.label) {
+        if processedEntries.contains(ruleEntry) {
           // Rules that have already been processed will already have all of their transitive
           // sources captured.
           return
         }
-        processedEntries.insert(ruleEntry.label)
+        processedEntries.insert(ruleEntry)
         for dep in ruleEntry.dependencies {
-          guard let depRuleEntry = resolvedLabels[BuildLabel(dep)] else {
+          guard let depRuleEntry = ruleEntryMap.ruleEntry(buildLabel: BuildLabel(dep), depender: ruleEntry) else {
             // Some dependencies are expected to be unresolved, e.g., those that rely on implicit
             // outputs of other rules.
             continue
@@ -772,17 +771,24 @@
       return
     }
 
-    let resolvedLabels = try infoExtractor.ruleEntriesForLabels(concreteBuildTargetLabels,
-                                                                startupOptions: optionSet![.BazelBuildStartupOptionsDebug],
-                                                                buildOptions: optionSet![.BazelBuildOptionsDebug],
-                                                                bepOption: optionSet![.BEPSupportEnabled])
+    let ruleEntryMap = try infoExtractor.ruleEntriesForLabels(concreteBuildTargetLabels,
+                                                              startupOptions: optionSet![.BazelBuildStartupOptionsDebug],
+                                                              buildOptions: optionSet![.BazelBuildOptionsDebug],
+                                                              bepOption: optionSet![.BEPSupportEnabled])
     var unresolvedLabels = Set<BuildLabel>()
     var ruleInfos = [UIRuleInfo]()
     for label in concreteBuildTargetLabels {
-      guard let info = resolvedLabels[label] else {
+      let ruleEntries = ruleEntryMap.ruleEntries(buildLabel: label)
+      guard let info = ruleEntries.last else {
         unresolvedLabels.insert(label)
         continue
       }
+      if ruleEntries.count > 1 {
+        let fmt = NSLocalizedString("AmbiguousBuildTarget",
+                                    comment: "Multiple deployment targets found for RuleEntry. Label is in %1$@. Type is in %2$@.")
+        LogMessage.postWarning(String(format: fmt, label.description, info.type))
+      }
+
       let uiRuleEntry = UIRuleInfo(ruleInfo: info)
       uiRuleEntry.selected = true
       ruleInfos.append(uiRuleEntry)
diff --git a/src/TulsiGenerator/Base.lproj/Localizable.strings b/src/TulsiGenerator/Base.lproj/Localizable.strings
index 6b9861e..26818f0 100644
--- a/src/TulsiGenerator/Base.lproj/Localizable.strings
+++ b/src/TulsiGenerator/Base.lproj/Localizable.strings
@@ -2,6 +2,9 @@
   Strings for the Tulsi Xcode project generator.
 */
 
+/* Error when unable to resolve which RuleEntry is a dep of another based on DeploymentTargets. The target label is in %1$@. */
+"AmbiguousRuleEntryReference" = "Unable to resolve proper configuration for target %1$@. Do you have a root-level library target set as a build target? Please check your Tulsi Config settings to make sure that no library targets are selected.";
+
 /* Error to show when tulsi_supported_targets_aspect produced data that could not be parsed. The artifact filename is in %1$@, additional information is in %2$@. */
 "BazelAspectSupportedTargetParsingFailed" = "Failed to parse information about supported target in '%1$@'. This is a Tulsi or Bazel bug, please report. Debug info: %2$@";
 
@@ -47,9 +50,15 @@
 /* Provides general information about a Bazel command; a more detailed error may be reported elsewhere. The Bazel command is %1$@, exit code is %2$d, stderr %3$@. */
 "DebugInfoForBazelCommand" = "Bazel command info:\n%1$@\nExited with code %2$d\n\n%3$@";
 
+/* A RuleEntry that depends on another did not have a DeploymentTarget set. The RuleEntry's label is %1$@, the dep's label is in %2$@. */
+"DependentRuleEntryHasNoDeploymentTarget" = "Error resolving RuleEntry dep. Target %1$@ depends on %2$@ yet it does not have a DeploymentTarget set. Please report this as a Tulsi bug.";
+
 /* Failed to create an important directory. The resulting project will most likely be broken. A bug should be reported. */
 "DirectoryCreationFailed" = "Failed to create directory '%1$@'. The generated project will probably malfunction, please report. Error: %2$@";
 
+/* We have multiple identical RuleEntries, meaning they have the same BuildLabel and Deployment Target. The RuleEntry's label is %1$@, the DeploymentTarget is in %2$@. */
+"DuplicateRuleEntries" = "Multiple entries were found for target %1$@ with a deployment target of %2$@. This may be due to building this target at the top-level as well as a transitive dep of a different top-level target. You may experience some issues with this target in the generated Xcode project. This may be hard to debug, please report.";
+
 /* Message to show when the execution root was not able to be extracted from the workspace. */
 "ExecutionRootNotFound" = "Was not able to extract the execution root from the workspace. This is a Tulsi or Bazel bug, please report.";
 
@@ -69,7 +78,10 @@
 "MissingTestHost" = "Failed to link test target '%1$@' to its host, '%2$@'. This test will not be runnable in the generated Xcode project.";
 
 /* Warning to show when a RuleEntry does not have a DeploymentTarget to be used by the indexer. */
-"NoDeploymentTarget" = "Rule Entry for %1$@ has no DeploymentTarget set. Defaulting to iOS 9. This is an unexpected problem and should be reported as a Tulsi bug.";
+"NoDeploymentTarget" = "Target %1$@ has no DeploymentTarget set. Defaulting to iOS 9. This is an unexpected problem and should be reported as a Tulsi bug.";
+
+/* Warning when a library target is used as a top level buildTarget. Target in %1$@, target type in %2$@. */
+"TopLevelLibraryTarget" = "You've included a %2$@ target (%1$@) in your project as a top-level build target. This is not supported and may trigger other warnings and errors. We advise you to no longer reference any %2$@ targets at the top level. Instead, use a top-level application or test target with %1$@ as a dependency.";
 
 /* Warning shown when none of the tests of a test suite %1$@ were able to be resolved. */
 "TestSuiteHasNoValidTests" = "Failed to resolve any tests for test_suite '%1$@', no scheme will be generated.";
diff --git a/src/TulsiGenerator/BazelAspectInfoExtractor.swift b/src/TulsiGenerator/BazelAspectInfoExtractor.swift
index 56db82c..a5fd8cb 100644
--- a/src/TulsiGenerator/BazelAspectInfoExtractor.swift
+++ b/src/TulsiGenerator/BazelAspectInfoExtractor.swift
@@ -68,9 +68,9 @@
   func extractRuleEntriesForLabels(_ targets: [BuildLabel],
                                    startupOptions: [String] = [],
                                    buildOptions: [String] = [],
-                                   bepEnabled: Bool) throws -> [BuildLabel: RuleEntry] {
+                                   bepEnabled: Bool) throws -> RuleEntryMap {
     guard !targets.isEmpty else {
-      return [:]
+      return RuleEntryMap()
     }
     if bepEnabled {
       return try extractRuleEntriesUsingBEP(targets,
@@ -124,7 +124,7 @@
 
   private func extractRuleEntriesUsingBEP(_ targets: [BuildLabel],
                                           startupOptions: [String],
-                                          buildOptions: [String]) throws -> [BuildLabel: RuleEntry] {
+                                          buildOptions: [String]) throws -> RuleEntryMap {
     localizedMessageLogger.infoMessage("Build Events JSON file at \"\(buildEventsFilePath)\"")
 
     let progressNotifier = ProgressNotifier(name: SourceFileExtraction,
@@ -136,7 +136,7 @@
                                                                message: "Extracting info for \(targets.count) rules")
 
     let semaphore = DispatchSemaphore(value: 0)
-    var extractedEntries = [BuildLabel: RuleEntry]()
+    var extractedEntries = RuleEntryMap()
     var processDebugInfo: String? = nil
     let process = bazelAspectProcessForTargets(targets.map({ $0.value }),
                                                aspect: "tulsi_sources_aspect",
@@ -306,7 +306,7 @@
 
   /// Builds a list of RuleEntry instances using the data in the given set of .tulsiinfo files.
   private func extractRuleEntriesFromArtifacts(_ files: Set<String>,
-                                               progressNotifier: ProgressNotifier? = nil) -> [BuildLabel: RuleEntry] {
+                                               progressNotifier: ProgressNotifier? = nil) -> RuleEntryMap {
     let fileManager = FileManager.default
 
     func parseTulsiTargetFile(_ filename: String) throws -> RuleEntry {
@@ -443,7 +443,7 @@
       return ruleEntry
     }
 
-    var ruleMap = [BuildLabel: RuleEntry]()
+    let ruleEntryMap = RuleEntryMap(localizedMessageLogger: localizedMessageLogger)
     let semaphore = DispatchSemaphore(value: 1)
     let queue = DispatchQueue(label: "com.google.Tulsi.ruleEntryArtifactExtractor",
                                       attributes: DispatchQueue.Attributes.concurrent)
@@ -455,7 +455,7 @@
         do {
           let ruleEntry = try parseTulsiTargetFile(filename)
           _ = semaphore.wait(timeout: DispatchTime.distantFuture)
-          ruleMap[ruleEntry.label] = ruleEntry
+          ruleEntryMap.insert(ruleEntry: ruleEntry)
           semaphore.signal()
           return
         } catch ExtractorError.parsingFailed(let info) {
@@ -480,7 +480,7 @@
                                    comment: "Error to show as an alert when the output generated by an aspect failed in some way. Details about the failure are available in the message log.")
     }
 
-    return ruleMap
+    return ruleEntryMap
   }
 
   // MARK: - QueuedLogging
diff --git a/src/TulsiGenerator/BazelWorkspaceInfoExtractor.swift b/src/TulsiGenerator/BazelWorkspaceInfoExtractor.swift
index d35a762..9ff28e3 100644
--- a/src/TulsiGenerator/BazelWorkspaceInfoExtractor.swift
+++ b/src/TulsiGenerator/BazelWorkspaceInfoExtractor.swift
@@ -39,7 +39,7 @@
   private let queryExtractor: BazelQueryInfoExtractor
 
   // Cache of all RuleEntry instances loaded for the associated project.
-  private var ruleEntryCache = [BuildLabel: RuleEntry]()
+  private var ruleEntryCache = RuleEntryMap()
   // The set of labels for which a test_suite query has been run (to prevent duplicate queries).
   private var attemptedTestSuiteLabels = Set<BuildLabel>()
 
@@ -65,8 +65,10 @@
   func ruleEntriesForLabels(_ labels: [BuildLabel],
                             startupOptions: TulsiOption,
                             buildOptions: TulsiOption,
-                            bepOption: TulsiOption) throws -> [BuildLabel: RuleEntry] {
-    func isLabelMissing(_ label: BuildLabel) -> Bool { return ruleEntryCache[label] == nil }
+                            bepOption: TulsiOption) throws -> RuleEntryMap {
+    func isLabelMissing(_ label: BuildLabel) -> Bool {
+      return !ruleEntryCache.hasAnyRuleEntry(withBuildLabel: label)
+    }
     let missingLabels = labels.filter(isLabelMissing)
     if missingLabels.isEmpty { return ruleEntryCache }
 
@@ -82,14 +84,12 @@
     let buildOptions = splitOptionString(buildOptions.commonValue)
 
     do {
-      let ruleEntries =
+      let ruleEntryMap =
         try aspectExtractor.extractRuleEntriesForLabels(labels,
                                                         startupOptions: startupOptions,
                                                         buildOptions: buildOptions,
                                                         bepEnabled: bepSupportEnabled)
-      for (label, entry) in ruleEntries {
-        ruleEntryCache[label] = entry
-      }
+      ruleEntryCache = RuleEntryMap(ruleEntryMap)
     } catch BazelAspectInfoExtractor.ExtractorError.buildFailed {
       throw BazelWorkspaceInfoExtractorError.aspectExtractorFailed("Bazel aspects could not be built.")
     }
@@ -126,10 +126,10 @@
   private func extractTestSuiteRules(_ labels: [BuildLabel]) {
     let testSuiteDependencies = queryExtractor.extractTestSuiteRules(labels)
     for (ruleInfo, possibleExpansions) in testSuiteDependencies {
-      ruleEntryCache[ruleInfo.label] = RuleEntry(label: ruleInfo.label,
+      ruleEntryCache.insert(ruleEntry: RuleEntry(label: ruleInfo.label,
                                                  type: ruleInfo.type,
                                                  attributes: [:],
-                                                 weakDependencies: possibleExpansions)
+                                                 weakDependencies: possibleExpansions))
     }
   }
 }
diff --git a/src/TulsiGenerator/BazelWorkspaceInfoExtractorProtocol.swift b/src/TulsiGenerator/BazelWorkspaceInfoExtractorProtocol.swift
index 5e135e9..65617e0 100644
--- a/src/TulsiGenerator/BazelWorkspaceInfoExtractorProtocol.swift
+++ b/src/TulsiGenerator/BazelWorkspaceInfoExtractorProtocol.swift
@@ -29,7 +29,7 @@
   func ruleEntriesForLabels(_ labels: [BuildLabel],
                             startupOptions: TulsiOption,
                             buildOptions: TulsiOption,
-                            bepOption: TulsiOption) throws -> [BuildLabel: RuleEntry]
+                            bepOption: TulsiOption) throws -> RuleEntryMap
 
   /// Extracts labels for the files referenced by the build infrastructure for the given set of
   /// BUILD targets.
diff --git a/src/TulsiGenerator/PBXTargetGenerator.swift b/src/TulsiGenerator/PBXTargetGenerator.swift
index 1962e7a..de00dfe 100644
--- a/src/TulsiGenerator/PBXTargetGenerator.swift
+++ b/src/TulsiGenerator/PBXTargetGenerator.swift
@@ -76,8 +76,8 @@
 
   /// 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(_ ruleEntry: RuleEntry,
-                                   ruleEntryMap: [BuildLabel: RuleEntry],
+  func registerRuleEntryForIndexer(_ ruleEntries: RuleEntry,
+                                   ruleEntryMap: RuleEntryMap,
                                    pathFilters: Set<String>)
 
   /// Generates indexer targets for rules that were previously registered through
@@ -99,7 +99,7 @@
   /// Returns a map of target name to associated intermediate build artifacts.
   /// Throws if one of the RuleEntry instances is for an unsupported Bazel target type.
   func generateBuildTargetsForRuleEntries(_ entries: Set<RuleEntry>,
-                                          ruleEntryMap: [BuildLabel: RuleEntry]) throws -> [String: [String]]
+                                          ruleEntryMap: RuleEntryMap) throws -> [String: [String]]
 }
 
 extension PBXTargetGeneratorProtocol {
@@ -193,8 +193,9 @@
   /// Stores data about a given RuleEntry to be used in order to generate Xcode indexer targets.
   private struct IndexerData {
     /// Provides information about the RuleEntry instances supported by an IndexerData.
-    /// Specifically, NameInfoToken tuples provide the targetName and the full target label hash in
-    /// order to differentiate between rules with the same name but different paths.
+    /// Specifically, NameInfoToken tuples provide the targetName, full target label hash, and
+    /// potentially the target configuration in order to differentiate between rules with the
+    /// same name but different paths and configurations.
     struct NameInfoToken {
       let targetName: String
       let labelHash: Int
@@ -211,6 +212,7 @@
 
     let indexerNameInfo: [NameInfoToken]
     let dependencies: Set<BuildLabel>
+    let resolvedDependencies: Set<RuleEntry>
     let preprocessorDefines: Set<String>
     let otherCFlags: [String]
     let otherSwiftFlags: [String]
@@ -223,6 +225,18 @@
     let bridgingHeader: BazelFileInfo?
     let enableModules: Bool
 
+    /// Returns the deploymentTarget as a string for an indexerName.
+    static func deploymentTargetLabel(_ deploymentTarget: DeploymentTarget) -> String {
+      return String(format: "%@_min%@",
+                    deploymentTarget.platform.rawValue,
+                    deploymentTarget.osVersion)
+    }
+
+    /// Returns the deploymentTarget as a string for the indexerName.
+    var deploymentTargetLabel: String {
+      return IndexerData.deploymentTargetLabel(deploymentTarget)
+    }
+
     /// Returns the full name that should be used when generating a target for this indexer.
     var indexerName: String {
       var fullName = ""
@@ -236,7 +250,9 @@
         }
         fullHash = fullHash &+ token.labelHash
       }
-      return PBXTargetGenerator.indexerNameForTargetName(fullName, hash: fullHash)
+      return PBXTargetGenerator.indexerNameForTargetName(fullName,
+                                                         hash: fullHash,
+                                                         suffix: deploymentTargetLabel)
     }
 
     /// Returns an array of aliases for this indexer data. Each element is the full indexerName of
@@ -246,16 +262,26 @@
       if indexerNameInfo.count > 1 {
         for token in indexerNameInfo {
           supportedTargets.append(PBXTargetGenerator.indexerNameForTargetName(token.targetName,
-                                                                              hash: token.labelHash))
+                                                                              hash: token.labelHash,
+                                                                              suffix: deploymentTargetLabel))
         }
       }
       return supportedTargets
     }
 
     /// Returns an array of indexing target names that this indexer depends on.
-    var indexerNamesForDependencies: [String] {
-      return dependencies.map() {
-        PBXTargetGenerator.indexerNameForTargetName($0.targetName!, hash: $0.hashValue)
+    var indexerNamesForResolvedDependencies: [String] {
+      let parentDeploymentTargetLabel = self.deploymentTargetLabel
+      return resolvedDependencies.map() { entry in
+        let deploymentTargetLabel: String
+        if let deploymentTarget = entry.deploymentTarget {
+          deploymentTargetLabel = IndexerData.deploymentTargetLabel(deploymentTarget)
+        } else {
+          deploymentTargetLabel = parentDeploymentTargetLabel
+        }
+        return PBXTargetGenerator.indexerNameForTargetName(entry.label.targetName!,
+                                                           hash: entry.label.hashValue,
+                                                           suffix: deploymentTargetLabel)
       }
     }
 
@@ -282,12 +308,14 @@
     /// Returns a new IndexerData instance that is the result of merging this indexer with another.
     func merging(_ other: IndexerData) -> IndexerData {
       let newDependencies = dependencies.union(other.dependencies)
+      let newResolvedDependencies = resolvedDependencies.union(other.resolvedDependencies)
       let newName = indexerNameInfo + other.indexerNameInfo
       let newBuildPhase = PBXSourcesBuildPhase()
       newBuildPhase.files = buildPhase.files + other.buildPhase.files
 
       return IndexerData(indexerNameInfo: newName,
                          dependencies: newDependencies,
+                         resolvedDependencies: newResolvedDependencies,
                          preprocessorDefines: preprocessorDefines,
                          otherCFlags: otherCFlags,
                          otherSwiftFlags: otherSwiftFlags,
@@ -381,6 +409,12 @@
     }
   }
 
+  /// Returns the default Deployment Target (iOS 9). This is just a sensible default
+  /// in the odd case that we didn't get a Deployment Target from the Aspect.
+  private static func defaultDeploymentTarget() -> DeploymentTarget {
+    return DeploymentTarget(platform: .ios, osVersion: "9.0")
+  }
+
   init(bazelURL: URL,
        bazelBinPath: String,
        project: PBXProject,
@@ -415,7 +449,7 @@
   }
 
   func registerRuleEntryForIndexer(_ ruleEntry: RuleEntry,
-                                   ruleEntryMap: [BuildLabel: RuleEntry],
+                                   ruleEntryMap: RuleEntryMap,
                                    pathFilters: Set<String>) {
     let includePathInProject = pathFilterFunc(pathFilters)
     func includeFileInProject(_ info: BazelFileInfo) -> Bool {
@@ -437,26 +471,29 @@
     // 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 = [BuildLabel: (NSOrderedSet)]()
+    var processedEntries = [RuleEntry: (NSOrderedSet)]()
     @discardableResult
     func generateIndexerTargetGraphForRuleEntry(_ ruleEntry: RuleEntry) -> (NSOrderedSet) {
-      if let data = processedEntries[ruleEntry.label] {
+      var paths = [String]()
+      if let data = processedEntries[ruleEntry] {
         return data
       }
       var frameworkSearchPaths = NSMutableOrderedSet()
 
       defer {
-        processedEntries[ruleEntry.label] = (frameworkSearchPaths)
+        processedEntries[ruleEntry] = (frameworkSearchPaths)
       }
 
+      var resolvedDependecies = [RuleEntry]()
       for dep in ruleEntry.dependencies {
-        guard let depEntry = ruleEntryMap[BuildLabel(dep)] else {
+        guard let depEntry = ruleEntryMap.ruleEntry(buildLabel: BuildLabel(dep), depender: ruleEntry) else {
           localizedMessageLogger.warning("UnknownTargetRule",
                                          comment: "Failure to look up a Bazel target that was expected to be present. The target label is %1$@",
                                          values: dep)
           continue
         }
 
+        resolvedDependecies.append(depEntry)
         let inheritedFrameworkSearchPaths = generateIndexerTargetGraphForRuleEntry(depEntry)
         frameworkSearchPaths.union(inheritedFrameworkSearchPaths)
       }
@@ -601,7 +638,7 @@
         if let ruleDeploymentTarget = ruleEntry.deploymentTarget {
           deploymentTarget = ruleDeploymentTarget
         } else {
-          deploymentTarget = DeploymentTarget(platform: .ios, osVersion: "9.0")
+          deploymentTarget = PBXTargetGenerator.defaultDeploymentTarget()
           localizedMessageLogger.warning("NoDeploymentTarget",
                                          comment: "Rule Entry for %1$@ has no DeploymentTarget set. Defaulting to iOS 9.",
                                          values: ruleEntry.label.value)
@@ -610,6 +647,7 @@
         let dependencyLabels = ruleEntry.dependencies.map() { BuildLabel($0) }
         let indexerData = IndexerData(indexerNameInfo: [IndexerData.NameInfoToken(ruleEntry: ruleEntry)],
                                       dependencies: Set(dependencyLabels),
+                                      resolvedDependencies: Set(resolvedDependecies),
                                       preprocessorDefines: localPreprocessorDefines,
                                       otherCFlags: otherCFlags.array as! [String],
                                       otherSwiftFlags: otherSwiftFlags,
@@ -665,7 +703,7 @@
           continue
         }
 
-        for depName in data.indexerNamesForDependencies {
+        for depName in data.indexerNamesForResolvedDependencies {
           guard let indexerDependency = indexerTargetByName[depName], indexerDependency !== indexerTarget else {
             continue
           }
@@ -770,7 +808,7 @@
   /// list of any intermediate artifacts produced when building that target.
   @discardableResult
   func generateBuildTargetsForRuleEntries(_ ruleEntries: Set<RuleEntry>,
-                                          ruleEntryMap: [BuildLabel: RuleEntry]) throws -> [String: [String]] {
+                                          ruleEntryMap: RuleEntryMap) throws -> [String: [String]] {
     let namedRuleEntries = generateUniqueNamesForRuleEntries(ruleEntries)
     var testTargetLinkages = [(PBXNativeTarget, BuildLabel?, RuleEntry)]()
     let progressNotifier = ProgressNotifier(name: GeneratingBuildTargets,
@@ -819,7 +857,8 @@
     // The watch app target must have an explicit dependency on the watch extension target.
     for (_, (watchAppTarget, watchRuleEntry)) in watchAppTargets {
       for ext in watchRuleEntry.extensions {
-        if let extEntry = ruleEntryMap[ext], extEntry.pbxTargetType == .Watch2Extension {
+        if let extEntry = ruleEntryMap.ruleEntry(buildLabel: ext, depender: watchRuleEntry),
+            extEntry.pbxTargetType == .Watch2Extension {
           if let watchExtensionTarget = watchExtensionsByEntry[extEntry] {
             watchAppTarget.createDependencyOn(watchExtensionTarget, proxyType: .targetReference, inProject: project)
           } else {
@@ -1107,7 +1146,7 @@
   private func updateTestTarget(_ target: PBXNativeTarget,
                                 withLinkageToHostTarget hostTarget: PBXNativeTarget?,
                                 ruleEntry: RuleEntry,
-                                ruleEntryMap: [BuildLabel: RuleEntry]) {
+                                ruleEntryMap: RuleEntryMap) {
     // If the test target has a test host, check that it was included in the Tulsi configuration.
     if let hostTarget = hostTarget {
       project.linkTestTarget(target, toHostTarget: hostTarget)
@@ -1123,8 +1162,11 @@
     let testSettings = targetTestSettings(target, hostTarget: hostTarget)
 
     // Inherit the resolved values from the indexer.
+    let deploymentTarget = ruleEntry.deploymentTarget ?? PBXTargetGenerator.defaultDeploymentTarget()
+    let deploymentTargetLabel = IndexerData.deploymentTargetLabel(deploymentTarget)
     let indexerName = PBXTargetGenerator.indexerNameForTargetName(ruleEntry.label.targetName!,
-                                                                  hash: ruleEntry.label.hashValue)
+                                                                  hash: ruleEntry.label.hashValue,
+                                                                  suffix: deploymentTargetLabel)
     let indexerTarget = indexerTargetByName[indexerName]
     updateMissingBuildConfigurationsForList(target.buildConfigurationList,
                                             withBuildSettings: testSettings,
@@ -1132,10 +1174,9 @@
                                             suppressingBuildSettings: ["ARCHS", "VALID_ARCHS"])
   }
 
-  /// Updates the test build phases to include sources to be indexed.
   private func updateTestTargetBuildPhases(_ target: PBXNativeTarget,
                                            ruleEntry: RuleEntry,
-                                           ruleEntryMap: [BuildLabel: RuleEntry]) {
+                                           ruleEntryMap: RuleEntryMap) {
     let (testSourceFileInfos, testNonArcSourceFileInfos, containsSwift) =
       testSourceFiles(forRuleEntry: ruleEntry, ruleEntryMap: ruleEntryMap)
 
@@ -1180,7 +1221,7 @@
   // Returns a tuple containing the sources and non-ARC sources for a ruleEntry of a test rule (e.g.
   // apple_unit_test) and a boolean indicating whether the test sources include Swift files.
   private func testSourceFiles(forRuleEntry ruleEntry: RuleEntry,
-                               ruleEntryMap: [BuildLabel: RuleEntry]) -> ([BazelFileInfo], [BazelFileInfo], Bool) {
+                               ruleEntryMap: RuleEntryMap) -> ([BazelFileInfo], [BazelFileInfo], Bool) {
     // If this target doesn't have a test_bundle attribute, it must be an ios_test target, since
     // the test_bundle attribute is required only for apple_unit_test and apple_ui_test. For
     // ios_test, we return its sources directly.
@@ -1191,9 +1232,9 @@
     // Traverse the apple_unit_test -> *_test_bundle -> apple_binary graph in order to get to the
     // binary's direct dependencies. If at any point the expected graph is broken, just return empty
     // sources.
-    guard let testBundle = ruleEntryMap[BuildLabel(testBundleLabelString)],
-        let testBundleBinaryLabelString = testBundle.attributes[RuleEntry.Attribute.binary] as? String,
-        let testBundleBinary = ruleEntryMap[BuildLabel(testBundleBinaryLabelString)] else {
+    guard let testBundle = ruleEntryMap.ruleEntry(buildLabel: BuildLabel(testBundleLabelString), depender: ruleEntry),
+          let testBundleBinaryLabelString = testBundle.attributes[RuleEntry.Attribute.binary] as? String,
+          let testBundleBinary = ruleEntryMap.ruleEntry(buildLabel: BuildLabel(testBundleBinaryLabelString), depender: testBundle) else {
       return ([], [], false)
     }
 
@@ -1204,7 +1245,7 @@
     // Once we have the binary's direct dependencies, gather all the possible sources of those
     // targets and return them.
     for dependency in testBundleBinary.dependencies {
-      guard let dependencyTarget = ruleEntryMap[BuildLabel(dependency)] else {
+      guard let dependencyTarget = ruleEntryMap.ruleEntry(buildLabel: BuildLabel(dependency), depender: testBundleBinary) else {
         continue
       }
       sourceFiles.append(contentsOf: dependencyTarget.sourceFiles)
@@ -1338,7 +1379,7 @@
     }
   }
 
-  static func indexerNameForTargetName(_ targetName: String, hash: Int) -> String {
+  static func indexerNameForTargetName(_ targetName: String, hash: Int, suffix: String?) -> String {
     let normalizedTargetName: String
     if targetName.characters.count > MaxIndexerNameLength {
       let endIndex = targetName.characters.index(targetName.startIndex, offsetBy: MaxIndexerNameLength - 4)
@@ -1346,6 +1387,9 @@
     } else {
       normalizedTargetName = targetName
     }
+    if let suffix = suffix {
+      return String(format: "\(IndexerTargetPrefix)\(normalizedTargetName)_%08X_%@", hash, suffix)
+    }
     return String(format: "\(IndexerTargetPrefix)\(normalizedTargetName)_%08X", hash)
   }
 
@@ -1374,7 +1418,7 @@
   /// artifacts.
   private func createBuildTargetForRuleEntry(_ entry: RuleEntry,
                                              named name: String,
-                                             ruleEntryMap: [BuildLabel: RuleEntry]) throws -> (PBXNativeTarget, [String]) {
+                                             ruleEntryMap: RuleEntryMap) throws -> (PBXNativeTarget, [String]) {
     guard let pbxTargetType = entry.pbxTargetType else {
       throw ProjectSerializationError.unsupportedTargetType(entry.type)
     }
diff --git a/src/TulsiGenerator/RuleEntry.swift b/src/TulsiGenerator/RuleEntry.swift
index d77838b..c8178f0 100644
--- a/src/TulsiGenerator/RuleEntry.swift
+++ b/src/TulsiGenerator/RuleEntry.swift
@@ -36,6 +36,13 @@
     self.type = type
     self.linkedTargetLabels = linkedTargetLabels
   }
+
+  func equals(_ other: RuleInfo) -> Bool {
+    guard type(of: self) == type(of: other) else {
+      return false
+    }
+    return self.type == other.type && self.label == other.label
+  }
 }
 
 
@@ -443,12 +450,12 @@
               extensionType: extensionType)
   }
 
-  public func discoverIntermediateArtifacts(_ ruleEntryMap: [BuildLabel: RuleEntry]) -> Set<BazelFileInfo> {
+  public func discoverIntermediateArtifacts(_ ruleEntryMap: RuleEntryMap) -> Set<BazelFileInfo> {
     if intermediateArtifacts != nil { return intermediateArtifacts! }
 
     var collectedArtifacts = Set<BazelFileInfo>()
     for dep in dependencies {
-      guard let dependentEntry = ruleEntryMap[BuildLabel(dep)] else {
+      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)'")
@@ -480,10 +487,17 @@
     }
     return fileTargets
   }
+
+  override func equals(_ other: RuleInfo) -> Bool {
+    guard super.equals(other), let entry = other as? RuleEntry else {
+      return false
+    }
+    return deploymentTarget == entry.deploymentTarget
+  }
 }
 
 // MARK: - Equatable
 
 public func ==(lhs: RuleInfo, rhs: RuleInfo) -> Bool {
-  return lhs.type == rhs.type && lhs.label == rhs.label
+  return lhs.equals(rhs)
 }
diff --git a/src/TulsiGenerator/RuleEntryMap.swift b/src/TulsiGenerator/RuleEntryMap.swift
new file mode 100644
index 0000000..5020536
--- /dev/null
+++ b/src/TulsiGenerator/RuleEntryMap.swift
@@ -0,0 +1,115 @@
+// Copyright 2017 The Tulsi Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+import Foundation
+
+/// This class acts as a data store for all of the RuleEntries that are read by our Aspects. It
+/// effectively maps from BuildLabel to RuleEntry, with the caveat that a single BuildLabel may
+/// actually have multiple RuleEntries depending on Bazel configuration splits. For example, if an
+/// objc_library is depended on by an ios_application with a minimum_os_version of 9 and depended on
+/// by an ios_unit_test with a minimum_os_version of 10, then we will actually discover two versions
+/// of the same objc_library, one for iOS 10 and the other for iOS 9.
+public class RuleEntryMap {
+  private var labelToEntries = [BuildLabel: [RuleEntry]]()
+  private var allEntries = [RuleEntry]()
+
+  private let localizedMessageLogger: LocalizedMessageLogger?
+
+  init(localizedMessageLogger: LocalizedMessageLogger? = nil) {
+    self.localizedMessageLogger = localizedMessageLogger
+  }
+
+  init(_ ruleEntryMap: RuleEntryMap) {
+    localizedMessageLogger = ruleEntryMap.localizedMessageLogger
+    allEntries = ruleEntryMap.allEntries
+    labelToEntries = ruleEntryMap.labelToEntries
+  }
+
+  public var allRuleEntries: [RuleEntry] {
+    return allEntries
+  }
+
+  public func insert(ruleEntry: RuleEntry) {
+    allEntries.append(ruleEntry)
+
+    let label = ruleEntry.label
+    guard var entries = labelToEntries[label] else {
+      labelToEntries[label] = [ruleEntry]
+      return
+    }
+    // Don't warn about duplicate entries with the same DeploymentTarget as they should
+    // only be caused by a root-level library which we already warn about.
+    entries.append(ruleEntry)
+    labelToEntries[label] = entries
+  }
+
+  public func hasAnyRuleEntry(withBuildLabel buildLabel: BuildLabel) -> Bool {
+    return anyRuleEntry(withBuildLabel: buildLabel) != nil
+  }
+
+  /// Returns a RuleEntry from the list of RuleEntries with the specified BuildLabel.
+  public func anyRuleEntry(withBuildLabel buildLabel: BuildLabel) -> RuleEntry? {
+    guard let ruleEntries = labelToEntries[buildLabel] else {
+      return nil
+    }
+    return ruleEntries.last
+  }
+
+  /// Returns a list of RuleEntry with the specified BuildLabel.
+  public func ruleEntries(buildLabel: BuildLabel) -> [RuleEntry] {
+    guard let ruleEntries = labelToEntries[buildLabel] else {
+      return [RuleEntry]()
+    }
+    return ruleEntries
+  }
+
+  /// Returns a RuleEntry which is a dep of the given RuleEntry, matched by configuration.
+  public func ruleEntry(buildLabel: BuildLabel, depender: RuleEntry) -> RuleEntry? {
+    guard let deploymentTarget = depender.deploymentTarget else {
+      localizedMessageLogger?.warning("DependentRuleEntryHasNoDeploymentTarget",
+                                      comment: "Error when a RuleEntry with deps does not have a DeploymentTarget. RuleEntry's label is in %1$@, dep's label is in %2$@.",
+                                      values: depender.label.description,
+                                              buildLabel.description)
+      return anyRuleEntry(withBuildLabel: buildLabel)
+    }
+    return ruleEntry(buildLabel: buildLabel, deploymentTarget: deploymentTarget)
+  }
+
+  /// Returns a RuleEntry with the given buildLabel and deploymentTarget.
+  public func ruleEntry(buildLabel: BuildLabel, deploymentTarget: DeploymentTarget) -> RuleEntry? {
+    guard let ruleEntries = labelToEntries[buildLabel] else {
+      return nil
+    }
+    guard !ruleEntries.isEmpty else {
+      return nil
+    }
+
+    // If there's only one, we just assume that it's right.
+    if ruleEntries.count == 1 {
+      return ruleEntries.first
+    }
+
+    for ruleEntry in ruleEntries {
+      if deploymentTarget == ruleEntry.deploymentTarget {
+        return ruleEntry
+      }
+    }
+
+    // Must be multiple. Shoot out a warning and return the last.
+    localizedMessageLogger?.warning("AmbiguousRuleEntryReference",
+                                    comment: "Warning when unable to resolve a RuleEntry for a given DeploymentTarget. RuleEntry's label is in %1$@.",
+                                    values: buildLabel.description)
+    return ruleEntries.last
+  }
+}
diff --git a/src/TulsiGenerator/TulsiProjectInfoExtractor.swift b/src/TulsiGenerator/TulsiProjectInfoExtractor.swift
index f7bfc70..0c321f8 100644
--- a/src/TulsiGenerator/TulsiProjectInfoExtractor.swift
+++ b/src/TulsiGenerator/TulsiProjectInfoExtractor.swift
@@ -47,7 +47,7 @@
   public func ruleEntriesForInfos(_ infos: [RuleInfo],
                                   startupOptions: TulsiOption,
                                   buildOptions: TulsiOption,
-                                  bepOption: TulsiOption) throws -> [BuildLabel: RuleEntry] {
+                                  bepOption: TulsiOption) throws -> RuleEntryMap {
     return try ruleEntriesForLabels(infos.map({ $0.label }),
                                     startupOptions: startupOptions,
                                     buildOptions: buildOptions,
@@ -57,7 +57,7 @@
   public func ruleEntriesForLabels(_ labels: [BuildLabel],
                                    startupOptions: TulsiOption,
                                    buildOptions: TulsiOption,
-                                   bepOption: TulsiOption) throws -> [BuildLabel: RuleEntry] {
+                                   bepOption: TulsiOption) throws -> RuleEntryMap {
     do {
       return try workspaceInfoExtractor.ruleEntriesForLabels(labels,
                                                              startupOptions: startupOptions,
diff --git a/src/TulsiGenerator/XcodeProjectGenerator.swift b/src/TulsiGenerator/XcodeProjectGenerator.swift
index 5733bd6..2a08aad 100644
--- a/src/TulsiGenerator/XcodeProjectGenerator.swift
+++ b/src/TulsiGenerator/XcodeProjectGenerator.swift
@@ -77,6 +77,10 @@
   private static let StubWatchOS2InfoPlistFilename = "StubWatchOS2InfoPlist.plist"
   private static let StubWatchOS2AppExInfoPlistFilename = "StubWatchOS2AppExInfoPlist.plist"
 
+  /// Rules which should not be generated at the top level.
+  private static let LibraryRulesForTopLevelWarning =
+      Set(["objc_library", "swift_library", "cc_library"])
+
   private let workspaceRootURL: URL
   private let config: TulsiGeneratorConfig
   private let localizedMessageLogger: LocalizedMessageLogger
@@ -261,11 +265,21 @@
 
   /// Invokes Bazel to load any missing information in the config file.
   private func resolveConfigReferences() throws {
-    let resolvedLabels = try loadRuleEntryMap()
-    let unresolvedLabels = config.buildTargetLabels.filter() { resolvedLabels[$0] == nil }
+    let ruleEntryMap = try loadRuleEntryMap()
+    let unresolvedLabels = config.buildTargetLabels.filter {
+      !ruleEntryMap.hasAnyRuleEntry(withBuildLabel: $0)
+    }
     if !unresolvedLabels.isEmpty {
       throw ProjectGeneratorError.labelResolutionFailed(Set<BuildLabel>(unresolvedLabels))
     }
+    for label in config.buildTargetLabels {
+      if let entry = ruleEntryMap.anyRuleEntry(withBuildLabel: label),
+         XcodeProjectGenerator.LibraryRulesForTopLevelWarning.contains(entry.type) {
+        localizedMessageLogger.warning("TopLevelLibraryTarget",
+                                       comment: "Warning when a library target is used as a top level buildTarget. Target in %1$@, target type in %2$@.",
+                                       values: entry.label.description, entry.type)
+      }
+    }
   }
 
   // Generates a PBXProject and a returns it along with a set of
@@ -303,18 +317,22 @@
     // TODO(abaire): Go back to using a generic here when support for Swift 2.2 is removed.
     func expandTargetLabels(_ labels: Set<BuildLabel>) {
       for label in labels {
-        guard let ruleEntry = ruleEntryMap[label] else { continue }
-        if ruleEntry.type != "test_suite" {
-          // Add the RuleEntry itself and any registered extensions.
-          expandedTargetLabels.insert(label)
-          expandedTargetLabels.formUnion(ruleEntry.extensions)
+        // Effectively we will only be using the last RuleEntry in the case of duplicates.
+        // We could log about duplicates here, but this would only lead to duplicate logging.
+        let ruleEntries = ruleEntryMap.ruleEntries(buildLabel: label)
+        for ruleEntry in ruleEntries {
+          if ruleEntry.type != "test_suite" {
+            // Add the RuleEntry itself and any registered extensions.
+            expandedTargetLabels.insert(label)
+            expandedTargetLabels.formUnion(ruleEntry.extensions)
 
-          // Recursively expand extensions. Currently used by App -> Watch App -> Watch Extension.
-          expandTargetLabels(ruleEntry.extensions)
-        } else {
-          // Expand the test_suite to its set of tests.
-          testSuiteRules[ruleEntry.label] = ruleEntry
-          expandTargetLabels(ruleEntry.weakDependencies)
+            // Recursively expand extensions. Currently used by App -> Watch App -> Watch Extension.
+            expandTargetLabels(ruleEntry.extensions)
+          } else {
+            // Expand the test_suite to its set of tests.
+            testSuiteRules[ruleEntry.label] = ruleEntry
+            expandTargetLabels(ruleEntry.weakDependencies)
+          }
         }
       }
     }
@@ -335,20 +353,23 @@
                                               maxValue: expandedTargetLabels.count)
       for label in expandedTargetLabels {
         progressNotifier.incrementValue()
-        guard let ruleEntry = ruleEntryMap[label] else {
+        let ruleEntries = ruleEntryMap.ruleEntries(buildLabel: label)
+        guard !ruleEntries.isEmpty else {
           localizedMessageLogger.error("UnknownTargetRule",
                                        comment: "Failure to look up a Bazel target that was expected to be present. The target label is %1$@",
                                        context: config.projectName,
                                        values: label.value)
           continue
         }
-        targetRules.insert(ruleEntry)
-        for hostTargetLabel in ruleEntry.linkedTargetLabels {
-          hostTargetLabels[hostTargetLabel] = ruleEntry.label
+        for ruleEntry in ruleEntries {
+          targetRules.insert(ruleEntry)
+          for hostTargetLabel in ruleEntry.linkedTargetLabels {
+            hostTargetLabels[hostTargetLabel] = ruleEntry.label
+          }
+          generator.registerRuleEntryForIndexer(ruleEntry,
+                                                ruleEntryMap: ruleEntryMap,
+                                                pathFilters: config.pathFilters)
         }
-        generator.registerRuleEntryForIndexer(ruleEntry,
-                                              ruleEntryMap: ruleEntryMap,
-                                              pathFilters: config.pathFilters)
       }
     }
     var indexerTargets = [String: PBXTarget]()
@@ -463,7 +484,7 @@
     try writeWorkspaceSettings(perUserWorkspaceSettings, toDirectoryAtURL: workspaceUserDataURL)
   }
 
-  private func loadRuleEntryMap() throws -> [BuildLabel: RuleEntry] {
+  private func loadRuleEntryMap() throws -> RuleEntryMap {
     do {
       return try workspaceInfoExtractor.ruleEntriesForLabels(config.buildTargetLabels,
                                                              startupOptions: config.options[.BazelBuildStartupOptionsDebug],
diff --git a/src/TulsiGeneratorIntegrationTests/AspectTests.swift b/src/TulsiGeneratorIntegrationTests/AspectTests.swift
index f49ca2c..2982a8f 100644
--- a/src/TulsiGeneratorIntegrationTests/AspectTests.swift
+++ b/src/TulsiGeneratorIntegrationTests/AspectTests.swift
@@ -35,14 +35,13 @@
     buildOptions.append("--copt=-DA_COMMANDLINE_DEFINE")
     buildOptions.append("--copt=-DA_COMMANDLINE_DEFINE_WITH_VALUE=1")
     buildOptions.append("--copt=-DA_COMMANDLINE_DEFINE_WITH_SPACE_VALUE='this has a space'")
-    let ruleEntries = try aspectInfoExtractor.extractRuleEntriesForLabels([BuildLabel("//tulsi_test:Application"),
-                                                                           BuildLabel("//tulsi_test:XCTest")],
-                                                                          startupOptions: bazelStartupOptions,
-                                                                          buildOptions: buildOptions,
-                                                                          bepEnabled: true)
-    XCTAssertEqual(ruleEntries.count, 11)
+    let ruleEntryMap = try aspectInfoExtractor.extractRuleEntriesForLabels([BuildLabel("//tulsi_test:XCTest")],
+                                                                           startupOptions: bazelStartupOptions,
+                                                                           buildOptions: buildOptions,
+                                                                           bepEnabled: true)
+    XCTAssertEqual(ruleEntryMap.allRuleEntries.count, 11)
 
-    let checker = InfoChecker(ruleEntries: ruleEntries)
+    let checker = InfoChecker(ruleEntryMap: ruleEntryMap)
 
     checker.assertThat("//tulsi_test:Application")
         .dependsOn("//tulsi_test:Application.apple_binary")
@@ -151,14 +150,13 @@
                        withContent: ["NSExtension": ["NSExtensionPointIdentifier": "com.apple.extension-foo"]],
                        inSubdirectory: "(tulsi_test/TodayExtension")
 
-    let ruleEntries = try aspectInfoExtractor.extractRuleEntriesForLabels([BuildLabel("//tulsi_test:Application"),
-                                                                           BuildLabel("//tulsi_test:XCTest")],
-                                                                          startupOptions: bazelStartupOptions,
-                                                                          buildOptions: bazelBuildOptions,
-                                                                          bepEnabled: bepEnabled)
-    XCTAssertEqual(ruleEntries.count, 26)
+    let ruleEntryMap = try aspectInfoExtractor.extractRuleEntriesForLabels([BuildLabel("//tulsi_test:XCTest")],
+                                                                           startupOptions: bazelStartupOptions,
+                                                                           buildOptions: bazelBuildOptions,
+                                                                           bepEnabled: bepEnabled)
+    XCTAssertEqual(ruleEntryMap.allRuleEntries.count, 26)
 
-    let checker = InfoChecker(ruleEntries: ruleEntries)
+    let checker = InfoChecker(ruleEntryMap: ruleEntryMap)
 
     checker.assertThat("//tulsi_test:Application")
         .dependsOn("//tulsi_test:Application.apple_binary")
@@ -337,13 +335,13 @@
                                  inSubdirectory: "tulsi_test/TodayExtension")
     XCTAssertNotNil(url)
 
-    let ruleEntries = try aspectInfoExtractor.extractRuleEntriesForLabels([BuildLabel("//tulsi_test:XCTest")],
-                                                                          startupOptions: bazelStartupOptions,
-                                                                          buildOptions: bazelBuildOptions,
-                                                                          bepEnabled: true)
-    XCTAssertEqual(ruleEntries.count, 26)
+    let ruleEntryMap = try aspectInfoExtractor.extractRuleEntriesForLabels([BuildLabel("//tulsi_test:XCTest")],
+                                                                           startupOptions: bazelStartupOptions,
+                                                                           buildOptions: bazelBuildOptions,
+                                                                           bepEnabled: true)
+    XCTAssertEqual(ruleEntryMap.allRuleEntries.count, 26)
 
-    let checker = InfoChecker(ruleEntries: ruleEntries)
+    let checker = InfoChecker(ruleEntryMap: ruleEntryMap)
 
     checker.assertThat("//tulsi_test:XCTest")
         .hasTestHost("//tulsi_test:Application")
@@ -370,12 +368,12 @@
                        inSubdirectory: "tulsi_test")
     makeFileNamed("asset.png", inSubdirectory: "tulsi_test/Stickers.xcstickers")
 
-    let ruleEntries = try aspectInfoExtractor.extractRuleEntriesForLabels([BuildLabel("//tulsi_test:SkylarkApplication")],
-                                                                          startupOptions: bazelStartupOptions,
-                                                                          buildOptions: bazelBuildOptions,
-                                                                          bepEnabled: true)
-    XCTAssertEqual(ruleEntries.count, 14)
-    let checker = InfoChecker(ruleEntries: ruleEntries)
+    let ruleEntryMap = try aspectInfoExtractor.extractRuleEntriesForLabels([BuildLabel("//tulsi_test:SkylarkApplication")],
+                                                                           startupOptions: bazelStartupOptions,
+                                                                           buildOptions: bazelBuildOptions,
+                                                                           bepEnabled: true)
+    XCTAssertEqual(ruleEntryMap.allRuleEntries.count, 14)
+    let checker = InfoChecker(ruleEntryMap: ruleEntryMap)
 
     checker.assertThat("//tulsi_test:SkylarkApplication")
         .dependsOn("//tulsi_test:SkylarkApplication.apple_binary")
@@ -401,11 +399,11 @@
 
   func testPlatformDependentXCTestWithDefaultApp() throws {
     installBUILDFile("PlatformDependent", intoSubdirectory: "tulsi_test")
-    let ruleEntries = try aspectInfoExtractor.extractRuleEntriesForLabels([BuildLabel("//tulsi_test:XCTestWithDefaultHost")],
-                                                                          startupOptions: bazelStartupOptions,
-                                                                          buildOptions: bazelBuildOptions,
-                                                                          bepEnabled: true)
-    let checker = InfoChecker(ruleEntries: ruleEntries)
+    let ruleEntryMap = try aspectInfoExtractor.extractRuleEntriesForLabels([BuildLabel("//tulsi_test:XCTestWithDefaultHost")],
+                                                                           startupOptions: bazelStartupOptions,
+                                                                           buildOptions: bazelBuildOptions,
+                                                                           bepEnabled: true)
+    let checker = InfoChecker(ruleEntryMap: ruleEntryMap)
     checker.assertThat("//tulsi_test:XCTestWithDefaultHost")
         .hasTestHost("//tools/build_defs/apple/testing:ios_default_host")
         .dependsOn("//tools/build_defs/apple/testing:ios_default_host")
@@ -422,14 +420,14 @@
 
   func testWatch() throws {
     installBUILDFile("Watch", intoSubdirectory: "tulsi_test")
-    let ruleEntries = try aspectInfoExtractor.extractRuleEntriesForLabels([BuildLabel("//tulsi_test:Application")],
-                                                                          startupOptions: bazelStartupOptions,
-                                                                          buildOptions: bazelBuildOptions,
-                                                                          bepEnabled: true)
+    let ruleEntryMap = try aspectInfoExtractor.extractRuleEntriesForLabels([BuildLabel("//tulsi_test:Application")],
+                                                                           startupOptions: bazelStartupOptions,
+                                                                           buildOptions: bazelBuildOptions,
+                                                                           bepEnabled: true)
     // TODO(b/65252498): Enable when the bug is fixed.
-    // XCTAssertEqual(ruleEntries.count, 13)
+    // XCTAssertEqual(ruleEntries.allRuleEntries.count, 13)
 
-    let checker = InfoChecker(ruleEntries: ruleEntries)
+    let checker = InfoChecker(ruleEntryMap: ruleEntryMap)
 
     checker.assertThat("//tulsi_test:Application")
       .dependsOn("//tulsi_test:Application.apple_binary")
@@ -487,12 +485,12 @@
   }
 
   func testTestSuite_ExplicitXCTests() throws {
-    let ruleEntries = try aspectInfoExtractor.extractRuleEntriesForLabels([BuildLabel("//\(testDir):explicit_XCTests")],
-                                                                          startupOptions: bazelStartupOptions,
-                                                                          buildOptions: bazelBuildOptions,
-                                                                          bepEnabled: true)
-    XCTAssertEqual(ruleEntries.count, 8)
-    let checker = InfoChecker(ruleEntries: ruleEntries)
+    let ruleEntryMap = try aspectInfoExtractor.extractRuleEntriesForLabels([BuildLabel("//\(testDir):explicit_XCTests")],
+                                                                           startupOptions: bazelStartupOptions,
+                                                                           buildOptions: bazelBuildOptions,
+                                                                           bepEnabled: true)
+    XCTAssertEqual(ruleEntryMap.allRuleEntries.count, 8)
+    let checker = InfoChecker(ruleEntryMap: ruleEntryMap)
 
     checker.assertThat("//\(testDir)/One:XCTest")
         .hasTestHost("//\(testDir):TestApplication")
@@ -510,12 +508,12 @@
   }
 
   func testTestSuite_ExplicitNonXCTests() throws {
-    let ruleEntries = try aspectInfoExtractor.extractRuleEntriesForLabels([BuildLabel("//\(testDir):explicit_NonXCTests")],
-                                                                          startupOptions: bazelStartupOptions,
-                                                                          buildOptions: bazelBuildOptions,
-                                                                          bepEnabled: true)
-    XCTAssertEqual(ruleEntries.count, 3)
-    let checker = InfoChecker(ruleEntries: ruleEntries)
+    let ruleEntryMap = try aspectInfoExtractor.extractRuleEntriesForLabels([BuildLabel("//\(testDir):explicit_NonXCTests")],
+                                                                           startupOptions: bazelStartupOptions,
+                                                                           buildOptions: bazelBuildOptions,
+                                                                           bepEnabled: true)
+    XCTAssertEqual(ruleEntryMap.allRuleEntries.count, 3)
+    let checker = InfoChecker(ruleEntryMap: ruleEntryMap)
 
     checker.assertThat("//\(testDir)/One:NonXCTest")
         .hasAttribute(.xctest, value: false)
@@ -529,12 +527,12 @@
   }
 
   func testTestSuite_TaggedTests() throws {
-    let ruleEntries = try aspectInfoExtractor.extractRuleEntriesForLabels([BuildLabel("//\(testDir):local_tagged_tests")],
-                                                                          startupOptions: bazelStartupOptions,
-                                                                          buildOptions: bazelBuildOptions,
-                                                                          bepEnabled: true)
-    XCTAssertEqual(ruleEntries.count, 7)
-    let checker = InfoChecker(ruleEntries: ruleEntries)
+    let ruleEntryMap = try aspectInfoExtractor.extractRuleEntriesForLabels([BuildLabel("//\(testDir):local_tagged_tests")],
+                                                                           startupOptions: bazelStartupOptions,
+                                                                           buildOptions: bazelBuildOptions,
+                                                                           bepEnabled: true)
+    XCTAssertEqual(ruleEntryMap.allRuleEntries.count, 7)
+    let checker = InfoChecker(ruleEntryMap: ruleEntryMap)
 
     checker.assertThat("//\(testDir):TestSuiteXCTest")
         .hasTestHost("//\(testDir):TestApplication")
@@ -549,32 +547,32 @@
 
 
 private class InfoChecker {
-  let ruleEntries: [BuildLabel: RuleEntry]
+  let ruleEntryMap: RuleEntryMap
 
-  init(ruleEntries: [BuildLabel: RuleEntry]) {
-    self.ruleEntries = ruleEntries
+  init(ruleEntryMap: RuleEntryMap) {
+    self.ruleEntryMap = ruleEntryMap
   }
 
   func assertThat(_ targetLabel: String, line: UInt = #line) -> Context {
-    let ruleEntry = ruleEntries[BuildLabel(targetLabel)]
+    let ruleEntry = ruleEntryMap.anyRuleEntry(withBuildLabel: BuildLabel(targetLabel))
     XCTAssertNotNil(ruleEntry,
                     "No rule entry with the label \(targetLabel) was found",
                     line: line)
 
-    return Context(ruleEntry: ruleEntry, ruleEntries: ruleEntries)
+    return Context(ruleEntry: ruleEntry, ruleEntryMap: ruleEntryMap)
   }
 
   /// Context allowing checks against a single rule entry instance.
   class Context {
     let ruleEntry: RuleEntry?
-    let ruleEntries: [BuildLabel: RuleEntry]
+    let ruleEntryMap: RuleEntryMap
     let resolvedSourceFiles: Set<String>
     let resolvedNonARCSourceFiles: Set<String>
     let resolvedFrameworkFiles: Set<String>
 
-    init(ruleEntry: RuleEntry?, ruleEntries: [BuildLabel: RuleEntry]) {
+    init(ruleEntry: RuleEntry?, ruleEntryMap: RuleEntryMap) {
       self.ruleEntry = ruleEntry
-      self.ruleEntries = ruleEntries
+      self.ruleEntryMap = ruleEntryMap
 
       if let ruleEntry = ruleEntry {
         resolvedSourceFiles = Set(ruleEntry.sourceFiles.map() { $0.fullPath })
diff --git a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/ComplexSingleProject.xcodeproj/project.pbxproj b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/ComplexSingleProject.xcodeproj/project.pbxproj
index c1531e1..ede6439 100644
--- a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/ComplexSingleProject.xcodeproj/project.pbxproj
+++ b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/ComplexSingleProject.xcodeproj/project.pbxproj
@@ -33,6 +33,18 @@
 /* End PBXBuildFile section */
 
 /* Begin PBXContainerItemProxy section */
+		81936672202AA80700000000 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 7E7BD0EAD324880400000000 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 3D31C5E6202AA80600000000;
+		};
+		819366725DB0F3F900000000 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 7E7BD0EAD324880400000000 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 3D31C5E65DB0F3F800000000;
+		};
 		819366726921D83500000000 /* PBXContainerItemProxy */ = {
 			isa = PBXContainerItemProxy;
 			containerPortal = 7E7BD0EAD324880400000000 /* Project object */;
@@ -45,35 +57,23 @@
 			proxyType = 1;
 			remoteGlobalIDString = 3D31C5E66B144ABC00000000;
 		};
-		81936672845452BD00000000 /* PBXContainerItemProxy */ = {
+		819366728C6469FB00000000 /* PBXContainerItemProxy */ = {
 			isa = PBXContainerItemProxy;
 			containerPortal = 7E7BD0EAD324880400000000 /* Project object */;
 			proxyType = 1;
-			remoteGlobalIDString = 3D31C5E6845452BC00000000;
+			remoteGlobalIDString = 3D31C5E68C6469FA00000000;
 		};
-		8193667288E1600500000000 /* PBXContainerItemProxy */ = {
+		81936672E3993AD700000000 /* PBXContainerItemProxy */ = {
 			isa = PBXContainerItemProxy;
 			containerPortal = 7E7BD0EAD324880400000000 /* Project object */;
 			proxyType = 1;
-			remoteGlobalIDString = 3D31C5E688E1600400000000;
+			remoteGlobalIDString = 3D31C5E6E3993AD600000000;
 		};
-		81936672A606B6CD00000000 /* PBXContainerItemProxy */ = {
+		81936672FBA8FA0900000000 /* PBXContainerItemProxy */ = {
 			isa = PBXContainerItemProxy;
 			containerPortal = 7E7BD0EAD324880400000000 /* Project object */;
 			proxyType = 1;
-			remoteGlobalIDString = 3D31C5E6A606B6CC00000000;
-		};
-		81936672AC743AFB00000000 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 7E7BD0EAD324880400000000 /* Project object */;
-			proxyType = 1;
-			remoteGlobalIDString = 3D31C5E6AC743AFA00000000;
-		};
-		81936672B2D1066500000000 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 7E7BD0EAD324880400000000 /* Project object */;
-			proxyType = 1;
-			remoteGlobalIDString = 3D31C5E6B2D1066400000000;
+			remoteGlobalIDString = 3D31C5E6FBA8FA0800000000;
 		};
 /* End PBXContainerItemProxy section */
 
@@ -89,12 +89,10 @@
 		43D68C283A3B027E00000000 /* TodayExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; name = TodayExtension.appex; path = TodayExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C28442EC9D700000000 /* SrcsHeader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SrcsHeader.h; path = "tulsi-workspace/tulsi_e2e_complex/Library/srcs/SrcsHeader.h"; sourceTree = "<group>"; };
 		43D68C2845AE2B9000000000 /* xib.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = xib.xib; path = "tulsi-workspace/tulsi_e2e_complex/Library/xib.xib"; sourceTree = "<group>"; };
-		43D68C284770519E00000000 /* lib_idx_Library_20EC2F4A.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_Library_20EC2F4A.a; path = lib_idx_Library_20EC2F4A.a; sourceTree = BUILT_PRODUCTS_DIR; };
-		43D68C284C2792D600000000 /* lib_idx_TodayExtensionLibrary_CoreDataResources_NonPropagatedLibrary_TestLibrary_79AD2A0E.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_TodayExtensionLibrary_CoreDataResources_NonPropagatedLibrary_TestLibrary_79AD2A0E.a; path = lib_idx_TodayExtensionLibrary_CoreDataResources_NonPropagatedLibrary_TestLibrary_79AD2A0E.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C28520AA0DE00000000 /* output.m */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.objc; name = output.m; path = "blaze-genfiles/tulsi_e2e_complex/SrcGenerator/outs/output.m"; sourceTree = "<group>"; };
 		43D68C2852C6516600000000 /* Localized.strings */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Localized.strings; path = "tulsi-workspace/tulsi_e2e_complex/Application/es.lproj/Localized.strings"; sourceTree = "<group>"; };
+		43D68C2853B580F400000000 /* lib_idx_ApplicationLibrary_30DD5A4B_ios_min8.0.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_ApplicationLibrary_30DD5A4B_ios_min8.0.a; path = lib_idx_ApplicationLibrary_30DD5A4B_ios_min8.0.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C2858F5ABDF00000000 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; name = Info.plist; path = "tulsi-workspace/tulsi_e2e_complex/Application/Info.plist"; sourceTree = "<group>"; };
-		43D68C285E11926600000000 /* lib_idx_SubLibrary_19588DB9.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_SubLibrary_19588DB9.a; path = lib_idx_SubLibrary_19588DB9.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C285E266A6000000000 /* XCTest.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; name = XCTest.xctest; path = XCTest.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C285EBBC35700000000 /* One.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = One.storyboard; path = "tulsi-workspace/tulsi_e2e_complex/Application/Base.lproj/One.storyboard"; sourceTree = "<group>"; };
 		43D68C286266EC1F00000000 /* Localized.strings */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Localized.strings; path = "tulsi-workspace/tulsi_e2e_complex/Application/en.lproj/Localized.strings"; sourceTree = "<group>"; };
@@ -111,24 +109,26 @@
 		43D68C288E876E6400000000 /* Plist1.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; name = Plist1.plist; path = tulsi_e2e_complex/TodayExtension/Plist1.plist; sourceTree = "<group>"; };
 		43D68C28958553E300000000 /* src5.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = src5.mm; path = "tulsi-workspace/tulsi_e2e_complex/Library/srcs/src5.mm"; sourceTree = "<group>"; };
 		43D68C289B31F4AA00000000 /* src2.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = src2.m; path = "tulsi-workspace/tulsi_e2e_complex/LibrarySources/srcs/src2.m"; sourceTree = "<group>"; };
-		43D68C289E2B4E5800000000 /* lib_idx_ApplicationLibrary_30DD5A4B.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_ApplicationLibrary_30DD5A4B.a; path = lib_idx_ApplicationLibrary_30DD5A4B.a; sourceTree = BUILT_PRODUCTS_DIR; };
+		43D68C28A0499AFA00000000 /* lib_idx_Library_20EC2F4A_ios_min8.0.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_Library_20EC2F4A_ios_min8.0.a; path = lib_idx_Library_20EC2F4A_ios_min8.0.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C28A6D7A7EC00000000 /* BUILD */ = {isa = PBXFileReference; lastKnownFileType = text; name = BUILD; path = tulsi_e2e_complex/BUILD; sourceTree = "<group>"; };
 		43D68C28A7AABE7100000000 /* EN.strings */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = EN.strings; path = "tulsi-workspace/tulsi_e2e_complex/Application/en.lproj/EN.strings"; sourceTree = "<group>"; };
+		43D68C28A85F1C2000000000 /* lib_idx_TodayExtensionLibrary_CoreDataResources_NonPropagatedLibrary_TestLibrary_79AD2A0E_ios_min8.0.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_TodayExtensionLibrary_CoreDataResources_NonPropagatedLibrary_TestLibrary_79AD2A0E_ios_min8.0.a; path = lib_idx_TodayExtensionLibrary_CoreDataResources_NonPropagatedLibrary_TestLibrary_79AD2A0E_ios_min8.0.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C28AB2790F000000000 /* src3.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = src3.m; path = "tulsi-workspace/tulsi_e2e_complex/LibrarySources/srcs/src3.m"; sourceTree = "<group>"; };
-		43D68C28AEB2B20C00000000 /* lib_idx_SubLibraryWithDifferentDefines_32E5A9BC.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_SubLibraryWithDifferentDefines_32E5A9BC.a; path = lib_idx_SubLibraryWithDifferentDefines_32E5A9BC.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C28B112D95100000000 /* structured_resources.file2 */ = {isa = PBXFileReference; lastKnownFileType = dyn.age80q4pqqy3a; name = structured_resources.file2; path = "tulsi-workspace/tulsi_e2e_complex/Application/structured_resources.file2"; sourceTree = "<group>"; };
 		43D68C28B72F496D00000000 /* test.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = test.framework; path = "tulsi-workspace/tulsi_e2e_complex/ObjCFramework/test.framework"; sourceTree = "<group>"; };
+		43D68C28B7BD546800000000 /* lib_idx_SubLibraryWithDifferentDefines_32E5A9BC_ios_min8.0.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_SubLibraryWithDifferentDefines_32E5A9BC_ios_min8.0.a; path = lib_idx_SubLibraryWithDifferentDefines_32E5A9BC_ios_min8.0.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C28BAE52D2E00000000 /* src4.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = src4.m; path = "tulsi-workspace/tulsi_e2e_complex/LibrarySources/srcs/src4.m"; sourceTree = "<group>"; };
 		43D68C28BD12D84F00000000 /* structured_resources.file1 */ = {isa = PBXFileReference; lastKnownFileType = dyn.age80q4pqqy2u; name = structured_resources.file1; path = "tulsi-workspace/tulsi_e2e_complex/Application/structured_resources.file1"; sourceTree = "<group>"; };
-		43D68C28C005AE4600000000 /* lib_idx_SubLibraryWithIdenticalDefines_SubLibraryWithDefines_EC7E0D8E.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_SubLibraryWithIdenticalDefines_SubLibraryWithDefines_EC7E0D8E.a; path = lib_idx_SubLibraryWithIdenticalDefines_SubLibraryWithDefines_EC7E0D8E.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C28CF36936300000000 /* Localizable.strings */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Localizable.strings; path = "tulsi-workspace/tulsi_e2e_complex/Application/Base.lproj/Localizable.strings"; sourceTree = "<group>"; };
 		43D68C28CFB68C6700000000 /* memleaks.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = memleaks.m; path = tools/objc/memleaks/memleaks.m; sourceTree = "<group>"; };
+		43D68C28D757BE4200000000 /* lib_idx_SubLibrary_19588DB9_ios_min8.0.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_SubLibrary_19588DB9_ios_min8.0.a; path = lib_idx_SubLibrary_19588DB9_ios_min8.0.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C28DACF7BDE00000000 /* DataModelsTestv2.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; name = DataModelsTestv2.xcdatamodel; path = tulsi_e2e_complex/Test.xcdatamodeld/DataModelsTestv2.xcdatamodel; sourceTree = "<group>"; };
 		43D68C28DC6A997500000000 /* NonARCFile.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = NonARCFile.mm; path = "tulsi-workspace/tulsi_e2e_complex/Application/non_arc_srcs/NonARCFile.mm"; sourceTree = "<group>"; };
 		43D68C28ED583D0500000000 /* today_extension_library.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = today_extension_library.m; path = "tulsi-workspace/tulsi_e2e_complex/TodayExtension/srcs/today_extension_library.m"; sourceTree = "<group>"; };
 		43D68C28EEE1AA8400000000 /* file1 */ = {isa = PBXFileReference; lastKnownFileType = text; name = file1; path = "tulsi-workspace/tulsi_e2e_complex/TodayExtension/resources/file1"; sourceTree = "<group>"; };
 		43D68C28F49055A600000000 /* Application.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; name = Application.app; path = Application.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C28F643652200000000 /* defaultTestSource.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = defaultTestSource.m; path = "tulsi-workspace/tulsi_e2e_complex/XCTest/srcs/defaultTestSource.m"; sourceTree = "<group>"; };
+		43D68C28F83513A200000000 /* lib_idx_SubLibraryWithIdenticalDefines_SubLibraryWithDefines_EC7E0D8E_ios_min8.0.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_SubLibraryWithIdenticalDefines_SubLibraryWithDefines_EC7E0D8E_ios_min8.0.a; path = lib_idx_SubLibraryWithIdenticalDefines_SubLibraryWithDefines_EC7E0D8E_ios_min8.0.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C28FE8BFD3900000000 /* HdrsHeader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = HdrsHeader.h; path = "tulsi-workspace/tulsi_e2e_complex/Library/hdrs/HdrsHeader.h"; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
@@ -215,12 +215,12 @@
 				43D68C283A3B027E00000000 /* TodayExtension.appex */,
 				43D68C285E266A6000000000 /* XCTest.xctest */,
 				966FB6DE2CEC8E5C00000000 /* blaze-bin */,
-				43D68C289E2B4E5800000000 /* lib_idx_ApplicationLibrary_30DD5A4B.a */,
-				43D68C284770519E00000000 /* lib_idx_Library_20EC2F4A.a */,
-				43D68C28AEB2B20C00000000 /* lib_idx_SubLibraryWithDifferentDefines_32E5A9BC.a */,
-				43D68C28C005AE4600000000 /* lib_idx_SubLibraryWithIdenticalDefines_SubLibraryWithDefines_EC7E0D8E.a */,
-				43D68C285E11926600000000 /* lib_idx_SubLibrary_19588DB9.a */,
-				43D68C284C2792D600000000 /* lib_idx_TodayExtensionLibrary_CoreDataResources_NonPropagatedLibrary_TestLibrary_79AD2A0E.a */,
+				43D68C2853B580F400000000 /* lib_idx_ApplicationLibrary_30DD5A4B_ios_min8.0.a */,
+				43D68C28A0499AFA00000000 /* lib_idx_Library_20EC2F4A_ios_min8.0.a */,
+				43D68C28B7BD546800000000 /* lib_idx_SubLibraryWithDifferentDefines_32E5A9BC_ios_min8.0.a */,
+				43D68C28F83513A200000000 /* lib_idx_SubLibraryWithIdenticalDefines_SubLibraryWithDefines_EC7E0D8E_ios_min8.0.a */,
+				43D68C28D757BE4200000000 /* lib_idx_SubLibrary_19588DB9_ios_min8.0.a */,
+				43D68C28A85F1C2000000000 /* lib_idx_TodayExtensionLibrary_CoreDataResources_NonPropagatedLibrary_TestLibrary_79AD2A0E_ios_min8.0.a */,
 			);
 			name = Products;
 			sourceTree = "<group>";
@@ -556,25 +556,6 @@
 /* End PBXLegacyTarget section */
 
 /* Begin PBXNativeTarget section */
-		3D31C5E602191ECA00000000 /* _idx_ApplicationLibrary_30DD5A4B */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = DE4755833698BDF900000000 /* Build configuration list for PBXNativeTarget "_idx_ApplicationLibrary_30DD5A4B" */;
-			buildPhases = (
-				605793E20000000000000001 /* Sources */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-				4DAD0B426921D83500000000 /* PBXTargetDependency */,
-				4DAD0B42845452BD00000000 /* PBXTargetDependency */,
-				4DAD0B4288E1600500000000 /* PBXTargetDependency */,
-				4DAD0B42845452BD00000000 /* PBXTargetDependency */,
-			);
-			name = _idx_ApplicationLibrary_30DD5A4B;
-			productName = _idx_ApplicationLibrary_30DD5A4B;
-			productReference = 43D68C289E2B4E5800000000 /* lib_idx_ApplicationLibrary_30DD5A4B.a */;
-			productType = "com.apple.product-type.library.static";
-		};
 		3D31C5E61F218FDA00000000 /* TodayExtension */ = {
 			isa = PBXNativeTarget;
 			buildConfigurationList = DE4755839DDBAE2300000000 /* Build configuration list for PBXNativeTarget "TodayExtension" */;
@@ -591,6 +572,41 @@
 			productReference = 43D68C283A3B027E00000000 /* TodayExtension.appex */;
 			productType = "com.apple.product-type.app-extension";
 		};
+		3D31C5E6202AA80600000000 /* _idx_Library_20EC2F4A_ios_min8.0 */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = DE47558386FEC76600000000 /* Build configuration list for PBXNativeTarget "_idx_Library_20EC2F4A_ios_min8.0" */;
+			buildPhases = (
+				605793E20000000000000003 /* Sources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				4DAD0B426921D83500000000 /* PBXTargetDependency */,
+				4DAD0B42E3993AD700000000 /* PBXTargetDependency */,
+				4DAD0B425DB0F3F900000000 /* PBXTargetDependency */,
+				4DAD0B42FBA8FA0900000000 /* PBXTargetDependency */,
+			);
+			name = _idx_Library_20EC2F4A_ios_min8.0;
+			productName = _idx_Library_20EC2F4A_ios_min8.0;
+			productReference = 43D68C28A0499AFA00000000 /* lib_idx_Library_20EC2F4A_ios_min8.0.a */;
+			productType = "com.apple.product-type.library.static";
+		};
+		3D31C5E65DB0F3F800000000 /* _idx_SubLibrary_19588DB9_ios_min8.0 */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = DE475583FE21F14A00000000 /* Build configuration list for PBXNativeTarget "_idx_SubLibrary_19588DB9_ios_min8.0" */;
+			buildPhases = (
+				605793E20000000000000005 /* Sources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				4DAD0B426921D83500000000 /* PBXTargetDependency */,
+			);
+			name = _idx_SubLibrary_19588DB9_ios_min8.0;
+			productName = _idx_SubLibrary_19588DB9_ios_min8.0;
+			productReference = 43D68C28D757BE4200000000 /* lib_idx_SubLibrary_19588DB9_ios_min8.0.a */;
+			productType = "com.apple.product-type.library.static";
+		};
 		3D31C5E66B144ABC00000000 /* Application */ = {
 			isa = PBXNativeTarget;
 			buildConfigurationList = DE475583F843F89400000000 /* Build configuration list for PBXNativeTarget "Application" */;
@@ -607,9 +623,9 @@
 			productReference = 43D68C28F49055A600000000 /* Application.app */;
 			productType = "com.apple.product-type.application";
 		};
-		3D31C5E6845452BC00000000 /* _idx_TodayExtensionLibrary_CoreDataResources_NonPropagatedLibrary_TestLibrary_79AD2A0E */ = {
+		3D31C5E68C6469FA00000000 /* _idx_TodayExtensionLibrary_CoreDataResources_NonPropagatedLibrary_TestLibrary_79AD2A0E_ios_min8.0 */ = {
 			isa = PBXNativeTarget;
-			buildConfigurationList = DE475583F00277E500000000 /* Build configuration list for PBXNativeTarget "_idx_TodayExtensionLibrary_CoreDataResources_NonPropagatedLibrary_TestLibrary_79AD2A0E" */;
+			buildConfigurationList = DE475583449EBAD300000000 /* Build configuration list for PBXNativeTarget "_idx_TodayExtensionLibrary_CoreDataResources_NonPropagatedLibrary_TestLibrary_79AD2A0E_ios_min8.0" */;
 			buildPhases = (
 				605793E20000000000000002 /* Sources */,
 			);
@@ -618,65 +634,33 @@
 			dependencies = (
 				4DAD0B426921D83500000000 /* PBXTargetDependency */,
 			);
-			name = _idx_TodayExtensionLibrary_CoreDataResources_NonPropagatedLibrary_TestLibrary_79AD2A0E;
-			productName = _idx_TodayExtensionLibrary_CoreDataResources_NonPropagatedLibrary_TestLibrary_79AD2A0E;
-			productReference = 43D68C284C2792D600000000 /* lib_idx_TodayExtensionLibrary_CoreDataResources_NonPropagatedLibrary_TestLibrary_79AD2A0E.a */;
+			name = _idx_TodayExtensionLibrary_CoreDataResources_NonPropagatedLibrary_TestLibrary_79AD2A0E_ios_min8.0;
+			productName = _idx_TodayExtensionLibrary_CoreDataResources_NonPropagatedLibrary_TestLibrary_79AD2A0E_ios_min8.0;
+			productReference = 43D68C28A85F1C2000000000 /* lib_idx_TodayExtensionLibrary_CoreDataResources_NonPropagatedLibrary_TestLibrary_79AD2A0E_ios_min8.0.a */;
 			productType = "com.apple.product-type.library.static";
 		};
-		3D31C5E688E1600400000000 /* _idx_Library_20EC2F4A */ = {
+		3D31C5E6C106276200000000 /* _idx_ApplicationLibrary_30DD5A4B_ios_min8.0 */ = {
 			isa = PBXNativeTarget;
-			buildConfigurationList = DE4755837C63A0C800000000 /* Build configuration list for PBXNativeTarget "_idx_Library_20EC2F4A" */;
+			buildConfigurationList = DE475583C8973FE700000000 /* Build configuration list for PBXNativeTarget "_idx_ApplicationLibrary_30DD5A4B_ios_min8.0" */;
 			buildPhases = (
-				605793E20000000000000003 /* Sources */,
+				605793E20000000000000001 /* Sources */,
 			);
 			buildRules = (
 			);
 			dependencies = (
 				4DAD0B426921D83500000000 /* PBXTargetDependency */,
-				4DAD0B42B2D1066500000000 /* PBXTargetDependency */,
-				4DAD0B42A606B6CD00000000 /* PBXTargetDependency */,
-				4DAD0B42AC743AFB00000000 /* PBXTargetDependency */,
+				4DAD0B428C6469FB00000000 /* PBXTargetDependency */,
+				4DAD0B428C6469FB00000000 /* PBXTargetDependency */,
+				4DAD0B42202AA80700000000 /* PBXTargetDependency */,
 			);
-			name = _idx_Library_20EC2F4A;
-			productName = _idx_Library_20EC2F4A;
-			productReference = 43D68C284770519E00000000 /* lib_idx_Library_20EC2F4A.a */;
+			name = _idx_ApplicationLibrary_30DD5A4B_ios_min8.0;
+			productName = _idx_ApplicationLibrary_30DD5A4B_ios_min8.0;
+			productReference = 43D68C2853B580F400000000 /* lib_idx_ApplicationLibrary_30DD5A4B_ios_min8.0.a */;
 			productType = "com.apple.product-type.library.static";
 		};
-		3D31C5E6A606B6CC00000000 /* _idx_SubLibrary_19588DB9 */ = {
+		3D31C5E6E3993AD600000000 /* _idx_SubLibraryWithDifferentDefines_32E5A9BC_ios_min8.0 */ = {
 			isa = PBXNativeTarget;
-			buildConfigurationList = DE4755839504F6DC00000000 /* Build configuration list for PBXNativeTarget "_idx_SubLibrary_19588DB9" */;
-			buildPhases = (
-				605793E20000000000000005 /* Sources */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-				4DAD0B426921D83500000000 /* PBXTargetDependency */,
-			);
-			name = _idx_SubLibrary_19588DB9;
-			productName = _idx_SubLibrary_19588DB9;
-			productReference = 43D68C285E11926600000000 /* lib_idx_SubLibrary_19588DB9.a */;
-			productType = "com.apple.product-type.library.static";
-		};
-		3D31C5E6AC743AFA00000000 /* _idx_SubLibraryWithDifferentDefines_32E5A9BC */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = DE4755834C4C7FB300000000 /* Build configuration list for PBXNativeTarget "_idx_SubLibraryWithDifferentDefines_32E5A9BC" */;
-			buildPhases = (
-				605793E20000000000000006 /* Sources */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-				4DAD0B426921D83500000000 /* PBXTargetDependency */,
-			);
-			name = _idx_SubLibraryWithDifferentDefines_32E5A9BC;
-			productName = _idx_SubLibraryWithDifferentDefines_32E5A9BC;
-			productReference = 43D68C28AEB2B20C00000000 /* lib_idx_SubLibraryWithDifferentDefines_32E5A9BC.a */;
-			productType = "com.apple.product-type.library.static";
-		};
-		3D31C5E6B2D1066400000000 /* _idx_SubLibraryWithIdenticalDefines_SubLibraryWithDefines_EC7E0D8E */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = DE47558335F38FE700000000 /* Build configuration list for PBXNativeTarget "_idx_SubLibraryWithIdenticalDefines_SubLibraryWithDefines_EC7E0D8E" */;
+			buildConfigurationList = DE475583AD8E320D00000000 /* Build configuration list for PBXNativeTarget "_idx_SubLibraryWithDifferentDefines_32E5A9BC_ios_min8.0" */;
 			buildPhases = (
 				605793E20000000000000004 /* Sources */,
 			);
@@ -685,9 +669,9 @@
 			dependencies = (
 				4DAD0B426921D83500000000 /* PBXTargetDependency */,
 			);
-			name = _idx_SubLibraryWithIdenticalDefines_SubLibraryWithDefines_EC7E0D8E;
-			productName = _idx_SubLibraryWithIdenticalDefines_SubLibraryWithDefines_EC7E0D8E;
-			productReference = 43D68C28C005AE4600000000 /* lib_idx_SubLibraryWithIdenticalDefines_SubLibraryWithDefines_EC7E0D8E.a */;
+			name = _idx_SubLibraryWithDifferentDefines_32E5A9BC_ios_min8.0;
+			productName = _idx_SubLibraryWithDifferentDefines_32E5A9BC_ios_min8.0;
+			productReference = 43D68C28B7BD546800000000 /* lib_idx_SubLibraryWithDifferentDefines_32E5A9BC_ios_min8.0.a */;
 			productType = "com.apple.product-type.library.static";
 		};
 		3D31C5E6EF2E7F4000000000 /* XCTest */ = {
@@ -708,6 +692,22 @@
 			productReference = 43D68C285E266A6000000000 /* XCTest.xctest */;
 			productType = "com.apple.product-type.bundle.unit-test";
 		};
+		3D31C5E6FBA8FA0800000000 /* _idx_SubLibraryWithIdenticalDefines_SubLibraryWithDefines_EC7E0D8E_ios_min8.0 */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = DE475583FD65EB8600000000 /* Build configuration list for PBXNativeTarget "_idx_SubLibraryWithIdenticalDefines_SubLibraryWithDefines_EC7E0D8E_ios_min8.0" */;
+			buildPhases = (
+				605793E20000000000000006 /* Sources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				4DAD0B426921D83500000000 /* PBXTargetDependency */,
+			);
+			name = _idx_SubLibraryWithIdenticalDefines_SubLibraryWithDefines_EC7E0D8E_ios_min8.0;
+			productName = _idx_SubLibraryWithIdenticalDefines_SubLibraryWithDefines_EC7E0D8E_ios_min8.0;
+			productReference = 43D68C28F83513A200000000 /* lib_idx_SubLibraryWithIdenticalDefines_SubLibraryWithDefines_EC7E0D8E_ios_min8.0.a */;
+			productType = "com.apple.product-type.library.static";
+		};
 /* End PBXNativeTarget section */
 
 /* Begin PBXProject section */
@@ -735,12 +735,12 @@
 				3D31C5E61F218FDA00000000 /* TodayExtension */,
 				3D31C5E6EF2E7F4000000000 /* XCTest */,
 				ECCC95946921D83400000000 /* _bazel_clean_ */,
-				3D31C5E602191ECA00000000 /* _idx_ApplicationLibrary_30DD5A4B */,
-				3D31C5E688E1600400000000 /* _idx_Library_20EC2F4A */,
-				3D31C5E6AC743AFA00000000 /* _idx_SubLibraryWithDifferentDefines_32E5A9BC */,
-				3D31C5E6B2D1066400000000 /* _idx_SubLibraryWithIdenticalDefines_SubLibraryWithDefines_EC7E0D8E */,
-				3D31C5E6A606B6CC00000000 /* _idx_SubLibrary_19588DB9 */,
-				3D31C5E6845452BC00000000 /* _idx_TodayExtensionLibrary_CoreDataResources_NonPropagatedLibrary_TestLibrary_79AD2A0E */,
+				3D31C5E6C106276200000000 /* _idx_ApplicationLibrary_30DD5A4B_ios_min8.0 */,
+				3D31C5E6202AA80600000000 /* _idx_Library_20EC2F4A_ios_min8.0 */,
+				3D31C5E6E3993AD600000000 /* _idx_SubLibraryWithDifferentDefines_32E5A9BC_ios_min8.0 */,
+				3D31C5E6FBA8FA0800000000 /* _idx_SubLibraryWithIdenticalDefines_SubLibraryWithDefines_EC7E0D8E_ios_min8.0 */,
+				3D31C5E65DB0F3F800000000 /* _idx_SubLibrary_19588DB9_ios_min8.0 */,
+				3D31C5E68C6469FA00000000 /* _idx_TodayExtensionLibrary_CoreDataResources_NonPropagatedLibrary_TestLibrary_79AD2A0E_ios_min8.0 */,
 			);
 		};
 /* End PBXProject section */
@@ -842,8 +842,7 @@
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 0;
 			files = (
-				E6AF49477C31BCDA00000000 /* sub_library_with_identical_defines.m in srcs */,
-				E6AF49471A41382100000000 /* src.mm in srcs */,
+				E6AF49476A36B02900000000 /* src.mm in srcs */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -859,13 +858,22 @@
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 0;
 			files = (
-				E6AF49476A36B02900000000 /* src.mm in srcs */,
+				E6AF49477C31BCDA00000000 /* sub_library_with_identical_defines.m in srcs */,
+				E6AF49471A41382100000000 /* src.mm in srcs */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 /* End PBXSourcesBuildPhase section */
 
 /* Begin PBXTargetDependency section */
+		4DAD0B42202AA80700000000 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			targetProxy = 81936672202AA80700000000 /* PBXContainerItemProxy */;
+		};
+		4DAD0B425DB0F3F900000000 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			targetProxy = 819366725DB0F3F900000000 /* PBXContainerItemProxy */;
+		};
 		4DAD0B426921D83500000000 /* PBXTargetDependency */ = {
 			isa = PBXTargetDependency;
 			targetProxy = 819366726921D83500000000 /* PBXContainerItemProxy */;
@@ -874,25 +882,17 @@
 			isa = PBXTargetDependency;
 			targetProxy = 819366726B144ABD00000000 /* PBXContainerItemProxy */;
 		};
-		4DAD0B42845452BD00000000 /* PBXTargetDependency */ = {
+		4DAD0B428C6469FB00000000 /* PBXTargetDependency */ = {
 			isa = PBXTargetDependency;
-			targetProxy = 81936672845452BD00000000 /* PBXContainerItemProxy */;
+			targetProxy = 819366728C6469FB00000000 /* PBXContainerItemProxy */;
 		};
-		4DAD0B4288E1600500000000 /* PBXTargetDependency */ = {
+		4DAD0B42E3993AD700000000 /* PBXTargetDependency */ = {
 			isa = PBXTargetDependency;
-			targetProxy = 8193667288E1600500000000 /* PBXContainerItemProxy */;
+			targetProxy = 81936672E3993AD700000000 /* PBXContainerItemProxy */;
 		};
-		4DAD0B42A606B6CD00000000 /* PBXTargetDependency */ = {
+		4DAD0B42FBA8FA0900000000 /* PBXTargetDependency */ = {
 			isa = PBXTargetDependency;
-			targetProxy = 81936672A606B6CD00000000 /* PBXContainerItemProxy */;
-		};
-		4DAD0B42AC743AFB00000000 /* PBXTargetDependency */ = {
-			isa = PBXTargetDependency;
-			targetProxy = 81936672AC743AFB00000000 /* PBXContainerItemProxy */;
-		};
-		4DAD0B42B2D1066500000000 /* PBXTargetDependency */ = {
-			isa = PBXTargetDependency;
-			targetProxy = 81936672B2D1066500000000 /* PBXContainerItemProxy */;
+			targetProxy = 81936672FBA8FA0900000000 /* PBXContainerItemProxy */;
 		};
 /* End PBXTargetDependency section */
 
@@ -1001,7 +1001,7 @@
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_WR)/tulsi_e2e_complex/Application/includes/first/include $(TULSI_WR)/tulsi-includes/x/x/tulsi_e2e_complex/Application/includes/first/include $(TULSI_WR)/tulsi_e2e_complex/Application/includes/second/include $(TULSI_WR)/tulsi-includes/x/x/tulsi_e2e_complex/Application/includes/second/include $(TULSI_WR)/tulsi_e2e_complex/SubLibraryWithDifferentDefines/includes $(TULSI_WR)/tulsi-includes/x/x/tulsi_e2e_complex/SubLibraryWithDifferentDefines/includes $(TULSI_BWRS)/tulsi_e2e_complex/Application/includes/first/include $(TULSI_BWRS)/tulsi-includes/x/x/tulsi_e2e_complex/Application/includes/first/include $(TULSI_BWRS)/tulsi_e2e_complex/Application/includes/second/include $(TULSI_BWRS)/tulsi-includes/x/x/tulsi_e2e_complex/Application/includes/second/include $(TULSI_BWRS)/tulsi_e2e_complex/SubLibraryWithDifferentDefines/includes $(TULSI_BWRS)/tulsi-includes/x/x/tulsi_e2e_complex/SubLibraryWithDifferentDefines/includes $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
 				OTHER_CFLAGS = "-DA=BINARY_DEFINE -DLIBRARY SECOND DEFINE=2 -DLIBRARY_DEFINES_DEFINE=1 -DLIBRARY_VALUE_WITH_SPACES=Value with spaces -DSubLibraryWithDefines=1 -DSubLibraryWithDefines_DEFINE=SubLibraryWithDefines -DSubLibraryWithDifferentDefines=1";
-				PRODUCT_NAME = _idx_ApplicationLibrary_30DD5A4B;
+				PRODUCT_NAME = _idx_ApplicationLibrary_30DD5A4B_ios_min8.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -1014,7 +1014,7 @@
 				GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1";
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
-				PRODUCT_NAME = _idx_TodayExtensionLibrary_CoreDataResources_NonPropagatedLibrary_TestLibrary_79AD2A0E;
+				PRODUCT_NAME = _idx_TodayExtensionLibrary_CoreDataResources_NonPropagatedLibrary_TestLibrary_79AD2A0E_ios_min8.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -1029,7 +1029,7 @@
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_WR)/tulsi_e2e_complex/SubLibraryWithDifferentDefines/includes $(TULSI_WR)/tulsi-includes/x/x/tulsi_e2e_complex/SubLibraryWithDifferentDefines/includes $(TULSI_BWRS)/tulsi_e2e_complex/SubLibraryWithDifferentDefines/includes $(TULSI_BWRS)/tulsi-includes/x/x/tulsi_e2e_complex/SubLibraryWithDifferentDefines/includes $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
 				OTHER_CFLAGS = "-DLIBRARY SECOND DEFINE=2 -DLIBRARY_COPT_DEFINE -DLIBRARY_DEFINES_DEFINE=1 -DLIBRARY_VALUE_WITH_SPACES=Value with spaces -DSubLibraryWithDefines=1 -DSubLibraryWithDefines_DEFINE=SubLibraryWithDefines -DSubLibraryWithDifferentDefines=1";
-				PRODUCT_NAME = _idx_Library_20EC2F4A;
+				PRODUCT_NAME = _idx_Library_20EC2F4A_ios_min8.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -1040,10 +1040,10 @@
 			buildSettings = {
 				ARCHS = x86_64;
 				GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1";
-				HEADER_SEARCH_PATHS = "$(inherited) /SubLibraryWithDefines/local/includes $(TULSI_BWRS)/relative/SubLibraryWithDefines/local/includes $(TULSI_BWRS)/tools/cpp/gcc3 ";
+				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_WR)/tulsi_e2e_complex/SubLibraryWithDifferentDefines/includes $(TULSI_WR)/tulsi-includes/x/x/tulsi_e2e_complex/SubLibraryWithDifferentDefines/includes $(TULSI_BWRS)/tulsi_e2e_complex/SubLibraryWithDifferentDefines/includes $(TULSI_BWRS)/tulsi-includes/x/x/tulsi_e2e_complex/SubLibraryWithDifferentDefines/includes $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
-				OTHER_CFLAGS = "-menable-no-nans -menable-no-infs -DSubLibraryWithDefines=1 -DSubLibraryWithDefines_DEFINE=SubLibraryWithDefines";
-				PRODUCT_NAME = _idx_SubLibraryWithIdenticalDefines_SubLibraryWithDefines_EC7E0D8E;
+				OTHER_CFLAGS = "-D'SubLibraryWithDifferentDefines Define with spaces and value'=1 -D'SubLibraryWithDifferentDefines Define with spaces' -DSubLibraryWithDifferentDefines=1 -DSubLibraryWithDifferentDefines_INTEGER_DEFINE=1 -DSubLibraryWithDifferentDefines_LocalDefine -DSubLibraryWithDifferentDefines_STRING_DEFINE=Test -DSubLibraryWithDifferentDefines_STRING_WITH_SPACES='String with spaces'";
+				PRODUCT_NAME = _idx_SubLibraryWithDifferentDefines_32E5A9BC_ios_min8.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -1057,7 +1057,7 @@
 				GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1";
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
-				PRODUCT_NAME = _idx_SubLibrary_19588DB9;
+				PRODUCT_NAME = _idx_SubLibrary_19588DB9_ios_min8.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -1068,10 +1068,10 @@
 			buildSettings = {
 				ARCHS = x86_64;
 				GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1";
-				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_WR)/tulsi_e2e_complex/SubLibraryWithDifferentDefines/includes $(TULSI_WR)/tulsi-includes/x/x/tulsi_e2e_complex/SubLibraryWithDifferentDefines/includes $(TULSI_BWRS)/tulsi_e2e_complex/SubLibraryWithDifferentDefines/includes $(TULSI_BWRS)/tulsi-includes/x/x/tulsi_e2e_complex/SubLibraryWithDifferentDefines/includes $(TULSI_BWRS)/tools/cpp/gcc3 ";
+				HEADER_SEARCH_PATHS = "$(inherited) /SubLibraryWithDefines/local/includes $(TULSI_BWRS)/relative/SubLibraryWithDefines/local/includes $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
-				OTHER_CFLAGS = "-D'SubLibraryWithDifferentDefines Define with spaces and value'=1 -D'SubLibraryWithDifferentDefines Define with spaces' -DSubLibraryWithDifferentDefines=1 -DSubLibraryWithDifferentDefines_INTEGER_DEFINE=1 -DSubLibraryWithDifferentDefines_LocalDefine -DSubLibraryWithDifferentDefines_STRING_DEFINE=Test -DSubLibraryWithDifferentDefines_STRING_WITH_SPACES='String with spaces'";
-				PRODUCT_NAME = _idx_SubLibraryWithDifferentDefines_32E5A9BC;
+				OTHER_CFLAGS = "-menable-no-nans -menable-no-infs -DSubLibraryWithDefines=1 -DSubLibraryWithDefines_DEFINE=SubLibraryWithDefines";
+				PRODUCT_NAME = _idx_SubLibraryWithIdenticalDefines_SubLibraryWithDefines_EC7E0D8E_ios_min8.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -1182,7 +1182,7 @@
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_WR)/tulsi_e2e_complex/Application/includes/first/include $(TULSI_WR)/tulsi-includes/x/x/tulsi_e2e_complex/Application/includes/first/include $(TULSI_WR)/tulsi_e2e_complex/Application/includes/second/include $(TULSI_WR)/tulsi-includes/x/x/tulsi_e2e_complex/Application/includes/second/include $(TULSI_WR)/tulsi_e2e_complex/SubLibraryWithDifferentDefines/includes $(TULSI_WR)/tulsi-includes/x/x/tulsi_e2e_complex/SubLibraryWithDifferentDefines/includes $(TULSI_BWRS)/tulsi_e2e_complex/Application/includes/first/include $(TULSI_BWRS)/tulsi-includes/x/x/tulsi_e2e_complex/Application/includes/first/include $(TULSI_BWRS)/tulsi_e2e_complex/Application/includes/second/include $(TULSI_BWRS)/tulsi-includes/x/x/tulsi_e2e_complex/Application/includes/second/include $(TULSI_BWRS)/tulsi_e2e_complex/SubLibraryWithDifferentDefines/includes $(TULSI_BWRS)/tulsi-includes/x/x/tulsi_e2e_complex/SubLibraryWithDifferentDefines/includes $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
 				OTHER_CFLAGS = "-DA=BINARY_DEFINE -DLIBRARY SECOND DEFINE=2 -DLIBRARY_DEFINES_DEFINE=1 -DLIBRARY_VALUE_WITH_SPACES=Value with spaces -DSubLibraryWithDefines=1 -DSubLibraryWithDefines_DEFINE=SubLibraryWithDefines -DSubLibraryWithDifferentDefines=1";
-				PRODUCT_NAME = _idx_ApplicationLibrary_30DD5A4B;
+				PRODUCT_NAME = _idx_ApplicationLibrary_30DD5A4B_ios_min8.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -1195,7 +1195,7 @@
 				GCC_PREPROCESSOR_DEFINITIONS = "NDEBUG=1";
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
-				PRODUCT_NAME = _idx_TodayExtensionLibrary_CoreDataResources_NonPropagatedLibrary_TestLibrary_79AD2A0E;
+				PRODUCT_NAME = _idx_TodayExtensionLibrary_CoreDataResources_NonPropagatedLibrary_TestLibrary_79AD2A0E_ios_min8.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -1210,7 +1210,7 @@
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_WR)/tulsi_e2e_complex/SubLibraryWithDifferentDefines/includes $(TULSI_WR)/tulsi-includes/x/x/tulsi_e2e_complex/SubLibraryWithDifferentDefines/includes $(TULSI_BWRS)/tulsi_e2e_complex/SubLibraryWithDifferentDefines/includes $(TULSI_BWRS)/tulsi-includes/x/x/tulsi_e2e_complex/SubLibraryWithDifferentDefines/includes $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
 				OTHER_CFLAGS = "-DLIBRARY SECOND DEFINE=2 -DLIBRARY_COPT_DEFINE -DLIBRARY_DEFINES_DEFINE=1 -DLIBRARY_VALUE_WITH_SPACES=Value with spaces -DSubLibraryWithDefines=1 -DSubLibraryWithDefines_DEFINE=SubLibraryWithDefines -DSubLibraryWithDifferentDefines=1";
-				PRODUCT_NAME = _idx_Library_20EC2F4A;
+				PRODUCT_NAME = _idx_Library_20EC2F4A_ios_min8.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -1221,10 +1221,10 @@
 			buildSettings = {
 				ARCHS = x86_64;
 				GCC_PREPROCESSOR_DEFINITIONS = "NDEBUG=1";
-				HEADER_SEARCH_PATHS = "$(inherited) /SubLibraryWithDefines/local/includes $(TULSI_BWRS)/relative/SubLibraryWithDefines/local/includes $(TULSI_BWRS)/tools/cpp/gcc3 ";
+				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_WR)/tulsi_e2e_complex/SubLibraryWithDifferentDefines/includes $(TULSI_WR)/tulsi-includes/x/x/tulsi_e2e_complex/SubLibraryWithDifferentDefines/includes $(TULSI_BWRS)/tulsi_e2e_complex/SubLibraryWithDifferentDefines/includes $(TULSI_BWRS)/tulsi-includes/x/x/tulsi_e2e_complex/SubLibraryWithDifferentDefines/includes $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
-				OTHER_CFLAGS = "-menable-no-nans -menable-no-infs -DSubLibraryWithDefines=1 -DSubLibraryWithDefines_DEFINE=SubLibraryWithDefines";
-				PRODUCT_NAME = _idx_SubLibraryWithIdenticalDefines_SubLibraryWithDefines_EC7E0D8E;
+				OTHER_CFLAGS = "-D'SubLibraryWithDifferentDefines Define with spaces and value'=1 -D'SubLibraryWithDifferentDefines Define with spaces' -DSubLibraryWithDifferentDefines=1 -DSubLibraryWithDifferentDefines_INTEGER_DEFINE=1 -DSubLibraryWithDifferentDefines_LocalDefine -DSubLibraryWithDifferentDefines_STRING_DEFINE=Test -DSubLibraryWithDifferentDefines_STRING_WITH_SPACES='String with spaces'";
+				PRODUCT_NAME = _idx_SubLibraryWithDifferentDefines_32E5A9BC_ios_min8.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -1238,7 +1238,7 @@
 				GCC_PREPROCESSOR_DEFINITIONS = "NDEBUG=1";
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
-				PRODUCT_NAME = _idx_SubLibrary_19588DB9;
+				PRODUCT_NAME = _idx_SubLibrary_19588DB9_ios_min8.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -1249,10 +1249,10 @@
 			buildSettings = {
 				ARCHS = x86_64;
 				GCC_PREPROCESSOR_DEFINITIONS = "NDEBUG=1";
-				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_WR)/tulsi_e2e_complex/SubLibraryWithDifferentDefines/includes $(TULSI_WR)/tulsi-includes/x/x/tulsi_e2e_complex/SubLibraryWithDifferentDefines/includes $(TULSI_BWRS)/tulsi_e2e_complex/SubLibraryWithDifferentDefines/includes $(TULSI_BWRS)/tulsi-includes/x/x/tulsi_e2e_complex/SubLibraryWithDifferentDefines/includes $(TULSI_BWRS)/tools/cpp/gcc3 ";
+				HEADER_SEARCH_PATHS = "$(inherited) /SubLibraryWithDefines/local/includes $(TULSI_BWRS)/relative/SubLibraryWithDefines/local/includes $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
-				OTHER_CFLAGS = "-D'SubLibraryWithDifferentDefines Define with spaces and value'=1 -D'SubLibraryWithDifferentDefines Define with spaces' -DSubLibraryWithDifferentDefines=1 -DSubLibraryWithDifferentDefines_INTEGER_DEFINE=1 -DSubLibraryWithDifferentDefines_LocalDefine -DSubLibraryWithDifferentDefines_STRING_DEFINE=Test -DSubLibraryWithDifferentDefines_STRING_WITH_SPACES='String with spaces'";
-				PRODUCT_NAME = _idx_SubLibraryWithDifferentDefines_32E5A9BC;
+				OTHER_CFLAGS = "-menable-no-nans -menable-no-infs -DSubLibraryWithDefines=1 -DSubLibraryWithDefines_DEFINE=SubLibraryWithDefines";
+				PRODUCT_NAME = _idx_SubLibraryWithIdenticalDefines_SubLibraryWithDefines_EC7E0D8E_ios_min8.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -1510,27 +1510,11 @@
 /* End XCBuildConfiguration section */
 
 /* Begin XCConfigurationList section */
-		DE47558335F38FE700000000 /* Build configuration list for PBXNativeTarget "_idx_SubLibraryWithIdenticalDefines_SubLibraryWithDefines_EC7E0D8E" */ = {
+		DE475583449EBAD300000000 /* Build configuration list for PBXNativeTarget "_idx_TodayExtensionLibrary_CoreDataResources_NonPropagatedLibrary_TestLibrary_79AD2A0E_ios_min8.0" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
-				44936BD67EED3C4D00000007 /* Debug */,
-				44936BD6A3D45CE900000007 /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-		};
-		DE4755833698BDF900000000 /* Build configuration list for PBXNativeTarget "_idx_ApplicationLibrary_30DD5A4B" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				44936BD67EED3C4D00000004 /* Debug */,
-				44936BD6A3D45CE900000004 /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-		};
-		DE4755834C4C7FB300000000 /* Build configuration list for PBXNativeTarget "_idx_SubLibraryWithDifferentDefines_32E5A9BC" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				44936BD67EED3C4D00000009 /* Debug */,
-				44936BD6A3D45CE900000009 /* Release */,
+				44936BD67EED3C4D00000005 /* Debug */,
+				44936BD6A3D45CE900000005 /* Release */,
 			);
 			defaultConfigurationIsVisible = 0;
 		};
@@ -1544,7 +1528,7 @@
 			);
 			defaultConfigurationIsVisible = 0;
 		};
-		DE4755837C63A0C800000000 /* Build configuration list for PBXNativeTarget "_idx_Library_20EC2F4A" */ = {
+		DE47558386FEC76600000000 /* Build configuration list for PBXNativeTarget "_idx_Library_20EC2F4A_ios_min8.0" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
 				44936BD67EED3C4D00000006 /* Debug */,
@@ -1552,14 +1536,6 @@
 			);
 			defaultConfigurationIsVisible = 0;
 		};
-		DE4755839504F6DC00000000 /* Build configuration list for PBXNativeTarget "_idx_SubLibrary_19588DB9" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				44936BD67EED3C4D00000008 /* Debug */,
-				44936BD6A3D45CE900000008 /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-		};
 		DE4755839DDBAE2300000000 /* Build configuration list for PBXNativeTarget "TodayExtension" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
@@ -1570,6 +1546,14 @@
 			);
 			defaultConfigurationIsVisible = 0;
 		};
+		DE475583AD8E320D00000000 /* Build configuration list for PBXNativeTarget "_idx_SubLibraryWithDifferentDefines_32E5A9BC_ios_min8.0" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				44936BD67EED3C4D00000007 /* Debug */,
+				44936BD6A3D45CE900000007 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+		};
 		DE475583B2A6125600000000 /* Build configuration list for PBXNativeTarget "XCTest" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
@@ -1580,17 +1564,17 @@
 			);
 			defaultConfigurationIsVisible = 0;
 		};
-		DE475583CA83BF7E00000000 /* Build configuration list for PBXLegacyTarget "_bazel_clean_" */ = {
+		DE475583C8973FE700000000 /* Build configuration list for PBXNativeTarget "_idx_ApplicationLibrary_30DD5A4B_ios_min8.0" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
+				44936BD67EED3C4D00000004 /* Debug */,
+				44936BD6A3D45CE900000004 /* Release */,
 			);
 			defaultConfigurationIsVisible = 0;
 		};
-		DE475583F00277E500000000 /* Build configuration list for PBXNativeTarget "_idx_TodayExtensionLibrary_CoreDataResources_NonPropagatedLibrary_TestLibrary_79AD2A0E" */ = {
+		DE475583CA83BF7E00000000 /* Build configuration list for PBXLegacyTarget "_bazel_clean_" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
-				44936BD67EED3C4D00000005 /* Debug */,
-				44936BD6A3D45CE900000005 /* Release */,
 			);
 			defaultConfigurationIsVisible = 0;
 		};
@@ -1604,6 +1588,22 @@
 			);
 			defaultConfigurationIsVisible = 0;
 		};
+		DE475583FD65EB8600000000 /* Build configuration list for PBXNativeTarget "_idx_SubLibraryWithIdenticalDefines_SubLibraryWithDefines_EC7E0D8E_ios_min8.0" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				44936BD67EED3C4D00000009 /* Debug */,
+				44936BD6A3D45CE900000009 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+		};
+		DE475583FE21F14A00000000 /* Build configuration list for PBXNativeTarget "_idx_SubLibrary_19588DB9_ios_min8.0" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				44936BD67EED3C4D00000008 /* Debug */,
+				44936BD6A3D45CE900000008 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+		};
 /* End XCConfigurationList section */
 
 /* Begin XCVersionGroup section */
diff --git a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/MacOSProject.xcodeproj/project.pbxproj b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/MacOSProject.xcodeproj/project.pbxproj
index 80382ad..f4eb521 100644
--- a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/MacOSProject.xcodeproj/project.pbxproj
+++ b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/MacOSProject.xcodeproj/project.pbxproj
@@ -33,9 +33,9 @@
 		43D68C2859FC82CA00000000 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = "tulsi-workspace/tulsi_e2e_mac/src/AppDelegate.m"; sourceTree = "<group>"; };
 		43D68C286BE5C4F400000000 /* TodayViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TodayViewController.h; path = "tulsi-workspace/tulsi_e2e_mac/src/extensions/today/TodayViewController.h"; sourceTree = "<group>"; };
 		43D68C2876BC0BC700000000 /* MyTodayExtension-Entitlements.entitlements */ = {isa = PBXFileReference; lastKnownFileType = "com.apple.xcode.entitlements-property-list"; name = "MyTodayExtension-Entitlements.entitlements"; path = "tulsi-workspace/tulsi_e2e_mac/MyTodayExtension-Entitlements.entitlements"; sourceTree = "<group>"; };
-		43D68C288A0F77F600000000 /* lib_idx_MyTodayExtensionSources_MyCommandLineAppSource_MyMacAppSources_F8389608.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_MyTodayExtensionSources_MyCommandLineAppSource_MyMacAppSources_F8389608.a; path = lib_idx_MyTodayExtensionSources_MyCommandLineAppSource_MyMacAppSources_F8389608.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C289199386500000000 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; name = Info.plist; path = "tulsi-workspace/tulsi_e2e_mac/Info.plist"; sourceTree = "<group>"; };
 		43D68C28936F558E00000000 /* MyTodayExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; name = MyTodayExtension.appex; path = MyTodayExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
+		43D68C28A6703B8200000000 /* lib_idx_MyTodayExtensionSources_MyCommandLineAppSource_MyMacAppSources_F8389608_macos_min10.12.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_MyTodayExtensionSources_MyCommandLineAppSource_MyMacAppSources_F8389608_macos_min10.12.a; path = lib_idx_MyTodayExtensionSources_MyCommandLineAppSource_MyMacAppSources_F8389608_macos_min10.12.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C28CBE52D2300000000 /* BUILD */ = {isa = PBXFileReference; lastKnownFileType = text; name = BUILD; path = tulsi_e2e_mac/BUILD; sourceTree = "<group>"; };
 		43D68C28DE68C70F00000000 /* Main.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Main.storyboard; path = "tulsi-workspace/tulsi_e2e_mac/Resources/Main.storyboard"; sourceTree = "<group>"; };
 		43D68C28F1794D7D00000000 /* MyCommandLineApp-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; name = "MyCommandLineApp-Info.plist"; path = "tulsi-workspace/tulsi_e2e_mac/MyCommandLineApp-Info.plist"; sourceTree = "<group>"; };
@@ -73,7 +73,7 @@
 				43D68C281E9E743E00000000 /* MyCommandLineApp */,
 				43D68C2810C8DA6C00000000 /* MyMacOSApp.app */,
 				43D68C28936F558E00000000 /* MyTodayExtension.appex */,
-				43D68C288A0F77F600000000 /* lib_idx_MyTodayExtensionSources_MyCommandLineAppSource_MyMacAppSources_F8389608.a */,
+				43D68C28A6703B8200000000 /* lib_idx_MyTodayExtensionSources_MyCommandLineAppSource_MyMacAppSources_F8389608_macos_min10.12.a */,
 			);
 			name = Products;
 			sourceTree = "<group>";
@@ -174,22 +174,6 @@
 			productReference = 43D68C281E9E743E00000000 /* MyCommandLineApp */;
 			productType = "com.apple.product-type.tool";
 		};
-		3D31C5E661E6A45C00000000 /* _idx_MyTodayExtensionSources_MyCommandLineAppSource_MyMacAppSources_F8389608 */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = DE475583A80AEECE00000000 /* Build configuration list for PBXNativeTarget "_idx_MyTodayExtensionSources_MyCommandLineAppSource_MyMacAppSources_F8389608" */;
-			buildPhases = (
-				605793E20000000000000000 /* Sources */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-				4DAD0B426921D83500000000 /* PBXTargetDependency */,
-			);
-			name = _idx_MyTodayExtensionSources_MyCommandLineAppSource_MyMacAppSources_F8389608;
-			productName = _idx_MyTodayExtensionSources_MyCommandLineAppSource_MyMacAppSources_F8389608;
-			productReference = 43D68C288A0F77F600000000 /* lib_idx_MyTodayExtensionSources_MyCommandLineAppSource_MyMacAppSources_F8389608.a */;
-			productType = "com.apple.product-type.library.static";
-		};
 		3D31C5E665954B6A00000000 /* MyTodayExtension */ = {
 			isa = PBXNativeTarget;
 			buildConfigurationList = DE4755839935C7EB00000000 /* Build configuration list for PBXNativeTarget "MyTodayExtension" */;
@@ -222,6 +206,22 @@
 			productReference = 43D68C2810C8DA6C00000000 /* MyMacOSApp.app */;
 			productType = "com.apple.product-type.application";
 		};
+		3D31C5E6F77D1C0800000000 /* _idx_MyTodayExtensionSources_MyCommandLineAppSource_MyMacAppSources_F8389608_macos_min10.12 */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = DE4755830ED6DB7C00000000 /* Build configuration list for PBXNativeTarget "_idx_MyTodayExtensionSources_MyCommandLineAppSource_MyMacAppSources_F8389608_macos_min10.12" */;
+			buildPhases = (
+				605793E20000000000000000 /* Sources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				4DAD0B426921D83500000000 /* PBXTargetDependency */,
+			);
+			name = _idx_MyTodayExtensionSources_MyCommandLineAppSource_MyMacAppSources_F8389608_macos_min10.12;
+			productName = _idx_MyTodayExtensionSources_MyCommandLineAppSource_MyMacAppSources_F8389608_macos_min10.12;
+			productReference = 43D68C28A6703B8200000000 /* lib_idx_MyTodayExtensionSources_MyCommandLineAppSource_MyMacAppSources_F8389608_macos_min10.12.a */;
+			productType = "com.apple.product-type.library.static";
+		};
 /* End PBXNativeTarget section */
 
 /* Begin PBXProject section */
@@ -244,7 +244,7 @@
 				3D31C5E6F53E4F0A00000000 /* MyMacOSApp */,
 				3D31C5E665954B6A00000000 /* MyTodayExtension */,
 				ECCC95946921D83400000000 /* _bazel_clean_ */,
-				3D31C5E661E6A45C00000000 /* _idx_MyTodayExtensionSources_MyCommandLineAppSource_MyMacAppSources_F8389608 */,
+				3D31C5E6F77D1C0800000000 /* _idx_MyTodayExtensionSources_MyCommandLineAppSource_MyMacAppSources_F8389608_macos_min10.12 */,
 			);
 		};
 /* End PBXProject section */
@@ -418,7 +418,7 @@
 				GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1";
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				MACOSX_DEPLOYMENT_TARGET = 10.12;
-				PRODUCT_NAME = _idx_MyTodayExtensionSources_MyCommandLineAppSource_MyMacAppSources_F8389608;
+				PRODUCT_NAME = _idx_MyTodayExtensionSources_MyCommandLineAppSource_MyMacAppSources_F8389608_macos_min10.12;
 				SDKROOT = macosx;
 				VALID_ARCHS = x86_64;
 			};
@@ -527,7 +527,7 @@
 				GCC_PREPROCESSOR_DEFINITIONS = "NDEBUG=1";
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				MACOSX_DEPLOYMENT_TARGET = 10.12;
-				PRODUCT_NAME = _idx_MyTodayExtensionSources_MyCommandLineAppSource_MyMacAppSources_F8389608;
+				PRODUCT_NAME = _idx_MyTodayExtensionSources_MyCommandLineAppSource_MyMacAppSources_F8389608_macos_min10.12;
 				SDKROOT = macosx;
 				VALID_ARCHS = x86_64;
 			};
@@ -785,6 +785,14 @@
 /* End XCBuildConfiguration section */
 
 /* Begin XCConfigurationList section */
+		DE4755830ED6DB7C00000000 /* Build configuration list for PBXNativeTarget "_idx_MyTodayExtensionSources_MyCommandLineAppSource_MyMacAppSources_F8389608_macos_min10.12" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				44936BD67EED3C4D00000004 /* Debug */,
+				44936BD6A3D45CE900000004 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+		};
 		DE4755832C9B8E5500000000 /* Build configuration list for PBXNativeTarget "MyCommandLineApp" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
@@ -825,14 +833,6 @@
 			);
 			defaultConfigurationIsVisible = 0;
 		};
-		DE475583A80AEECE00000000 /* Build configuration list for PBXNativeTarget "_idx_MyTodayExtensionSources_MyCommandLineAppSource_MyMacAppSources_F8389608" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				44936BD67EED3C4D00000004 /* Debug */,
-				44936BD6A3D45CE900000004 /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-		};
 		DE475583CA83BF7E00000000 /* Build configuration list for PBXLegacyTarget "_bazel_clean_" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
diff --git a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/MacOSTestsProject.xcodeproj/project.pbxproj b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/MacOSTestsProject.xcodeproj/project.pbxproj
index 0a8e987..e5f6a92 100644
--- a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/MacOSTestsProject.xcodeproj/project.pbxproj
+++ b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/MacOSTestsProject.xcodeproj/project.pbxproj
@@ -46,14 +46,14 @@
 		43D68C2867EA07A300000000 /* UITests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = UITests.m; path = "tulsi-workspace/tulsi_e2e_mac/test/UITests.m"; sourceTree = "<group>"; };
 		43D68C286BE5C4F400000000 /* TodayViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TodayViewController.h; path = "tulsi-workspace/tulsi_e2e_mac/src/extensions/today/TodayViewController.h"; sourceTree = "<group>"; };
 		43D68C2870F6EB5A00000000 /* UnitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; name = UnitTests.xctest; path = UnitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
-		43D68C287548B29000000000 /* lib_idx_UnitTestsNoHostLib_EC0877C6.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_UnitTestsNoHostLib_EC0877C6.a; path = lib_idx_UnitTestsNoHostLib_EC0877C6.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C2876BC0BC700000000 /* MyTodayExtension-Entitlements.entitlements */ = {isa = PBXFileReference; lastKnownFileType = "com.apple.xcode.entitlements-property-list"; name = "MyTodayExtension-Entitlements.entitlements"; path = "tulsi-workspace/tulsi_e2e_mac/MyTodayExtension-Entitlements.entitlements"; sourceTree = "<group>"; };
 		43D68C289199386500000000 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; name = Info.plist; path = "tulsi-workspace/tulsi_e2e_mac/Info.plist"; sourceTree = "<group>"; };
 		43D68C28A14CEB9800000000 /* UnitTestsNoHost.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; name = UnitTestsNoHost.xctest; path = UnitTestsNoHost.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
-		43D68C28AE0D522600000000 /* lib_idx_UnitTestsLib_MyMacAppSources_MyTodayExtensionSources_UITestsLib_5415F9E2.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_UnitTestsLib_MyMacAppSources_MyTodayExtensionSources_UITestsLib_5415F9E2.a; path = lib_idx_UnitTestsLib_MyMacAppSources_MyTodayExtensionSources_UITestsLib_5415F9E2.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C28C47949AB00000000 /* UnitTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = UnitTests.m; path = "tulsi-workspace/tulsi_e2e_mac/test/UnitTests.m"; sourceTree = "<group>"; };
 		43D68C28CBE52D2300000000 /* BUILD */ = {isa = PBXFileReference; lastKnownFileType = text; name = BUILD; path = tulsi_e2e_mac/BUILD; sourceTree = "<group>"; };
 		43D68C28DE68C70F00000000 /* Main.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Main.storyboard; path = "tulsi-workspace/tulsi_e2e_mac/Resources/Main.storyboard"; sourceTree = "<group>"; };
+		43D68C28E22D54F800000000 /* lib_idx_UnitTestsNoHostLib_EC0877C6_macos_min10.10.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_UnitTestsNoHostLib_EC0877C6_macos_min10.10.a; path = lib_idx_UnitTestsNoHostLib_EC0877C6_macos_min10.10.a; sourceTree = BUILT_PRODUCTS_DIR; };
+		43D68C28FCC1A51000000000 /* lib_idx_UnitTestsLib_MyMacAppSources_MyTodayExtensionSources_UITestsLib_5415F9E2_macos_min10.12.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_UnitTestsLib_MyMacAppSources_MyTodayExtensionSources_UITestsLib_5415F9E2_macos_min10.12.a; path = lib_idx_UnitTestsLib_MyMacAppSources_MyTodayExtensionSources_UITestsLib_5415F9E2_macos_min10.12.a; sourceTree = BUILT_PRODUCTS_DIR; };
 /* End PBXFileReference section */
 
 /* Begin PBXGroup section */
@@ -89,8 +89,8 @@
 				43D68C283E3D735200000000 /* UITests.xctest */,
 				43D68C2870F6EB5A00000000 /* UnitTests.xctest */,
 				43D68C28A14CEB9800000000 /* UnitTestsNoHost.xctest */,
-				43D68C28AE0D522600000000 /* lib_idx_UnitTestsLib_MyMacAppSources_MyTodayExtensionSources_UITestsLib_5415F9E2.a */,
-				43D68C287548B29000000000 /* lib_idx_UnitTestsNoHostLib_EC0877C6.a */,
+				43D68C28FCC1A51000000000 /* lib_idx_UnitTestsLib_MyMacAppSources_MyTodayExtensionSources_UITestsLib_5415F9E2_macos_min10.12.a */,
+				43D68C28E22D54F800000000 /* lib_idx_UnitTestsNoHostLib_EC0877C6_macos_min10.10.a */,
 			);
 			name = Products;
 			sourceTree = "<group>";
@@ -220,20 +220,20 @@
 			productReference = 43D68C28A14CEB9800000000 /* UnitTestsNoHost.xctest */;
 			productType = "com.apple.product-type.bundle.unit-test";
 		};
-		3D31C5E639B0808C00000000 /* _idx_UnitTestsLib_MyMacAppSources_MyTodayExtensionSources_UITestsLib_5415F9E2 */ = {
+		3D31C5E63AACEB6600000000 /* _idx_UnitTestsNoHostLib_EC0877C6_macos_min10.10 */ = {
 			isa = PBXNativeTarget;
-			buildConfigurationList = DE475583DCE72DD100000000 /* Build configuration list for PBXNativeTarget "_idx_UnitTestsLib_MyMacAppSources_MyTodayExtensionSources_UITestsLib_5415F9E2" */;
+			buildConfigurationList = DE475583D3E79BE900000000 /* Build configuration list for PBXNativeTarget "_idx_UnitTestsNoHostLib_EC0877C6_macos_min10.10" */;
 			buildPhases = (
-				605793E20000000000000003 /* Sources */,
+				605793E20000000000000004 /* Sources */,
 			);
 			buildRules = (
 			);
 			dependencies = (
 				4DAD0B426921D83500000000 /* PBXTargetDependency */,
 			);
-			name = _idx_UnitTestsLib_MyMacAppSources_MyTodayExtensionSources_UITestsLib_5415F9E2;
-			productName = _idx_UnitTestsLib_MyMacAppSources_MyTodayExtensionSources_UITestsLib_5415F9E2;
-			productReference = 43D68C28AE0D522600000000 /* lib_idx_UnitTestsLib_MyMacAppSources_MyTodayExtensionSources_UITestsLib_5415F9E2.a */;
+			name = _idx_UnitTestsNoHostLib_EC0877C6_macos_min10.10;
+			productName = _idx_UnitTestsNoHostLib_EC0877C6_macos_min10.10;
+			productReference = 43D68C28E22D54F800000000 /* lib_idx_UnitTestsNoHostLib_EC0877C6_macos_min10.10.a */;
 			productType = "com.apple.product-type.library.static";
 		};
 		3D31C5E660313F3200000000 /* UITests */ = {
@@ -254,20 +254,20 @@
 			productReference = 43D68C283E3D735200000000 /* UITests.xctest */;
 			productType = "com.apple.product-type.bundle.ui-testing";
 		};
-		3D31C5E6832379BA00000000 /* _idx_UnitTestsNoHostLib_EC0877C6 */ = {
+		3D31C5E6F27F76B800000000 /* _idx_UnitTestsLib_MyMacAppSources_MyTodayExtensionSources_UITestsLib_5415F9E2_macos_min10.12 */ = {
 			isa = PBXNativeTarget;
-			buildConfigurationList = DE475583DDDA289500000000 /* Build configuration list for PBXNativeTarget "_idx_UnitTestsNoHostLib_EC0877C6" */;
+			buildConfigurationList = DE47558335F2CA3000000000 /* Build configuration list for PBXNativeTarget "_idx_UnitTestsLib_MyMacAppSources_MyTodayExtensionSources_UITestsLib_5415F9E2_macos_min10.12" */;
 			buildPhases = (
-				605793E20000000000000004 /* Sources */,
+				605793E20000000000000003 /* Sources */,
 			);
 			buildRules = (
 			);
 			dependencies = (
 				4DAD0B426921D83500000000 /* PBXTargetDependency */,
 			);
-			name = _idx_UnitTestsNoHostLib_EC0877C6;
-			productName = _idx_UnitTestsNoHostLib_EC0877C6;
-			productReference = 43D68C287548B29000000000 /* lib_idx_UnitTestsNoHostLib_EC0877C6.a */;
+			name = _idx_UnitTestsLib_MyMacAppSources_MyTodayExtensionSources_UITestsLib_5415F9E2_macos_min10.12;
+			productName = _idx_UnitTestsLib_MyMacAppSources_MyTodayExtensionSources_UITestsLib_5415F9E2_macos_min10.12;
+			productReference = 43D68C28FCC1A51000000000 /* lib_idx_UnitTestsLib_MyMacAppSources_MyTodayExtensionSources_UITestsLib_5415F9E2_macos_min10.12.a */;
 			productType = "com.apple.product-type.library.static";
 		};
 		3D31C5E6F53E4F0A00000000 /* MyMacOSApp */ = {
@@ -317,8 +317,8 @@
 				3D31C5E619998B3A00000000 /* UnitTests */,
 				3D31C5E6211D1A7800000000 /* UnitTestsNoHost */,
 				ECCC95946921D83400000000 /* _bazel_clean_ */,
-				3D31C5E639B0808C00000000 /* _idx_UnitTestsLib_MyMacAppSources_MyTodayExtensionSources_UITestsLib_5415F9E2 */,
-				3D31C5E6832379BA00000000 /* _idx_UnitTestsNoHostLib_EC0877C6 */,
+				3D31C5E6F27F76B800000000 /* _idx_UnitTestsLib_MyMacAppSources_MyTodayExtensionSources_UITestsLib_5415F9E2_macos_min10.12 */,
+				3D31C5E63AACEB6600000000 /* _idx_UnitTestsNoHostLib_EC0877C6_macos_min10.10 */,
 			);
 		};
 /* End PBXProject section */
@@ -555,7 +555,7 @@
 				GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1";
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				MACOSX_DEPLOYMENT_TARGET = 10.12;
-				PRODUCT_NAME = _idx_UnitTestsLib_MyMacAppSources_MyTodayExtensionSources_UITestsLib_5415F9E2;
+				PRODUCT_NAME = _idx_UnitTestsLib_MyMacAppSources_MyTodayExtensionSources_UITestsLib_5415F9E2_macos_min10.12;
 				SDKROOT = macosx;
 				VALID_ARCHS = x86_64;
 			};
@@ -568,7 +568,7 @@
 				GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1";
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				MACOSX_DEPLOYMENT_TARGET = 10.10;
-				PRODUCT_NAME = _idx_UnitTestsNoHostLib_EC0877C6;
+				PRODUCT_NAME = _idx_UnitTestsNoHostLib_EC0877C6_macos_min10.10;
 				SDKROOT = macosx;
 				VALID_ARCHS = x86_64;
 			};
@@ -689,7 +689,7 @@
 				GCC_PREPROCESSOR_DEFINITIONS = "NDEBUG=1";
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				MACOSX_DEPLOYMENT_TARGET = 10.12;
-				PRODUCT_NAME = _idx_UnitTestsLib_MyMacAppSources_MyTodayExtensionSources_UITestsLib_5415F9E2;
+				PRODUCT_NAME = _idx_UnitTestsLib_MyMacAppSources_MyTodayExtensionSources_UITestsLib_5415F9E2_macos_min10.12;
 				SDKROOT = macosx;
 				VALID_ARCHS = x86_64;
 			};
@@ -702,7 +702,7 @@
 				GCC_PREPROCESSOR_DEFINITIONS = "NDEBUG=1";
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				MACOSX_DEPLOYMENT_TARGET = 10.10;
-				PRODUCT_NAME = _idx_UnitTestsNoHostLib_EC0877C6;
+				PRODUCT_NAME = _idx_UnitTestsNoHostLib_EC0877C6_macos_min10.10;
 				SDKROOT = macosx;
 				VALID_ARCHS = x86_64;
 			};
@@ -1010,6 +1010,14 @@
 			);
 			defaultConfigurationIsVisible = 0;
 		};
+		DE47558335F2CA3000000000 /* Build configuration list for PBXNativeTarget "_idx_UnitTestsLib_MyMacAppSources_MyTodayExtensionSources_UITestsLib_5415F9E2_macos_min10.12" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				44936BD67EED3C4D00000005 /* Debug */,
+				44936BD6A3D45CE900000005 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+		};
 		DE47558336864DFB00000000 /* Build configuration list for PBXNativeTarget "MyMacOSApp" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
@@ -1056,15 +1064,7 @@
 			);
 			defaultConfigurationIsVisible = 0;
 		};
-		DE475583DCE72DD100000000 /* Build configuration list for PBXNativeTarget "_idx_UnitTestsLib_MyMacAppSources_MyTodayExtensionSources_UITestsLib_5415F9E2" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				44936BD67EED3C4D00000005 /* Debug */,
-				44936BD6A3D45CE900000005 /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-		};
-		DE475583DDDA289500000000 /* Build configuration list for PBXNativeTarget "_idx_UnitTestsNoHostLib_EC0877C6" */ = {
+		DE475583D3E79BE900000000 /* Build configuration list for PBXNativeTarget "_idx_UnitTestsNoHostLib_EC0877C6_macos_min10.10" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
 				44936BD67EED3C4D00000006 /* Debug */,
diff --git a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/SimpleCCProject.xcodeproj/project.pbxproj b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/SimpleCCProject.xcodeproj/project.pbxproj
index 82ba6a5..20cc770 100644
--- a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/SimpleCCProject.xcodeproj/project.pbxproj
+++ b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/SimpleCCProject.xcodeproj/project.pbxproj
@@ -25,10 +25,10 @@
 		43D68C280B4C210700000000 /* BUILD */ = {isa = PBXFileReference; lastKnownFileType = text; name = BUILD; path = tulsi_e2e_ccsimple/BUILD; sourceTree = "<group>"; };
 		43D68C2836E2B24400000000 /* src2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = src2.c; path = "tulsi-workspace/tulsi_e2e_ccsimple/Library/srcs/src2.c"; sourceTree = "<group>"; };
 		43D68C2840C4A2B300000000 /* main.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = main.cc; path = "tulsi-workspace/tulsi_e2e_ccsimple/Binary/srcs/main.cc"; sourceTree = "<group>"; };
+		43D68C287BD278C400000000 /* lib_idx_ccLibrary_ccBinary_F372BDE7_ios_min7.0.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_ccLibrary_ccBinary_F372BDE7_ios_min7.0.a; path = lib_idx_ccLibrary_ccBinary_F372BDE7_ios_min7.0.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C28B55D3E0600000000 /* src1.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = src1.c; path = "tulsi-workspace/tulsi_e2e_ccsimple/Library/srcs/src1.c"; sourceTree = "<group>"; };
 		43D68C28BEB0070E00000000 /* ccBinary.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; name = ccBinary.app; path = ccBinary.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C28D27C3EF200000000 /* SrcsHeader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SrcsHeader.h; path = "tulsi-workspace/tulsi_e2e_ccsimple/Library/srcs/SrcsHeader.h"; sourceTree = "<group>"; };
-		43D68C28D5AC426E00000000 /* lib_idx_ccLibrary_ccBinary_F372BDE7.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_ccLibrary_ccBinary_F372BDE7.a; path = lib_idx_ccLibrary_ccBinary_F372BDE7.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C28ED21EAD400000000 /* HdrsHeader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = HdrsHeader.h; path = "tulsi-workspace/tulsi_e2e_ccsimple/Library/hdrs/HdrsHeader.h"; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
@@ -47,7 +47,7 @@
 			isa = PBXGroup;
 			children = (
 				43D68C28BEB0070E00000000 /* ccBinary.app */,
-				43D68C28D5AC426E00000000 /* lib_idx_ccLibrary_ccBinary_F372BDE7.a */,
+				43D68C287BD278C400000000 /* lib_idx_ccLibrary_ccBinary_F372BDE7_ios_min7.0.a */,
 			);
 			name = Products;
 			sourceTree = "<group>";
@@ -125,6 +125,22 @@
 /* End PBXLegacyTarget section */
 
 /* Begin PBXNativeTarget section */
+		3D31C5E683D3FEB200000000 /* _idx_ccLibrary_ccBinary_F372BDE7_ios_min7.0 */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = DE4755834E49238F00000000 /* Build configuration list for PBXNativeTarget "_idx_ccLibrary_ccBinary_F372BDE7_ios_min7.0" */;
+			buildPhases = (
+				605793E20000000000000000 /* Sources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				4DAD0B426921D83500000000 /* PBXTargetDependency */,
+			);
+			name = _idx_ccLibrary_ccBinary_F372BDE7_ios_min7.0;
+			productName = _idx_ccLibrary_ccBinary_F372BDE7_ios_min7.0;
+			productReference = 43D68C287BD278C400000000 /* lib_idx_ccLibrary_ccBinary_F372BDE7_ios_min7.0.a */;
+			productType = "com.apple.product-type.library.static";
+		};
 		3D31C5E689384A2400000000 /* ccBinary */ = {
 			isa = PBXNativeTarget;
 			buildConfigurationList = DE475583130F2B4800000000 /* Build configuration list for PBXNativeTarget "ccBinary" */;
@@ -141,22 +157,6 @@
 			productReference = 43D68C28BEB0070E00000000 /* ccBinary.app */;
 			productType = "com.apple.product-type.application";
 		};
-		3D31C5E6ACB94A6E00000000 /* _idx_ccLibrary_ccBinary_F372BDE7 */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = DE475583B67921E000000000 /* Build configuration list for PBXNativeTarget "_idx_ccLibrary_ccBinary_F372BDE7" */;
-			buildPhases = (
-				605793E20000000000000000 /* Sources */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-				4DAD0B426921D83500000000 /* PBXTargetDependency */,
-			);
-			name = _idx_ccLibrary_ccBinary_F372BDE7;
-			productName = _idx_ccLibrary_ccBinary_F372BDE7;
-			productReference = 43D68C28D5AC426E00000000 /* lib_idx_ccLibrary_ccBinary_F372BDE7.a */;
-			productType = "com.apple.product-type.library.static";
-		};
 /* End PBXNativeTarget section */
 
 /* Begin PBXProject section */
@@ -176,7 +176,7 @@
 			mainGroup = 966FB6DEB6031FE700000000 /* mainGroup */;
 			targets = (
 				ECCC95946921D83400000000 /* _bazel_clean_ */,
-				3D31C5E6ACB94A6E00000000 /* _idx_ccLibrary_ccBinary_F372BDE7 */,
+				3D31C5E683D3FEB200000000 /* _idx_ccLibrary_ccBinary_F372BDE7_ios_min7.0 */,
 				3D31C5E689384A2400000000 /* ccBinary */,
 			);
 		};
@@ -262,7 +262,7 @@
 				GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1";
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 7.0;
-				PRODUCT_NAME = _idx_ccLibrary_ccBinary_F372BDE7;
+				PRODUCT_NAME = _idx_ccLibrary_ccBinary_F372BDE7_ios_min7.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -328,7 +328,7 @@
 				GCC_PREPROCESSOR_DEFINITIONS = "NDEBUG=1";
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 7.0;
-				PRODUCT_NAME = _idx_ccLibrary_ccBinary_F372BDE7;
+				PRODUCT_NAME = _idx_ccLibrary_ccBinary_F372BDE7_ios_min7.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -495,7 +495,7 @@
 			);
 			defaultConfigurationIsVisible = 0;
 		};
-		DE475583B67921E000000000 /* Build configuration list for PBXNativeTarget "_idx_ccLibrary_ccBinary_F372BDE7" */ = {
+		DE4755834E49238F00000000 /* Build configuration list for PBXNativeTarget "_idx_ccLibrary_ccBinary_F372BDE7_ios_min7.0" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
 				44936BD67EED3C4D00000001 /* Debug */,
diff --git a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/SimpleProject.xcodeproj/project.pbxproj b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/SimpleProject.xcodeproj/project.pbxproj
index 9e73249..ed8b514 100644
--- a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/SimpleProject.xcodeproj/project.pbxproj
+++ b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/SimpleProject.xcodeproj/project.pbxproj
@@ -31,11 +31,11 @@
 			proxyType = 1;
 			remoteGlobalIDString = 3D31C5E66B144ABC00000000;
 		};
-		81936672EDED0C6D00000000 /* PBXContainerItemProxy */ = {
+		81936672BB25C05700000000 /* PBXContainerItemProxy */ = {
 			isa = PBXContainerItemProxy;
 			containerPortal = 7E7BD0EA590AA76F00000000 /* Project object */;
 			proxyType = 1;
-			remoteGlobalIDString = 3D31C5E6EDED0C6C00000000;
+			remoteGlobalIDString = 3D31C5E6BB25C05600000000;
 		};
 /* End PBXContainerItemProxy section */
 
@@ -43,28 +43,28 @@
 		43D68C2805AAC31600000000 /* TextualHdrsHeader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TextualHdrsHeader.h; path = "tulsi-workspace/tulsi_e2e_simple/Library/textual_hdrs/TextualHdrsHeader.h"; sourceTree = "<group>"; };
 		43D68C280BFD6EFC00000000 /* TargetApplication.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; name = TargetApplication.app; path = TargetApplication.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C2819E313D100000000 /* src1.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = src1.mm; path = "tulsi-workspace/tulsi_e2e_simple/XCTest/srcs/src1.mm"; sourceTree = "<group>"; };
+		43D68C28376F90AC00000000 /* lib_idx_ApplicationLibrary_BB2F88FA_ios_min8.0.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_ApplicationLibrary_BB2F88FA_ios_min8.0.a; path = lib_idx_ApplicationLibrary_BB2F88FA_ios_min8.0.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C2841E053A700000000 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = main.m; path = "tulsi-workspace/tulsi_e2e_simple/ApplicationLibrary/srcs/main.m"; sourceTree = "<group>"; };
 		43D68C284759C53900000000 /* PCHFile.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PCHFile.pch; path = "tulsi-workspace/tulsi_e2e_simple/Library/pch/PCHFile.pch"; sourceTree = "<group>"; };
 		43D68C2854A2185400000000 /* Launch.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Launch.storyboard; path = "tulsi-workspace/tulsi_e2e_simple/Application/Launch.storyboard"; sourceTree = "<group>"; };
 		43D68C28594CBB3F00000000 /* BUILD */ = {isa = PBXFileReference; lastKnownFileType = text; name = BUILD; path = tulsi_e2e_simple/BUILD; sourceTree = "<group>"; };
 		43D68C285A65770D00000000 /* xib.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = xib.xib; path = "tulsi-workspace/tulsi_e2e_simple/Library/xibs/xib.xib"; sourceTree = "<group>"; };
 		43D68C285E266A6000000000 /* XCTest.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; name = XCTest.xctest; path = XCTest.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
-		43D68C287E5CAD8600000000 /* lib_idx_Library_1A8360DD.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_Library_1A8360DD.a; path = lib_idx_Library_1A8360DD.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C288B9856D200000000 /* src1.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = src1.m; path = "tulsi-workspace/tulsi_e2e_simple/Library/srcs/src1.m"; sourceTree = "<group>"; };
 		43D68C28A556FB7A00000000 /* SimpleDataModelsTestv1.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; name = SimpleDataModelsTestv1.xcdatamodel; path = tulsi_e2e_simple/SimpleTest.xcdatamodeld/SimpleDataModelsTestv1.xcdatamodel; sourceTree = "<group>"; };
 		43D68C28AC13992A00000000 /* SrcsHeader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SrcsHeader.h; path = "tulsi-workspace/tulsi_e2e_simple/Library/srcs/SrcsHeader.h"; sourceTree = "<group>"; };
 		43D68C28AD49D31000000000 /* src2.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = src2.m; path = "tulsi-workspace/tulsi_e2e_simple/Library/srcs/src2.m"; sourceTree = "<group>"; };
+		43D68C28B173B88A00000000 /* lib_idx_TestLibrary_92E29781_ios_min8.0.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_TestLibrary_92E29781_ios_min8.0.a; path = lib_idx_TestLibrary_92E29781_ios_min8.0.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C28B6B94D0C00000000 /* HdrsHeader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = HdrsHeader.h; path = "tulsi-workspace/tulsi_e2e_simple/Library/hdrs/HdrsHeader.h"; sourceTree = "<group>"; };
-		43D68C28BEBE5EAE00000000 /* lib_idx_TestLibrary_92E29781.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_TestLibrary_92E29781.a; path = lib_idx_TestLibrary_92E29781.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C28C349AC4E00000000 /* Application-MergedInfo.plist */ = {isa = PBXFileReference; explicitFileType = text.plist; name = "Application-MergedInfo.plist"; path = "blaze-bin/tulsi_e2e_simple/Application-MergedInfo.plist"; sourceTree = "<group>"; };
 		43D68C28CD6F6F5600000000 /* src3.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = src3.m; path = "tulsi-workspace/tulsi_e2e_simple/Library/srcs/src3.m"; sourceTree = "<group>"; };
 		43D68C28CFB68C6700000000 /* memleaks.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = memleaks.m; path = tools/objc/memleaks/memleaks.m; sourceTree = "<group>"; };
+		43D68C28D3EF7BE200000000 /* lib_idx_Library_1A8360DD_ios_min8.0.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_Library_1A8360DD_ios_min8.0.a; path = lib_idx_Library_1A8360DD_ios_min8.0.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C28D437E2BC00000000 /* TargetApplication-MergedInfo.plist */ = {isa = PBXFileReference; explicitFileType = text.plist; name = "TargetApplication-MergedInfo.plist"; path = "blaze-bin/tulsi_e2e_simple/TargetApplication-MergedInfo.plist"; sourceTree = "<group>"; };
 		43D68C28D69C1D8C00000000 /* entitlements.entitlements */ = {isa = PBXFileReference; lastKnownFileType = "com.apple.xcode.entitlements-property-list"; name = entitlements.entitlements; path = "tulsi-workspace/tulsi_e2e_simple/Application/entitlements.entitlements"; sourceTree = "<group>"; };
 		43D68C28D98253B200000000 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; name = Info.plist; path = "tulsi-workspace/tulsi_e2e_simple/Application/Info.plist"; sourceTree = "<group>"; };
 		43D68C28ECA2D00200000000 /* One.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = One.storyboard; path = "tulsi-workspace/tulsi_e2e_simple/ApplicationLibrary/Base.lproj/One.storyboard"; sourceTree = "<group>"; };
 		43D68C28ED1C8B9400000000 /* src4.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = src4.m; path = "tulsi-workspace/tulsi_e2e_simple/Library/srcs/src4.m"; sourceTree = "<group>"; };
-		43D68C28EF16FD1000000000 /* lib_idx_ApplicationLibrary_BB2F88FA.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_ApplicationLibrary_BB2F88FA.a; path = lib_idx_ApplicationLibrary_BB2F88FA.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C28EFB26B8400000000 /* SimpleDataModelsTestv2.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; name = SimpleDataModelsTestv2.xcdatamodel; path = tulsi_e2e_simple/SimpleTest.xcdatamodeld/SimpleDataModelsTestv2.xcdatamodel; sourceTree = "<group>"; };
 		43D68C28F49055A600000000 /* Application.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; name = Application.app; path = Application.app; sourceTree = BUILT_PRODUCTS_DIR; };
 /* End PBXFileReference section */
@@ -85,9 +85,9 @@
 				43D68C280BFD6EFC00000000 /* TargetApplication.app */,
 				43D68C285E266A6000000000 /* XCTest.xctest */,
 				966FB6DE2CEC8E5C00000000 /* blaze-bin */,
-				43D68C28EF16FD1000000000 /* lib_idx_ApplicationLibrary_BB2F88FA.a */,
-				43D68C287E5CAD8600000000 /* lib_idx_Library_1A8360DD.a */,
-				43D68C28BEBE5EAE00000000 /* lib_idx_TestLibrary_92E29781.a */,
+				43D68C28376F90AC00000000 /* lib_idx_ApplicationLibrary_BB2F88FA_ios_min8.0.a */,
+				43D68C28D3EF7BE200000000 /* lib_idx_Library_1A8360DD_ios_min8.0.a */,
+				43D68C28B173B88A00000000 /* lib_idx_TestLibrary_92E29781_ios_min8.0.a */,
 			);
 			name = Products;
 			sourceTree = "<group>";
@@ -292,9 +292,9 @@
 			productReference = 43D68C280BFD6EFC00000000 /* TargetApplication.app */;
 			productType = "com.apple.product-type.application";
 		};
-		3D31C5E65B932EBA00000000 /* _idx_ApplicationLibrary_BB2F88FA */ = {
+		3D31C5E657AF671A00000000 /* _idx_ApplicationLibrary_BB2F88FA_ios_min8.0 */ = {
 			isa = PBXNativeTarget;
-			buildConfigurationList = DE475583895CD5D500000000 /* Build configuration list for PBXNativeTarget "_idx_ApplicationLibrary_BB2F88FA" */;
+			buildConfigurationList = DE475583B76803C300000000 /* Build configuration list for PBXNativeTarget "_idx_ApplicationLibrary_BB2F88FA_ios_min8.0" */;
 			buildPhases = (
 				605793E20000000000000001 /* Sources */,
 			);
@@ -302,11 +302,11 @@
 			);
 			dependencies = (
 				4DAD0B426921D83500000000 /* PBXTargetDependency */,
-				4DAD0B42EDED0C6D00000000 /* PBXTargetDependency */,
+				4DAD0B42BB25C05700000000 /* PBXTargetDependency */,
 			);
-			name = _idx_ApplicationLibrary_BB2F88FA;
-			productName = _idx_ApplicationLibrary_BB2F88FA;
-			productReference = 43D68C28EF16FD1000000000 /* lib_idx_ApplicationLibrary_BB2F88FA.a */;
+			name = _idx_ApplicationLibrary_BB2F88FA_ios_min8.0;
+			productName = _idx_ApplicationLibrary_BB2F88FA_ios_min8.0;
+			productReference = 43D68C28376F90AC00000000 /* lib_idx_ApplicationLibrary_BB2F88FA_ios_min8.0.a */;
 			productType = "com.apple.product-type.library.static";
 		};
 		3D31C5E66B144ABC00000000 /* Application */ = {
@@ -325,26 +325,9 @@
 			productReference = 43D68C28F49055A600000000 /* Application.app */;
 			productType = "com.apple.product-type.application";
 		};
-		3D31C5E6DF53451400000000 /* _idx_TestLibrary_92E29781 */ = {
+		3D31C5E6BB25C05600000000 /* _idx_Library_1A8360DD_ios_min8.0 */ = {
 			isa = PBXNativeTarget;
-			buildConfigurationList = DE47558356CA96C000000000 /* Build configuration list for PBXNativeTarget "_idx_TestLibrary_92E29781" */;
-			buildPhases = (
-				605793E20000000000000003 /* Sources */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-				4DAD0B426921D83500000000 /* PBXTargetDependency */,
-				4DAD0B42EDED0C6D00000000 /* PBXTargetDependency */,
-			);
-			name = _idx_TestLibrary_92E29781;
-			productName = _idx_TestLibrary_92E29781;
-			productReference = 43D68C28BEBE5EAE00000000 /* lib_idx_TestLibrary_92E29781.a */;
-			productType = "com.apple.product-type.library.static";
-		};
-		3D31C5E6EDED0C6C00000000 /* _idx_Library_1A8360DD */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = DE475583FA9B823C00000000 /* Build configuration list for PBXNativeTarget "_idx_Library_1A8360DD" */;
+			buildConfigurationList = DE4755834677851A00000000 /* Build configuration list for PBXNativeTarget "_idx_Library_1A8360DD_ios_min8.0" */;
 			buildPhases = (
 				605793E20000000000000002 /* Sources */,
 			);
@@ -353,9 +336,26 @@
 			dependencies = (
 				4DAD0B426921D83500000000 /* PBXTargetDependency */,
 			);
-			name = _idx_Library_1A8360DD;
-			productName = _idx_Library_1A8360DD;
-			productReference = 43D68C287E5CAD8600000000 /* lib_idx_Library_1A8360DD.a */;
+			name = _idx_Library_1A8360DD_ios_min8.0;
+			productName = _idx_Library_1A8360DD_ios_min8.0;
+			productReference = 43D68C28D3EF7BE200000000 /* lib_idx_Library_1A8360DD_ios_min8.0.a */;
+			productType = "com.apple.product-type.library.static";
+		};
+		3D31C5E6DDB1401000000000 /* _idx_TestLibrary_92E29781_ios_min8.0 */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = DE475583DEADDDEE00000000 /* Build configuration list for PBXNativeTarget "_idx_TestLibrary_92E29781_ios_min8.0" */;
+			buildPhases = (
+				605793E20000000000000003 /* Sources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				4DAD0B426921D83500000000 /* PBXTargetDependency */,
+				4DAD0B42BB25C05700000000 /* PBXTargetDependency */,
+			);
+			name = _idx_TestLibrary_92E29781_ios_min8.0;
+			productName = _idx_TestLibrary_92E29781_ios_min8.0;
+			productReference = 43D68C28B173B88A00000000 /* lib_idx_TestLibrary_92E29781_ios_min8.0.a */;
 			productType = "com.apple.product-type.library.static";
 		};
 		3D31C5E6EF2E7F4000000000 /* XCTest */ = {
@@ -403,9 +403,9 @@
 				3D31C5E63956EB9A00000000 /* TargetApplication */,
 				3D31C5E6EF2E7F4000000000 /* XCTest */,
 				ECCC95946921D83400000000 /* _bazel_clean_ */,
-				3D31C5E65B932EBA00000000 /* _idx_ApplicationLibrary_BB2F88FA */,
-				3D31C5E6EDED0C6C00000000 /* _idx_Library_1A8360DD */,
-				3D31C5E6DF53451400000000 /* _idx_TestLibrary_92E29781 */,
+				3D31C5E657AF671A00000000 /* _idx_ApplicationLibrary_BB2F88FA_ios_min8.0 */,
+				3D31C5E6BB25C05600000000 /* _idx_Library_1A8360DD_ios_min8.0 */,
+				3D31C5E6DDB1401000000000 /* _idx_TestLibrary_92E29781_ios_min8.0 */,
 			);
 		};
 /* End PBXProject section */
@@ -504,9 +504,9 @@
 			isa = PBXTargetDependency;
 			targetProxy = 819366726B144ABD00000000 /* PBXContainerItemProxy */;
 		};
-		4DAD0B42EDED0C6D00000000 /* PBXTargetDependency */ = {
+		4DAD0B42BB25C05700000000 /* PBXTargetDependency */ = {
 			isa = PBXTargetDependency;
-			targetProxy = 81936672EDED0C6D00000000 /* PBXContainerItemProxy */;
+			targetProxy = 81936672BB25C05700000000 /* PBXContainerItemProxy */;
 		};
 /* End PBXTargetDependency section */
 
@@ -614,7 +614,7 @@
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_WR)/tulsi_e2e_simple/ApplicationLibrary/includes $(TULSI_WR)/tulsi-includes/x/x/tulsi_e2e_simple/ApplicationLibrary/includes $(TULSI_BWRS)/tulsi_e2e_simple/ApplicationLibrary/includes $(TULSI_BWRS)/tulsi-includes/x/x/tulsi_e2e_simple/ApplicationLibrary/includes $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
 				OTHER_CFLAGS = "-DAPPLIB_ADDITIONAL_DEFINE -DAPPLIB_ANOTHER_DEFINE=2 -DLIBRARY_DEFINES_DEFINE=1";
-				PRODUCT_NAME = _idx_ApplicationLibrary_BB2F88FA;
+				PRODUCT_NAME = _idx_ApplicationLibrary_BB2F88FA_ios_min8.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -629,7 +629,7 @@
 				HEADER_SEARCH_PATHS = "$(inherited) /Library/absolute/include/path $(TULSI_BWRS)/relative/Library/include/path $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
 				OTHER_CFLAGS = "-DLIBRARY_COPT_DEFINE -DLIBRARY_DEFINES_DEFINE=1";
-				PRODUCT_NAME = _idx_Library_1A8360DD;
+				PRODUCT_NAME = _idx_Library_1A8360DD_ios_min8.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -643,7 +643,7 @@
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
 				OTHER_CFLAGS = "-DLIBRARY_DEFINES_DEFINE=1";
-				PRODUCT_NAME = _idx_TestLibrary_92E29781;
+				PRODUCT_NAME = _idx_TestLibrary_92E29781_ios_min8.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -753,7 +753,7 @@
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_WR)/tulsi_e2e_simple/ApplicationLibrary/includes $(TULSI_WR)/tulsi-includes/x/x/tulsi_e2e_simple/ApplicationLibrary/includes $(TULSI_BWRS)/tulsi_e2e_simple/ApplicationLibrary/includes $(TULSI_BWRS)/tulsi-includes/x/x/tulsi_e2e_simple/ApplicationLibrary/includes $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
 				OTHER_CFLAGS = "-DAPPLIB_ADDITIONAL_DEFINE -DAPPLIB_ANOTHER_DEFINE=2 -DLIBRARY_DEFINES_DEFINE=1";
-				PRODUCT_NAME = _idx_ApplicationLibrary_BB2F88FA;
+				PRODUCT_NAME = _idx_ApplicationLibrary_BB2F88FA_ios_min8.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -768,7 +768,7 @@
 				HEADER_SEARCH_PATHS = "$(inherited) /Library/absolute/include/path $(TULSI_BWRS)/relative/Library/include/path $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
 				OTHER_CFLAGS = "-DLIBRARY_COPT_DEFINE -DLIBRARY_DEFINES_DEFINE=1";
-				PRODUCT_NAME = _idx_Library_1A8360DD;
+				PRODUCT_NAME = _idx_Library_1A8360DD_ios_min8.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -782,7 +782,7 @@
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
 				OTHER_CFLAGS = "-DLIBRARY_DEFINES_DEFINE=1";
-				PRODUCT_NAME = _idx_TestLibrary_92E29781;
+				PRODUCT_NAME = _idx_TestLibrary_92E29781_ios_min8.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -1040,11 +1040,11 @@
 /* End XCBuildConfiguration section */
 
 /* Begin XCConfigurationList section */
-		DE47558356CA96C000000000 /* Build configuration list for PBXNativeTarget "_idx_TestLibrary_92E29781" */ = {
+		DE4755834677851A00000000 /* Build configuration list for PBXNativeTarget "_idx_Library_1A8360DD_ios_min8.0" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
-				44936BD67EED3C4D00000006 /* Debug */,
-				44936BD6A3D45CE900000006 /* Release */,
+				44936BD67EED3C4D00000005 /* Debug */,
+				44936BD6A3D45CE900000005 /* Release */,
 			);
 			defaultConfigurationIsVisible = 0;
 		};
@@ -1058,14 +1058,6 @@
 			);
 			defaultConfigurationIsVisible = 0;
 		};
-		DE475583895CD5D500000000 /* Build configuration list for PBXNativeTarget "_idx_ApplicationLibrary_BB2F88FA" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				44936BD67EED3C4D00000004 /* Debug */,
-				44936BD6A3D45CE900000004 /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-		};
 		DE475583978C206500000000 /* Build configuration list for PBXNativeTarget "TargetApplication" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
@@ -1086,12 +1078,28 @@
 			);
 			defaultConfigurationIsVisible = 0;
 		};
+		DE475583B76803C300000000 /* Build configuration list for PBXNativeTarget "_idx_ApplicationLibrary_BB2F88FA_ios_min8.0" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				44936BD67EED3C4D00000004 /* Debug */,
+				44936BD6A3D45CE900000004 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+		};
 		DE475583CA83BF7E00000000 /* Build configuration list for PBXLegacyTarget "_bazel_clean_" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
 			);
 			defaultConfigurationIsVisible = 0;
 		};
+		DE475583DEADDDEE00000000 /* Build configuration list for PBXNativeTarget "_idx_TestLibrary_92E29781_ios_min8.0" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				44936BD67EED3C4D00000006 /* Debug */,
+				44936BD6A3D45CE900000006 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+		};
 		DE475583F843F89400000000 /* Build configuration list for PBXNativeTarget "Application" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
@@ -1102,14 +1110,6 @@
 			);
 			defaultConfigurationIsVisible = 0;
 		};
-		DE475583FA9B823C00000000 /* Build configuration list for PBXNativeTarget "_idx_Library_1A8360DD" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				44936BD67EED3C4D00000005 /* Debug */,
-				44936BD6A3D45CE900000005 /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-		};
 /* End XCConfigurationList section */
 
 /* Begin XCVersionGroup section */
diff --git a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/SimpleSkylarkProject.xcodeproj/project.pbxproj b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/SimpleSkylarkProject.xcodeproj/project.pbxproj
index 969d230..d1a25c1 100644
--- a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/SimpleSkylarkProject.xcodeproj/project.pbxproj
+++ b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/SimpleSkylarkProject.xcodeproj/project.pbxproj
@@ -24,18 +24,18 @@
 /* End PBXBuildFile section */
 
 /* Begin PBXContainerItemProxy section */
+		8193667216CDD44F00000000 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 7E7BD0EA5EAFCB1700000000 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 3D31C5E616CDD44E00000000;
+		};
 		819366726921D83500000000 /* PBXContainerItemProxy */ = {
 			isa = PBXContainerItemProxy;
 			containerPortal = 7E7BD0EA5EAFCB1700000000 /* Project object */;
 			proxyType = 1;
 			remoteGlobalIDString = ECCC95946921D83400000000;
 		};
-		81936672A0C7226900000000 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 7E7BD0EA5EAFCB1700000000 /* Project object */;
-			proxyType = 1;
-			remoteGlobalIDString = 3D31C5E6A0C7226800000000;
-		};
 		81936672C3E8068D00000000 /* PBXContainerItemProxy */ = {
 			isa = PBXContainerItemProxy;
 			containerPortal = 7E7BD0EA5EAFCB1700000000 /* Project object */;
@@ -48,27 +48,27 @@
 		43D68C28016874A200000000 /* SimpleDataModelsTestv1.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; name = SimpleDataModelsTestv1.xcdatamodel; path = tulsi_e2e_simple_skylark/SimpleTest.xcdatamodeld/SimpleDataModelsTestv1.xcdatamodel; sourceTree = "<group>"; };
 		43D68C280363E91A00000000 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = main.m; path = "tulsi-workspace/tulsi_e2e_simple_skylark/App/srcs/main.m"; sourceTree = "<group>"; };
 		43D68C2807AD023D00000000 /* Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = Tests.swift; path = "tulsi-workspace/tulsi_e2e_simple_skylark/XCTest/srcs/Tests.swift"; sourceTree = "<group>"; };
-		43D68C2815EBBAA000000000 /* lib_idx_JavaLibrary_C16E964B.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_JavaLibrary_C16E964B.a; path = lib_idx_JavaLibrary_C16E964B.a; sourceTree = BUILT_PRODUCTS_DIR; };
+		43D68C2814E234EC00000000 /* lib_idx_XCUITestCode_XCTestCode_1D881332_ios_min8.0.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_XCUITestCode_XCTestCode_1D881332_ios_min8.0.a; path = lib_idx_XCUITestCode_XCTestCode_1D881332_ios_min8.0.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C281CB1D2D900000000 /* Settings.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; name = Settings.bundle; path = "tulsi-workspace/tulsi_e2e_simple_skylark/Settings.bundle"; sourceTree = "<group>"; };
 		43D68C28259988BC00000000 /* Launch.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Launch.storyboard; path = "tulsi-workspace/tulsi_e2e_simple_skylark/Application/Launch.storyboard"; sourceTree = "<group>"; };
 		43D68C2826D093AA00000000 /* StickerExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; name = StickerExtension.appex; path = StickerExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
+		43D68C28360062FC00000000 /* lib_idx_JavaLibrary_C16E964B_ios_min8.0.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_JavaLibrary_C16E964B_ios_min8.0.a; path = lib_idx_JavaLibrary_C16E964B_ios_min8.0.a; sourceTree = BUILT_PRODUCTS_DIR; };
+		43D68C283786664A00000000 /* _idx_XCTestCodeSwift_2FB5517B_ios_min8.0.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; name = _idx_XCTestCodeSwift_2FB5517B_ios_min8.0.framework; path = _idx_XCTestCodeSwift_2FB5517B_ios_min8.0.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C283943564C00000000 /* HdrsHeader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = HdrsHeader.h; path = "tulsi-workspace/tulsi_e2e_simple_skylark/Library/hdrs/HdrsHeader.h"; sourceTree = "<group>"; };
 		43D68C28395860BE00000000 /* TextualHdrsHeader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TextualHdrsHeader.h; path = "tulsi-workspace/tulsi_e2e_simple_skylark/Library/textual_hdrs/TextualHdrsHeader.h"; sourceTree = "<group>"; };
 		43D68C283A0868B500000000 /* Stickers.xcstickers */ = {isa = PBXFileReference; lastKnownFileType = folder.stickers; name = Stickers.xcstickers; path = tulsi_e2e_simple_skylark/Stickers.xcstickers; sourceTree = "<group>"; };
 		43D68C283CBFF4DA00000000 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; name = Info.plist; path = "tulsi-workspace/tulsi_e2e_simple_skylark/Application/Info.plist"; sourceTree = "<group>"; };
 		43D68C2844067B5100000000 /* XCUITests.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = XCUITests.mm; path = "tulsi-workspace/tulsi_e2e_simple_skylark/XCUITest/srcs/XCUITests.mm"; sourceTree = "<group>"; };
-		43D68C284F2A6A6E00000000 /* _idx_XCTestCodeSwift_2FB5517B.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; name = _idx_XCTestCodeSwift_2FB5517B.framework; path = _idx_XCTestCodeSwift_2FB5517B.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C28594086D300000000 /* ProtoFile.proto */ = {isa = PBXFileReference; lastKnownFileType = dyn.age81a6xtsv1u; name = ProtoFile.proto; path = "tulsi-workspace/tulsi_e2e_simple_skylark/ProtoFile.proto"; sourceTree = "<group>"; };
 		43D68C285AC5B07A00000000 /* src1.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = src1.m; path = "tulsi-workspace/tulsi_e2e_simple_skylark/Library/srcs/src1.m"; sourceTree = "<group>"; };
 		43D68C285E266A6000000000 /* XCTest.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; name = XCTest.xctest; path = XCTest.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+		43D68C285F948D5E00000000 /* lib_idx_Library_22D3B3D5_ios_min8.0.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_Library_22D3B3D5_ios_min8.0.a; path = lib_idx_Library_22D3B3D5_ios_min8.0.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C286C872CB800000000 /* src2.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = src2.m; path = "tulsi-workspace/tulsi_e2e_simple_skylark/Library/srcs/src2.m"; sourceTree = "<group>"; };
 		43D68C286DAAC6CC00000000 /* SkylarkTargetApplication.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; name = SkylarkTargetApplication.app; path = SkylarkTargetApplication.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C2875414ABA00000000 /* SrcsHeader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SrcsHeader.h; path = "tulsi-workspace/tulsi_e2e_simple_skylark/Library/srcs/SrcsHeader.h"; sourceTree = "<group>"; };
 		43D68C287C84C8BE00000000 /* src3.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = src3.m; path = "tulsi-workspace/tulsi_e2e_simple_skylark/Library/srcs/src3.m"; sourceTree = "<group>"; };
-		43D68C2882EBA69000000000 /* lib_idx_MainLibrary_E33E600C.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_MainLibrary_E33E600C.a; path = lib_idx_MainLibrary_E33E600C.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C288BD42CAC00000000 /* SimpleDataModelsTestv2.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; name = SimpleDataModelsTestv2.xcdatamodel; path = tulsi_e2e_simple_skylark/SimpleTest.xcdatamodeld/SimpleDataModelsTestv2.xcdatamodel; sourceTree = "<group>"; };
 		43D68C288C4244FC00000000 /* src4.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = src4.m; path = "tulsi-workspace/tulsi_e2e_simple_skylark/Library/srcs/src4.m"; sourceTree = "<group>"; };
-		43D68C288CE3D89000000000 /* lib_idx_XCUITestCode_XCTestCode_1D881332.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_XCUITestCode_XCTestCode_1D881332.a; path = lib_idx_XCUITestCode_XCTestCode_1D881332.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C288EA0254100000000 /* Ext-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; name = "Ext-Info.plist"; path = "tulsi_e2e_simple_skylark/Ext-Info.plist"; sourceTree = "<group>"; };
 		43D68C2893192BBE00000000 /* SkylarkApplication-MergedInfo.plist */ = {isa = PBXFileReference; explicitFileType = text.plist; name = "SkylarkApplication-MergedInfo.plist"; path = "blaze-bin/tulsi_e2e_simple_skylark/SkylarkApplication-MergedInfo.plist"; sourceTree = "<group>"; };
 		43D68C28A669C03500000000 /* xib.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = xib.xib; path = "tulsi-workspace/tulsi_e2e_simple_skylark/Library/xibs/xib.xib"; sourceTree = "<group>"; };
@@ -79,9 +79,9 @@
 		43D68C28CEA253A400000000 /* SkylarkTargetApplication-MergedInfo.plist */ = {isa = PBXFileReference; explicitFileType = text.plist; name = "SkylarkTargetApplication-MergedInfo.plist"; path = "blaze-bin/tulsi_e2e_simple_skylark/SkylarkTargetApplication-MergedInfo.plist"; sourceTree = "<group>"; };
 		43D68C28CFB68C6700000000 /* memleaks.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = memleaks.m; path = tools/objc/memleaks/memleaks.m; sourceTree = "<group>"; };
 		43D68C28D035C16900000000 /* XCTests.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = XCTests.mm; path = "tulsi-workspace/tulsi_e2e_simple_skylark/XCTest/srcs/XCTests.mm"; sourceTree = "<group>"; };
-		43D68C28D66ECB8200000000 /* lib_idx_Library_22D3B3D5.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_Library_22D3B3D5.a; path = lib_idx_Library_22D3B3D5.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C28F44F077B00000000 /* file.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; name = file.java; path = "tulsi-workspace/tulsi_e2e_simple_skylark/file.java"; sourceTree = "<group>"; };
 		43D68C28FB7A74E700000000 /* BUILD */ = {isa = PBXFileReference; lastKnownFileType = text; name = BUILD; path = tulsi_e2e_simple_skylark/BUILD; sourceTree = "<group>"; };
+		43D68C28FEECDEEC00000000 /* lib_idx_MainLibrary_E33E600C_ios_min8.0.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_MainLibrary_E33E600C_ios_min8.0.a; path = lib_idx_MainLibrary_E33E600C_ios_min8.0.a; sourceTree = BUILT_PRODUCTS_DIR; };
 /* End PBXFileReference section */
 
 /* Begin PBXGroup section */
@@ -101,12 +101,12 @@
 				43D68C2826D093AA00000000 /* StickerExtension.appex */,
 				43D68C285E266A6000000000 /* XCTest.xctest */,
 				43D68C28AB52552000000000 /* XCUITest.xctest */,
-				43D68C284F2A6A6E00000000 /* _idx_XCTestCodeSwift_2FB5517B.framework */,
+				43D68C283786664A00000000 /* _idx_XCTestCodeSwift_2FB5517B_ios_min8.0.framework */,
 				966FB6DE2CEC8E5C00000000 /* blaze-bin */,
-				43D68C2815EBBAA000000000 /* lib_idx_JavaLibrary_C16E964B.a */,
-				43D68C28D66ECB8200000000 /* lib_idx_Library_22D3B3D5.a */,
-				43D68C2882EBA69000000000 /* lib_idx_MainLibrary_E33E600C.a */,
-				43D68C288CE3D89000000000 /* lib_idx_XCUITestCode_XCTestCode_1D881332.a */,
+				43D68C28360062FC00000000 /* lib_idx_JavaLibrary_C16E964B_ios_min8.0.a */,
+				43D68C285F948D5E00000000 /* lib_idx_Library_22D3B3D5_ios_min8.0.a */,
+				43D68C28FEECDEEC00000000 /* lib_idx_MainLibrary_E33E600C_ios_min8.0.a */,
+				43D68C2814E234EC00000000 /* lib_idx_XCUITestCode_XCTestCode_1D881332_ios_min8.0.a */,
 			);
 			name = Products;
 			sourceTree = "<group>";
@@ -317,58 +317,9 @@
 /* End PBXLegacyTarget section */
 
 /* Begin PBXNativeTarget section */
-		3D31C5E626E6D50E00000000 /* _idx_JavaLibrary_C16E964B */ = {
+		3D31C5E616CDD44E00000000 /* _idx_Library_22D3B3D5_ios_min8.0 */ = {
 			isa = PBXNativeTarget;
-			buildConfigurationList = DE475583C06144FD00000000 /* Build configuration list for PBXNativeTarget "_idx_JavaLibrary_C16E964B" */;
-			buildPhases = (
-				605793E20000000000000002 /* Sources */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-				4DAD0B426921D83500000000 /* PBXTargetDependency */,
-			);
-			name = _idx_JavaLibrary_C16E964B;
-			productName = _idx_JavaLibrary_C16E964B;
-			productReference = 43D68C2815EBBAA000000000 /* lib_idx_JavaLibrary_C16E964B.a */;
-			productType = "com.apple.product-type.library.static";
-		};
-		3D31C5E6284E117E00000000 /* _idx_MainLibrary_E33E600C */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = DE47558318E15AF500000000 /* Build configuration list for PBXNativeTarget "_idx_MainLibrary_E33E600C" */;
-			buildPhases = (
-				605793E20000000000000004 /* Sources */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-				4DAD0B426921D83500000000 /* PBXTargetDependency */,
-				4DAD0B42A0C7226900000000 /* PBXTargetDependency */,
-			);
-			name = _idx_MainLibrary_E33E600C;
-			productName = _idx_MainLibrary_E33E600C;
-			productReference = 43D68C2882EBA69000000000 /* lib_idx_MainLibrary_E33E600C.a */;
-			productType = "com.apple.product-type.library.static";
-		};
-		3D31C5E67C1BC86200000000 /* _idx_XCTestCodeSwift_2FB5517B */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = DE475583D3B1CC6700000000 /* Build configuration list for PBXNativeTarget "_idx_XCTestCodeSwift_2FB5517B" */;
-			buildPhases = (
-				605793E20000000000000005 /* Sources */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-				4DAD0B426921D83500000000 /* PBXTargetDependency */,
-			);
-			name = _idx_XCTestCodeSwift_2FB5517B;
-			productName = _idx_XCTestCodeSwift_2FB5517B;
-			productReference = 43D68C284F2A6A6E00000000 /* _idx_XCTestCodeSwift_2FB5517B.framework */;
-			productType = "com.apple.product-type.framework";
-		};
-		3D31C5E6A0C7226800000000 /* _idx_Library_22D3B3D5 */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = DE4755831650A2DA00000000 /* Build configuration list for PBXNativeTarget "_idx_Library_22D3B3D5" */;
+			buildConfigurationList = DE4755835181881800000000 /* Build configuration list for PBXNativeTarget "_idx_Library_22D3B3D5_ios_min8.0" */;
 			buildPhases = (
 				605793E20000000000000003 /* Sources */,
 			);
@@ -377,9 +328,75 @@
 			dependencies = (
 				4DAD0B426921D83500000000 /* PBXTargetDependency */,
 			);
-			name = _idx_Library_22D3B3D5;
-			productName = _idx_Library_22D3B3D5;
-			productReference = 43D68C28D66ECB8200000000 /* lib_idx_Library_22D3B3D5.a */;
+			name = _idx_Library_22D3B3D5_ios_min8.0;
+			productName = _idx_Library_22D3B3D5_ios_min8.0;
+			productReference = 43D68C285F948D5E00000000 /* lib_idx_Library_22D3B3D5_ios_min8.0.a */;
+			productType = "com.apple.product-type.library.static";
+		};
+		3D31C5E626CA755A00000000 /* _idx_XCUITestCode_XCTestCode_1D881332_ios_min8.0 */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = DE475583BB1B1CE300000000 /* Build configuration list for PBXNativeTarget "_idx_XCUITestCode_XCTestCode_1D881332_ios_min8.0" */;
+			buildPhases = (
+				605793E20000000000000006 /* Sources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				4DAD0B426921D83500000000 /* PBXTargetDependency */,
+				4DAD0B4216CDD44F00000000 /* PBXTargetDependency */,
+			);
+			name = _idx_XCUITestCode_XCTestCode_1D881332_ios_min8.0;
+			productName = _idx_XCUITestCode_XCTestCode_1D881332_ios_min8.0;
+			productReference = 43D68C2814E234EC00000000 /* lib_idx_XCUITestCode_XCTestCode_1D881332_ios_min8.0.a */;
+			productType = "com.apple.product-type.library.static";
+		};
+		3D31C5E65C6B61BE00000000 /* _idx_XCTestCodeSwift_2FB5517B_ios_min8.0 */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = DE475583077C771500000000 /* Build configuration list for PBXNativeTarget "_idx_XCTestCodeSwift_2FB5517B_ios_min8.0" */;
+			buildPhases = (
+				605793E20000000000000005 /* Sources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				4DAD0B426921D83500000000 /* PBXTargetDependency */,
+			);
+			name = _idx_XCTestCodeSwift_2FB5517B_ios_min8.0;
+			productName = _idx_XCTestCodeSwift_2FB5517B_ios_min8.0;
+			productReference = 43D68C283786664A00000000 /* _idx_XCTestCodeSwift_2FB5517B_ios_min8.0.framework */;
+			productType = "com.apple.product-type.framework";
+		};
+		3D31C5E666B361EA00000000 /* _idx_JavaLibrary_C16E964B_ios_min8.0 */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = DE4755835905C1EB00000000 /* Build configuration list for PBXNativeTarget "_idx_JavaLibrary_C16E964B_ios_min8.0" */;
+			buildPhases = (
+				605793E20000000000000002 /* Sources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				4DAD0B426921D83500000000 /* PBXTargetDependency */,
+			);
+			name = _idx_JavaLibrary_C16E964B_ios_min8.0;
+			productName = _idx_JavaLibrary_C16E964B_ios_min8.0;
+			productReference = 43D68C28360062FC00000000 /* lib_idx_JavaLibrary_C16E964B_ios_min8.0.a */;
+			productType = "com.apple.product-type.library.static";
+		};
+		3D31C5E681C6DCDA00000000 /* _idx_MainLibrary_E33E600C_ios_min8.0 */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = DE47558336E607E300000000 /* Build configuration list for PBXNativeTarget "_idx_MainLibrary_E33E600C_ios_min8.0" */;
+			buildPhases = (
+				605793E20000000000000004 /* Sources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				4DAD0B426921D83500000000 /* PBXTargetDependency */,
+				4DAD0B4216CDD44F00000000 /* PBXTargetDependency */,
+			);
+			name = _idx_MainLibrary_E33E600C_ios_min8.0;
+			productName = _idx_MainLibrary_E33E600C_ios_min8.0;
+			productReference = 43D68C28FEECDEEC00000000 /* lib_idx_MainLibrary_E33E600C_ios_min8.0.a */;
 			productType = "com.apple.product-type.library.static";
 		};
 		3D31C5E6BB03F10600000000 /* StickerExtension */ = {
@@ -432,23 +449,6 @@
 			productReference = 43D68C28B9C699F600000000 /* SkylarkApplication.app */;
 			productType = "com.apple.product-type.application";
 		};
-		3D31C5E6E6705AFE00000000 /* _idx_XCUITestCode_XCTestCode_1D881332 */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = DE47558384FA8FF500000000 /* Build configuration list for PBXNativeTarget "_idx_XCUITestCode_XCTestCode_1D881332" */;
-			buildPhases = (
-				605793E20000000000000006 /* Sources */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-				4DAD0B426921D83500000000 /* PBXTargetDependency */,
-				4DAD0B42A0C7226900000000 /* PBXTargetDependency */,
-			);
-			name = _idx_XCUITestCode_XCTestCode_1D881332;
-			productName = _idx_XCUITestCode_XCTestCode_1D881332;
-			productReference = 43D68C288CE3D89000000000 /* lib_idx_XCUITestCode_XCTestCode_1D881332.a */;
-			productType = "com.apple.product-type.library.static";
-		};
 		3D31C5E6EF2E7F4000000000 /* XCTest */ = {
 			isa = PBXNativeTarget;
 			buildConfigurationList = DE475583B2A6125600000000 /* Build configuration list for PBXNativeTarget "XCTest" */;
@@ -516,11 +516,11 @@
 				3D31C5E6EF2E7F4000000000 /* XCTest */,
 				3D31C5E6BECFDF8000000000 /* XCUITest */,
 				ECCC95946921D83400000000 /* _bazel_clean_ */,
-				3D31C5E626E6D50E00000000 /* _idx_JavaLibrary_C16E964B */,
-				3D31C5E6A0C7226800000000 /* _idx_Library_22D3B3D5 */,
-				3D31C5E6284E117E00000000 /* _idx_MainLibrary_E33E600C */,
-				3D31C5E67C1BC86200000000 /* _idx_XCTestCodeSwift_2FB5517B */,
-				3D31C5E6E6705AFE00000000 /* _idx_XCUITestCode_XCTestCode_1D881332 */,
+				3D31C5E666B361EA00000000 /* _idx_JavaLibrary_C16E964B_ios_min8.0 */,
+				3D31C5E616CDD44E00000000 /* _idx_Library_22D3B3D5_ios_min8.0 */,
+				3D31C5E681C6DCDA00000000 /* _idx_MainLibrary_E33E600C_ios_min8.0 */,
+				3D31C5E65C6B61BE00000000 /* _idx_XCTestCodeSwift_2FB5517B_ios_min8.0 */,
+				3D31C5E626CA755A00000000 /* _idx_XCUITestCode_XCTestCode_1D881332_ios_min8.0 */,
 			);
 		};
 /* End PBXProject section */
@@ -679,14 +679,14 @@
 /* End PBXSourcesBuildPhase section */
 
 /* Begin PBXTargetDependency section */
+		4DAD0B4216CDD44F00000000 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			targetProxy = 8193667216CDD44F00000000 /* PBXContainerItemProxy */;
+		};
 		4DAD0B426921D83500000000 /* PBXTargetDependency */ = {
 			isa = PBXTargetDependency;
 			targetProxy = 819366726921D83500000000 /* PBXContainerItemProxy */;
 		};
-		4DAD0B42A0C7226900000000 /* PBXTargetDependency */ = {
-			isa = PBXTargetDependency;
-			targetProxy = 81936672A0C7226900000000 /* PBXContainerItemProxy */;
-		};
 		4DAD0B42C3E8068D00000000 /* PBXTargetDependency */ = {
 			isa = PBXTargetDependency;
 			targetProxy = 81936672C3E8068D00000000 /* PBXContainerItemProxy */;
@@ -837,7 +837,7 @@
 				GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1";
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
-				PRODUCT_NAME = _idx_JavaLibrary_C16E964B;
+				PRODUCT_NAME = _idx_JavaLibrary_C16E964B_ios_min8.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -852,7 +852,7 @@
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_WR)/tulsi-includes/x/x/tulsi_e2e_simple_skylark/_j2objc/JavaLibrary $(TULSI_WR)/third_party/java_src/j2objc/jre_emul/Classes $(TULSI_WR)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/Classes $(TULSI_WR)/third_party/java_src/j2objc/jre_emul/android/libcore/luni/src/main/native $(TULSI_WR)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/android/libcore/luni/src/main/native $(TULSI_WR)/third_party/java_src/j2objc/jre_emul/android/platform/libcore/ojluni/src/main/native $(TULSI_WR)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/android/platform/libcore/ojluni/src/main/native $(TULSI_WR)/third_party/java_src/j2objc/jre_emul/apple_apsl $(TULSI_WR)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/apple_apsl $(TULSI_WR)/third_party/java_src/j2objc/jre_emul $(TULSI_WR)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul $(TULSI_WR)/third_party/protobuf/objectivec $(TULSI_WR)/tulsi-includes/x/x/third_party/protobuf/objectivec $(TULSI_WR)/tulsi-includes/x/x/tulsi_e2e_simple_skylark/_generated_protos/ObjcProtos $(TULSI_BWRS)/tulsi-includes/x/x/tulsi_e2e_simple_skylark/_j2objc/JavaLibrary $(TULSI_BWRS)/third_party/java_src/j2objc/jre_emul/Classes $(TULSI_BWRS)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/Classes $(TULSI_BWRS)/third_party/java_src/j2objc/jre_emul/android/libcore/luni/src/main/native $(TULSI_BWRS)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/android/libcore/luni/src/main/native $(TULSI_BWRS)/third_party/java_src/j2objc/jre_emul/android/platform/libcore/ojluni/src/main/native $(TULSI_BWRS)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/android/platform/libcore/ojluni/src/main/native $(TULSI_BWRS)/third_party/java_src/j2objc/jre_emul/apple_apsl $(TULSI_BWRS)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/apple_apsl $(TULSI_BWRS)/third_party/java_src/j2objc/jre_emul $(TULSI_BWRS)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul $(TULSI_BWRS)/third_party/protobuf/objectivec $(TULSI_BWRS)/tulsi-includes/x/x/third_party/protobuf/objectivec $(TULSI_BWRS)/tulsi-includes/x/x/tulsi_e2e_simple_skylark/_generated_protos/ObjcProtos /Library/absolute/include/path $(TULSI_BWRS)/relative/Library/include/path $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
 				OTHER_CFLAGS = "-DLIBRARY_COPT_DEFINE -DLIBRARY_DEFINES_DEFINE=1";
-				PRODUCT_NAME = _idx_Library_22D3B3D5;
+				PRODUCT_NAME = _idx_Library_22D3B3D5_ios_min8.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -866,7 +866,7 @@
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_WR)/tulsi_e2e_simple_skylark/App/includes $(TULSI_WR)/tulsi-includes/x/x/tulsi_e2e_simple_skylark/App/includes $(TULSI_WR)/tulsi-includes/x/x/tulsi_e2e_simple_skylark/_j2objc/JavaLibrary $(TULSI_WR)/third_party/java_src/j2objc/jre_emul/Classes $(TULSI_WR)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/Classes $(TULSI_WR)/third_party/java_src/j2objc/jre_emul/android/libcore/luni/src/main/native $(TULSI_WR)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/android/libcore/luni/src/main/native $(TULSI_WR)/third_party/java_src/j2objc/jre_emul/android/platform/libcore/ojluni/src/main/native $(TULSI_WR)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/android/platform/libcore/ojluni/src/main/native $(TULSI_WR)/third_party/java_src/j2objc/jre_emul/apple_apsl $(TULSI_WR)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/apple_apsl $(TULSI_WR)/third_party/java_src/j2objc/jre_emul $(TULSI_WR)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul $(TULSI_WR)/third_party/protobuf/objectivec $(TULSI_WR)/tulsi-includes/x/x/third_party/protobuf/objectivec $(TULSI_BWRS)/tulsi_e2e_simple_skylark/App/includes $(TULSI_BWRS)/tulsi-includes/x/x/tulsi_e2e_simple_skylark/App/includes $(TULSI_BWRS)/tulsi-includes/x/x/tulsi_e2e_simple_skylark/_j2objc/JavaLibrary $(TULSI_BWRS)/third_party/java_src/j2objc/jre_emul/Classes $(TULSI_BWRS)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/Classes $(TULSI_BWRS)/third_party/java_src/j2objc/jre_emul/android/libcore/luni/src/main/native $(TULSI_BWRS)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/android/libcore/luni/src/main/native $(TULSI_BWRS)/third_party/java_src/j2objc/jre_emul/android/platform/libcore/ojluni/src/main/native $(TULSI_BWRS)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/android/platform/libcore/ojluni/src/main/native $(TULSI_BWRS)/third_party/java_src/j2objc/jre_emul/apple_apsl $(TULSI_BWRS)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/apple_apsl $(TULSI_BWRS)/third_party/java_src/j2objc/jre_emul $(TULSI_BWRS)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul $(TULSI_BWRS)/third_party/protobuf/objectivec $(TULSI_BWRS)/tulsi-includes/x/x/third_party/protobuf/objectivec $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
 				OTHER_CFLAGS = "-DBINARY_ADDITIONAL_DEFINE -DBINARY_ANOTHER_DEFINE=2 -DLIBRARY_DEFINES_DEFINE=1";
-				PRODUCT_NAME = _idx_MainLibrary_E33E600C;
+				PRODUCT_NAME = _idx_MainLibrary_E33E600C_ios_min8.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -879,7 +879,7 @@
 				GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1";
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
-				PRODUCT_NAME = _idx_XCTestCodeSwift_2FB5517B;
+				PRODUCT_NAME = _idx_XCTestCodeSwift_2FB5517B_ios_min8.0;
 				SDKROOT = iphonesimulator;
 				SWIFT_INCLUDE_PATHS = "$(inherited) $(TULSI_BWRS)/tulsi-includes/x/x/tulsi_e2e_simple_skylark/XCTestCodeSwift/_objs";
 				VALID_ARCHS = x86_64;
@@ -894,7 +894,7 @@
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_WR)/tulsi-includes/x/x/tulsi_e2e_simple_skylark/_j2objc/JavaLibrary $(TULSI_WR)/third_party/java_src/j2objc/jre_emul/Classes $(TULSI_WR)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/Classes $(TULSI_WR)/third_party/java_src/j2objc/jre_emul/android/libcore/luni/src/main/native $(TULSI_WR)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/android/libcore/luni/src/main/native $(TULSI_WR)/third_party/java_src/j2objc/jre_emul/android/platform/libcore/ojluni/src/main/native $(TULSI_WR)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/android/platform/libcore/ojluni/src/main/native $(TULSI_WR)/third_party/java_src/j2objc/jre_emul/apple_apsl $(TULSI_WR)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/apple_apsl $(TULSI_WR)/third_party/java_src/j2objc/jre_emul $(TULSI_WR)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul $(TULSI_WR)/third_party/protobuf/objectivec $(TULSI_WR)/tulsi-includes/x/x/third_party/protobuf/objectivec $(TULSI_BWRS)/tulsi-includes/x/x/tulsi_e2e_simple_skylark/_j2objc/JavaLibrary $(TULSI_BWRS)/third_party/java_src/j2objc/jre_emul/Classes $(TULSI_BWRS)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/Classes $(TULSI_BWRS)/third_party/java_src/j2objc/jre_emul/android/libcore/luni/src/main/native $(TULSI_BWRS)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/android/libcore/luni/src/main/native $(TULSI_BWRS)/third_party/java_src/j2objc/jre_emul/android/platform/libcore/ojluni/src/main/native $(TULSI_BWRS)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/android/platform/libcore/ojluni/src/main/native $(TULSI_BWRS)/third_party/java_src/j2objc/jre_emul/apple_apsl $(TULSI_BWRS)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/apple_apsl $(TULSI_BWRS)/third_party/java_src/j2objc/jre_emul $(TULSI_BWRS)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul $(TULSI_BWRS)/third_party/protobuf/objectivec $(TULSI_BWRS)/tulsi-includes/x/x/third_party/protobuf/objectivec $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
 				OTHER_CFLAGS = "-DLIBRARY_DEFINES_DEFINE=1";
-				PRODUCT_NAME = _idx_XCUITestCode_XCTestCode_1D881332;
+				PRODUCT_NAME = _idx_XCUITestCode_XCTestCode_1D881332_ios_min8.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -1044,7 +1044,7 @@
 				GCC_PREPROCESSOR_DEFINITIONS = "NDEBUG=1";
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
-				PRODUCT_NAME = _idx_JavaLibrary_C16E964B;
+				PRODUCT_NAME = _idx_JavaLibrary_C16E964B_ios_min8.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -1059,7 +1059,7 @@
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_WR)/tulsi-includes/x/x/tulsi_e2e_simple_skylark/_j2objc/JavaLibrary $(TULSI_WR)/third_party/java_src/j2objc/jre_emul/Classes $(TULSI_WR)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/Classes $(TULSI_WR)/third_party/java_src/j2objc/jre_emul/android/libcore/luni/src/main/native $(TULSI_WR)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/android/libcore/luni/src/main/native $(TULSI_WR)/third_party/java_src/j2objc/jre_emul/android/platform/libcore/ojluni/src/main/native $(TULSI_WR)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/android/platform/libcore/ojluni/src/main/native $(TULSI_WR)/third_party/java_src/j2objc/jre_emul/apple_apsl $(TULSI_WR)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/apple_apsl $(TULSI_WR)/third_party/java_src/j2objc/jre_emul $(TULSI_WR)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul $(TULSI_WR)/third_party/protobuf/objectivec $(TULSI_WR)/tulsi-includes/x/x/third_party/protobuf/objectivec $(TULSI_WR)/tulsi-includes/x/x/tulsi_e2e_simple_skylark/_generated_protos/ObjcProtos $(TULSI_BWRS)/tulsi-includes/x/x/tulsi_e2e_simple_skylark/_j2objc/JavaLibrary $(TULSI_BWRS)/third_party/java_src/j2objc/jre_emul/Classes $(TULSI_BWRS)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/Classes $(TULSI_BWRS)/third_party/java_src/j2objc/jre_emul/android/libcore/luni/src/main/native $(TULSI_BWRS)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/android/libcore/luni/src/main/native $(TULSI_BWRS)/third_party/java_src/j2objc/jre_emul/android/platform/libcore/ojluni/src/main/native $(TULSI_BWRS)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/android/platform/libcore/ojluni/src/main/native $(TULSI_BWRS)/third_party/java_src/j2objc/jre_emul/apple_apsl $(TULSI_BWRS)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/apple_apsl $(TULSI_BWRS)/third_party/java_src/j2objc/jre_emul $(TULSI_BWRS)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul $(TULSI_BWRS)/third_party/protobuf/objectivec $(TULSI_BWRS)/tulsi-includes/x/x/third_party/protobuf/objectivec $(TULSI_BWRS)/tulsi-includes/x/x/tulsi_e2e_simple_skylark/_generated_protos/ObjcProtos /Library/absolute/include/path $(TULSI_BWRS)/relative/Library/include/path $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
 				OTHER_CFLAGS = "-DLIBRARY_COPT_DEFINE -DLIBRARY_DEFINES_DEFINE=1";
-				PRODUCT_NAME = _idx_Library_22D3B3D5;
+				PRODUCT_NAME = _idx_Library_22D3B3D5_ios_min8.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -1073,7 +1073,7 @@
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_WR)/tulsi_e2e_simple_skylark/App/includes $(TULSI_WR)/tulsi-includes/x/x/tulsi_e2e_simple_skylark/App/includes $(TULSI_WR)/tulsi-includes/x/x/tulsi_e2e_simple_skylark/_j2objc/JavaLibrary $(TULSI_WR)/third_party/java_src/j2objc/jre_emul/Classes $(TULSI_WR)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/Classes $(TULSI_WR)/third_party/java_src/j2objc/jre_emul/android/libcore/luni/src/main/native $(TULSI_WR)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/android/libcore/luni/src/main/native $(TULSI_WR)/third_party/java_src/j2objc/jre_emul/android/platform/libcore/ojluni/src/main/native $(TULSI_WR)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/android/platform/libcore/ojluni/src/main/native $(TULSI_WR)/third_party/java_src/j2objc/jre_emul/apple_apsl $(TULSI_WR)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/apple_apsl $(TULSI_WR)/third_party/java_src/j2objc/jre_emul $(TULSI_WR)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul $(TULSI_WR)/third_party/protobuf/objectivec $(TULSI_WR)/tulsi-includes/x/x/third_party/protobuf/objectivec $(TULSI_BWRS)/tulsi_e2e_simple_skylark/App/includes $(TULSI_BWRS)/tulsi-includes/x/x/tulsi_e2e_simple_skylark/App/includes $(TULSI_BWRS)/tulsi-includes/x/x/tulsi_e2e_simple_skylark/_j2objc/JavaLibrary $(TULSI_BWRS)/third_party/java_src/j2objc/jre_emul/Classes $(TULSI_BWRS)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/Classes $(TULSI_BWRS)/third_party/java_src/j2objc/jre_emul/android/libcore/luni/src/main/native $(TULSI_BWRS)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/android/libcore/luni/src/main/native $(TULSI_BWRS)/third_party/java_src/j2objc/jre_emul/android/platform/libcore/ojluni/src/main/native $(TULSI_BWRS)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/android/platform/libcore/ojluni/src/main/native $(TULSI_BWRS)/third_party/java_src/j2objc/jre_emul/apple_apsl $(TULSI_BWRS)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/apple_apsl $(TULSI_BWRS)/third_party/java_src/j2objc/jre_emul $(TULSI_BWRS)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul $(TULSI_BWRS)/third_party/protobuf/objectivec $(TULSI_BWRS)/tulsi-includes/x/x/third_party/protobuf/objectivec $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
 				OTHER_CFLAGS = "-DBINARY_ADDITIONAL_DEFINE -DBINARY_ANOTHER_DEFINE=2 -DLIBRARY_DEFINES_DEFINE=1";
-				PRODUCT_NAME = _idx_MainLibrary_E33E600C;
+				PRODUCT_NAME = _idx_MainLibrary_E33E600C_ios_min8.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -1086,7 +1086,7 @@
 				GCC_PREPROCESSOR_DEFINITIONS = "NDEBUG=1";
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
-				PRODUCT_NAME = _idx_XCTestCodeSwift_2FB5517B;
+				PRODUCT_NAME = _idx_XCTestCodeSwift_2FB5517B_ios_min8.0;
 				SDKROOT = iphonesimulator;
 				SWIFT_INCLUDE_PATHS = "$(inherited) $(TULSI_BWRS)/tulsi-includes/x/x/tulsi_e2e_simple_skylark/XCTestCodeSwift/_objs";
 				VALID_ARCHS = x86_64;
@@ -1101,7 +1101,7 @@
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_WR)/tulsi-includes/x/x/tulsi_e2e_simple_skylark/_j2objc/JavaLibrary $(TULSI_WR)/third_party/java_src/j2objc/jre_emul/Classes $(TULSI_WR)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/Classes $(TULSI_WR)/third_party/java_src/j2objc/jre_emul/android/libcore/luni/src/main/native $(TULSI_WR)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/android/libcore/luni/src/main/native $(TULSI_WR)/third_party/java_src/j2objc/jre_emul/android/platform/libcore/ojluni/src/main/native $(TULSI_WR)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/android/platform/libcore/ojluni/src/main/native $(TULSI_WR)/third_party/java_src/j2objc/jre_emul/apple_apsl $(TULSI_WR)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/apple_apsl $(TULSI_WR)/third_party/java_src/j2objc/jre_emul $(TULSI_WR)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul $(TULSI_WR)/third_party/protobuf/objectivec $(TULSI_WR)/tulsi-includes/x/x/third_party/protobuf/objectivec $(TULSI_BWRS)/tulsi-includes/x/x/tulsi_e2e_simple_skylark/_j2objc/JavaLibrary $(TULSI_BWRS)/third_party/java_src/j2objc/jre_emul/Classes $(TULSI_BWRS)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/Classes $(TULSI_BWRS)/third_party/java_src/j2objc/jre_emul/android/libcore/luni/src/main/native $(TULSI_BWRS)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/android/libcore/luni/src/main/native $(TULSI_BWRS)/third_party/java_src/j2objc/jre_emul/android/platform/libcore/ojluni/src/main/native $(TULSI_BWRS)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/android/platform/libcore/ojluni/src/main/native $(TULSI_BWRS)/third_party/java_src/j2objc/jre_emul/apple_apsl $(TULSI_BWRS)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul/apple_apsl $(TULSI_BWRS)/third_party/java_src/j2objc/jre_emul $(TULSI_BWRS)/tulsi-includes/x/x/third_party/java_src/j2objc/jre_emul $(TULSI_BWRS)/third_party/protobuf/objectivec $(TULSI_BWRS)/tulsi-includes/x/x/third_party/protobuf/objectivec $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
 				OTHER_CFLAGS = "-DLIBRARY_DEFINES_DEFINE=1";
-				PRODUCT_NAME = _idx_XCUITestCode_XCTestCode_1D881332;
+				PRODUCT_NAME = _idx_XCUITestCode_XCTestCode_1D881332_ios_min8.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -1473,19 +1473,11 @@
 /* End XCBuildConfiguration section */
 
 /* Begin XCConfigurationList section */
-		DE4755831650A2DA00000000 /* Build configuration list for PBXNativeTarget "_idx_Library_22D3B3D5" */ = {
+		DE475583077C771500000000 /* Build configuration list for PBXNativeTarget "_idx_XCTestCodeSwift_2FB5517B_ios_min8.0" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
-				44936BD67EED3C4D00000007 /* Debug */,
-				44936BD6A3D45CE900000007 /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-		};
-		DE47558318E15AF500000000 /* Build configuration list for PBXNativeTarget "_idx_MainLibrary_E33E600C" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				44936BD67EED3C4D00000008 /* Debug */,
-				44936BD6A3D45CE900000008 /* Release */,
+				44936BD67EED3C4D00000009 /* Debug */,
+				44936BD6A3D45CE900000009 /* Release */,
 			);
 			defaultConfigurationIsVisible = 0;
 		};
@@ -1499,6 +1491,30 @@
 			);
 			defaultConfigurationIsVisible = 0;
 		};
+		DE47558336E607E300000000 /* Build configuration list for PBXNativeTarget "_idx_MainLibrary_E33E600C_ios_min8.0" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				44936BD67EED3C4D00000008 /* Debug */,
+				44936BD6A3D45CE900000008 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+		};
+		DE4755835181881800000000 /* Build configuration list for PBXNativeTarget "_idx_Library_22D3B3D5_ios_min8.0" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				44936BD67EED3C4D00000007 /* Debug */,
+				44936BD6A3D45CE900000007 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+		};
+		DE4755835905C1EB00000000 /* Build configuration list for PBXNativeTarget "_idx_JavaLibrary_C16E964B_ios_min8.0" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				44936BD67EED3C4D00000006 /* Debug */,
+				44936BD6A3D45CE900000006 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+		};
 		DE4755835CC0E52B00000000 /* Build configuration list for PBXNativeTarget "SkylarkTargetApplication" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
@@ -1529,14 +1545,6 @@
 			);
 			defaultConfigurationIsVisible = 0;
 		};
-		DE47558384FA8FF500000000 /* Build configuration list for PBXNativeTarget "_idx_XCUITestCode_XCTestCode_1D881332" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				44936BD67EED3C4D0000000A /* Debug */,
-				44936BD6A3D45CE90000000A /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-		};
 		DE475583903428F900000000 /* Build configuration list for PBXNativeTarget "StickerExtension" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
@@ -1557,11 +1565,11 @@
 			);
 			defaultConfigurationIsVisible = 0;
 		};
-		DE475583C06144FD00000000 /* Build configuration list for PBXNativeTarget "_idx_JavaLibrary_C16E964B" */ = {
+		DE475583BB1B1CE300000000 /* Build configuration list for PBXNativeTarget "_idx_XCUITestCode_XCTestCode_1D881332_ios_min8.0" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
-				44936BD67EED3C4D00000006 /* Debug */,
-				44936BD6A3D45CE900000006 /* Release */,
+				44936BD67EED3C4D0000000A /* Debug */,
+				44936BD6A3D45CE90000000A /* Release */,
 			);
 			defaultConfigurationIsVisible = 0;
 		};
@@ -1571,14 +1579,6 @@
 			);
 			defaultConfigurationIsVisible = 0;
 		};
-		DE475583D3B1CC6700000000 /* Build configuration list for PBXNativeTarget "_idx_XCTestCodeSwift_2FB5517B" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				44936BD67EED3C4D00000009 /* Debug */,
-				44936BD6A3D45CE900000009 /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-		};
 /* End XCConfigurationList section */
 
 /* Begin XCVersionGroup section */
diff --git a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/SwiftProject.xcodeproj/project.pbxproj b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/SwiftProject.xcodeproj/project.pbxproj
index 48989c7..f31ade1 100644
--- a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/SwiftProject.xcodeproj/project.pbxproj
+++ b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/SwiftProject.xcodeproj/project.pbxproj
@@ -21,7 +21,7 @@
 /* End PBXContainerItemProxy section */
 
 /* Begin PBXFileReference section */
-		43D68C28262C565A00000000 /* _idx_SwiftLibrary_EA7FC891.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; name = _idx_SwiftLibrary_EA7FC891.framework; path = _idx_SwiftLibrary_EA7FC891.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+		43D68C283DDF903600000000 /* _idx_SwiftLibrary_EA7FC891_ios_min8.0.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; name = _idx_SwiftLibrary_EA7FC891_ios_min8.0.framework; path = _idx_SwiftLibrary_EA7FC891_ios_min8.0.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C28A81C321400000000 /* a.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = a.swift; path = "tulsi-workspace/tulsi_e2e_swift/SwiftLibrary/srcs/a.swift"; sourceTree = "<group>"; };
 		43D68C28ADF10C6300000000 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; name = Info.plist; path = "tulsi-workspace/tulsi_e2e_swift/Info.plist"; sourceTree = "<group>"; };
 		43D68C28DA373E9A00000000 /* b.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = b.swift; path = "tulsi-workspace/tulsi_e2e_swift/SwiftLibrary/srcs/b.swift"; sourceTree = "<group>"; };
@@ -35,7 +35,7 @@
 			isa = PBXGroup;
 			children = (
 				43D68C28F49055A600000000 /* Application.app */,
-				43D68C28262C565A00000000 /* _idx_SwiftLibrary_EA7FC891.framework */,
+				43D68C283DDF903600000000 /* _idx_SwiftLibrary_EA7FC891_ios_min8.0.framework */,
 				966FB6DE2CEC8E5C00000000 /* blaze-bin */,
 			);
 			name = Products;
@@ -130,9 +130,9 @@
 			productReference = 43D68C28F49055A600000000 /* Application.app */;
 			productType = "com.apple.product-type.application";
 		};
-		3D31C5E6C63464CE00000000 /* _idx_SwiftLibrary_EA7FC891 */ = {
+		3D31C5E68D4F012A00000000 /* _idx_SwiftLibrary_EA7FC891_ios_min8.0 */ = {
 			isa = PBXNativeTarget;
-			buildConfigurationList = DE475583244F125D00000000 /* Build configuration list for PBXNativeTarget "_idx_SwiftLibrary_EA7FC891" */;
+			buildConfigurationList = DE4755838C94FE4B00000000 /* Build configuration list for PBXNativeTarget "_idx_SwiftLibrary_EA7FC891_ios_min8.0" */;
 			buildPhases = (
 				605793E20000000000000000 /* Sources */,
 			);
@@ -141,9 +141,9 @@
 			dependencies = (
 				4DAD0B426921D83500000000 /* PBXTargetDependency */,
 			);
-			name = _idx_SwiftLibrary_EA7FC891;
-			productName = _idx_SwiftLibrary_EA7FC891;
-			productReference = 43D68C28262C565A00000000 /* _idx_SwiftLibrary_EA7FC891.framework */;
+			name = _idx_SwiftLibrary_EA7FC891_ios_min8.0;
+			productName = _idx_SwiftLibrary_EA7FC891_ios_min8.0;
+			productReference = 43D68C283DDF903600000000 /* _idx_SwiftLibrary_EA7FC891_ios_min8.0.framework */;
 			productType = "com.apple.product-type.framework";
 		};
 /* End PBXNativeTarget section */
@@ -166,7 +166,7 @@
 			targets = (
 				3D31C5E66B144ABC00000000 /* Application */,
 				ECCC95946921D83400000000 /* _bazel_clean_ */,
-				3D31C5E6C63464CE00000000 /* _idx_SwiftLibrary_EA7FC891 */,
+				3D31C5E68D4F012A00000000 /* _idx_SwiftLibrary_EA7FC891_ios_min8.0 */,
 			);
 		};
 /* End PBXProject section */
@@ -272,7 +272,7 @@
 				GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1";
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
-				PRODUCT_NAME = _idx_SwiftLibrary_EA7FC891;
+				PRODUCT_NAME = _idx_SwiftLibrary_EA7FC891_ios_min8.0;
 				SDKROOT = iphonesimulator;
 				SWIFT_INCLUDE_PATHS = "$(inherited) $(TULSI_BWRS)/tulsi-includes/x/x/tulsi_e2e_swift/SwiftLibrary/_objs";
 				VALID_ARCHS = x86_64;
@@ -344,7 +344,7 @@
 				GCC_PREPROCESSOR_DEFINITIONS = "NDEBUG=1";
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
-				PRODUCT_NAME = _idx_SwiftLibrary_EA7FC891;
+				PRODUCT_NAME = _idx_SwiftLibrary_EA7FC891_ios_min8.0;
 				SDKROOT = iphonesimulator;
 				SWIFT_INCLUDE_PATHS = "$(inherited) $(TULSI_BWRS)/tulsi-includes/x/x/tulsi_e2e_swift/SwiftLibrary/_objs";
 				VALID_ARCHS = x86_64;
@@ -495,7 +495,7 @@
 /* End XCBuildConfiguration section */
 
 /* Begin XCConfigurationList section */
-		DE475583244F125D00000000 /* Build configuration list for PBXNativeTarget "_idx_SwiftLibrary_EA7FC891" */ = {
+		DE4755838C94FE4B00000000 /* Build configuration list for PBXNativeTarget "_idx_SwiftLibrary_EA7FC891_ios_min8.0" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
 				44936BD67EED3C4D00000002 /* Debug */,
diff --git a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteExplicitXCTestsProject.xcodeproj/project.pbxproj b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteExplicitXCTestsProject.xcodeproj/project.pbxproj
index 31e2709..dd44f00 100644
--- a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteExplicitXCTestsProject.xcodeproj/project.pbxproj
+++ b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteExplicitXCTestsProject.xcodeproj/project.pbxproj
@@ -33,6 +33,7 @@
 
 /* Begin PBXFileReference section */
 		43D68C280514D6D800000000 /* BUILD */ = {isa = PBXFileReference; lastKnownFileType = text; name = BUILD; path = TestSuite/Three/BUILD; sourceTree = "<group>"; };
+		43D68C2826E34A2000000000 /* lib_idx_ApplicationLibrary_12894588_ios_min8.0.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_ApplicationLibrary_12894588_ios_min8.0.a; path = lib_idx_ApplicationLibrary_12894588_ios_min8.0.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C2830D2727A00000000 /* XCTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = XCTest.m; path = "tulsi-workspace/TestSuite/Three/XCTest.m"; sourceTree = "<group>"; };
 		43D68C2837CE81F900000000 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = main.m; path = "tulsi-workspace/TestSuite/Application/srcs/main.m"; sourceTree = "<group>"; };
 		43D68C284E81BC7800000000 /* TestSuite-Three-XCTest.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; name = "TestSuite-Three-XCTest.xctest"; path = "TestSuite-Three-XCTest.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -40,10 +41,9 @@
 		43D68C28588752AD00000000 /* BUILD */ = {isa = PBXFileReference; lastKnownFileType = text; name = BUILD; path = TestSuite/BUILD; sourceTree = "<group>"; };
 		43D68C285A2F8B6E00000000 /* TestApplication.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; name = TestApplication.app; path = TestApplication.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C2864939ADF00000000 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; name = Info.plist; path = "tulsi-workspace/TestSuite/Info.plist"; sourceTree = "<group>"; };
+		43D68C286B4156B000000000 /* lib_idx_XCTest_XCTest_XCTest_A31E743F_ios_min7.0.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_XCTest_XCTest_XCTest_A31E743F_ios_min7.0.a; path = lib_idx_XCTest_XCTest_XCTest_A31E743F_ios_min7.0.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C289092682100000000 /* TestApplication-MergedInfo.plist */ = {isa = PBXFileReference; explicitFileType = text.plist; name = "TestApplication-MergedInfo.plist"; path = "blaze-bin/TestSuite/TestApplication-MergedInfo.plist"; sourceTree = "<group>"; };
 		43D68C2899C3A61800000000 /* BUILD */ = {isa = PBXFileReference; lastKnownFileType = text; name = BUILD; path = TestSuite/Two/BUILD; sourceTree = "<group>"; };
-		43D68C28BEAC790400000000 /* lib_idx_ApplicationLibrary_12894588.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_ApplicationLibrary_12894588.a; path = lib_idx_ApplicationLibrary_12894588.a; sourceTree = BUILT_PRODUCTS_DIR; };
-		43D68C28D4ED775A00000000 /* lib_idx_XCTest_XCTest_XCTest_A31E743F.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_XCTest_XCTest_XCTest_A31E743F.a; path = lib_idx_XCTest_XCTest_XCTest_A31E743F.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C28D835DF2200000000 /* XCTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = XCTest.m; path = "tulsi-workspace/TestSuite/One/XCTest.m"; sourceTree = "<group>"; };
 		43D68C28DEE022F800000000 /* TestSuite-Two-XCTest.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; name = "TestSuite-Two-XCTest.xctest"; path = "TestSuite-Two-XCTest.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C28E8EE103A00000000 /* XCTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = XCTest.m; path = "tulsi-workspace/TestSuite/Two/XCTest.m"; sourceTree = "<group>"; };
@@ -68,8 +68,8 @@
 				43D68C284E81BC7800000000 /* TestSuite-Three-XCTest.xctest */,
 				43D68C28DEE022F800000000 /* TestSuite-Two-XCTest.xctest */,
 				966FB6DE2CEC8E5C00000000 /* blaze-bin */,
-				43D68C28BEAC790400000000 /* lib_idx_ApplicationLibrary_12894588.a */,
-				43D68C28D4ED775A00000000 /* lib_idx_XCTest_XCTest_XCTest_A31E743F.a */,
+				43D68C2826E34A2000000000 /* lib_idx_ApplicationLibrary_12894588_ios_min8.0.a */,
+				43D68C286B4156B000000000 /* lib_idx_XCTest_XCTest_XCTest_A31E743F_ios_min7.0.a */,
 			);
 			name = Products;
 			sourceTree = "<group>";
@@ -203,22 +203,6 @@
 			productReference = 43D68C284E81BC7800000000 /* TestSuite-Three-XCTest.xctest */;
 			productType = "com.apple.product-type.bundle.unit-test";
 		};
-		3D31C5E615F719A200000000 /* _idx_ApplicationLibrary_12894588 */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = DE47558347840A8F00000000 /* Build configuration list for PBXNativeTarget "_idx_ApplicationLibrary_12894588" */;
-			buildPhases = (
-				605793E20000000000000003 /* Sources */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-				4DAD0B426921D83500000000 /* PBXTargetDependency */,
-			);
-			name = _idx_ApplicationLibrary_12894588;
-			productName = _idx_ApplicationLibrary_12894588;
-			productReference = 43D68C28BEAC790400000000 /* lib_idx_ApplicationLibrary_12894588.a */;
-			productType = "com.apple.product-type.library.static";
-		};
 		3D31C5E67C4CFB5800000000 /* TestSuite-Two-XCTest */ = {
 			isa = PBXNativeTarget;
 			buildConfigurationList = DE4755831AEA36FA00000000 /* Build configuration list for PBXNativeTarget "TestSuite-Two-XCTest" */;
@@ -237,9 +221,9 @@
 			productReference = 43D68C28DEE022F800000000 /* TestSuite-Two-XCTest.xctest */;
 			productType = "com.apple.product-type.bundle.unit-test";
 		};
-		3D31C5E6982F19C800000000 /* _idx_XCTest_XCTest_XCTest_A31E743F */ = {
+		3D31C5E6CE62191E00000000 /* _idx_XCTest_XCTest_XCTest_A31E743F_ios_min7.0 */ = {
 			isa = PBXNativeTarget;
-			buildConfigurationList = DE475583229D80D600000000 /* Build configuration list for PBXNativeTarget "_idx_XCTest_XCTest_XCTest_A31E743F" */;
+			buildConfigurationList = DE475583CEC6FAC500000000 /* Build configuration list for PBXNativeTarget "_idx_XCTest_XCTest_XCTest_A31E743F_ios_min7.0" */;
 			buildPhases = (
 				605793E20000000000000004 /* Sources */,
 			);
@@ -248,9 +232,25 @@
 			dependencies = (
 				4DAD0B426921D83500000000 /* PBXTargetDependency */,
 			);
-			name = _idx_XCTest_XCTest_XCTest_A31E743F;
-			productName = _idx_XCTest_XCTest_XCTest_A31E743F;
-			productReference = 43D68C28D4ED775A00000000 /* lib_idx_XCTest_XCTest_XCTest_A31E743F.a */;
+			name = _idx_XCTest_XCTest_XCTest_A31E743F_ios_min7.0;
+			productName = _idx_XCTest_XCTest_XCTest_A31E743F_ios_min7.0;
+			productReference = 43D68C286B4156B000000000 /* lib_idx_XCTest_XCTest_XCTest_A31E743F_ios_min7.0.a */;
+			productType = "com.apple.product-type.library.static";
+		};
+		3D31C5E6D741188E00000000 /* _idx_ApplicationLibrary_12894588_ios_min8.0 */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = DE475583E54EB6BD00000000 /* Build configuration list for PBXNativeTarget "_idx_ApplicationLibrary_12894588_ios_min8.0" */;
+			buildPhases = (
+				605793E20000000000000003 /* Sources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				4DAD0B426921D83500000000 /* PBXTargetDependency */,
+			);
+			name = _idx_ApplicationLibrary_12894588_ios_min8.0;
+			productName = _idx_ApplicationLibrary_12894588_ios_min8.0;
+			productReference = 43D68C2826E34A2000000000 /* lib_idx_ApplicationLibrary_12894588_ios_min8.0.a */;
 			productType = "com.apple.product-type.library.static";
 		};
 		3D31C5E6EC64700400000000 /* TestApplication */ = {
@@ -303,8 +303,8 @@
 				3D31C5E6042EA8D800000000 /* TestSuite-Three-XCTest */,
 				3D31C5E67C4CFB5800000000 /* TestSuite-Two-XCTest */,
 				ECCC95946921D83400000000 /* _bazel_clean_ */,
-				3D31C5E615F719A200000000 /* _idx_ApplicationLibrary_12894588 */,
-				3D31C5E6982F19C800000000 /* _idx_XCTest_XCTest_XCTest_A31E743F */,
+				3D31C5E6D741188E00000000 /* _idx_ApplicationLibrary_12894588_ios_min8.0 */,
+				3D31C5E6CE62191E00000000 /* _idx_XCTest_XCTest_XCTest_A31E743F_ios_min7.0 */,
 			);
 		};
 /* End PBXProject section */
@@ -553,7 +553,7 @@
 				GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1";
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
-				PRODUCT_NAME = _idx_ApplicationLibrary_12894588;
+				PRODUCT_NAME = _idx_ApplicationLibrary_12894588_ios_min8.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -566,7 +566,7 @@
 				GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1";
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 7.0;
-				PRODUCT_NAME = _idx_XCTest_XCTest_XCTest_A31E743F;
+				PRODUCT_NAME = _idx_XCTest_XCTest_XCTest_A31E743F_ios_min7.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -701,7 +701,7 @@
 				GCC_PREPROCESSOR_DEFINITIONS = "NDEBUG=1";
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
-				PRODUCT_NAME = _idx_ApplicationLibrary_12894588;
+				PRODUCT_NAME = _idx_ApplicationLibrary_12894588_ios_min8.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -714,7 +714,7 @@
 				GCC_PREPROCESSOR_DEFINITIONS = "NDEBUG=1";
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 7.0;
-				PRODUCT_NAME = _idx_XCTest_XCTest_XCTest_A31E743F;
+				PRODUCT_NAME = _idx_XCTest_XCTest_XCTest_A31E743F_ios_min7.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -1054,14 +1054,6 @@
 			);
 			defaultConfigurationIsVisible = 0;
 		};
-		DE475583229D80D600000000 /* Build configuration list for PBXNativeTarget "_idx_XCTest_XCTest_XCTest_A31E743F" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				44936BD67EED3C4D00000006 /* Debug */,
-				44936BD6A3D45CE900000006 /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-		};
 		DE4755832C50EFEB00000000 /* Build configuration list for PBXProject "TestSuiteExplicitXCTestsProject" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
@@ -1072,14 +1064,6 @@
 			);
 			defaultConfigurationIsVisible = 0;
 		};
-		DE47558347840A8F00000000 /* Build configuration list for PBXNativeTarget "_idx_ApplicationLibrary_12894588" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				44936BD67EED3C4D00000005 /* Debug */,
-				44936BD6A3D45CE900000005 /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-		};
 		DE4755834E80A3C200000000 /* Build configuration list for PBXNativeTarget "TestSuite-Three-XCTest" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
@@ -1106,6 +1090,22 @@
 			);
 			defaultConfigurationIsVisible = 0;
 		};
+		DE475583CEC6FAC500000000 /* Build configuration list for PBXNativeTarget "_idx_XCTest_XCTest_XCTest_A31E743F_ios_min7.0" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				44936BD67EED3C4D00000006 /* Debug */,
+				44936BD6A3D45CE900000006 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+		};
+		DE475583E54EB6BD00000000 /* Build configuration list for PBXNativeTarget "_idx_ApplicationLibrary_12894588_ios_min8.0" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				44936BD67EED3C4D00000005 /* Debug */,
+				44936BD6A3D45CE900000005 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+		};
 /* End XCConfigurationList section */
 	};
 	rootObject = 7E7BD0EA68854BB100000000 /* Project object */;
diff --git a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteLocalTaggedTestsProject.xcodeproj/project.pbxproj b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteLocalTaggedTestsProject.xcodeproj/project.pbxproj
index f6eafbb..d06e98c 100644
--- a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteLocalTaggedTestsProject.xcodeproj/project.pbxproj
+++ b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteLocalTaggedTestsProject.xcodeproj/project.pbxproj
@@ -29,15 +29,15 @@
 /* End PBXContainerItemProxy section */
 
 /* Begin PBXFileReference section */
-		43D68C282135950800000000 /* lib_idx_TestSuiteXCTest_TestSuiteNonXCTest_2FAABBB4.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_TestSuiteXCTest_TestSuiteNonXCTest_2FAABBB4.a; path = lib_idx_TestSuiteXCTest_TestSuiteNonXCTest_2FAABBB4.a; sourceTree = BUILT_PRODUCTS_DIR; };
+		43D68C2826E34A2000000000 /* lib_idx_ApplicationLibrary_12894588_ios_min8.0.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_ApplicationLibrary_12894588_ios_min8.0.a; path = lib_idx_ApplicationLibrary_12894588_ios_min8.0.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C2837CE81F900000000 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = main.m; path = "tulsi-workspace/TestSuite/Application/srcs/main.m"; sourceTree = "<group>"; };
 		43D68C28588752AD00000000 /* BUILD */ = {isa = PBXFileReference; lastKnownFileType = text; name = BUILD; path = TestSuite/BUILD; sourceTree = "<group>"; };
 		43D68C285A2F8B6E00000000 /* TestApplication.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; name = TestApplication.app; path = TestApplication.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C285A574A6E00000000 /* TestSuiteNonXCTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = TestSuiteNonXCTest.m; path = "tulsi-workspace/TestSuite/TestSuite/TestSuiteNonXCTest.m"; sourceTree = "<group>"; };
 		43D68C2864939ADF00000000 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; name = Info.plist; path = "tulsi-workspace/TestSuite/Info.plist"; sourceTree = "<group>"; };
 		43D68C289092682100000000 /* TestApplication-MergedInfo.plist */ = {isa = PBXFileReference; explicitFileType = text.plist; name = "TestApplication-MergedInfo.plist"; path = "blaze-bin/TestSuite/TestApplication-MergedInfo.plist"; sourceTree = "<group>"; };
+		43D68C2892723E0A00000000 /* lib_idx_TestSuiteXCTest_TestSuiteNonXCTest_2FAABBB4_ios_min7.0.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_TestSuiteXCTest_TestSuiteNonXCTest_2FAABBB4_ios_min7.0.a; path = lib_idx_TestSuiteXCTest_TestSuiteNonXCTest_2FAABBB4_ios_min7.0.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C28A6179FCA00000000 /* TestSuiteXCTest.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; name = TestSuiteXCTest.xctest; path = TestSuiteXCTest.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
-		43D68C28BEAC790400000000 /* lib_idx_ApplicationLibrary_12894588.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_ApplicationLibrary_12894588.a; path = lib_idx_ApplicationLibrary_12894588.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C28E1F52E9200000000 /* TestSuiteXCTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = TestSuiteXCTest.m; path = "tulsi-workspace/TestSuite/TestSuite/TestSuiteXCTest.m"; sourceTree = "<group>"; };
 		43D68C28E96DF56800000000 /* TestSuiteNonXCTest.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; name = TestSuiteNonXCTest.app; path = TestSuiteNonXCTest.app; sourceTree = BUILT_PRODUCTS_DIR; };
 /* End PBXFileReference section */
@@ -50,8 +50,8 @@
 				43D68C28E96DF56800000000 /* TestSuiteNonXCTest.app */,
 				43D68C28A6179FCA00000000 /* TestSuiteXCTest.xctest */,
 				966FB6DE2CEC8E5C00000000 /* blaze-bin */,
-				43D68C28BEAC790400000000 /* lib_idx_ApplicationLibrary_12894588.a */,
-				43D68C282135950800000000 /* lib_idx_TestSuiteXCTest_TestSuiteNonXCTest_2FAABBB4.a */,
+				43D68C2826E34A2000000000 /* lib_idx_ApplicationLibrary_12894588_ios_min8.0.a */,
+				43D68C2892723E0A00000000 /* lib_idx_TestSuiteXCTest_TestSuiteNonXCTest_2FAABBB4_ios_min7.0.a */,
 			);
 			name = Products;
 			sourceTree = "<group>";
@@ -138,22 +138,6 @@
 /* End PBXLegacyTarget section */
 
 /* Begin PBXNativeTarget section */
-		3D31C5E615F719A200000000 /* _idx_ApplicationLibrary_12894588 */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = DE47558347840A8F00000000 /* Build configuration list for PBXNativeTarget "_idx_ApplicationLibrary_12894588" */;
-			buildPhases = (
-				605793E20000000000000001 /* Sources */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-				4DAD0B426921D83500000000 /* PBXTargetDependency */,
-			);
-			name = _idx_ApplicationLibrary_12894588;
-			productName = _idx_ApplicationLibrary_12894588;
-			productReference = 43D68C28BEAC790400000000 /* lib_idx_ApplicationLibrary_12894588.a */;
-			productType = "com.apple.product-type.library.static";
-		};
 		3D31C5E63648AA0600000000 /* TestSuiteNonXCTest */ = {
 			isa = PBXNativeTarget;
 			buildConfigurationList = DE47558368BD242900000000 /* Build configuration list for PBXNativeTarget "TestSuiteNonXCTest" */;
@@ -188,9 +172,9 @@
 			productReference = 43D68C28A6179FCA00000000 /* TestSuiteXCTest.xctest */;
 			productType = "com.apple.product-type.bundle.unit-test";
 		};
-		3D31C5E6D16E8DF600000000 /* _idx_TestSuiteXCTest_TestSuiteNonXCTest_2FAABBB4 */ = {
+		3D31C5E6942525CC00000000 /* _idx_TestSuiteXCTest_TestSuiteNonXCTest_2FAABBB4_ios_min7.0 */ = {
 			isa = PBXNativeTarget;
-			buildConfigurationList = DE4755834F637F3100000000 /* Build configuration list for PBXNativeTarget "_idx_TestSuiteXCTest_TestSuiteNonXCTest_2FAABBB4" */;
+			buildConfigurationList = DE475583E77050C200000000 /* Build configuration list for PBXNativeTarget "_idx_TestSuiteXCTest_TestSuiteNonXCTest_2FAABBB4_ios_min7.0" */;
 			buildPhases = (
 				605793E20000000000000002 /* Sources */,
 			);
@@ -199,9 +183,25 @@
 			dependencies = (
 				4DAD0B426921D83500000000 /* PBXTargetDependency */,
 			);
-			name = _idx_TestSuiteXCTest_TestSuiteNonXCTest_2FAABBB4;
-			productName = _idx_TestSuiteXCTest_TestSuiteNonXCTest_2FAABBB4;
-			productReference = 43D68C282135950800000000 /* lib_idx_TestSuiteXCTest_TestSuiteNonXCTest_2FAABBB4.a */;
+			name = _idx_TestSuiteXCTest_TestSuiteNonXCTest_2FAABBB4_ios_min7.0;
+			productName = _idx_TestSuiteXCTest_TestSuiteNonXCTest_2FAABBB4_ios_min7.0;
+			productReference = 43D68C2892723E0A00000000 /* lib_idx_TestSuiteXCTest_TestSuiteNonXCTest_2FAABBB4_ios_min7.0.a */;
+			productType = "com.apple.product-type.library.static";
+		};
+		3D31C5E6D741188E00000000 /* _idx_ApplicationLibrary_12894588_ios_min8.0 */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = DE475583E54EB6BD00000000 /* Build configuration list for PBXNativeTarget "_idx_ApplicationLibrary_12894588_ios_min8.0" */;
+			buildPhases = (
+				605793E20000000000000001 /* Sources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				4DAD0B426921D83500000000 /* PBXTargetDependency */,
+			);
+			name = _idx_ApplicationLibrary_12894588_ios_min8.0;
+			productName = _idx_ApplicationLibrary_12894588_ios_min8.0;
+			productReference = 43D68C2826E34A2000000000 /* lib_idx_ApplicationLibrary_12894588_ios_min8.0.a */;
 			productType = "com.apple.product-type.library.static";
 		};
 		3D31C5E6EC64700400000000 /* TestApplication */ = {
@@ -247,8 +247,8 @@
 				3D31C5E63648AA0600000000 /* TestSuiteNonXCTest */,
 				3D31C5E6420BCBAA00000000 /* TestSuiteXCTest */,
 				ECCC95946921D83400000000 /* _bazel_clean_ */,
-				3D31C5E615F719A200000000 /* _idx_ApplicationLibrary_12894588 */,
-				3D31C5E6D16E8DF600000000 /* _idx_TestSuiteXCTest_TestSuiteNonXCTest_2FAABBB4 */,
+				3D31C5E6D741188E00000000 /* _idx_ApplicationLibrary_12894588_ios_min8.0 */,
+				3D31C5E6942525CC00000000 /* _idx_TestSuiteXCTest_TestSuiteNonXCTest_2FAABBB4_ios_min7.0 */,
 			);
 		};
 /* End PBXProject section */
@@ -440,7 +440,7 @@
 				GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1";
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
-				PRODUCT_NAME = _idx_ApplicationLibrary_12894588;
+				PRODUCT_NAME = _idx_ApplicationLibrary_12894588_ios_min8.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -453,7 +453,7 @@
 				GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1";
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 7.0;
-				PRODUCT_NAME = _idx_TestSuiteXCTest_TestSuiteNonXCTest_2FAABBB4;
+				PRODUCT_NAME = _idx_TestSuiteXCTest_TestSuiteNonXCTest_2FAABBB4_ios_min7.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -562,7 +562,7 @@
 				GCC_PREPROCESSOR_DEFINITIONS = "NDEBUG=1";
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
-				PRODUCT_NAME = _idx_ApplicationLibrary_12894588;
+				PRODUCT_NAME = _idx_ApplicationLibrary_12894588_ios_min8.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -575,7 +575,7 @@
 				GCC_PREPROCESSOR_DEFINITIONS = "NDEBUG=1";
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 7.0;
-				PRODUCT_NAME = _idx_TestSuiteXCTest_TestSuiteNonXCTest_2FAABBB4;
+				PRODUCT_NAME = _idx_TestSuiteXCTest_TestSuiteNonXCTest_2FAABBB4_ios_min7.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -841,22 +841,6 @@
 			);
 			defaultConfigurationIsVisible = 0;
 		};
-		DE47558347840A8F00000000 /* Build configuration list for PBXNativeTarget "_idx_ApplicationLibrary_12894588" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				44936BD67EED3C4D00000004 /* Debug */,
-				44936BD6A3D45CE900000004 /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-		};
-		DE4755834F637F3100000000 /* Build configuration list for PBXNativeTarget "_idx_TestSuiteXCTest_TestSuiteNonXCTest_2FAABBB4" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				44936BD67EED3C4D00000005 /* Debug */,
-				44936BD6A3D45CE900000005 /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-		};
 		DE47558368BD242900000000 /* Build configuration list for PBXNativeTarget "TestSuiteNonXCTest" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
@@ -893,6 +877,22 @@
 			);
 			defaultConfigurationIsVisible = 0;
 		};
+		DE475583E54EB6BD00000000 /* Build configuration list for PBXNativeTarget "_idx_ApplicationLibrary_12894588_ios_min8.0" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				44936BD67EED3C4D00000004 /* Debug */,
+				44936BD6A3D45CE900000004 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+		};
+		DE475583E77050C200000000 /* Build configuration list for PBXNativeTarget "_idx_TestSuiteXCTest_TestSuiteNonXCTest_2FAABBB4_ios_min7.0" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				44936BD67EED3C4D00000005 /* Debug */,
+				44936BD6A3D45CE900000005 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+		};
 /* End XCConfigurationList section */
 	};
 	rootObject = 7E7BD0EAF670C7F700000000 /* Project object */;
diff --git a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteRecursiveTestSuiteProject.xcodeproj/project.pbxproj b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteRecursiveTestSuiteProject.xcodeproj/project.pbxproj
index bd877e4..b66b9da 100644
--- a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteRecursiveTestSuiteProject.xcodeproj/project.pbxproj
+++ b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/TestSuiteRecursiveTestSuiteProject.xcodeproj/project.pbxproj
@@ -33,9 +33,10 @@
 
 /* Begin PBXFileReference section */
 		43D68C280514D6D800000000 /* BUILD */ = {isa = PBXFileReference; lastKnownFileType = text; name = BUILD; path = TestSuite/Three/BUILD; sourceTree = "<group>"; };
+		43D68C280B64A50400000000 /* lib_idx_tagged_xctest_2_TestSuiteXCTest_tagged_xctest_1_8124D2A6_ios_min7.0.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_tagged_xctest_2_TestSuiteXCTest_tagged_xctest_1_8124D2A6_ios_min7.0.a; path = lib_idx_tagged_xctest_2_TestSuiteXCTest_tagged_xctest_1_8124D2A6_ios_min7.0.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C28203681C000000000 /* tagged_xctest_2.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = tagged_xctest_2.m; path = "tulsi-workspace/TestSuite/Three/tagged_xctest_2.m"; sourceTree = "<group>"; };
+		43D68C2826E34A2000000000 /* lib_idx_ApplicationLibrary_12894588_ios_min8.0.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_ApplicationLibrary_12894588_ios_min8.0.a; path = lib_idx_ApplicationLibrary_12894588_ios_min8.0.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C2828386DC200000000 /* tagged_xctest_1.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = tagged_xctest_1.m; path = "tulsi-workspace/TestSuite/Three/tagged_xctest_1.m"; sourceTree = "<group>"; };
-		43D68C282C76295E00000000 /* lib_idx_tagged_xctest_2_TestSuiteXCTest_tagged_xctest_1_8124D2A6.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_tagged_xctest_2_TestSuiteXCTest_tagged_xctest_1_8124D2A6.a; path = lib_idx_tagged_xctest_2_TestSuiteXCTest_tagged_xctest_1_8124D2A6.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C282CFB11EE00000000 /* tagged_xctest_2.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; name = tagged_xctest_2.xctest; path = tagged_xctest_2.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C2837CE81F900000000 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = main.m; path = "tulsi-workspace/TestSuite/Application/srcs/main.m"; sourceTree = "<group>"; };
 		43D68C28588752AD00000000 /* BUILD */ = {isa = PBXFileReference; lastKnownFileType = text; name = BUILD; path = TestSuite/BUILD; sourceTree = "<group>"; };
@@ -44,7 +45,6 @@
 		43D68C28672DE3E800000000 /* tagged_xctest_1.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; name = tagged_xctest_1.xctest; path = tagged_xctest_1.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C289092682100000000 /* TestApplication-MergedInfo.plist */ = {isa = PBXFileReference; explicitFileType = text.plist; name = "TestApplication-MergedInfo.plist"; path = "blaze-bin/TestSuite/TestApplication-MergedInfo.plist"; sourceTree = "<group>"; };
 		43D68C28A6179FCA00000000 /* TestSuiteXCTest.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; name = TestSuiteXCTest.xctest; path = TestSuiteXCTest.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
-		43D68C28BEAC790400000000 /* lib_idx_ApplicationLibrary_12894588.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_ApplicationLibrary_12894588.a; path = lib_idx_ApplicationLibrary_12894588.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C28E1F52E9200000000 /* TestSuiteXCTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = TestSuiteXCTest.m; path = "tulsi-workspace/TestSuite/TestSuite/TestSuiteXCTest.m"; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
@@ -65,8 +65,8 @@
 				43D68C285A2F8B6E00000000 /* TestApplication.app */,
 				43D68C28A6179FCA00000000 /* TestSuiteXCTest.xctest */,
 				966FB6DE2CEC8E5C00000000 /* blaze-bin */,
-				43D68C28BEAC790400000000 /* lib_idx_ApplicationLibrary_12894588.a */,
-				43D68C282C76295E00000000 /* lib_idx_tagged_xctest_2_TestSuiteXCTest_tagged_xctest_1_8124D2A6.a */,
+				43D68C2826E34A2000000000 /* lib_idx_ApplicationLibrary_12894588_ios_min8.0.a */,
+				43D68C280B64A50400000000 /* lib_idx_tagged_xctest_2_TestSuiteXCTest_tagged_xctest_1_8124D2A6_ios_min7.0.a */,
 				43D68C28672DE3E800000000 /* tagged_xctest_1.xctest */,
 				43D68C282CFB11EE00000000 /* tagged_xctest_2.xctest */,
 			);
@@ -155,38 +155,6 @@
 /* End PBXLegacyTarget section */
 
 /* Begin PBXNativeTarget section */
-		3D31C5E615F719A200000000 /* _idx_ApplicationLibrary_12894588 */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = DE47558347840A8F00000000 /* Build configuration list for PBXNativeTarget "_idx_ApplicationLibrary_12894588" */;
-			buildPhases = (
-				605793E20000000000000003 /* Sources */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-				4DAD0B426921D83500000000 /* PBXTargetDependency */,
-			);
-			name = _idx_ApplicationLibrary_12894588;
-			productName = _idx_ApplicationLibrary_12894588;
-			productReference = 43D68C28BEAC790400000000 /* lib_idx_ApplicationLibrary_12894588.a */;
-			productType = "com.apple.product-type.library.static";
-		};
-		3D31C5E617DA199400000000 /* _idx_tagged_xctest_2_TestSuiteXCTest_tagged_xctest_1_8124D2A6 */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = DE475583511CEE1D00000000 /* Build configuration list for PBXNativeTarget "_idx_tagged_xctest_2_TestSuiteXCTest_tagged_xctest_1_8124D2A6" */;
-			buildPhases = (
-				605793E20000000000000004 /* Sources */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-				4DAD0B426921D83500000000 /* PBXTargetDependency */,
-			);
-			name = _idx_tagged_xctest_2_TestSuiteXCTest_tagged_xctest_1_8124D2A6;
-			productName = _idx_tagged_xctest_2_TestSuiteXCTest_tagged_xctest_1_8124D2A6;
-			productReference = 43D68C282C76295E00000000 /* lib_idx_tagged_xctest_2_TestSuiteXCTest_tagged_xctest_1_8124D2A6.a */;
-			productType = "com.apple.product-type.library.static";
-		};
 		3D31C5E6420BCBAA00000000 /* TestSuiteXCTest */ = {
 			isa = PBXNativeTarget;
 			buildConfigurationList = DE47558395C0260B00000000 /* Build configuration list for PBXNativeTarget "TestSuiteXCTest" */;
@@ -241,6 +209,22 @@
 			productReference = 43D68C28672DE3E800000000 /* tagged_xctest_1.xctest */;
 			productType = "com.apple.product-type.bundle.unit-test";
 		};
+		3D31C5E6D741188E00000000 /* _idx_ApplicationLibrary_12894588_ios_min8.0 */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = DE475583E54EB6BD00000000 /* Build configuration list for PBXNativeTarget "_idx_ApplicationLibrary_12894588_ios_min8.0" */;
+			buildPhases = (
+				605793E20000000000000003 /* Sources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				4DAD0B426921D83500000000 /* PBXTargetDependency */,
+			);
+			name = _idx_ApplicationLibrary_12894588_ios_min8.0;
+			productName = _idx_ApplicationLibrary_12894588_ios_min8.0;
+			productReference = 43D68C2826E34A2000000000 /* lib_idx_ApplicationLibrary_12894588_ios_min8.0.a */;
+			productType = "com.apple.product-type.library.static";
+		};
 		3D31C5E6EC64700400000000 /* TestApplication */ = {
 			isa = PBXNativeTarget;
 			buildConfigurationList = DE47558305B5AF7800000000 /* Build configuration list for PBXNativeTarget "TestApplication" */;
@@ -257,6 +241,22 @@
 			productReference = 43D68C285A2F8B6E00000000 /* TestApplication.app */;
 			productType = "com.apple.product-type.application";
 		};
+		3D31C5E6F694F5F200000000 /* _idx_tagged_xctest_2_TestSuiteXCTest_tagged_xctest_1_8124D2A6_ios_min7.0 */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = DE4755837570493300000000 /* Build configuration list for PBXNativeTarget "_idx_tagged_xctest_2_TestSuiteXCTest_tagged_xctest_1_8124D2A6_ios_min7.0" */;
+			buildPhases = (
+				605793E20000000000000004 /* Sources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				4DAD0B426921D83500000000 /* PBXTargetDependency */,
+			);
+			name = _idx_tagged_xctest_2_TestSuiteXCTest_tagged_xctest_1_8124D2A6_ios_min7.0;
+			productName = _idx_tagged_xctest_2_TestSuiteXCTest_tagged_xctest_1_8124D2A6_ios_min7.0;
+			productReference = 43D68C280B64A50400000000 /* lib_idx_tagged_xctest_2_TestSuiteXCTest_tagged_xctest_1_8124D2A6_ios_min7.0.a */;
+			productType = "com.apple.product-type.library.static";
+		};
 /* End PBXNativeTarget section */
 
 /* Begin PBXProject section */
@@ -289,8 +289,8 @@
 				3D31C5E6EC64700400000000 /* TestApplication */,
 				3D31C5E6420BCBAA00000000 /* TestSuiteXCTest */,
 				ECCC95946921D83400000000 /* _bazel_clean_ */,
-				3D31C5E615F719A200000000 /* _idx_ApplicationLibrary_12894588 */,
-				3D31C5E617DA199400000000 /* _idx_tagged_xctest_2_TestSuiteXCTest_tagged_xctest_1_8124D2A6 */,
+				3D31C5E6D741188E00000000 /* _idx_ApplicationLibrary_12894588_ios_min8.0 */,
+				3D31C5E6F694F5F200000000 /* _idx_tagged_xctest_2_TestSuiteXCTest_tagged_xctest_1_8124D2A6_ios_min7.0 */,
 				3D31C5E67E0D424800000000 /* tagged_xctest_1 */,
 				3D31C5E67E0C424E00000000 /* tagged_xctest_2 */,
 			);
@@ -541,7 +541,7 @@
 				GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1";
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
-				PRODUCT_NAME = _idx_ApplicationLibrary_12894588;
+				PRODUCT_NAME = _idx_ApplicationLibrary_12894588_ios_min8.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -554,7 +554,7 @@
 				GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1";
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 7.0;
-				PRODUCT_NAME = _idx_tagged_xctest_2_TestSuiteXCTest_tagged_xctest_1_8124D2A6;
+				PRODUCT_NAME = _idx_tagged_xctest_2_TestSuiteXCTest_tagged_xctest_1_8124D2A6_ios_min7.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -689,7 +689,7 @@
 				GCC_PREPROCESSOR_DEFINITIONS = "NDEBUG=1";
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
-				PRODUCT_NAME = _idx_ApplicationLibrary_12894588;
+				PRODUCT_NAME = _idx_ApplicationLibrary_12894588_ios_min8.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -702,7 +702,7 @@
 				GCC_PREPROCESSOR_DEFINITIONS = "NDEBUG=1";
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 7.0;
-				PRODUCT_NAME = _idx_tagged_xctest_2_TestSuiteXCTest_tagged_xctest_1_8124D2A6;
+				PRODUCT_NAME = _idx_tagged_xctest_2_TestSuiteXCTest_tagged_xctest_1_8124D2A6_ios_min7.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -1042,15 +1042,7 @@
 			);
 			defaultConfigurationIsVisible = 0;
 		};
-		DE47558347840A8F00000000 /* Build configuration list for PBXNativeTarget "_idx_ApplicationLibrary_12894588" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				44936BD67EED3C4D00000005 /* Debug */,
-				44936BD6A3D45CE900000005 /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-		};
-		DE475583511CEE1D00000000 /* Build configuration list for PBXNativeTarget "_idx_tagged_xctest_2_TestSuiteXCTest_tagged_xctest_1_8124D2A6" */ = {
+		DE4755837570493300000000 /* Build configuration list for PBXNativeTarget "_idx_tagged_xctest_2_TestSuiteXCTest_tagged_xctest_1_8124D2A6_ios_min7.0" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
 				44936BD67EED3C4D00000006 /* Debug */,
@@ -1094,6 +1086,14 @@
 			);
 			defaultConfigurationIsVisible = 0;
 		};
+		DE475583E54EB6BD00000000 /* Build configuration list for PBXNativeTarget "_idx_ApplicationLibrary_12894588_ios_min8.0" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				44936BD67EED3C4D00000005 /* Debug */,
+				44936BD6A3D45CE900000005 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+		};
 /* End XCConfigurationList section */
 	};
 	rootObject = 7E7BD0EADCACBA3800000000 /* Project object */;
diff --git a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/WatchProject.xcodeproj/project.pbxproj b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/WatchProject.xcodeproj/project.pbxproj
index 3d574da..cf1049a 100644
--- a/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/WatchProject.xcodeproj/project.pbxproj
+++ b/src/TulsiGeneratorIntegrationTests/Resources/GoldenProjects/WatchProject.xcodeproj/project.pbxproj
@@ -28,20 +28,20 @@
 
 /* Begin PBXFileReference section */
 		43D68C2806CBDC2C00000000 /* Interface.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Interface.storyboard; path = "tulsi-workspace/tulsi_e2e_watch/Watch2Extension/Interface.storyboard"; sourceTree = "<group>"; };
-		43D68C2810C6D30200000000 /* lib_idx_WatchExtensionLibrary_6997976B.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_WatchExtensionLibrary_6997976B.a; path = lib_idx_WatchExtensionLibrary_6997976B.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C283686445A00000000 /* ext_resources.file */ = {isa = PBXFileReference; lastKnownFileType = dyn.age80q4pqqy; name = ext_resources.file; path = "tulsi-workspace/tulsi_e2e_watch/Watch2Extension/ext_resources.file"; sourceTree = "<group>"; };
 		43D68C283FF4EFB600000000 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = main.m; path = "tulsi-workspace/tulsi_e2e_watch/Library/srcs/main.m"; sourceTree = "<group>"; };
 		43D68C2849C0CECB00000000 /* BUILD */ = {isa = PBXFileReference; lastKnownFileType = text; name = BUILD; path = tulsi_e2e_watch/BUILD; sourceTree = "<group>"; };
 		43D68C284AC8D59B00000000 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; name = Info.plist; path = "tulsi-workspace/tulsi_e2e_watch/Watch2Extension/app_infoplists/Info.plist"; sourceTree = "<group>"; };
 		43D68C284E902D9E00000000 /* WatchApplication.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; name = WatchApplication.app; path = WatchApplication.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		43D68C2858A082E200000000 /* lib_idx_ApplicationLibrary_06BBE256_ios_min8.0.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_ApplicationLibrary_06BBE256_ios_min8.0.a; path = lib_idx_ApplicationLibrary_06BBE256_ios_min8.0.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C285B0DEC7800000000 /* entitlements.entitlements */ = {isa = PBXFileReference; lastKnownFileType = "com.apple.xcode.entitlements-property-list"; name = entitlements.entitlements; path = "tulsi-workspace/tulsi_e2e_watch/Application/entitlements.entitlements"; sourceTree = "<group>"; };
+		43D68C285F5DD83400000000 /* lib_idx_WatchExtensionLibrary_6997976B_watchos_min3.0.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_WatchExtensionLibrary_6997976B_watchos_min3.0.a; path = lib_idx_WatchExtensionLibrary_6997976B_watchos_min3.0.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C289E265EE800000000 /* ext_structured_resources.file */ = {isa = PBXFileReference; lastKnownFileType = dyn.age80q4pqqy; name = ext_structured_resources.file; path = "tulsi-workspace/tulsi_e2e_watch/Watch2Extension/ext_structured_resources.file"; sourceTree = "<group>"; };
 		43D68C289ECDDEA400000000 /* watch2_extension_binary.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = watch2_extension_binary.m; path = "tulsi-workspace/tulsi_e2e_watch/Watch2ExtensionBinary/srcs/watch2_extension_binary.m"; sourceTree = "<group>"; };
 		43D68C28AFD9A63E00000000 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; name = Info.plist; path = "tulsi-workspace/tulsi_e2e_watch/Application/Info.plist"; sourceTree = "<group>"; };
 		43D68C28B713E4AE00000000 /* structured_resources.file1 */ = {isa = PBXFileReference; lastKnownFileType = dyn.age80q4pqqy2u; name = structured_resources.file1; path = "tulsi-workspace/tulsi_e2e_watch/Application/structured_resources.file1"; sourceTree = "<group>"; };
 		43D68C28BBC8EE6A00000000 /* WatchExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; name = WatchExtension.appex; path = WatchExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C28C6BEF59A00000000 /* Application-MergedInfo.plist */ = {isa = PBXFileReference; explicitFileType = text.plist; name = "Application-MergedInfo.plist"; path = "blaze-bin/tulsi_e2e_watch/Application-MergedInfo.plist"; sourceTree = "<group>"; };
-		43D68C28E38ADF0600000000 /* lib_idx_ApplicationLibrary_06BBE256.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; name = lib_idx_ApplicationLibrary_06BBE256.a; path = lib_idx_ApplicationLibrary_06BBE256.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C28EFD4953600000000 /* ext_entitlements.entitlements */ = {isa = PBXFileReference; lastKnownFileType = "com.apple.xcode.entitlements-property-list"; name = ext_entitlements.entitlements; path = "tulsi-workspace/tulsi_e2e_watch/Watch2Extension/ext_entitlements.entitlements"; sourceTree = "<group>"; };
 		43D68C28F49055A600000000 /* Application.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; name = Application.app; path = Application.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		43D68C28FC1765AB00000000 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; name = Info.plist; path = "tulsi-workspace/tulsi_e2e_watch/Watch2Extension/ext_infoplists/Info.plist"; sourceTree = "<group>"; };
@@ -88,8 +88,8 @@
 				43D68C284E902D9E00000000 /* WatchApplication.app */,
 				43D68C28BBC8EE6A00000000 /* WatchExtension.appex */,
 				966FB6DE2CEC8E5C00000000 /* blaze-bin */,
-				43D68C28E38ADF0600000000 /* lib_idx_ApplicationLibrary_06BBE256.a */,
-				43D68C2810C6D30200000000 /* lib_idx_WatchExtensionLibrary_6997976B.a */,
+				43D68C2858A082E200000000 /* lib_idx_ApplicationLibrary_06BBE256_ios_min8.0.a */,
+				43D68C285F5DD83400000000 /* lib_idx_WatchExtensionLibrary_6997976B_watchos_min3.0.a */,
 			);
 			name = Products;
 			sourceTree = "<group>";
@@ -190,6 +190,22 @@
 /* End PBXLegacyTarget section */
 
 /* Begin PBXNativeTarget section */
+		3D31C5E6074E6CA200000000 /* _idx_WatchExtensionLibrary_6997976B_watchos_min3.0 */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = DE475583A15A0B8900000000 /* Build configuration list for PBXNativeTarget "_idx_WatchExtensionLibrary_6997976B_watchos_min3.0" */;
+			buildPhases = (
+				605793E20000000000000001 /* Sources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				4DAD0B426921D83500000000 /* PBXTargetDependency */,
+			);
+			name = _idx_WatchExtensionLibrary_6997976B_watchos_min3.0;
+			productName = _idx_WatchExtensionLibrary_6997976B_watchos_min3.0;
+			productReference = 43D68C285F5DD83400000000 /* lib_idx_WatchExtensionLibrary_6997976B_watchos_min3.0.a */;
+			productType = "com.apple.product-type.library.static";
+		};
 		3D31C5E61E7C5AB400000000 /* WatchApplication */ = {
 			isa = PBXNativeTarget;
 			buildConfigurationList = DE4755834598A69000000000 /* Build configuration list for PBXNativeTarget "WatchApplication" */;
@@ -207,22 +223,6 @@
 			productReference = 43D68C284E902D9E00000000 /* WatchApplication.app */;
 			productType = "com.apple.product-type.application.watchapp2";
 		};
-		3D31C5E631A95E1E00000000 /* _idx_ApplicationLibrary_06BBE256 */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = DE47558357363AEC00000000 /* Build configuration list for PBXNativeTarget "_idx_ApplicationLibrary_06BBE256" */;
-			buildPhases = (
-				605793E20000000000000000 /* Sources */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-				4DAD0B426921D83500000000 /* PBXTargetDependency */,
-			);
-			name = _idx_ApplicationLibrary_06BBE256;
-			productName = _idx_ApplicationLibrary_06BBE256;
-			productReference = 43D68C28E38ADF0600000000 /* lib_idx_ApplicationLibrary_06BBE256.a */;
-			productType = "com.apple.product-type.library.static";
-		};
 		3D31C5E66B144ABC00000000 /* Application */ = {
 			isa = PBXNativeTarget;
 			buildConfigurationList = DE475583F843F89400000000 /* Build configuration list for PBXNativeTarget "Application" */;
@@ -239,20 +239,20 @@
 			productReference = 43D68C28F49055A600000000 /* Application.app */;
 			productType = "com.apple.product-type.application";
 		};
-		3D31C5E6760C62B800000000 /* _idx_WatchExtensionLibrary_6997976B */ = {
+		3D31C5E6C6B1A54800000000 /* _idx_ApplicationLibrary_06BBE256_ios_min8.0 */ = {
 			isa = PBXNativeTarget;
-			buildConfigurationList = DE4755830DA25C2A00000000 /* Build configuration list for PBXNativeTarget "_idx_WatchExtensionLibrary_6997976B" */;
+			buildConfigurationList = DE475583998DB39A00000000 /* Build configuration list for PBXNativeTarget "_idx_ApplicationLibrary_06BBE256_ios_min8.0" */;
 			buildPhases = (
-				605793E20000000000000001 /* Sources */,
+				605793E20000000000000000 /* Sources */,
 			);
 			buildRules = (
 			);
 			dependencies = (
 				4DAD0B426921D83500000000 /* PBXTargetDependency */,
 			);
-			name = _idx_WatchExtensionLibrary_6997976B;
-			productName = _idx_WatchExtensionLibrary_6997976B;
-			productReference = 43D68C2810C6D30200000000 /* lib_idx_WatchExtensionLibrary_6997976B.a */;
+			name = _idx_ApplicationLibrary_06BBE256_ios_min8.0;
+			productName = _idx_ApplicationLibrary_06BBE256_ios_min8.0;
+			productReference = 43D68C2858A082E200000000 /* lib_idx_ApplicationLibrary_06BBE256_ios_min8.0.a */;
 			productType = "com.apple.product-type.library.static";
 		};
 		3D31C5E6CD47F3C600000000 /* WatchExtension */ = {
@@ -293,8 +293,8 @@
 				3D31C5E61E7C5AB400000000 /* WatchApplication */,
 				3D31C5E6CD47F3C600000000 /* WatchExtension */,
 				ECCC95946921D83400000000 /* _bazel_clean_ */,
-				3D31C5E631A95E1E00000000 /* _idx_ApplicationLibrary_06BBE256 */,
-				3D31C5E6760C62B800000000 /* _idx_WatchExtensionLibrary_6997976B */,
+				3D31C5E6C6B1A54800000000 /* _idx_ApplicationLibrary_06BBE256_ios_min8.0 */,
+				3D31C5E6074E6CA200000000 /* _idx_WatchExtensionLibrary_6997976B_watchos_min3.0 */,
 			);
 		};
 /* End PBXProject section */
@@ -477,7 +477,7 @@
 				GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1";
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_WR)/tulsi_e2e_watch/Library/includes/one/include $(TULSI_WR)/tulsi-includes/x/x/tulsi_e2e_watch/Library/includes/one/include $(TULSI_BWRS)/tulsi_e2e_watch/Library/includes/one/include $(TULSI_BWRS)/tulsi-includes/x/x/tulsi_e2e_watch/Library/includes/one/include $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
-				PRODUCT_NAME = _idx_ApplicationLibrary_06BBE256;
+				PRODUCT_NAME = _idx_ApplicationLibrary_06BBE256_ios_min8.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -489,7 +489,7 @@
 				ARCHS = x86_64;
 				GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1";
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_BWRS)/tools/cpp/gcc3 ";
-				PRODUCT_NAME = _idx_WatchExtensionLibrary_6997976B;
+				PRODUCT_NAME = _idx_WatchExtensionLibrary_6997976B_watchos_min3.0;
 				SDKROOT = watchsimulator;
 				VALID_ARCHS = x86_64;
 				WATCHOS_DEPLOYMENT_TARGET = 3.0;
@@ -599,7 +599,7 @@
 				GCC_PREPROCESSOR_DEFINITIONS = "NDEBUG=1";
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_WR)/tulsi_e2e_watch/Library/includes/one/include $(TULSI_WR)/tulsi-includes/x/x/tulsi_e2e_watch/Library/includes/one/include $(TULSI_BWRS)/tulsi_e2e_watch/Library/includes/one/include $(TULSI_BWRS)/tulsi-includes/x/x/tulsi_e2e_watch/Library/includes/one/include $(TULSI_BWRS)/tools/cpp/gcc3 ";
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
-				PRODUCT_NAME = _idx_ApplicationLibrary_06BBE256;
+				PRODUCT_NAME = _idx_ApplicationLibrary_06BBE256_ios_min8.0;
 				SDKROOT = iphonesimulator;
 				VALID_ARCHS = x86_64;
 			};
@@ -611,7 +611,7 @@
 				ARCHS = x86_64;
 				GCC_PREPROCESSOR_DEFINITIONS = "NDEBUG=1";
 				HEADER_SEARCH_PATHS = "$(inherited) $(TULSI_BWRS)/tools/cpp/gcc3 ";
-				PRODUCT_NAME = _idx_WatchExtensionLibrary_6997976B;
+				PRODUCT_NAME = _idx_WatchExtensionLibrary_6997976B_watchos_min3.0;
 				SDKROOT = watchsimulator;
 				VALID_ARCHS = x86_64;
 				WATCHOS_DEPLOYMENT_TARGET = 3.0;
@@ -870,14 +870,6 @@
 /* End XCBuildConfiguration section */
 
 /* Begin XCConfigurationList section */
-		DE4755830DA25C2A00000000 /* Build configuration list for PBXNativeTarget "_idx_WatchExtensionLibrary_6997976B" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				44936BD67EED3C4D00000005 /* Debug */,
-				44936BD6A3D45CE900000005 /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-		};
 		DE4755830DB9CDD900000000 /* Build configuration list for PBXNativeTarget "WatchExtension" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
@@ -898,7 +890,7 @@
 			);
 			defaultConfigurationIsVisible = 0;
 		};
-		DE47558357363AEC00000000 /* Build configuration list for PBXNativeTarget "_idx_ApplicationLibrary_06BBE256" */ = {
+		DE475583998DB39A00000000 /* Build configuration list for PBXNativeTarget "_idx_ApplicationLibrary_06BBE256_ios_min8.0" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
 				44936BD67EED3C4D00000004 /* Debug */,
@@ -906,6 +898,14 @@
 			);
 			defaultConfigurationIsVisible = 0;
 		};
+		DE475583A15A0B8900000000 /* Build configuration list for PBXNativeTarget "_idx_WatchExtensionLibrary_6997976B_watchos_min3.0" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				44936BD67EED3C4D00000005 /* Debug */,
+				44936BD6A3D45CE900000005 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+		};
 		DE475583CA83BF7E00000000 /* Build configuration list for PBXLegacyTarget "_bazel_clean_" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
diff --git a/src/TulsiGeneratorTests/MockWorkspaceInfoExtractor.swift b/src/TulsiGeneratorTests/MockWorkspaceInfoExtractor.swift
index 8f7edf1..1362797 100644
--- a/src/TulsiGeneratorTests/MockWorkspaceInfoExtractor.swift
+++ b/src/TulsiGeneratorTests/MockWorkspaceInfoExtractor.swift
@@ -33,15 +33,15 @@
   func ruleEntriesForLabels(_ labels: [BuildLabel],
                             startupOptions: TulsiOption,
                             buildOptions: TulsiOption,
-                            bepOption: TulsiOption) throws -> [BuildLabel: RuleEntry] {
+                            bepOption: TulsiOption) throws -> RuleEntryMap {
     invalidLabels.removeAll(keepingCapacity: true)
-    var ret = [BuildLabel: RuleEntry]()
+    let ret = RuleEntryMap()
     for label in labels {
       guard let entry = labelToRuleEntry[label] else {
         invalidLabels.insert(label)
         continue
       }
-      ret[label] = entry
+      ret.insert(ruleEntry: entry)
     }
     return ret
   }
diff --git a/src/TulsiGeneratorTests/PBXTargetGeneratorTests.swift b/src/TulsiGeneratorTests/PBXTargetGeneratorTests.swift
index e35f643..9b06246 100644
--- a/src/TulsiGeneratorTests/PBXTargetGeneratorTests.swift
+++ b/src/TulsiGeneratorTests/PBXTargetGeneratorTests.swift
@@ -160,7 +160,7 @@
 
   func testGenerateBazelCleanTargetAppliesToRulesAddedBeforeAndAfter() {
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries([makeTestRuleEntry("before", type: "ios_application")], ruleEntryMap: [:])
+      try targetGenerator.generateBuildTargetsForRuleEntries([makeTestRuleEntry("before", type: "ios_application")], ruleEntryMap: RuleEntryMap())
     } catch let e as NSError {
       XCTFail("Failed to generate build targets with error \(e.localizedDescription)")
     }
@@ -168,7 +168,7 @@
     targetGenerator.generateBazelCleanTarget("scriptPath")
 
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries([makeTestRuleEntry("after", type: "ios_application")], ruleEntryMap: [:])
+      try targetGenerator.generateBuildTargetsForRuleEntries([makeTestRuleEntry("after", type: "ios_application")], ruleEntryMap: RuleEntryMap())
     } catch let e as NSError {
       XCTFail("Failed to generate build targets with error \(e.localizedDescription)")
     }
@@ -293,7 +293,7 @@
 
   func testGenerateTargetsForRuleEntriesWithNoEntries() {
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries([], ruleEntryMap: [:])
+      try targetGenerator.generateBuildTargetsForRuleEntries([], ruleEntryMap: RuleEntryMap())
     } catch let e as NSError {
       XCTFail("Failed to generate build targets with error \(e.localizedDescription)")
     }
@@ -315,7 +315,7 @@
     ])
 
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: [:])
+      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
     } catch let e as NSError {
       XCTFail("Failed to generate build targets with error \(e.localizedDescription)")
     }
@@ -433,7 +433,7 @@
     ])
 
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: [:])
+      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
     } catch let e as NSError {
       XCTFail("Failed to generate build targets with error \(e.localizedDescription)")
     }
@@ -547,7 +547,7 @@
       ])
 
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: [:])
+      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
     } catch let e as NSError {
       XCTFail("Failed to generate build targets with error \(e.localizedDescription)")
     }
@@ -663,7 +663,7 @@
       ])
 
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: [:])
+      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
     } catch let e as NSError {
       XCTFail("Failed to generate build targets with error \(e.localizedDescription)")
     }
@@ -781,7 +781,7 @@
       ])
 
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: [:])
+      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
     } catch let e as NSError {
       XCTFail("Failed to generate build targets with error \(e.localizedDescription)")
     }
@@ -888,7 +888,7 @@
       ])
 
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: [:])
+      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
     } catch let e as NSError {
       XCTFail("Failed to generate build targets with error \(e.localizedDescription)")
     }
@@ -957,7 +957,7 @@
       ])
 
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: [:])
+      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
     } catch let e as NSError {
       XCTFail("Failed to generate build targets with error \(e.localizedDescription)")
     }
@@ -1043,7 +1043,7 @@
       testRule,
     ])
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: [:])
+      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
     } catch let e as NSError {
       XCTFail("Failed to generate build targets with error \(e.localizedDescription)")
     }
@@ -1307,10 +1307,10 @@
     assertTarget(expectedTarget, inTargets: targets)
   }
 
-  private func makeRuleEntryMap(withRuleEntries ruleEntries: [RuleEntry]) -> [BuildLabel: RuleEntry] {
-    var ruleEntryMap = [BuildLabel: RuleEntry]()
+  private func makeRuleEntryMap(withRuleEntries ruleEntries: [RuleEntry]) -> RuleEntryMap {
+    let ruleEntryMap = RuleEntryMap()
     for ruleEntry in ruleEntries {
-      ruleEntryMap[BuildLabel(ruleEntry.label.value)] = ruleEntry
+      ruleEntryMap.insert(ruleEntry: ruleEntry)
     }
     return ruleEntryMap
   }
@@ -1337,7 +1337,7 @@
       testRule,
       ])
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: [:])
+      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
     } catch let e as NSError {
       XCTFail("Failed to generate build targets with error \(e.localizedDescription)")
     }
@@ -1473,7 +1473,7 @@
       test2Rule,
     ])
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: [:])
+      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
     } catch let e as NSError {
       XCTFail("Failed to generate build targets with error \(e.localizedDescription)")
     }
@@ -1510,7 +1510,7 @@
                                      attributes: testRuleAttributes as [String: AnyObject],
                                      sourceFiles: testSources)
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries([testRule], ruleEntryMap: [:])
+      try targetGenerator.generateBuildTargetsForRuleEntries([testRule], ruleEntryMap: RuleEntryMap())
     } catch let e as NSError {
       XCTFail("Failed to generate build targets with error \(e.localizedDescription)")
       return
@@ -1577,7 +1577,7 @@
     ])
 
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: [:])
+      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
     } catch let e as NSError {
       XCTFail("Failed to generate build targets with error \(e.localizedDescription)")
     }
@@ -1678,7 +1678,7 @@
     ])
 
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: [:])
+      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
     } catch let e as NSError {
       XCTFail("Failed to generate build targets with error \(e.localizedDescription)")
     }
@@ -1742,7 +1742,7 @@
       ])
 
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: [:])
+      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
     } catch let e as NSError {
       XCTFail("Failed to generate build targets with error \(e.localizedDescription)")
     }
@@ -1830,7 +1830,7 @@
     ])
 
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: [:])
+      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
     } catch let e as NSError {
       XCTFail("Failed to generate build targets with error \(e.localizedDescription)")
     }
@@ -1997,7 +1997,7 @@
       ])
 
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: [:])
+      try targetGenerator.generateBuildTargetsForRuleEntries(rules, ruleEntryMap: RuleEntryMap())
     } catch let e as NSError {
       XCTFail("Failed to generate build targets with error \(e.localizedDescription)")
     }
@@ -2133,7 +2133,7 @@
   func testGenerateIndexerWithNoSources() {
     let ruleEntry = makeTestRuleEntry("test/app:TestApp", type: "ios_application")
     targetGenerator.registerRuleEntryForIndexer(ruleEntry,
-                                                ruleEntryMap: [:],
+                                                ruleEntryMap: RuleEntryMap(),
                                                 pathFilters: pathFilters)
     targetGenerator.generateIndexerTargets()
     let targets = project.targetByName
@@ -2145,10 +2145,10 @@
     let ruleEntry = makeTestRuleEntry(buildLabel,
                                       type: "ios_application",
                                       sourceFiles: sourceFileNames)
-    let indexerTargetName = String(format: "_idx_TestApp_%08X", buildLabel.hashValue)
+    let indexerTargetName = String(format: "_idx_TestApp_%08X_ios_min9.0", buildLabel.hashValue)
 
     targetGenerator.registerRuleEntryForIndexer(ruleEntry,
-                                                ruleEntryMap: [:],
+                                                ruleEntryMap: RuleEntryMap(),
                                                 pathFilters: pathFilters)
     targetGenerator.generateIndexerTargets()
 
@@ -2163,10 +2163,10 @@
                                       type: "ios_application",
                                       attributes: ["pch": ["path": pchFile.path!, "src": true] as AnyObject],
                                       sourceFiles: sourceFileNames)
-    let indexerTargetName = String(format: "_idx_TestApp_%08X", buildLabel.hashValue)
+    let indexerTargetName = String(format: "_idx_TestApp_%08X_ios_min9.0", buildLabel.hashValue)
 
     targetGenerator.registerRuleEntryForIndexer(ruleEntry,
-                                                ruleEntryMap: [:],
+                                                ruleEntryMap: RuleEntryMap(),
                                                 pathFilters: pathFilters)
     targetGenerator.generateIndexerTargets()
 
@@ -2184,10 +2184,10 @@
                                       type: "ios_binary",
                                       attributes: ruleAttributes as [String : AnyObject],
                                       sourceFiles: sourceFileNames)
-    let indexerTargetName = String(format: "_idx_TestApp_%08X", buildLabel.hashValue)
+    let indexerTargetName = String(format: "_idx_TestApp_%08X_ios_min9.0", buildLabel.hashValue)
 
     targetGenerator.registerRuleEntryForIndexer(ruleEntry,
-                                                ruleEntryMap: [:],
+                                                ruleEntryMap: RuleEntryMap(),
                                                 pathFilters: pathFilters)
     targetGenerator.generateIndexerTargets()
 
@@ -2211,10 +2211,10 @@
                                       type: "ios_binary",
                                       attributes: ruleAttributes as [String : AnyObject],
                                       sourceFiles: sourceFileNames)
-    let indexerTargetName = String(format: "_idx_TestApp_%08X", buildLabel.hashValue)
+    let indexerTargetName = String(format: "_idx_TestApp_%08X_ios_min9.0", buildLabel.hashValue)
 
     targetGenerator.registerRuleEntryForIndexer(ruleEntry,
-                                                ruleEntryMap: [:],
+                                                ruleEntryMap: RuleEntryMap(),
                                                 pathFilters: pathFilters)
     targetGenerator.generateIndexerTargets()
 
@@ -2236,10 +2236,10 @@
                                       type: "ios_binary",
                                       attributes: ruleAttributes as [String : AnyObject],
                                       sourceFiles: sourceFileNames)
-    let indexerTargetName = String(format: "_idx_TestApp_%08X", buildLabel.hashValue)
+    let indexerTargetName = String(format: "_idx_TestApp_%08X_ios_min9.0", buildLabel.hashValue)
 
     targetGenerator.registerRuleEntryForIndexer(ruleEntry,
-                                                ruleEntryMap: [:],
+                                                ruleEntryMap: RuleEntryMap(),
                                                 pathFilters: pathFilters.union(Set([dataModel])))
     targetGenerator.generateIndexerTargets()
 
@@ -2265,10 +2265,10 @@
     let ruleEntry = makeTestRuleEntry(buildLabel,
                                       type: "ios_application",
                                       sourceFiles: allSourceFiles)
-    let indexerTargetName = String(format: "_idx_TestApp_%08X", buildLabel.hashValue)
+    let indexerTargetName = String(format: "_idx_TestApp_%08X_ios_min9.0", buildLabel.hashValue)
 
     targetGenerator.registerRuleEntryForIndexer(ruleEntry,
-                                                ruleEntryMap: [:],
+                                                ruleEntryMap: RuleEntryMap(),
                                                 pathFilters: pathFilters)
     targetGenerator.generateIndexerTargets()
 
@@ -2290,10 +2290,10 @@
     let ruleEntry = makeTestRuleEntry(buildLabel,
                                       type: "ios_application",
                                       sourceFiles: allSourceFiles)
-    let indexerTargetName = String(format: "_idx_TestApp_%08X", buildLabel.hashValue)
+    let indexerTargetName = String(format: "_idx_TestApp_%08X_ios_min9.0", buildLabel.hashValue)
 
     targetGenerator.registerRuleEntryForIndexer(ruleEntry,
-                                                ruleEntryMap: [:],
+                                                ruleEntryMap: RuleEntryMap(),
                                                 pathFilters: pathFilters)
     targetGenerator.generateIndexerTargets()
 
@@ -2311,7 +2311,7 @@
                                       sourceFiles: sourceFileNames,
                                       buildFilePath: buildFilePath)
     targetGenerator.registerRuleEntryForIndexer(ruleEntry,
-                                                ruleEntryMap: [:],
+                                                ruleEntryMap: RuleEntryMap(),
                                                 pathFilters: pathFilters)
     targetGenerator.generateIndexerTargets()
     XCTAssertNil(fileRefForPath(buildFilePath))
@@ -2326,7 +2326,7 @@
                                       sourceFiles: sourceFileNames,
                                       buildFilePath: buildFilePath)
     targetGenerator.registerRuleEntryForIndexer(ruleEntry,
-                                                ruleEntryMap: [:],
+                                                ruleEntryMap: RuleEntryMap(),
                                                 pathFilters: pathFilters)
     targetGenerator.generateIndexerTargets()
     XCTAssertNotNil(fileRefForPath(buildFilePath))
@@ -2341,7 +2341,7 @@
                                       sourceFiles: sourceFileNames,
                                       buildFilePath: buildFilePath)
     targetGenerator.registerRuleEntryForIndexer(ruleEntry,
-                                                ruleEntryMap: [:],
+                                                ruleEntryMap: RuleEntryMap(),
                                                 pathFilters: pathFilters)
     targetGenerator.generateIndexerTargets()
     XCTAssertNotNil(fileRefForPath(buildFilePath))
@@ -2356,7 +2356,7 @@
                                        attributes: ["pch": ["path": pchFile.path!, "src": true] as AnyObject],
                                        sourceFiles: sourceFiles1)
     targetGenerator.registerRuleEntryForIndexer(ruleEntry1,
-                                                ruleEntryMap: [:],
+                                                ruleEntryMap: RuleEntryMap(),
                                                 pathFilters: pathFilters)
 
     let sourceFiles2 = ["2.swift"]
@@ -2366,14 +2366,14 @@
                                        attributes: ["pch": ["path": pchFile.path!, "src": true] as AnyObject],
                                        sourceFiles: sourceFiles2)
     targetGenerator.registerRuleEntryForIndexer(ruleEntry2,
-                                                ruleEntryMap: [:],
+                                                ruleEntryMap: RuleEntryMap(),
                                                 pathFilters: pathFilters)
     targetGenerator.generateIndexerTargets()
 
     let targets = project.targetByName
     XCTAssertEqual(targets.count, 1)
 
-    let indexerTargetName = String(format: "_idx_TestLibrary_TestBinary_%08X",
+    let indexerTargetName = String(format: "_idx_TestLibrary_TestBinary_%08X_ios_min9.0",
                                    buildLabel1.hashValue &+ buildLabel2.hashValue)
     validateIndexerTarget(indexerTargetName,
                           sourceFileNames: sourceFiles1 + sourceFiles2,
@@ -2390,7 +2390,7 @@
                                        attributes: ["pch": ["path": pchFile.path!, "src": true] as AnyObject],
                                        sourceFiles: sourceFiles1)
     targetGenerator.registerRuleEntryForIndexer(ruleEntry1,
-                                                ruleEntryMap: [:],
+                                                ruleEntryMap: RuleEntryMap(),
                                                 pathFilters: pathFilters)
     targetGenerator.generateIndexerTargets()
 
@@ -2398,7 +2398,7 @@
     XCTAssertEqual(targets.count, 1)
 
     let resultingTarget = targets.values.first!
-    XCTAssertLessThan(resultingTarget.name.characters.count, 200)
+    XCTAssertLessThan(resultingTarget.name.characters.count, 255)
 
     validateIndexerTarget(resultingTarget.name,
                           sourceFileNames: sourceFiles1,
@@ -2415,18 +2415,18 @@
                                        attributes: ["pch": ["path": pchFile.path!, "src": true] as AnyObject],
                                        sourceFiles: sourceFiles1)
     targetGenerator.registerRuleEntryForIndexer(ruleEntry1,
-                                                ruleEntryMap: [:],
+                                                ruleEntryMap: RuleEntryMap(),
                                                 pathFilters: pathFilters)
 
     let sourceFiles2 = ["2.swift"]
-    let buildTargetName2 = String(repeating: "B", count: 200)
+    let buildTargetName2 = String(repeating: "B", count: 255)
     let buildLabel2 = BuildLabel("test/app:" + buildTargetName2)
     let ruleEntry2 = makeTestRuleEntry(buildLabel2,
                                        type: "objc_library",
                                        attributes: ["pch": ["path": pchFile.path!, "src": true] as AnyObject],
                                        sourceFiles: sourceFiles2)
     targetGenerator.registerRuleEntryForIndexer(ruleEntry2,
-                                                ruleEntryMap: [:],
+                                                ruleEntryMap: RuleEntryMap(),
                                                 pathFilters: pathFilters)
     targetGenerator.generateIndexerTargets()
 
@@ -2434,7 +2434,7 @@
     XCTAssertEqual(targets.count, 1)
 
     let resultingTarget = targets.values.first!
-    XCTAssertLessThan(resultingTarget.name.characters.count, 200)
+    XCTAssertLessThan(resultingTarget.name.characters.count, 255)
 
     validateIndexerTarget(resultingTarget.name,
                           sourceFileNames: sourceFiles1 + sourceFiles2,
@@ -2448,9 +2448,9 @@
                                        type: "ios_binary",
                                        attributes: ["pch": ["path": pchFile.path!, "src": true] as AnyObject],
                                        sourceFiles: sourceFileNames)
-    let indexer1TargetName = String(format: "_idx_TestBinary_%08X", buildLabel1.hashValue)
+    let indexer1TargetName = String(format: "_idx_TestBinary_%08X_ios_min9.0", buildLabel1.hashValue)
     targetGenerator.registerRuleEntryForIndexer(ruleEntry1,
-                                                ruleEntryMap: [:],
+                                                ruleEntryMap: RuleEntryMap(),
                                                 pathFilters: pathFilters)
 
     let buildLabel2 = BuildLabel("test/app:TestLibrary")
@@ -2458,9 +2458,9 @@
                                        type: "objc_library",
                                        attributes: [:],
                                        sourceFiles: sourceFileNames)
-    let indexer2TargetName = String(format: "_idx_TestLibrary_%08X", buildLabel2.hashValue)
+    let indexer2TargetName = String(format: "_idx_TestLibrary_%08X_ios_min9.0", buildLabel2.hashValue)
     targetGenerator.registerRuleEntryForIndexer(ruleEntry2,
-                                                ruleEntryMap: [:],
+                                                ruleEntryMap: RuleEntryMap(),
                                                 pathFilters: pathFilters)
     targetGenerator.generateIndexerTargets()
 
@@ -2487,9 +2487,9 @@
                                        type: "ios_binary",
                                        attributes: ruleAttributes1 as [String : AnyObject],
                                        sourceFiles: sourceFileNames)
-    let indexer1TargetName = String(format: "_idx_TestBinary_%08X", buildLabel1.hashValue)
+    let indexer1TargetName = String(format: "_idx_TestBinary_%08X_ios_min9.0", buildLabel1.hashValue)
     targetGenerator.registerRuleEntryForIndexer(ruleEntry1,
-                                                ruleEntryMap: [:],
+                                                ruleEntryMap: RuleEntryMap(),
                                                 pathFilters: pathFilters)
 
     let buildLabel2 = BuildLabel("test/app:TestLibrary")
@@ -2497,9 +2497,9 @@
                                        type: "objc_library",
                                        attributes: [:],
                                        sourceFiles: sourceFileNames)
-    let indexer2TargetName = String(format: "_idx_TestLibrary_%08X", buildLabel2.hashValue)
+    let indexer2TargetName = String(format: "_idx_TestLibrary_%08X_ios_min9.0", buildLabel2.hashValue)
     targetGenerator.registerRuleEntryForIndexer(ruleEntry2,
-                                                ruleEntryMap: [:],
+                                                ruleEntryMap: RuleEntryMap(),
                                                 pathFilters: pathFilters)
     targetGenerator.generateIndexerTargets()
 
@@ -2525,7 +2525,7 @@
                                      artifacts: ["some/path/to/an/ipa.ipa",
                                                  "test/app/TestApplication.ipa"])
     do {
-      try targetGenerator.generateBuildTargetsForRuleEntries([testRule], ruleEntryMap: [:])
+      try targetGenerator.generateBuildTargetsForRuleEntries([testRule], ruleEntryMap: RuleEntryMap())
     } catch let e as NSError {
       XCTFail("Failed to generate build targets with error \(e.localizedDescription)")
     }
@@ -2587,10 +2587,11 @@
                                      attributes: ["has_swift_dependency": true as AnyObject],
                                      dependencies: Set([swiftTarget]))
     let swiftLibraryRule = makeTestRuleEntry(swiftTarget, type: "swift_library")
+    let ruleEntryMap = makeRuleEntryMap(withRuleEntries: [swiftLibraryRule])
 
     do {
       try targetGenerator.generateBuildTargetsForRuleEntries([testRule],
-                                                             ruleEntryMap: [BuildLabel(swiftTarget): swiftLibraryRule])
+                                                             ruleEntryMap: ruleEntryMap)
     } catch let e as NSError {
       XCTFail("Failed to generate build targets with error \(e.localizedDescription)")
     }
diff --git a/src/TulsiGeneratorTests/XcodeProjectGeneratorTests.swift b/src/TulsiGeneratorTests/XcodeProjectGeneratorTests.swift
index 24f4576..53aada2 100644
--- a/src/TulsiGeneratorTests/XcodeProjectGeneratorTests.swift
+++ b/src/TulsiGeneratorTests/XcodeProjectGeneratorTests.swift
@@ -431,7 +431,7 @@
   }
 
   func registerRuleEntryForIndexer(_ ruleEntry: RuleEntry,
-                                   ruleEntryMap: [BuildLabel:RuleEntry],
+                                   ruleEntryMap: RuleEntryMap,
                                    pathFilters: Set<String>) {
   }
 
@@ -446,7 +446,8 @@
   }
 
   func generateBuildTargetsForRuleEntries(_ ruleEntries: Set<RuleEntry>,
-                                          ruleEntryMap: [BuildLabel: RuleEntry]) throws -> [String: [String]] {
+                                          ruleEntryMap: RuleEntryMap) throws -> [String: [String]] {
+    // This works as this file only tests native targets that don't have multiple configurations.
     let namedRuleEntries = ruleEntries.map() { (e: RuleEntry) -> (String, RuleEntry) in
       return (e.label.asFullPBXTargetName!, e)
     }