Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 import("config.gni") | |
| 1 | 2 |
| 2 # Creates a zip archive of the inputs. | 3 # Creates a zip archive of the inputs. |
| 3 # If base_dir is provided, the archive paths will be relative to it. | 4 # If base_dir is provided, the archive paths will be relative to it. |
| 4 template("_zip") { | 5 template("_zip") { |
| 5 assert(defined(invoker.inputs)) | 6 assert(defined(invoker.inputs)) |
| 6 assert(defined(invoker.output)) | 7 assert(defined(invoker.output)) |
| 7 | 8 |
| 8 rebase_inputs = rebase_path(invoker.inputs) | 9 rebase_inputs = rebase_path(invoker.inputs) |
| 9 rebase_output = rebase_path(invoker.output) | 10 rebase_output = rebase_path(invoker.output) |
| 10 action(target_name) { | 11 action(target_name) { |
| 11 script = "//build/android/gn/zip.py" | 12 script = "//build/android/gn/zip.py" |
| 12 source_prereqs = invoker.inputs | 13 source_prereqs = invoker.inputs |
| 13 outputs = [invoker.output] | 14 outputs = [invoker.output] |
| 14 args = [ | 15 args = [ |
| 15 "--inputs=$rebase_inputs", | 16 "--inputs=$rebase_inputs", |
| 16 "--output=$rebase_output", | 17 "--output=$rebase_output", |
| 17 ] | 18 ] |
| 18 if (defined(invoker.base_dir)) { | 19 if (defined(invoker.base_dir)) { |
| 19 args += [ | 20 args += [ |
| 20 "--base-dir", rebase_path(invoker.base_dir) | 21 "--base-dir", rebase_path(invoker.base_dir) |
| 21 ] | 22 ] |
| 22 } | 23 } |
| 23 } | 24 } |
| 24 } | 25 } |
| 25 | 26 |
| 27 # Compiles and jars a set of java_files. | |
| 28 # | |
| 29 # Also, creates the .jar.TOC file for the final .jar output. | |
| 30 # | |
| 31 # Variables | |
| 32 # java_files: List of .java files to compile. | |
| 33 # java_deps: List of java dependencies. These should all have a .jar output | |
| 34 # at get_target_gen_path(dep, ".jar"). | |
| 35 # chromium_code: If 1, enable extra warnings. | |
| 36 # srcjar_deps: List of srcjar dependencies. The .java files contained in the | |
| 37 # dependencies srcjar outputs will be compiled and added to the output jar. | |
| 38 # jar_path: Use this to explicitly set the output jar path. Defaults to | |
| 39 # get_target_gen_path(":$target_name", ".jar") | |
| 40 template("_java_library") { | |
| 41 assert(defined(invoker.java_files)) | |
| 42 java_files = invoker.java_files | |
| 43 | |
| 44 if (defined(invoker.java_deps)) { | |
| 45 java_deps = invoker.java_deps + [] | |
| 46 } else { | |
| 47 java_deps = [] | |
| 48 } | |
| 49 | |
| 50 if (defined(invoker.chromium_code)) { | |
| 51 chromium_code = invoker.chromium_code + 0 | |
|
Nico
2014/05/05 22:17:51
Why "+ 0"? Looks asm.js-y :-D
cjhopman
2014/06/25 01:20:04
This was sort of just type-checking. It would prov
| |
| 52 } else { | |
| 53 chromium_code = 0 | |
| 54 } | |
| 55 | |
| 56 if (defined(invoker.srcjar_deps)) { | |
| 57 srcjar_deps = invoker.srcjar_deps + [] | |
|
Nico
2014/05/05 22:17:51
Same question (/me is a gn noob)
| |
| 58 } else { | |
| 59 srcjar_deps = [] | |
| 60 } | |
| 61 java_srcjars = get_target_gen_path(srcjar_deps, ".srcjar") | |
| 62 | |
| 63 if (defined(invoker.jar_path)) { | |
| 64 jar_path = invoker.jar_path | |
| 65 } else { | |
| 66 jar_path = get_target_gen_path(":${target_name}", ".jar") | |
| 67 } | |
| 68 jar_toc_path = jar_path + ".TOC" | |
| 69 | |
| 70 dependency_jars = get_target_gen_path(java_deps, ".jar") | |
| 71 dependency_jar_tocs = get_target_gen_path(java_deps, ".jar.TOC") | |
| 72 | |
| 73 rebase_java_files = rebase_path(java_files) | |
| 74 rebase_jar_path = rebase_path(jar_path) | |
| 75 | |
| 76 android_jar = "${android_sdk}/android.jar" | |
| 77 action("${target_name}__javac") { | |
| 78 script = "//build/android/gn/javac.py" | |
| 79 depfile = "$target_gen_dir/$target_name.d" | |
| 80 outputs = [jar_path, jar_path + ".md5.stamp"] | |
| 81 source_prereqs = java_files + dependency_jar_tocs + [android_jar] + java_src jars | |
|
Nico
2014/05/05 22:17:51
"""In an action the "sources" and "source_prereqs"
cjhopman
2014/06/25 01:20:03
Done (I think). I'd rather there weren't two names
| |
| 82 | |
| 83 rebase_dependency_jars = rebase_path(dependency_jars + [android_jar]) | |
| 84 rebase_java_srcjars = rebase_path(java_srcjars) | |
| 85 args = [ | |
| 86 "--depfile", rebase_path(depfile, root_build_dir), | |
| 87 "--classpath-jars=$rebase_dependency_jars", | |
| 88 "--java-files=$rebase_java_files", | |
| 89 "--jar-path=$rebase_jar_path", | |
| 90 "--java-srcjars=$rebase_java_srcjars", | |
| 91 "--chromium-code=$chromium_code", | |
| 92 ] | |
| 93 } | |
| 94 | |
| 95 # TODO(cjhopman): proguard | |
| 96 | |
| 97 rebase_jar_toc_path = rebase_path(jar_toc_path) | |
| 98 action("${target_name}__jar_toc") { | |
| 99 script = "//build/android/gyp/jar_toc.py" | |
| 100 outputs = [jar_toc_path, jar_toc_path + ".md5.stamp"] | |
| 101 depfile = "$target_gen_dir/$target_name.d" | |
| 102 source_prereqs = [jar_path] | |
| 103 args = [ | |
| 104 "--depfile", rebase_path(depfile, root_build_dir), | |
| 105 "--jar-path=${rebase_jar_path}", | |
| 106 "--toc-path=${rebase_jar_toc_path}", | |
| 107 ] | |
| 108 } | |
| 109 | |
| 110 group(target_name) { | |
| 111 deps = [ | |
| 112 ":${target_name}__javac", | |
|
Nico
2014/05/05 22:17:51
Do you need this? __jar_toc already depends on it,
cjhopman
2014/06/25 01:20:04
I don't think gn is smart about this, but I would
| |
| 113 ":${target_name}__jar_toc", | |
| 114 ] + java_deps + srcjar_deps | |
| 115 } | |
| 116 } | |
| 117 | |
| 118 # This adds Android-specific parts to the java_library template. | |
| 119 # | |
| 120 # Runs Android lint against the compiled java files. | |
| 121 # Dexes the output jar for inclusion in an APK. | |
| 122 template("_android_java_library") { | |
| 123 if (defined(invoker.library_deps)) { | |
| 124 library_deps = invoker.library_deps + [] | |
| 125 } else { | |
| 126 library_deps = [] | |
| 127 } | |
| 128 | |
| 129 | |
| 130 assert(defined(invoker.java_files)) | |
| 131 | |
| 132 _java_library("${target_name}__java_library") { | |
| 133 if (defined(invoker.jar_path)) { | |
| 134 jar_path = invoker.jar_path | |
| 135 } | |
| 136 java_deps = library_deps | |
| 137 java_files = invoker.java_files | |
| 138 | |
| 139 if (defined(invoker.srcjar_deps)) { | |
| 140 srcjar_deps = invoker.srcjar_deps | |
| 141 } | |
| 142 } | |
| 143 | |
| 144 # TODO(cjhopman): lint | |
| 145 # TODO(cjhopman): dex | |
| 146 | |
| 147 group(target_name) { | |
| 148 deps = [ | |
| 149 ":${target_name}__java_library" | |
| 150 ] | |
| 151 } | |
| 152 } | |
| OLD | NEW |