| OLD | NEW |
| 1 # Copyright 2014 The Chromium Authors. All rights reserved. | 1 # Copyright 2014 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 import("mojo.gni") | 5 import("mojo.gni") |
| 6 | 6 |
| 7 # Generate a binary mojo application.The parameters of this template are those | 7 # Generate a binary Mojo application in a self-named directory. |
| 8 # of a shared library. | 8 # Application resources are copied to a "resources" directory alongside the app. |
| 9 # The parameters of this template are those of a shared library. |
| 9 template("mojo_native_application") { | 10 template("mojo_native_application") { |
| 11 base_target_name = target_name |
| 10 if (defined(invoker.output_name)) { | 12 if (defined(invoker.output_name)) { |
| 11 base_target_name = invoker.output_name | 13 base_target_name = invoker.output_name |
| 12 } else { | |
| 13 base_target_name = target_name | |
| 14 } | 14 } |
| 15 | 15 |
| 16 final_target_name = target_name | 16 final_target_name = target_name |
| 17 | 17 |
| 18 mojo_deps = [] |
| 19 if (defined(invoker.deps)) { |
| 20 mojo_deps += invoker.deps |
| 21 } |
| 22 |
| 23 if (defined(invoker.resources)) { |
| 24 copy_step_name = "${base_target_name}__copy_resources" |
| 25 copy(copy_step_name) { |
| 26 sources = invoker.resources |
| 27 outputs = [ |
| 28 "${root_out_dir}/${base_target_name}/resources/{{source_file_part}}", |
| 29 ] |
| 30 if (defined(invoker.testonly)) { |
| 31 testonly = invoker.testonly |
| 32 } |
| 33 deps = mojo_deps |
| 34 } |
| 35 mojo_deps += [ ":$copy_step_name" ] |
| 36 } |
| 37 |
| 18 if (!is_nacl) { | 38 if (!is_nacl) { |
| 19 output = base_target_name + ".mojo" | 39 output = base_target_name + ".mojo" |
| 20 library_target_name = base_target_name + "_library" | 40 library_target_name = base_target_name + "_library" |
| 21 | 41 |
| 22 if (is_linux || is_android) { | 42 if (is_linux || is_android) { |
| 23 library_name = "lib${library_target_name}.so" | 43 library_name = "lib${library_target_name}.so" |
| 24 } else if (is_win) { | 44 } else if (is_win) { |
| 25 library_name = "${library_target_name}.dll" | 45 library_name = "${library_target_name}.dll" |
| 26 } else if (is_mac) { | 46 } else if (is_mac) { |
| 27 library_name = "lib${library_target_name}.dylib" | 47 library_name = "lib${library_target_name}.dylib" |
| 28 } else { | 48 } else { |
| 29 assert(false, "Platform not supported.") | 49 assert(false, "Platform not supported.") |
| 30 } | 50 } |
| 31 | 51 |
| 32 if (is_android) { | 52 if (is_android) { |
| 33 # On android, use the stripped version of the library, because application
s | 53 # On android, use the stripped version of the library, because |
| 34 # are always fetched over the network. | 54 # applications are always fetched over the network. |
| 35 library_dir = "${root_out_dir}/lib.stripped" | 55 library_dir = "${root_out_dir}/lib.stripped" |
| 36 } else { | 56 } else { |
| 37 library_dir = root_out_dir | 57 library_dir = root_out_dir |
| 38 } | 58 } |
| 39 | 59 |
| 40 shared_library(library_target_name) { | 60 shared_library(library_target_name) { |
| 41 if (defined(invoker.cflags)) { | 61 if (defined(invoker.cflags)) { |
| 42 cflags = invoker.cflags | 62 cflags = invoker.cflags |
| 43 } | 63 } |
| 44 if (defined(invoker.cflags_c)) { | 64 if (defined(invoker.cflags_c)) { |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 84 ".", | 104 ".", |
| 85 mojo_root) ] | 105 mojo_root) ] |
| 86 } | 106 } |
| 87 | 107 |
| 88 deps = rebase_path([ | 108 deps = rebase_path([ |
| 89 "mojo/public/c/system", | 109 "mojo/public/c/system", |
| 90 "mojo/public/platform/native:system", | 110 "mojo/public/platform/native:system", |
| 91 ], | 111 ], |
| 92 ".", | 112 ".", |
| 93 mojo_root) | 113 mojo_root) |
| 94 if (defined(invoker.deps)) { | 114 deps += mojo_deps |
| 95 deps += invoker.deps | |
| 96 } | |
| 97 if (defined(invoker.forward_dependent_configs_from)) { | 115 if (defined(invoker.forward_dependent_configs_from)) { |
| 98 forward_dependent_configs_from = invoker.forward_dependent_configs_from | 116 forward_dependent_configs_from = invoker.forward_dependent_configs_from |
| 99 } | 117 } |
| 100 if (defined(invoker.public_deps)) { | 118 if (defined(invoker.public_deps)) { |
| 101 public_deps = invoker.public_deps | 119 public_deps = invoker.public_deps |
| 102 } | 120 } |
| 103 if (defined(invoker.all_dependent_configs)) { | 121 if (defined(invoker.all_dependent_configs)) { |
| 104 all_dependent_configs = invoker.all_dependent_configs | 122 all_dependent_configs = invoker.all_dependent_configs |
| 105 } | 123 } |
| 106 if (defined(invoker.public_configs)) { | 124 if (defined(invoker.public_configs)) { |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 139 visibility = invoker.visibility | 157 visibility = invoker.visibility |
| 140 } | 158 } |
| 141 deps = [ | 159 deps = [ |
| 142 ":${library_target_name}", | 160 ":${library_target_name}", |
| 143 ] | 161 ] |
| 144 | 162 |
| 145 sources = [ | 163 sources = [ |
| 146 "${library_dir}/${library_name}", | 164 "${library_dir}/${library_name}", |
| 147 ] | 165 ] |
| 148 outputs = [ | 166 outputs = [ |
| 149 "${root_out_dir}/${output}", | 167 "${root_out_dir}/${base_target_name}/${output}", |
| 150 ] | 168 ] |
| 151 } | 169 } |
| 152 } else { | 170 } else { |
| 153 nexe_target_name = base_target_name + "_nexe" | 171 nexe_target_name = base_target_name + "_nexe" |
| 154 nexe_name = base_target_name + ".nexe" | 172 nexe_name = base_target_name + ".nexe" |
| 155 | 173 |
| 156 output = "${base_target_name}_${target_cpu}.nexe.mojo" | 174 output = "${base_target_name}_${target_cpu}.nexe.mojo" |
| 157 | 175 |
| 158 executable(nexe_target_name) { | 176 executable(nexe_target_name) { |
| 159 output_name = base_target_name | 177 output_name = base_target_name |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 204 ".", | 222 ".", |
| 205 mojo_root) ] | 223 mojo_root) ] |
| 206 } | 224 } |
| 207 | 225 |
| 208 deps = rebase_path([ | 226 deps = rebase_path([ |
| 209 "mojo/public/c/system", | 227 "mojo/public/c/system", |
| 210 "mojo/public/platform/nacl:system", | 228 "mojo/public/platform/nacl:system", |
| 211 ], | 229 ], |
| 212 ".", | 230 ".", |
| 213 mojo_root) | 231 mojo_root) |
| 214 if (defined(invoker.deps)) { | 232 deps += mojo_deps |
| 215 deps += invoker.deps | |
| 216 } | |
| 217 if (defined(invoker.forward_dependent_configs_from)) { | 233 if (defined(invoker.forward_dependent_configs_from)) { |
| 218 forward_dependent_configs_from = invoker.forward_dependent_configs_from | 234 forward_dependent_configs_from = invoker.forward_dependent_configs_from |
| 219 } | 235 } |
| 220 if (defined(invoker.public_deps)) { | 236 if (defined(invoker.public_deps)) { |
| 221 public_deps = invoker.public_deps | 237 public_deps = invoker.public_deps |
| 222 } | 238 } |
| 223 if (defined(invoker.all_dependent_configs)) { | 239 if (defined(invoker.all_dependent_configs)) { |
| 224 all_dependent_configs = invoker.all_dependent_configs | 240 all_dependent_configs = invoker.all_dependent_configs |
| 225 } | 241 } |
| 226 if (defined(invoker.public_configs)) { | 242 if (defined(invoker.public_configs)) { |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 259 visibility = invoker.visibility | 275 visibility = invoker.visibility |
| 260 } | 276 } |
| 261 | 277 |
| 262 script = rebase_path("mojo/public/tools/prepend.py", ".", mojo_root) | 278 script = rebase_path("mojo/public/tools/prepend.py", ".", mojo_root) |
| 263 | 279 |
| 264 input_path = "${root_out_dir}/${nexe_name}" | 280 input_path = "${root_out_dir}/${nexe_name}" |
| 265 inputs = [ | 281 inputs = [ |
| 266 input_path, | 282 input_path, |
| 267 ] | 283 ] |
| 268 | 284 |
| 269 output_path = "${root_build_dir}/${output}" | 285 output_path = "${root_build_dir}/${base_target_name}/${output}" |
| 270 outputs = [ | 286 outputs = [ |
| 271 output_path, | 287 output_path, |
| 272 ] | 288 ] |
| 273 | 289 |
| 274 deps = [ | 290 deps = [ |
| 275 ":${nexe_target_name}", | 291 ":${nexe_target_name}", |
| 276 ] | 292 ] |
| 277 | 293 |
| 278 rebase_input = rebase_path(input_path, root_build_dir) | 294 rebase_input = rebase_path(input_path, root_build_dir) |
| 279 rebase_output = rebase_path(output_path, root_build_dir) | 295 rebase_output = rebase_path(output_path, root_build_dir) |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 329 deps = invoker.deps | 345 deps = invoker.deps |
| 330 } | 346 } |
| 331 if (defined(invoker.public_deps)) { | 347 if (defined(invoker.public_deps)) { |
| 332 public_deps = invoker.public_deps | 348 public_deps = invoker.public_deps |
| 333 } | 349 } |
| 334 if (defined(invoker.data_deps)) { | 350 if (defined(invoker.data_deps)) { |
| 335 data_deps = invoker.data_deps | 351 data_deps = invoker.data_deps |
| 336 } | 352 } |
| 337 } | 353 } |
| 338 | 354 |
| 339 if (defined(invoker.output_name)) { | |
| 340 mojo_output = "$root_out_dir/" + invoker.output_name + ".mojo" | |
| 341 } else { | |
| 342 mojo_output = "$root_out_dir/" + target_name + ".mojo" | |
| 343 } | |
| 344 | |
| 345 action(target_name) { | 355 action(target_name) { |
| 346 script = rebase_path("mojo/public/tools/prepend.py", ".", mojo_root) | 356 script = rebase_path("mojo/public/tools/prepend.py", ".", mojo_root) |
| 347 | 357 |
| 358 base_target_name = target_name |
| 359 if (defined(invoker.output_name)) { |
| 360 base_target_name = invoker.output_name |
| 361 } |
| 362 |
| 348 input = zip_action_output | 363 input = zip_action_output |
| 349 inputs = [ | 364 inputs = [ |
| 350 input, | 365 input, |
| 351 ] | 366 ] |
| 352 | 367 |
| 353 output = mojo_output | 368 output = "${root_out_dir}/${base_target_name}/${base_target_name}.mojo" |
| 354 outputs = [ | 369 outputs = [ |
| 355 output, | 370 output, |
| 356 ] | 371 ] |
| 357 | 372 |
| 358 rebase_input = rebase_path(input, root_build_dir) | 373 rebase_input = rebase_path(input, root_build_dir) |
| 359 rebase_output = rebase_path(output, root_build_dir) | 374 rebase_output = rebase_path(output, root_build_dir) |
| 360 args = [ | 375 args = [ |
| 361 "--input=$rebase_input", | 376 "--input=$rebase_input", |
| 362 "--output=$rebase_output", | 377 "--output=$rebase_output", |
| 363 "--line=#!mojo mojo:android_handler", | 378 "--line=#!mojo mojo:android_handler", |
| 364 ] | 379 ] |
| 365 | 380 |
| 366 public_deps = [ | 381 public_deps = [ |
| 367 ":$zip_action_name", | 382 ":$zip_action_name", |
| 368 ] | 383 ] |
| 369 } | 384 } |
| 370 } | 385 } |
| 371 } | 386 } |
| OLD | NEW |