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 |