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

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

Issue 269943005: Add android_library template (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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 | Annotate | Revision Log
OLDNEW
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698