| OLD | NEW |
| 1 # GYP (Generate Your Projects) Language Specification | 1 # Language Specification |
| 2 | 2 |
| 3 Status: Draft (as of 2009-01-30) | |
| 4 | |
| 5 Mark Mentovai <mark@chromium.org> _et al._ | |
| 6 | |
| 7 Modified: 2009-02-10 | |
| 8 | |
| 9 [TOC] | 3 [TOC] |
| 10 | 4 |
| 11 ## Objective | 5 ## Objective |
| 12 | 6 |
| 13 Create a tool for the Chromium project that generates native Visual Studio, | 7 Create a tool for the Chromium project that generates native Visual Studio, |
| 14 Xcode and SCons and/or make build files from a platform-independent input | 8 Xcode and SCons and/or make build files from a platform-independent input |
| 15 format. Make the input format as reasonably general as possible without | 9 format. Make the input format as reasonably general as possible without |
| 16 spending extra time trying to "get everything right," except where not doing so | 10 spending extra time trying to "get everything right," except where not doing so |
| 17 would likely lead Chromium to an eventual dead end. When in doubt, do what | 11 would likely lead Chromium to an eventual dead end. When in doubt, do what |
| 18 Chromium needs and don't worry about generalizing the solution. | 12 Chromium needs and don't worry about generalizing the solution. |
| (...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 390 | 384 |
| 391 * `Projects`: | 385 * `Projects`: |
| 392 * `WebsiteProperties`: | 386 * `WebsiteProperties`: |
| 393 * `ProjectDependencies`: | 387 * `ProjectDependencies`: |
| 394 * `Global`: | 388 * `Global`: |
| 395 * `SolutionConfigurationPlatforms`: | 389 * `SolutionConfigurationPlatforms`: |
| 396 * `ProjectConfigurationPlatforms`: | 390 * `ProjectConfigurationPlatforms`: |
| 397 * `SolutionProperties`: | 391 * `SolutionProperties`: |
| 398 * `NestedProjects`: | 392 * `NestedProjects`: |
| 399 | 393 |
| 400 ## Code Location | |
| 401 | |
| 402 Here! http://gyp.googlecode.com/ | |
| 403 | |
| 404 ## Group Members | |
| 405 | |
| 406 |:-----------------|:---------------------------------| | |
| 407 | Darin Fisher | Overall approval of final design | | |
| 408 | Elliot Glaysher | Approval of Linux build functionality. | | |
| 409 | Alex Harper | | | |
| 410 | Steven Knight | Language specification.<br />Code for generating Scons file
s from `.gyp` files. | | |
| 411 | Mark Mentovai | Input language design and implementation.<br />Code for gen
erating Xcode files from `.gyp` files.<br />Approval of Mac (Xcode) build functi
onality. | | |
| 412 | Bradley Nelson | Code for generating Visual Studio files from `.gyp` files.
| | |
| 413 | Randall Spangler | | | |
| 414 | Nicolas Sylvain | Approval of Windows build functionality. | | |
| 415 | |
| 416 ## Caveats | 394 ## Caveats |
| 417 | 395 |
| 418 TODO(sgk): Notes/Question from very first prototype draft of the language. | 396 Notes/Question from very first prototype draft of the language. |
| 419 Make sure these issues are addressed somewhere before deleting. | 397 Make sure these issues are addressed somewhere before deleting. |
| 420 | 398 |
| 421 * Libraries are easy, application abstraction is harder | 399 * Libraries are easy, application abstraction is harder |
| 422 * Applications involves resource compilation | 400 * Applications involves resource compilation |
| 423 * Applications involve many inputs | 401 * Applications involve many inputs |
| 424 * Applications include transitive closure of dependencies | 402 * Applications include transitive closure of dependencies |
| 425 * Specific use cases like cc\_library | 403 * Specific use cases like cc\_library |
| 426 * Mac compiles more than just .c/.cpp files (specifically, .m and .mm | 404 * Mac compiles more than just .c/.cpp files (specifically, .m and .mm |
| 427 files) | 405 files) |
| 428 * Compiler options vary by: | 406 * Compiler options vary by: |
| 429 * File type | 407 * File type |
| 430 * Target type | 408 * Target type |
| 431 * Individual file | 409 * Individual file |
| 432 * Files may have custom settings per file per platform, but we probably | 410 * Files may have custom settings per file per platform, but we probably |
| 433 don't care or need to support this in gyp. | 411 don't care or need to support this in gyp. |
| 434 * Will all linked non-Chromium projects always use the same versions of every | 412 * Will all linked non-Chromium projects always use the same versions of every |
| 435 subsystem? | 413 subsystem? |
| 436 * Variants are difficult. We've identified the following variants (some | 414 * Variants are difficult. We've identified the following variants (some |
| 437 specific to Chromium, some typical of other projects in the same ballpark): | 415 specific to Chromium, some typical of other projects in the same ballpark): |
| 438 * Target platform | 416 * Target platform |
| 439 * V8 vs. JSC | 417 * V8 vs. JSC |
| 440 * Debug vs. Release | 418 * Debug vs. Release |
| 441 * Toolchain (VS version, gcc, version) | 419 * Toolchain (VS version, gcc, version) |
| 442 * Host platform | 420 * Host platform |
| 443 * L10N | 421 * L10N |
| 444 * Vendor | 422 * Vendor |
| 445 * Purify / Valgrind | 423 * Purify / Valgrind |
| 446 * Will everyone upgrade VS at once? | 424 * Will everyone upgrade VS at once? |
| 447 * What does a dylib dependency mean? | 425 * What does a dylib dependency mean? |
| 448 | |
| 449 ## Testing Plan | |
| 450 | |
| 451 _What are the sub-units of your system that will be independently testable? | |
| 452 Tests must be approved by the code reviewer, and must follow the guidelines in | |
| 453 the unittesting document as far as possible. See What Is A Design Document for | |
| 454 criteria for whole system tests on servers. If there are changes envisaged in | |
| 455 your future work, would your tests verify the base functionality? If some of | |
| 456 your tests cannot be easily automated (e.g. UI tests), how will you document | |
| 457 the needed special procedures?_ | |
| 458 | |
| 459 ## Documentation Plan | |
| 460 | |
| 461 Documentation via this wiki: http://code.google.com/p/gyp | |
| 462 | |
| 463 ## Work Estimates | |
| 464 | |
| 465 _Estimates of how long each phase will take (please be detailed; subtask | |
| 466 granularity should be roughly one week)_ | |
| 467 | |
| 468 ## Launch Plans | |
| 469 | |
| 470 _What are the launch plans for your project? This includes, but is not limited | |
| 471 to: | |
| 472 * What visible changes your project will cause on the site. | |
| 473 * What will be the impact on production and/or search partners. | |
| 474 * What new servers will be introduced. | |
| 475 * Rough timeline for releasing your project._ | |
| OLD | NEW |