| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/visual_studio_writer.h" | 5 #include "tools/gn/visual_studio_writer.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <iterator> | 8 #include <iterator> |
| 9 #include <map> | 9 #include <map> |
| 10 #include <memory> | 10 #include <memory> |
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 160 DCHECK(path && !path->empty()); | 160 DCHECK(path && !path->empty()); |
| 161 for (int i = static_cast<int>(path->size()) - 2; i >= 0; --i) { | 161 for (int i = static_cast<int>(path->size()) - 2; i >= 0; --i) { |
| 162 if (IsSlash((*path)[i])) | 162 if (IsSlash((*path)[i])) |
| 163 return base::StringPiece(path->data(), i); | 163 return base::StringPiece(path->data(), i); |
| 164 } | 164 } |
| 165 return base::StringPiece(); | 165 return base::StringPiece(); |
| 166 } | 166 } |
| 167 | 167 |
| 168 bool FilterTargets(const BuildSettings* build_settings, | 168 bool FilterTargets(const BuildSettings* build_settings, |
| 169 const Builder& builder, | 169 const Builder& builder, |
| 170 const std::string& dir_filters, | 170 const std::string& filters, |
| 171 bool no_deps, |
| 171 std::vector<const Target*>* targets, | 172 std::vector<const Target*>* targets, |
| 172 Err* err) { | 173 Err* err) { |
| 173 if (dir_filters.empty()) { | 174 if (filters.empty()) { |
| 174 *targets = builder.GetAllResolvedTargets(); | 175 *targets = builder.GetAllResolvedTargets(); |
| 175 return true; | 176 return true; |
| 176 } | 177 } |
| 177 | 178 |
| 178 std::vector<LabelPattern> filters; | 179 std::vector<LabelPattern> patterns; |
| 179 if (!commands::FilterPatternsFromString(build_settings, dir_filters, &filters, | 180 if (!commands::FilterPatternsFromString(build_settings, filters, &patterns, |
| 180 err)) | 181 err)) |
| 181 return false; | 182 return false; |
| 182 | 183 |
| 183 commands::FilterTargetsByPatterns(builder.GetAllResolvedTargets(), filters, | 184 commands::FilterTargetsByPatterns(builder.GetAllResolvedTargets(), patterns, |
| 184 targets); | 185 targets); |
| 185 | 186 |
| 187 if (no_deps) |
| 188 return true; |
| 189 |
| 186 std::set<Label> labels; | 190 std::set<Label> labels; |
| 187 std::queue<const Target*> to_process; | 191 std::queue<const Target*> to_process; |
| 188 for (const Target* target : *targets) { | 192 for (const Target* target : *targets) { |
| 189 labels.insert(target->label()); | 193 labels.insert(target->label()); |
| 190 to_process.push(target); | 194 to_process.push(target); |
| 191 } | 195 } |
| 192 | 196 |
| 193 while (!to_process.empty()) { | 197 while (!to_process.empty()) { |
| 194 const Target* target = to_process.front(); | 198 const Target* target = to_process.front(); |
| 195 to_process.pop(); | 199 to_process.pop(); |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 265 } | 269 } |
| 266 | 270 |
| 267 VisualStudioWriter::~VisualStudioWriter() { | 271 VisualStudioWriter::~VisualStudioWriter() { |
| 268 } | 272 } |
| 269 | 273 |
| 270 // static | 274 // static |
| 271 bool VisualStudioWriter::RunAndWriteFiles(const BuildSettings* build_settings, | 275 bool VisualStudioWriter::RunAndWriteFiles(const BuildSettings* build_settings, |
| 272 const Builder& builder, | 276 const Builder& builder, |
| 273 Version version, | 277 Version version, |
| 274 const std::string& sln_name, | 278 const std::string& sln_name, |
| 275 const std::string& dir_filters, | 279 const std::string& filters, |
| 280 bool no_deps, |
| 276 Err* err) { | 281 Err* err) { |
| 277 std::vector<const Target*> targets; | 282 std::vector<const Target*> targets; |
| 278 if (!FilterTargets(build_settings, builder, dir_filters, &targets, err)) | 283 if (!FilterTargets(build_settings, builder, filters, no_deps, &targets, err)) |
| 279 return false; | 284 return false; |
| 280 | 285 |
| 281 const char* config_platform = "Win32"; | 286 const char* config_platform = "Win32"; |
| 282 | 287 |
| 283 // Assume the "target_cpu" variable does not change between different | 288 // Assume the "target_cpu" variable does not change between different |
| 284 // toolchains. | 289 // toolchains. |
| 285 if (!targets.empty()) { | 290 if (!targets.empty()) { |
| 286 const Scope* scope = targets.front()->settings()->base_config(); | 291 const Scope* scope = targets.front()->settings()->base_config(); |
| 287 const Value* target_cpu_value = scope->GetValue(variables::kTargetCpu); | 292 const Value* target_cpu_value = scope->GetValue(variables::kTargetCpu); |
| 288 if (target_cpu_value != nullptr && | 293 if (target_cpu_value != nullptr && |
| (...skipping 543 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 832 } | 837 } |
| 833 } | 838 } |
| 834 | 839 |
| 835 std::string VisualStudioWriter::GetNinjaTarget(const Target* target) { | 840 std::string VisualStudioWriter::GetNinjaTarget(const Target* target) { |
| 836 std::ostringstream ninja_target_out; | 841 std::ostringstream ninja_target_out; |
| 837 DCHECK(!target->dependency_output_file().value().empty()); | 842 DCHECK(!target->dependency_output_file().value().empty()); |
| 838 ninja_path_output_.WriteFile(ninja_target_out, | 843 ninja_path_output_.WriteFile(ninja_target_out, |
| 839 target->dependency_output_file()); | 844 target->dependency_output_file()); |
| 840 return ninja_target_out.str(); | 845 return ninja_target_out.str(); |
| 841 } | 846 } |
| OLD | NEW |