mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-11-28 00:06:09 +03:00
56 lines
1.6 KiB
C++
56 lines
1.6 KiB
C++
// Copyright (c) 2013 The Chromium Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#include "tools/gn/ninja_writer.h"
|
|
|
|
#include "tools/gn/builder.h"
|
|
#include "tools/gn/loader.h"
|
|
#include "tools/gn/location.h"
|
|
#include "tools/gn/ninja_build_writer.h"
|
|
#include "tools/gn/ninja_toolchain_writer.h"
|
|
#include "tools/gn/settings.h"
|
|
#include "tools/gn/target.h"
|
|
|
|
NinjaWriter::NinjaWriter(const Builder& builder)
|
|
: builder_(builder) {
|
|
}
|
|
|
|
NinjaWriter::~NinjaWriter() = default;
|
|
|
|
// static
|
|
bool NinjaWriter::RunAndWriteFiles(
|
|
const BuildSettings* build_settings,
|
|
const Builder& builder,
|
|
const PerToolchainRules& per_toolchain_rules,
|
|
Err* err) {
|
|
NinjaWriter writer(builder);
|
|
|
|
if (!writer.WriteToolchains(per_toolchain_rules, err))
|
|
return false;
|
|
return NinjaBuildWriter::RunAndWriteFile(build_settings, builder, err);
|
|
}
|
|
|
|
bool NinjaWriter::WriteToolchains(const PerToolchainRules& per_toolchain_rules,
|
|
Err* err) {
|
|
if (per_toolchain_rules.empty()) {
|
|
Err(Location(), "No targets.",
|
|
"I could not find any targets to write, so I'm doing nothing.")
|
|
.PrintToStdout();
|
|
return false;
|
|
}
|
|
|
|
for (const auto& i : per_toolchain_rules) {
|
|
const Toolchain* toolchain = i.first;
|
|
const Settings* settings =
|
|
builder_.loader()->GetToolchainSettings(toolchain->label());
|
|
if (!NinjaToolchainWriter::RunAndWriteFile(settings, toolchain, i.second)) {
|
|
Err(Location(),
|
|
"Couldn't open toolchain buildfile(s) for writing").PrintToStdout();
|
|
return false;
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|