| // 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/binary_target_generator.h" |
| |
| #include "tools/gn/config_values_generator.h" |
| #include "tools/gn/err.h" |
| #include "tools/gn/scope.h" |
| #include "tools/gn/variables.h" |
| |
| BinaryTargetGenerator::BinaryTargetGenerator( |
| Target* target, |
| Scope* scope, |
| const FunctionCallNode* function_call, |
| Target::OutputType type, |
| Err* err) |
| : TargetGenerator(target, scope, function_call, err), |
| output_type_(type) { |
| } |
| |
| BinaryTargetGenerator::~BinaryTargetGenerator() { |
| } |
| |
| void BinaryTargetGenerator::DoRun() { |
| target_->set_output_type(output_type_); |
| |
| FillOutputName(); |
| if (err_->has_error()) |
| return; |
| |
| FillOutputExtension(); |
| if (err_->has_error()) |
| return; |
| |
| FillSources(); |
| if (err_->has_error()) |
| return; |
| |
| FillPublic(); |
| if (err_->has_error()) |
| return; |
| |
| FillInputs(); |
| if (err_->has_error()) |
| return; |
| |
| FillConfigs(); |
| if (err_->has_error()) |
| return; |
| |
| // Config values (compiler flags, etc.) set directly on this target. |
| ConfigValuesGenerator gen(&target_->config_values(), scope_, |
| scope_->GetSourceDir(), err_); |
| gen.Run(); |
| if (err_->has_error()) |
| return; |
| } |
| |
| void BinaryTargetGenerator::FillOutputName() { |
| const Value* value = scope_->GetValue(variables::kOutputName, true); |
| if (!value) |
| return; |
| if (!value->VerifyTypeIs(Value::STRING, err_)) |
| return; |
| target_->set_output_name(value->string_value()); |
| } |
| |
| void BinaryTargetGenerator::FillOutputExtension() { |
| const Value* value = scope_->GetValue(variables::kOutputExtension, true); |
| if (!value) |
| return; |
| if (!value->VerifyTypeIs(Value::STRING, err_)) |
| return; |
| target_->set_output_extension(value->string_value()); |
| } |