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("//build/config/android/config.gni") | 5 import("//build/config/android/config.gni") |
6 | 6 |
7 assert(is_android) | 7 assert(is_android) |
8 | 8 |
9 | 9 |
10 rebased_android_sdk = rebase_path(android_sdk, root_build_dir) | 10 rebased_android_sdk = rebase_path(android_sdk, root_build_dir) |
11 rebased_android_sdk_root = rebase_path(android_sdk_root, root_build_dir) | 11 rebased_android_sdk_root = rebase_path(android_sdk_root, root_build_dir) |
12 rebased_android_sdk_build_tools = rebase_path(android_sdk_build_tools, root_buil d_dir) | 12 rebased_android_sdk_build_tools = rebase_path(android_sdk_build_tools, root_buil d_dir) |
13 | 13 |
14 android_sdk_jar = "$android_sdk/android.jar" | |
15 rebased_android_sdk_jar = rebase_path(android_sdk_jar, root_build_dir) | |
16 | |
14 template("android_lint") { | 17 template("android_lint") { |
15 jar_path = invoker.jar_path | 18 jar_path = invoker.jar_path |
16 android_manifest = invoker.android_manifest | 19 android_manifest = invoker.android_manifest |
17 java_files = invoker.java_files | 20 java_files = invoker.java_files |
18 base_path = "$target_gen_dir/$target_name" | 21 base_path = "$target_gen_dir/$target_name" |
19 | 22 |
20 action(target_name) { | 23 action(target_name) { |
21 script = "//build/android/gyp/lint.py" | 24 script = "//build/android/gyp/lint.py" |
22 result_path = base_path + "/result.xml" | 25 result_path = base_path + "/result.xml" |
23 config_path = base_path + "/config.xml" | 26 config_path = base_path + "/config.xml" |
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
314 "--key-name", _keystore_name, | 317 "--key-name", _keystore_name, |
315 "--key-passwd", _keystore_password, | 318 "--key-passwd", _keystore_password, |
316 ] | 319 ] |
317 } | 320 } |
318 | 321 |
319 group(target_name) { | 322 group(target_name) { |
320 deps = [":${target_name}__finalize"] | 323 deps = [":${target_name}__finalize"] |
321 } | 324 } |
322 } | 325 } |
323 | 326 |
327 template("java_prebuilt") { | |
328 _input_jar_path = invoker.input_jar_path | |
329 _output_jar_path = invoker.output_jar_path | |
330 _jar_toc_path = _output_jar_path + ".TOC" | |
331 | |
332 assert(invoker.build_config != "") | |
333 | |
334 if (defined(invoker.proguard_preprocess) && invoker.proguard_preprocess) { | |
335 _proguard_jar_path = "$android_sdk_root/tools/proguard/lib/proguard.jar" | |
336 _proguard_config_path = invoker.proguard_config | |
337 _build_config = invoker.build_config | |
338 _rebased_build_config = rebase_path(_build_config, root_build_dir) | |
339 action("${target_name}__proguard_process") { | |
340 script = "//build/android/gyp/proguard.py" | |
341 inputs = [ | |
342 android_sdk_jar, | |
343 _proguard_jar_path, | |
344 _build_config, | |
345 _input_jar_path, | |
346 _proguard_config_path, | |
347 ] | |
348 depfile = "${target_gen_dir}/${target_name}.d" | |
349 outputs = [ | |
350 depfile, | |
351 _output_jar_path, | |
352 ] | |
353 args = [ | |
354 "--depfile", rebase_path(depfile, root_build_dir), | |
355 "--proguard-path", rebase_path(_proguard_jar_path, root_build_dir), | |
356 "--input-path", rebase_path(_input_jar_path, root_build_dir), | |
357 "--output-path", rebase_path(_output_jar_path, root_build_dir), | |
358 "--proguard-config", rebase_path(_proguard_config_path, root_build_dir), | |
359 "--classpath", rebased_android_sdk_jar, | |
360 "--classpath=@FileArg($_rebased_build_config:javac:classpath)", | |
361 ] | |
362 } | |
363 } else { | |
364 copy("${target_name}__copy_jar") { | |
365 sources = [_input_jar_path] | |
brettw
2014/08/20 22:24:01
I've been doing spaces inside the []
| |
366 outputs = [_output_jar_path] | |
367 } | |
368 } | |
369 | |
370 action("${target_name}__jar_toc") { | |
371 script = "//build/android/gyp/jar_toc.py" | |
372 depfile = "$target_gen_dir/$target_name.d" | |
373 outputs = [ | |
374 depfile, | |
375 _jar_toc_path, | |
376 _jar_toc_path + ".md5.stamp" | |
377 ] | |
378 inputs = [ _output_jar_path ] | |
379 args = [ | |
380 "--depfile", rebase_path(depfile, root_build_dir), | |
381 "--jar-path", rebase_path(_output_jar_path, root_build_dir), | |
382 "--toc-path", rebase_path(_jar_toc_path, root_build_dir), | |
383 ] | |
384 } | |
385 | |
386 group(target_name) { | |
387 deps = [ | |
388 ":${target_name}__jar_toc" | |
389 ] | |
390 } | |
391 } | |
392 | |
324 # Compiles and jars a set of java files. | 393 # Compiles and jars a set of java files. |
325 # | 394 # |
326 # Outputs: | 395 # Outputs: |
327 # $jar_path.jar | 396 # $jar_path.jar |
328 # $jar_path.jar.TOC | 397 # $jar_path.jar.TOC |
329 # | 398 # |
330 # Variables | 399 # Variables |
331 # java_files: List of .java files to compile. | 400 # java_files: List of .java files to compile. |
332 # java_deps: List of java dependencies. These should all have a .jar output | 401 # java_deps: List of java dependencies. These should all have a .jar output |
333 # at "${target_gen_dir}/${target_name}.jar. | 402 # at "${target_gen_dir}/${target_name}.jar. |
334 # chromium_code: If true, enable extra warnings. | 403 # chromium_code: If true, enable extra warnings. |
335 # srcjar_deps: List of srcjar dependencies. The .java files contained in the | 404 # srcjar_deps: List of srcjar dependencies. The .java files contained in the |
336 # dependencies srcjar outputs will be compiled and added to the output jar. | 405 # dependencies srcjar outputs will be compiled and added to the output jar. |
337 # jar_path: Use this to explicitly set the output jar path. Defaults to | 406 # jar_path: Use this to explicitly set the output jar path. Defaults to |
338 # "${target_gen_dir}/${target_name}.jar. | 407 # "${target_gen_dir}/${target_name}.jar. |
339 template("java_library") { | 408 template("java_library") { |
340 assert(defined(invoker.java_files)) | 409 assert(defined(invoker.java_files)) |
341 assert(defined(invoker.build_config)) | 410 assert(defined(invoker.build_config)) |
342 assert(defined(invoker.jar_path)) | 411 assert(defined(invoker.jar_path)) |
343 | 412 |
344 java_files = invoker.java_files | 413 _java_files = invoker.java_files |
345 jar_path = invoker.jar_path | 414 _final_jar_path = invoker.jar_path |
346 jar_toc_path = jar_path + ".TOC" | 415 _intermediate_jar_path = "$target_gen_dir/$target_name.initial.jar" |
347 | 416 |
348 build_config = invoker.build_config | 417 _build_config = invoker.build_config |
349 | 418 |
350 jar_excluded_patterns = [] | 419 _jar_excluded_patterns = [] |
351 if (defined(invoker.jar_excluded_patterns)) { | 420 if (defined(invoker.jar_excluded_patterns)) { |
352 jar_excluded_patterns += invoker.jar_excluded_patterns | 421 _jar_excluded_patterns += invoker.jar_excluded_patterns |
353 } | 422 } |
354 | 423 |
355 chromium_code = false | 424 _chromium_code = false |
356 if (defined(invoker.chromium_code)) { | 425 if (defined(invoker.chromium_code)) { |
357 chromium_code = chromium_code || invoker.chromium_code | 426 _chromium_code = invoker.chromium_code |
358 } | 427 } |
359 | 428 |
360 srcjar_deps = [] | 429 _srcjar_deps = [] |
361 if (defined(invoker.srcjar_deps)) { | 430 if (defined(invoker.srcjar_deps)) { |
362 srcjar_deps += invoker.srcjar_deps | 431 _srcjar_deps += invoker.srcjar_deps |
363 } | 432 } |
364 | 433 |
365 java_srcjars = [] | 434 _java_srcjars = [] |
366 foreach(dep, srcjar_deps) { | 435 foreach(dep, _srcjar_deps) { |
367 dep_gen_dir = get_label_info(dep, "target_gen_dir") | 436 _dep_gen_dir = get_label_info(dep, "target_gen_dir") |
368 dep_name = get_label_info(dep, "name") | 437 _dep_name = get_label_info(dep, "name") |
369 java_srcjars += [ "$dep_gen_dir/$dep_name.srcjar" ] | 438 _java_srcjars += [ "$_dep_gen_dir/$_dep_name.srcjar" ] |
370 } | 439 } |
371 # Mark srcjar_deps as used. | 440 # Mark srcjar_deps as used. |
372 assert(srcjar_deps == [] || srcjar_deps != []) | 441 assert(_srcjar_deps == [] || true) |
373 | 442 |
374 rebase_jar_path = rebase_path(jar_path, root_build_dir) | 443 _system_jars = [ android_sdk_jar ] |
375 | |
376 system_jars = [ "${android_sdk}/android.jar" ] | |
377 action("${target_name}__javac") { | 444 action("${target_name}__javac") { |
378 script = "//build/android/gyp/javac.py" | 445 script = "//build/android/gyp/javac.py" |
379 depfile = "$target_gen_dir/$target_name.d" | 446 depfile = "$target_gen_dir/$target_name.d" |
380 outputs = [ | 447 outputs = [ |
381 depfile, | 448 depfile, |
382 jar_path, | 449 _intermediate_jar_path, |
383 jar_path + ".md5.stamp" | 450 _intermediate_jar_path + ".md5.stamp" |
384 ] | 451 ] |
385 sources = java_files + java_srcjars | 452 sources = _java_files + _java_srcjars |
386 inputs = system_jars + [ build_config ] | 453 inputs = _system_jars + [ _build_config ] |
387 | 454 |
388 rebase_system_jars = rebase_path(system_jars, root_build_dir) | 455 _rebased_system_jars = rebase_path(_system_jars, root_build_dir) |
389 rebase_java_srcjars = rebase_path(java_srcjars, root_build_dir) | 456 _rebased_java_srcjars = rebase_path(_java_srcjars, root_build_dir) |
390 rebase_build_config = rebase_path(build_config, root_build_dir) | 457 _rebased_build_config = rebase_path(_build_config, root_build_dir) |
391 rebase_depfile = rebase_path(depfile, root_build_dir) | 458 _rebased_depfile = rebase_path(depfile, root_build_dir) |
459 _rebased_jar_path = rebase_path(_intermediate_jar_path, root_build_dir) | |
392 args = [ | 460 args = [ |
393 "--depfile=$rebase_depfile", | 461 "--depfile=$_rebased_depfile", |
394 "--classpath=$rebase_system_jars", | 462 "--classpath=$_rebased_system_jars", |
395 "--classpath=@FileArg($rebase_build_config:javac:classpath)", | 463 "--classpath=@FileArg($_rebased_build_config:javac:classpath)", |
396 "--jar-path=$rebase_jar_path", | 464 "--jar-path=$_rebased_jar_path", |
397 "--java-srcjars=$rebase_java_srcjars", | 465 "--java-srcjars=$_rebased_java_srcjars", |
398 "--java-srcjars=@FileArg($rebase_build_config:javac:srcjars)", | 466 "--java-srcjars=@FileArg($_rebased_build_config:javac:srcjars)", |
399 "--jar-excluded-classes=$jar_excluded_patterns", | 467 "--jar-excluded-classes=$_jar_excluded_patterns", |
400 ] | 468 ] |
401 if (chromium_code) { | 469 if (_chromium_code) { |
402 args += [ "--chromium-code" ] | 470 args += [ "--chromium-code" ] |
403 } | 471 } |
404 | 472 |
405 args += rebase_path(java_files, root_build_dir) | 473 args += rebase_path(_java_files, root_build_dir) |
406 } | 474 } |
407 | 475 |
408 # TODO(cjhopman): proguard | 476 java_prebuilt("${target_name}__finish") { |
409 | 477 build_config = _build_config |
410 rebase_jar_toc_path = rebase_path(jar_toc_path, root_build_dir) | 478 input_jar_path = _intermediate_jar_path |
411 action("${target_name}__jar_toc") { | 479 output_jar_path = _final_jar_path |
412 script = "//build/android/gyp/jar_toc.py" | 480 if (defined(invoker.proguard_preprocess) && invoker.proguard_preprocess) { |
413 depfile = "$target_gen_dir/$target_name.d" | 481 proguard_preprocess = invoker.proguard_preprocess |
414 outputs = [ | 482 proguard_config = invoker.proguard_config |
415 depfile, | 483 } |
416 jar_toc_path, | |
417 jar_toc_path + ".md5.stamp" | |
418 ] | |
419 inputs = [ jar_path ] | |
420 args = [ | |
421 "--depfile", rebase_path(depfile, root_build_dir), | |
422 "--jar-path=${rebase_jar_path}", | |
423 "--toc-path=${rebase_jar_toc_path}", | |
424 ] | |
425 } | 484 } |
426 | 485 |
427 group(target_name) { | 486 group(target_name) { |
428 deps = [ | 487 deps = [ |
429 ":${target_name}__javac", | 488 ":${target_name}__javac", |
430 ":${target_name}__jar_toc", | 489 ":${target_name}__finish", |
431 ] | 490 ] |
432 } | 491 } |
433 } | 492 } |
434 | 493 |
435 | 494 |
436 # This adds Android-specific parts to the java_library template. | 495 # This adds Android-specific parts to the java_library template. |
437 # | 496 # |
438 # Runs Android lint against the compiled java files. | 497 # Runs Android lint against the compiled java files. |
439 # Dexes the output jar for inclusion in an APK. | 498 # Dexes the output jar for inclusion in an APK. |
440 template("android_java_library") { | 499 template("android_java_library") { |
(...skipping 17 matching lines...) Expand all Loading... | |
458 jar_path = _jar_path | 517 jar_path = _jar_path |
459 if (defined(invoker.jar_excluded_patterns)) { | 518 if (defined(invoker.jar_excluded_patterns)) { |
460 jar_excluded_patterns = invoker.jar_excluded_patterns | 519 jar_excluded_patterns = invoker.jar_excluded_patterns |
461 } | 520 } |
462 build_config = invoker.build_config | 521 build_config = invoker.build_config |
463 java_files = invoker.java_files | 522 java_files = invoker.java_files |
464 | 523 |
465 if (defined(invoker.srcjar_deps)) { | 524 if (defined(invoker.srcjar_deps)) { |
466 srcjar_deps = invoker.srcjar_deps | 525 srcjar_deps = invoker.srcjar_deps |
467 } | 526 } |
527 if (defined(invoker.proguard_preprocess) && invoker.proguard_preprocess) { | |
528 proguard_preprocess = invoker.proguard_preprocess | |
529 proguard_config = invoker.proguard_config | |
530 } | |
468 } | 531 } |
469 | 532 |
470 if (defined(invoker.chromium_code) && invoker.chromium_code) { | 533 if (defined(invoker.chromium_code) && invoker.chromium_code) { |
471 _final_deps += [ ":${target_name}__lint" ] | 534 _final_deps += [ ":${target_name}__lint" ] |
472 android_lint("${target_name}__lint") { | 535 android_lint("${target_name}__lint") { |
473 android_manifest = _android_manifest | 536 android_manifest = _android_manifest |
474 jar_path = _jar_path | 537 jar_path = _jar_path |
475 java_files = invoker.java_files | 538 java_files = invoker.java_files |
476 } | 539 } |
477 } | 540 } |
478 | 541 |
479 dex("${target_name}__dex") { | 542 dex("${target_name}__dex") { |
480 sources = [_jar_path] | 543 sources = [_jar_path] |
481 output = _dex_path | 544 output = _dex_path |
482 } | 545 } |
483 | 546 |
484 group(target_name) { | 547 group(target_name) { |
485 deps = [ | 548 deps = [ |
486 ":${target_name}__java_library", | 549 ":${target_name}__java_library", |
487 ":${target_name}__dex", | 550 ":${target_name}__dex", |
488 ] + _final_deps | 551 ] + _final_deps |
489 } | 552 } |
490 } | 553 } |
491 | 554 |
492 | |
493 # Runs process_resources.py | 555 # Runs process_resources.py |
494 template("process_resources") { | 556 template("process_resources") { |
495 zip_path = invoker.zip_path | 557 zip_path = invoker.zip_path |
496 srcjar_path = invoker.srcjar_path | 558 srcjar_path = invoker.srcjar_path |
497 build_config = invoker.build_config | 559 build_config = invoker.build_config |
498 resource_dirs = invoker.resource_dirs | 560 resource_dirs = invoker.resource_dirs |
499 android_manifest = invoker.android_manifest | 561 android_manifest = invoker.android_manifest |
500 | 562 |
501 non_constant_id = true | 563 non_constant_id = true |
502 if (defined(invoker.generate_constant_ids) && invoker.generate_constant_ids) { | 564 if (defined(invoker.generate_constant_ids) && invoker.generate_constant_ids) { |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
560 args += [ | 622 args += [ |
561 "--all-resources-zip-out", rebase_path(all_resources_zip, root_build_dir ) | 623 "--all-resources-zip-out", rebase_path(all_resources_zip, root_build_dir ) |
562 ] | 624 ] |
563 } | 625 } |
564 | 626 |
565 if (defined(invoker.args)) { | 627 if (defined(invoker.args)) { |
566 args += invoker.args | 628 args += invoker.args |
567 } | 629 } |
568 } | 630 } |
569 } | 631 } |
OLD | NEW |