#include "tools/gn/scheduler.h"
#include "tools/gn/setup.h"
#include "tools/gn/standard_out.h"
+#include "tools/gn/target.h"
namespace commands {
const char kSwitchCheck[] = "check";
-void BackgroundDoWrite(const Target* target,
- const Toolchain* toolchain,
- const std::vector<const Item*>& deps_for_visibility) {
- // Validate visibility.
- Err err;
- for (size_t i = 0; i < deps_for_visibility.size(); i++) {
- if (!Visibility::CheckItemVisibility(target, deps_for_visibility[i],
- &err)) {
- g_scheduler->FailWithError(err);
- break; // Don't return early since we need DecrementWorkCount below.
- }
- }
-
- if (!err.has_error())
- NinjaTargetWriter::RunAndWriteFile(target, toolchain);
+// Called on worker thread to write the ninja file.
+void BackgroundDoWrite(const Target* target) {
+ NinjaTargetWriter::RunAndWriteFile(target);
g_scheduler->DecrementWorkCount();
}
const Item* item = record->item();
const Target* target = item->AsTarget();
if (target) {
- const Toolchain* toolchain =
- builder->GetToolchain(target->settings()->toolchain_label());
- DCHECK(toolchain);
-
- // Collect all dependencies.
- std::vector<const Item*> deps;
- for (BuilderRecord::BuilderRecordSet::const_iterator iter =
- record->all_deps().begin();
- iter != record->all_deps().end();
- ++iter)
- deps.push_back((*iter)->item());
-
g_scheduler->IncrementWorkCount();
- g_scheduler->ScheduleWork(
- base::Bind(&BackgroundDoWrite, target, toolchain, deps));
+ g_scheduler->ScheduleWork(base::Bind(&BackgroundDoWrite, target));
}
}
// Deliberately leaked to avoid expensive process teardown.
Setup* setup = new Setup();
- if (!setup->DoSetup(args[0]))
+ if (!setup->DoSetup(args[0], true))
return 1;
if (CommandLine::ForCurrentProcess()->HasSwitch(kSwitchCheck))