| 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 "base/atomicops.h" | 5 #include "base/atomicops.h" |
| 6 #include "base/bind.h" | 6 #include "base/bind.h" |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/strings/string_number_conversions.h" | 8 #include "base/strings/string_number_conversions.h" |
| 9 #include "base/strings/stringprintf.h" | 9 #include "base/strings/stringprintf.h" |
| 10 #include "base/timer/elapsed_timer.h" | 10 #include "base/timer/elapsed_timer.h" |
| (...skipping 21 matching lines...) Expand all Loading... |
| 32 const char kSwitchFilters[] = "filters"; | 32 const char kSwitchFilters[] = "filters"; |
| 33 const char kSwitchIde[] = "ide"; | 33 const char kSwitchIde[] = "ide"; |
| 34 const char kSwitchIdeValueEclipse[] = "eclipse"; | 34 const char kSwitchIdeValueEclipse[] = "eclipse"; |
| 35 const char kSwitchIdeValueQtCreator[] = "qtcreator"; | 35 const char kSwitchIdeValueQtCreator[] = "qtcreator"; |
| 36 const char kSwitchIdeValueVs[] = "vs"; | 36 const char kSwitchIdeValueVs[] = "vs"; |
| 37 const char kSwitchIdeValueVs2013[] = "vs2013"; | 37 const char kSwitchIdeValueVs2013[] = "vs2013"; |
| 38 const char kSwitchIdeValueVs2015[] = "vs2015"; | 38 const char kSwitchIdeValueVs2015[] = "vs2015"; |
| 39 const char kSwitchIdeValueXcode[] = "xcode"; | 39 const char kSwitchIdeValueXcode[] = "xcode"; |
| 40 const char kSwitchIdeValueJson[] = "json"; | 40 const char kSwitchIdeValueJson[] = "json"; |
| 41 const char kSwitchNinjaExtraArgs[] = "ninja-extra-args"; | 41 const char kSwitchNinjaExtraArgs[] = "ninja-extra-args"; |
| 42 const char kSwitchNoDeps[] = "no-deps"; |
| 42 const char kSwitchRootTarget[] = "root-target"; | 43 const char kSwitchRootTarget[] = "root-target"; |
| 43 const char kSwitchSln[] = "sln"; | 44 const char kSwitchSln[] = "sln"; |
| 44 const char kSwitchWorkspace[] = "workspace"; | 45 const char kSwitchWorkspace[] = "workspace"; |
| 45 const char kSwitchJsonFileName[] = "json-file-name"; | 46 const char kSwitchJsonFileName[] = "json-file-name"; |
| 46 const char kSwitchJsonIdeScript[] = "json-ide-script"; | 47 const char kSwitchJsonIdeScript[] = "json-ide-script"; |
| 47 const char kSwitchJsonIdeScriptArgs[] = "json-ide-script-args"; | 48 const char kSwitchJsonIdeScriptArgs[] = "json-ide-script-args"; |
| 48 | 49 |
| 49 // Collects Ninja rules for each toolchain. The lock protectes the rules. | 50 // Collects Ninja rules for each toolchain. The lock protectes the rules. |
| 50 struct TargetWriteInfo { | 51 struct TargetWriteInfo { |
| 51 base::Lock lock; | 52 base::Lock lock; |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 198 ide == kSwitchIdeValueVs2015) { | 199 ide == kSwitchIdeValueVs2015) { |
| 199 VisualStudioWriter::Version version = | 200 VisualStudioWriter::Version version = |
| 200 ide == kSwitchIdeValueVs2013 ? VisualStudioWriter::Version::Vs2013 | 201 ide == kSwitchIdeValueVs2013 ? VisualStudioWriter::Version::Vs2013 |
| 201 : VisualStudioWriter::Version::Vs2015; | 202 : VisualStudioWriter::Version::Vs2015; |
| 202 std::string sln_name; | 203 std::string sln_name; |
| 203 if (command_line->HasSwitch(kSwitchSln)) | 204 if (command_line->HasSwitch(kSwitchSln)) |
| 204 sln_name = command_line->GetSwitchValueASCII(kSwitchSln); | 205 sln_name = command_line->GetSwitchValueASCII(kSwitchSln); |
| 205 std::string filters; | 206 std::string filters; |
| 206 if (command_line->HasSwitch(kSwitchFilters)) | 207 if (command_line->HasSwitch(kSwitchFilters)) |
| 207 filters = command_line->GetSwitchValueASCII(kSwitchFilters); | 208 filters = command_line->GetSwitchValueASCII(kSwitchFilters); |
| 209 bool no_deps = command_line->HasSwitch(kSwitchNoDeps); |
| 208 bool res = VisualStudioWriter::RunAndWriteFiles( | 210 bool res = VisualStudioWriter::RunAndWriteFiles( |
| 209 build_settings, builder, version, sln_name, filters, err); | 211 build_settings, builder, version, sln_name, filters, no_deps, err); |
| 210 if (res && !quiet) { | 212 if (res && !quiet) { |
| 211 OutputString("Generating Visual Studio projects took " + | 213 OutputString("Generating Visual Studio projects took " + |
| 212 base::Int64ToString(timer.Elapsed().InMilliseconds()) + | 214 base::Int64ToString(timer.Elapsed().InMilliseconds()) + |
| 213 "ms\n"); | 215 "ms\n"); |
| 214 } | 216 } |
| 215 return res; | 217 return res; |
| 216 } else if (ide == kSwitchIdeValueXcode) { | 218 } else if (ide == kSwitchIdeValueXcode) { |
| 217 bool res = XcodeWriter::RunAndWriteFiles( | 219 bool res = XcodeWriter::RunAndWriteFiles( |
| 218 command_line->GetSwitchValueASCII(kSwitchWorkspace), | 220 command_line->GetSwitchValueASCII(kSwitchWorkspace), |
| 219 command_line->GetSwitchValueASCII(kSwitchRootTarget), | 221 command_line->GetSwitchValueASCII(kSwitchRootTarget), |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 303 " of generated projects (see \"gn help label_pattern\"). Only\n" | 305 " of generated projects (see \"gn help label_pattern\"). Only\n" |
| 304 " matching targets and their dependencies will be included in the\n" | 306 " matching targets and their dependencies will be included in the\n" |
| 305 " solution. Only used for Visual Studio, Xcode and JSON.\n" | 307 " solution. Only used for Visual Studio, Xcode and JSON.\n" |
| 306 "\n" | 308 "\n" |
| 307 "Visual Studio Flags\n" | 309 "Visual Studio Flags\n" |
| 308 "\n" | 310 "\n" |
| 309 " --sln=<file_name>\n" | 311 " --sln=<file_name>\n" |
| 310 " Override default sln file name (\"all\"). Solution file is written\n" | 312 " Override default sln file name (\"all\"). Solution file is written\n" |
| 311 " to the root build directory.\n" | 313 " to the root build directory.\n" |
| 312 "\n" | 314 "\n" |
| 315 " --no-deps\n" |
| 316 " Don't include targets dependencies to the solution. Changes the\n" |
| 317 " way how --filters option works. Only directly matching targets are\n" |
| 318 " included.\n" |
| 319 "\n" |
| 313 "Xcode Flags\n" | 320 "Xcode Flags\n" |
| 314 "\n" | 321 "\n" |
| 315 " --workspace=<file_name>\n" | 322 " --workspace=<file_name>\n" |
| 316 " Override defaut workspace file name (\"all\"). The workspace file\n" | 323 " Override defaut workspace file name (\"all\"). The workspace file\n" |
| 317 " is written to the root build directory.\n" | 324 " is written to the root build directory.\n" |
| 318 "\n" | 325 "\n" |
| 319 " --ninja-extra-args=<string>\n" | 326 " --ninja-extra-args=<string>\n" |
| 320 " This string is passed without any quoting to the ninja invocation\n" | 327 " This string is passed without any quoting to the ninja invocation\n" |
| 321 " command-line. Can be used to configure ninja flags, like \"-j\" if\n" | 328 " command-line. Can be used to configure ninja flags, like \"-j\" if\n" |
| 322 " using goma for example.\n" | 329 " using goma for example.\n" |
| (...skipping 18 matching lines...) Expand all Loading... |
| 341 " XML file contains a list of include paths and defines. Because GN does\n" | 348 " XML file contains a list of include paths and defines. Because GN does\n" |
| 342 " not generate a full .cproject definition, it is not possible to\n" | 349 " not generate a full .cproject definition, it is not possible to\n" |
| 343 " properly define includes/defines for each file individually.\n" | 350 " properly define includes/defines for each file individually.\n" |
| 344 " Instead, one set of includes/defines is generated for the entire\n" | 351 " Instead, one set of includes/defines is generated for the entire\n" |
| 345 " project. This works fairly well but may still result in a few indexer\n" | 352 " project. This works fairly well but may still result in a few indexer\n" |
| 346 " issues here and there.\n" | 353 " issues here and there.\n" |
| 347 "\n" | 354 "\n" |
| 348 "Generic JSON Output\n" | 355 "Generic JSON Output\n" |
| 349 "\n" | 356 "\n" |
| 350 " Dumps target information to JSON file and optionally invokes python\n" | 357 " Dumps target information to JSON file and optionally invokes python\n" |
| 351 " script on generated file. \n" | 358 " script on generated file.\n" |
| 352 " See comments at the beginning of json_project_writer.cc and\n" | 359 " See comments at the beginning of json_project_writer.cc and\n" |
| 353 " desc_builder.cc for overview of JSON file format.\n" | 360 " desc_builder.cc for overview of JSON file format.\n" |
| 354 "\n" | 361 "\n" |
| 355 " --json-file-name=<json_file_name>\n" | 362 " --json-file-name=<json_file_name>\n" |
| 356 " Overrides default file name (project.json) of generated JSON file.\n" | 363 " Overrides default file name (project.json) of generated JSON file.\n" |
| 357 "\n" | 364 "\n" |
| 358 " --json-ide-script=<path_to_python_script>\n" | 365 " --json-ide-script=<path_to_python_script>\n" |
| 359 " Executes python script after the JSON file is generated.\n" | 366 " Executes python script after the JSON file is generated.\n" |
| 360 " Path can be project absolute (//), system absolute (/) or\n" | 367 " Path can be project absolute (//), system absolute (/) or\n" |
| 361 " relative, in which case the output directory will be base.\n" | 368 " relative, in which case the output directory will be base.\n" |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 444 setup->scheduler().input_file_manager()->GetInputFileCount()) + | 451 setup->scheduler().input_file_manager()->GetInputFileCount()) + |
| 445 " files in " + | 452 " files in " + |
| 446 base::Int64ToString(elapsed_time.InMilliseconds()) + "ms\n"; | 453 base::Int64ToString(elapsed_time.InMilliseconds()) + "ms\n"; |
| 447 OutputString(stats); | 454 OutputString(stats); |
| 448 } | 455 } |
| 449 | 456 |
| 450 return 0; | 457 return 0; |
| 451 } | 458 } |
| 452 | 459 |
| 453 } // namespace commands | 460 } // namespace commands |
| OLD | NEW |