Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(611)

Side by Side Diff: build/config/android/internal_rules.gni

Issue 484813002: Add support for prebuilt jars (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@gn-lint
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698