| OLD | NEW |
| 1 # GYP->GN Conversion Cookbook | 1 # GYP->GN Conversion Cookbook |
| 2 | 2 |
| 3 [TOC] | 3 [TOC] |
| 4 | 4 |
| 5 ## Targets | 5 ## Targets |
| 6 | 6 |
| 7 | *GYP* | *GN*
| | 7 | *GYP* | *GN*
| |
| 8 |:-------------------------------------------------|:---------------------------
------------------------| | 8 |:-------------------------------------------------|:---------------------------
------------------------| |
| 9 | `'type': 'static_library', 'name': 'foo',` | `static_library("foo") {` o
r `source_set("foo") {` | | 9 | `'type': 'static_library', 'name': 'foo',` | `static_library("foo") {` o
r `source_set("foo") {` | |
| 10 | `'type': 'shared_library', 'name': 'foo',` | `shared_library("foo") {`
| | 10 | `'type': 'shared_library', 'name': 'foo',` | `shared_library("foo") {`
| |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 57 Unlike GYP, where an action is a part of a target, GN actions are | 57 Unlike GYP, where an action is a part of a target, GN actions are |
| 58 separate targets that you then depend on via deps from other targets: | 58 separate targets that you then depend on via deps from other targets: |
| 59 | 59 |
| 60 ``` | 60 ``` |
| 61 action("foo") { | 61 action("foo") { |
| 62 script = "bar.py" | 62 script = "bar.py" |
| 63 outputs = [ "$target_gen_dir/bar.out" ] | 63 outputs = [ "$target_gen_dir/bar.out" ] |
| 64 args = [ "--la_dee_da" ] | 64 args = [ "--la_dee_da" ] |
| 65 } | 65 } |
| 66 | 66 |
| 67 executable('foo.exe') { | 67 executable("foo.exe") { |
| 68 ... | 68 ... |
| 69 deps = [ ":foo" ] # Depend on the action to make sure it runs. | 69 deps = [ ":foo" ] # Depend on the action to make sure it runs. |
| 70 } | 70 } |
| 71 ``` | 71 ``` |
| 72 | 72 |
| 73 Rules in GYP become `action_foreach` in GN which work like actions but | 73 Rules in GYP become `action_foreach` in GN which work like actions but |
| 74 iterate over a set of sources. | 74 iterate over a set of sources. |
| 75 | 75 |
| 76 ### Copies |
| 77 |
| 78 GYP |
| 79 |
| 80 ``` |
| 81 'copies': [ |
| 82 { |
| 83 'destination': '<(PRODUCT_DIR)/', |
| 84 'files': [ |
| 85 '../build/win/dbghelp_xp/dbghelp.dll', |
| 86 ], |
| 87 }, |
| 88 ], |
| 89 ``` |
| 90 |
| 91 Unlike GYP, where copies are part of a target, GN copies are |
| 92 separate targets that you then depend on via deps from other targets: |
| 93 |
| 94 ``` |
| 95 copy("bar") { |
| 96 sources = [ "../path/to/secret.dll" ] |
| 97 outputs = [ "$root_out_dir/{{source_file_part}}" ] |
| 98 } |
| 99 |
| 100 component("base") { |
| 101 ... |
| 102 deps = [ "bar" } # Depend on the copy to make sure it runs. |
| 103 } |
| 104 ``` |
| 105 |
| 76 ## Platform checking | 106 ## Platform checking |
| 77 | 107 |
| 78 | *GYP* | *GN* | | 108 | *GYP* | *GN* | |
| 79 |:-------------------------------------|:---------------------| | 109 |:-------------------------------------|:---------------------| |
| 80 | `'conditions': [['OS=="win"', {` | `if (is_win) {` | | 110 | `'conditions': [['OS=="win"', {` | `if (is_win) {` | |
| 81 | `'conditions': [['OS=="linux"', {` | `if (is_linux) {` | | 111 | `'conditions': [['OS=="linux"', {` | `if (is_linux) {` | |
| 82 | `'conditions': [['OS=="android"', {` | `if (is_android) {` | | 112 | `'conditions': [['OS=="android"', {` | `if (is_android) {` | |
| 83 | `'conditions': [['OS=="mac"', {` | `if (is_mac) {` | | 113 | `'conditions': [['OS=="mac"', {` | `if (is_mac) {` | |
| 84 | `'conditions': [['OS=="ios"', {` | `if (is_ios) {` | | 114 | `'conditions': [['OS=="ios"', {` | `if (is_ios) {` | |
| 85 | `'conditions': [['chromeos==1', {` | `if (is_chromeos) {` | | 115 | `'conditions': [['chromeos==1', {` | `if (is_chromeos) {` | |
| (...skipping 554 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 640 | 670 |
| 641 ``` | 671 ``` |
| 642 import("//mojo/public/tools/bindings/mojom.gni") | 672 import("//mojo/public/tools/bindings/mojom.gni") |
| 643 | 673 |
| 644 mojom("mojo_bindings") { | 674 mojom("mojo_bindings") { |
| 645 sources = [ | 675 sources = [ |
| 646 "foo.mojom", | 676 "foo.mojom", |
| 647 ] | 677 ] |
| 648 } | 678 } |
| 649 ``` | 679 ``` |
| OLD | NEW |