mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2026-08-18 06:55:34 +03:00
Import chromium-63.0.3239.132
This commit is contained in:
86
tools/gn/function_set_default_toolchain.cc
Normal file
86
tools/gn/function_set_default_toolchain.cc
Normal file
@@ -0,0 +1,86 @@
|
||||
// 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/build_settings.h"
|
||||
#include "tools/gn/functions.h"
|
||||
#include "tools/gn/loader.h"
|
||||
#include "tools/gn/parse_tree.h"
|
||||
#include "tools/gn/scope.h"
|
||||
#include "tools/gn/settings.h"
|
||||
|
||||
namespace functions {
|
||||
|
||||
const char kSetDefaultToolchain[] = "set_default_toolchain";
|
||||
const char kSetDefaultToolchain_HelpShort[] =
|
||||
"set_default_toolchain: Sets the default toolchain name.";
|
||||
const char kSetDefaultToolchain_Help[] =
|
||||
R"(set_default_toolchain: Sets the default toolchain name.
|
||||
|
||||
set_default_toolchain(toolchain_label)
|
||||
|
||||
The given label should identify a toolchain definition (see "gn help
|
||||
toolchain"). This toolchain will be used for all targets unless otherwise
|
||||
specified.
|
||||
|
||||
This function is only valid to call during the processing of the build
|
||||
configuration file. Since the build configuration file is processed
|
||||
separately for each toolchain, this function will be a no-op when called
|
||||
under any non-default toolchains.
|
||||
|
||||
For example, the default toolchain should be appropriate for the current
|
||||
environment. If the current environment is 32-bit and somebody references a
|
||||
target with a 64-bit toolchain, we wouldn't want processing of the build
|
||||
config file for the 64-bit toolchain to reset the default toolchain to
|
||||
64-bit, we want to keep it 32-bits.
|
||||
|
||||
Argument
|
||||
|
||||
toolchain_label
|
||||
Toolchain name.
|
||||
|
||||
Example
|
||||
|
||||
# Set default toolchain only has an effect when run in the context of the
|
||||
# default toolchain. Pick the right one according to the current CPU
|
||||
# architecture.
|
||||
if (target_cpu == "x64") {
|
||||
set_default_toolchain("//toolchains:64")
|
||||
} else if (target_cpu == "x86") {
|
||||
set_default_toolchain("//toolchains:32")
|
||||
}
|
||||
)";
|
||||
|
||||
Value RunSetDefaultToolchain(Scope* scope,
|
||||
const FunctionCallNode* function,
|
||||
const std::vector<Value>& args,
|
||||
Err* err) {
|
||||
if (!scope->IsProcessingBuildConfig()) {
|
||||
*err = Err(function->function(), "Must be called from build config.",
|
||||
"set_default_toolchain can only be called from the build configuration "
|
||||
"file.");
|
||||
return Value();
|
||||
}
|
||||
|
||||
// When the loader is expecting the default toolchain to be set, it will set
|
||||
// this key on the scope to point to the destination.
|
||||
Label* default_toolchain_dest = static_cast<Label*>(
|
||||
scope->GetProperty(Loader::kDefaultToolchainKey, nullptr));
|
||||
if (!default_toolchain_dest)
|
||||
return Value();
|
||||
|
||||
const SourceDir& current_dir = scope->GetSourceDir();
|
||||
const Label& default_toolchain = ToolchainLabelForScope(scope);
|
||||
|
||||
if (!EnsureSingleStringArg(function, args, err))
|
||||
return Value();
|
||||
Label toolchain_label(
|
||||
Label::Resolve(current_dir, default_toolchain, args[0], err));
|
||||
if (toolchain_label.is_null())
|
||||
return Value();
|
||||
|
||||
*default_toolchain_dest = toolchain_label;
|
||||
return Value();
|
||||
}
|
||||
|
||||
} // namespace functions
|
||||
Reference in New Issue
Block a user