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/setup.h" | 5 #include "tools/gn/setup.h" |
6 | 6 |
7 #include <stdlib.h> | 7 #include <stdlib.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 | 10 |
11 #include "base/bind.h" | 11 #include "base/bind.h" |
12 #include "base/command_line.h" | 12 #include "base/command_line.h" |
13 #include "base/file_util.h" | 13 #include "base/file_util.h" |
14 #include "base/files/file_path.h" | 14 #include "base/files/file_path.h" |
15 #include "base/process/launch.h" | 15 #include "base/process/launch.h" |
16 #include "base/strings/string_split.h" | 16 #include "base/strings/string_split.h" |
17 #include "base/strings/string_util.h" | 17 #include "base/strings/string_util.h" |
18 #include "base/strings/utf_string_conversions.h" | 18 #include "base/strings/utf_string_conversions.h" |
19 #include "build/build_config.h" | 19 #include "build/build_config.h" |
20 #include "tools/gn/filesystem_utils.h" | 20 #include "tools/gn/filesystem_utils.h" |
| 21 #include "tools/gn/header_checker.h" |
21 #include "tools/gn/input_file.h" | 22 #include "tools/gn/input_file.h" |
22 #include "tools/gn/parse_tree.h" | 23 #include "tools/gn/parse_tree.h" |
23 #include "tools/gn/parser.h" | 24 #include "tools/gn/parser.h" |
24 #include "tools/gn/source_dir.h" | 25 #include "tools/gn/source_dir.h" |
25 #include "tools/gn/source_file.h" | 26 #include "tools/gn/source_file.h" |
26 #include "tools/gn/standard_out.h" | 27 #include "tools/gn/standard_out.h" |
27 #include "tools/gn/tokenizer.h" | 28 #include "tools/gn/tokenizer.h" |
28 #include "tools/gn/trace.h" | 29 #include "tools/gn/trace.h" |
29 #include "tools/gn/value.h" | 30 #include "tools/gn/value.h" |
30 | 31 |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
116 | 117 |
117 } // namespace | 118 } // namespace |
118 | 119 |
119 // CommonSetup ----------------------------------------------------------------- | 120 // CommonSetup ----------------------------------------------------------------- |
120 | 121 |
121 CommonSetup::CommonSetup() | 122 CommonSetup::CommonSetup() |
122 : build_settings_(), | 123 : build_settings_(), |
123 loader_(new LoaderImpl(&build_settings_)), | 124 loader_(new LoaderImpl(&build_settings_)), |
124 builder_(new Builder(loader_.get())), | 125 builder_(new Builder(loader_.get())), |
125 check_for_bad_items_(true), | 126 check_for_bad_items_(true), |
126 check_for_unused_overrides_(true) { | 127 check_for_unused_overrides_(true), |
| 128 check_public_headers_(false) { |
127 loader_->set_complete_callback(base::Bind(&DecrementWorkCount)); | 129 loader_->set_complete_callback(base::Bind(&DecrementWorkCount)); |
128 } | 130 } |
129 | 131 |
130 CommonSetup::CommonSetup(const CommonSetup& other) | 132 CommonSetup::CommonSetup(const CommonSetup& other) |
131 : build_settings_(other.build_settings_), | 133 : build_settings_(other.build_settings_), |
132 loader_(new LoaderImpl(&build_settings_)), | 134 loader_(new LoaderImpl(&build_settings_)), |
133 builder_(new Builder(loader_.get())), | 135 builder_(new Builder(loader_.get())), |
134 check_for_bad_items_(other.check_for_bad_items_), | 136 check_for_bad_items_(other.check_for_bad_items_), |
135 check_for_unused_overrides_(other.check_for_unused_overrides_) { | 137 check_for_unused_overrides_(other.check_for_unused_overrides_) { |
136 loader_->set_complete_callback(base::Bind(&DecrementWorkCount)); | 138 loader_->set_complete_callback(base::Bind(&DecrementWorkCount)); |
(...skipping 21 matching lines...) Expand all Loading... |
158 | 160 |
159 if (check_for_unused_overrides_) { | 161 if (check_for_unused_overrides_) { |
160 if (!build_settings_.build_args().VerifyAllOverridesUsed(&err)) { | 162 if (!build_settings_.build_args().VerifyAllOverridesUsed(&err)) { |
161 // TODO(brettw) implement a system of warnings. Until we have a better | 163 // TODO(brettw) implement a system of warnings. Until we have a better |
162 // system, print the error but don't return failure. | 164 // system, print the error but don't return failure. |
163 err.PrintToStdout(); | 165 err.PrintToStdout(); |
164 return true; | 166 return true; |
165 } | 167 } |
166 } | 168 } |
167 | 169 |
| 170 if (check_public_headers_) { |
| 171 std::vector<const Target*> targets = builder_->GetAllResolvedTargets(); |
| 172 scoped_refptr<HeaderChecker> header_checker( |
| 173 new HeaderChecker(&build_settings_, targets)); |
| 174 |
| 175 std::vector<Err> header_errors; |
| 176 header_checker->Run(&header_errors); |
| 177 for (size_t i = 0; i < header_errors.size(); i++) { |
| 178 if (i > 0) |
| 179 OutputString("___________________\n", DECORATION_YELLOW); |
| 180 header_errors[i].PrintToStdout(); |
| 181 } |
| 182 if (!header_errors.empty()) |
| 183 return false; |
| 184 } |
| 185 |
168 // Write out tracing and timing if requested. | 186 // Write out tracing and timing if requested. |
169 const CommandLine* cmdline = CommandLine::ForCurrentProcess(); | 187 const CommandLine* cmdline = CommandLine::ForCurrentProcess(); |
170 if (cmdline->HasSwitch(kTimeSwitch)) | 188 if (cmdline->HasSwitch(kTimeSwitch)) |
171 PrintLongHelp(SummarizeTraces()); | 189 PrintLongHelp(SummarizeTraces()); |
172 if (cmdline->HasSwitch(kTracelogSwitch)) | 190 if (cmdline->HasSwitch(kTracelogSwitch)) |
173 SaveTraces(cmdline->GetSwitchValuePath(kTracelogSwitch)); | 191 SaveTraces(cmdline->GetSwitchValuePath(kTracelogSwitch)); |
174 | 192 |
175 return true; | 193 return true; |
176 } | 194 } |
177 | 195 |
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
431 } | 449 } |
432 | 450 |
433 void DependentSetup::RunPreMessageLoop() { | 451 void DependentSetup::RunPreMessageLoop() { |
434 CommonSetup::RunPreMessageLoop(); | 452 CommonSetup::RunPreMessageLoop(); |
435 } | 453 } |
436 | 454 |
437 bool DependentSetup::RunPostMessageLoop() { | 455 bool DependentSetup::RunPostMessageLoop() { |
438 return CommonSetup::RunPostMessageLoop(); | 456 return CommonSetup::RunPostMessageLoop(); |
439 } | 457 } |
440 | 458 |
OLD | NEW |