| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "tools/gn/config_values_generator.h" | 5 #include "tools/gn/config_values_generator.h" |
| 6 | 6 |
| 7 #include "base/strings/string_util.h" | 7 #include "base/strings/string_util.h" |
| 8 #include "tools/gn/config_values.h" | 8 #include "tools/gn/config_values.h" |
| 9 #include "tools/gn/scope.h" | 9 #include "tools/gn/scope.h" |
| 10 #include "tools/gn/settings.h" | 10 #include "tools/gn/settings.h" |
| 11 #include "tools/gn/value.h" | 11 #include "tools/gn/value.h" |
| 12 #include "tools/gn/value_extractors.h" | 12 #include "tools/gn/value_extractors.h" |
| 13 #include "tools/gn/variables.h" | 13 #include "tools/gn/variables.h" |
| 14 | 14 |
| 15 namespace { | 15 namespace { |
| 16 | 16 |
| 17 void GetStringList( | 17 void GetStringList( |
| 18 Scope* scope, | 18 Scope* scope, |
| 19 const char* var_name, | 19 const char* var_name, |
| 20 ConfigValues* config_values, | 20 ConfigValues* config_values, |
| 21 std::vector<std::string>& (ConfigValues::* accessor)(), | 21 std::vector<std::string>& (ConfigValues::* accessor)(), |
| 22 Err* err) { | 22 Err* err) { |
| 23 const Value* value = scope->GetValue(var_name, true); | 23 const Value* value = scope->GetValue(var_name, true); |
| 24 if (!value) | 24 if (!value) |
| 25 return; // No value, empty input and succeed. | 25 return; // No value, empty input and succeed. |
| 26 | 26 |
| 27 std::vector<std::string> result; | 27 ExtractListOfStringValues(*value, &(config_values->*accessor)(), err); |
| 28 ExtractListOfStringValues(*value, &result, err); | |
| 29 (config_values->*accessor)().swap(result); | |
| 30 } | 28 } |
| 31 | 29 |
| 32 void GetDirList( | 30 void GetDirList( |
| 33 Scope* scope, | 31 Scope* scope, |
| 34 const char* var_name, | 32 const char* var_name, |
| 35 ConfigValues* config_values, | 33 ConfigValues* config_values, |
| 36 const SourceDir input_dir, | 34 const SourceDir input_dir, |
| 37 std::vector<SourceDir>& (ConfigValues::* accessor)(), | 35 std::vector<SourceDir>& (ConfigValues::* accessor)(), |
| 38 Err* err) { | 36 Err* err) { |
| 39 const Value* value = scope->GetValue(var_name, true); | 37 const Value* value = scope->GetValue(var_name, true); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 72 FILL_STRING_CONFIG_VALUE(asmflags) | 70 FILL_STRING_CONFIG_VALUE(asmflags) |
| 73 FILL_STRING_CONFIG_VALUE(cflags) | 71 FILL_STRING_CONFIG_VALUE(cflags) |
| 74 FILL_STRING_CONFIG_VALUE(cflags_c) | 72 FILL_STRING_CONFIG_VALUE(cflags_c) |
| 75 FILL_STRING_CONFIG_VALUE(cflags_cc) | 73 FILL_STRING_CONFIG_VALUE(cflags_cc) |
| 76 FILL_STRING_CONFIG_VALUE(cflags_objc) | 74 FILL_STRING_CONFIG_VALUE(cflags_objc) |
| 77 FILL_STRING_CONFIG_VALUE(cflags_objcc) | 75 FILL_STRING_CONFIG_VALUE(cflags_objcc) |
| 78 FILL_STRING_CONFIG_VALUE(defines) | 76 FILL_STRING_CONFIG_VALUE(defines) |
| 79 FILL_DIR_CONFIG_VALUE( include_dirs) | 77 FILL_DIR_CONFIG_VALUE( include_dirs) |
| 80 FILL_STRING_CONFIG_VALUE(ldflags) | 78 FILL_STRING_CONFIG_VALUE(ldflags) |
| 81 FILL_DIR_CONFIG_VALUE( lib_dirs) | 79 FILL_DIR_CONFIG_VALUE( lib_dirs) |
| 82 FILL_STRING_CONFIG_VALUE(libs) | |
| 83 | 80 |
| 84 #undef FILL_STRING_CONFIG_VALUE | 81 #undef FILL_STRING_CONFIG_VALUE |
| 85 #undef FILL_DIR_CONFIG_VALUE | 82 #undef FILL_DIR_CONFIG_VALUE |
| 86 | 83 |
| 84 // Libs |
| 85 const Value* libs_value = scope_->GetValue("libs", true); |
| 86 if (libs_value) { |
| 87 ExtractListOfLibs(scope_->settings()->build_settings(), *libs_value, |
| 88 input_dir_, &config_values_->libs(), err_); |
| 89 } |
| 90 |
| 87 // Precompiled headers. | 91 // Precompiled headers. |
| 88 const Value* precompiled_header_value = | 92 const Value* precompiled_header_value = |
| 89 scope_->GetValue(variables::kPrecompiledHeader, true); | 93 scope_->GetValue(variables::kPrecompiledHeader, true); |
| 90 if (precompiled_header_value) { | 94 if (precompiled_header_value) { |
| 91 if (!precompiled_header_value->VerifyTypeIs(Value::STRING, err_)) | 95 if (!precompiled_header_value->VerifyTypeIs(Value::STRING, err_)) |
| 92 return; | 96 return; |
| 93 | 97 |
| 94 // Check for common errors. This is a string and not a file. | 98 // Check for common errors. This is a string and not a file. |
| 95 const std::string& pch_string = precompiled_header_value->string_value(); | 99 const std::string& pch_string = precompiled_header_value->string_value(); |
| 96 if (base::StartsWith(pch_string, "//", base::CompareCase::SENSITIVE)) { | 100 if (base::StartsWith(pch_string, "//", base::CompareCase::SENSITIVE)) { |
| (...skipping 10 matching lines...) Expand all Loading... |
| 107 scope_->GetValue(variables::kPrecompiledSource, true); | 111 scope_->GetValue(variables::kPrecompiledSource, true); |
| 108 if (precompiled_source_value) { | 112 if (precompiled_source_value) { |
| 109 config_values_->set_precompiled_source( | 113 config_values_->set_precompiled_source( |
| 110 input_dir_.ResolveRelativeFile( | 114 input_dir_.ResolveRelativeFile( |
| 111 *precompiled_source_value, err_, | 115 *precompiled_source_value, err_, |
| 112 scope_->settings()->build_settings()->root_path_utf8())); | 116 scope_->settings()->build_settings()->root_path_utf8())); |
| 113 if (err_->has_error()) | 117 if (err_->has_error()) |
| 114 return; | 118 return; |
| 115 } | 119 } |
| 116 } | 120 } |
| OLD | NEW |