Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / tools / gn / loader.cc
index 1384b92..885670a 100644 (file)
@@ -244,9 +244,13 @@ void LoaderImpl::BackgroundLoadFile(const Settings* settings,
   }
 
   Scope our_scope(settings->base_config());
-  ScopePerFileProvider per_file_provider(&our_scope);
+  ScopePerFileProvider per_file_provider(&our_scope, true);
   our_scope.set_source_dir(file_name.GetDir());
 
+  // Targets, etc. generated as part of running this file will end up here.
+  Scope::ItemVector collected_items;
+  our_scope.set_item_collector(&collected_items);
+
   ScopedTrace trace(TraceItem::TRACE_FILE_EXECUTE, file_name.value());
   trace.SetToolchain(settings->toolchain_label());
 
@@ -255,6 +259,10 @@ void LoaderImpl::BackgroundLoadFile(const Settings* settings,
   if (err.has_error())
     g_scheduler->FailWithError(err);
 
+  // Pass all of the items that were defined off to the builder.
+  for (size_t i = 0; i < collected_items.size(); i++)
+    settings->build_settings()->ItemDefined(collected_items[i]->Pass());
+
   trace.Done();
 
   main_loop_->PostTask(FROM_HERE, base::Bind(&LoaderImpl::DidLoadFile, this));