blob: fc34132c0b02fa99c04cd572b1630c7725cc1d95 [file] [log] [blame]
David Warren5c40a482009-06-05 15:11:21 -07001page.title=Build Cookbook
2pdk.version=1.0
Gaurav Mathur6ff75722009-05-18 15:26:51 -07003@jd:body
4
David Warren5c40a482009-06-05 15:11:21 -07005<div id="qv-wrapper">
6<div id="qv">
7<h2>In this document</h2>
Gaurav Mathur6ff75722009-05-18 15:26:51 -07008<a name="toc"/>
David Warren5c40a482009-06-05 15:11:21 -07009<ul>
10<li><a href="#simpleAPK">Simple APK</a></li>
11<li><a href="#APKJar">APK Dependent on static .jar file</a></li>
12 <li><a href="#APKPlatform">APK signed with the platform key</a></li>
13 <li><a href="#APKVendor">APK that signed with vendor key</a></li>
14 <li><a href="#prebuiltAPK">Prebuilt APK</a></li>
15 <li><a href="#staticJava">Adding a Static Java Library</a></li>
16 <li><a href="#mkVars">Android.mk variables</a></li>
17</ul>
18</div>
19</div>
20
21
Gaurav Mathur6ff75722009-05-18 15:26:51 -070022<p>The Android Build Cookbook offers code snippets to help you quickly implement some common build tasks. For additional instruction, please see the other build documents in this section.</p>
David Warren5c40a482009-06-05 15:11:21 -070023<h3><a name="simpleAPK"></a>Building a simple APK</h3>
Gaurav Mathur6ff75722009-05-18 15:26:51 -070024<pre>
25 LOCAL_PATH := $(call my-dir)
26 include $(CLEAR_VARS)
27 &nbsp;
28 # Build all java files in the java subdirectory
29 LOCAL_SRC_FILES := $(call all-subdir-java-files)
30 &nbsp;
31 # Name of the APK to build
32 LOCAL_PACKAGE_NAME := LocalPackage
33 &nbsp;
34 # Tell it to build an APK
35 include $(BUILD_PACKAGE)
36</pre>
David Warren5c40a482009-06-05 15:11:21 -070037<h3><a name="APKJar"></a>Building a APK that depends on a static .jar file</h3>
Gaurav Mathur6ff75722009-05-18 15:26:51 -070038<pre>
39 LOCAL_PATH := $(call my-dir)
40 include $(CLEAR_VARS)
41 &nbsp;
42 # List of static libraries to include in the package
43 LOCAL_STATIC_JAVA_LIBRARIES := static-library
44 &nbsp;
45 # Build all java files in the java subdirectory
46 LOCAL_SRC_FILES := $(call all-subdir-java-files)
47 &nbsp;
48 # Name of the APK to build
49 LOCAL_PACKAGE_NAME := LocalPackage
50 &nbsp;
51 # Tell it to build an APK
52 include $(BUILD_PACKAGE)
53</pre>
David Warren5c40a482009-06-05 15:11:21 -070054<h3><a name="APKPlatform"></a>Building a APK that should be signed with the platform key</h3>
Gaurav Mathur6ff75722009-05-18 15:26:51 -070055<pre>
56 LOCAL_PATH := $(call my-dir)
57 include $(CLEAR_VARS)
58 &nbsp;
59 # Build all java files in the java subdirectory
60 LOCAL_SRC_FILES := $(call all-subdir-java-files)
61 &nbsp;
62 # Name of the APK to build
63 LOCAL_PACKAGE_NAME := LocalPackage
64 &nbsp;
65 LOCAL_CERTIFICATE := platform
66 &nbsp;
67 # Tell it to build an APK
68 include $(BUILD_PACKAGE)
69</pre>
David Warren5c40a482009-06-05 15:11:21 -070070<h3><a name="APKVendor"></a>Building a APK that should be signed with a specific vendor key</h3>
Gaurav Mathur6ff75722009-05-18 15:26:51 -070071<pre>
72 LOCAL_PATH := $(call my-dir)
73 include $(CLEAR_VARS)
74 &nbsp;
75 # Build all java files in the java subdirectory
76 LOCAL_SRC_FILES := $(call all-subdir-java-files)
77 &nbsp;
78 # Name of the APK to build
79 LOCAL_PACKAGE_NAME := LocalPackage
80 &nbsp;
81 LOCAL_CERTIFICATE := vendor/example/certs/app
82 &nbsp;
83 # Tell it to build an APK
84 include $(BUILD_PACKAGE)
85</pre>
David Warren5c40a482009-06-05 15:11:21 -070086<h3><a name="prebuiltAPK"></a>Adding a prebuilt APK</h3>
Gaurav Mathur6ff75722009-05-18 15:26:51 -070087<pre>
88 LOCAL_PATH := $(call my-dir)
89 include $(CLEAR_VARS)
90 &nbsp;
91 # Module name should match apk name to be installed.
92 LOCAL_MODULE := LocalModuleName
93 LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
94 LOCAL_MODULE_CLASS := APPS
95 LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
96 &nbsp;
97 include $(BUILD_PREBUILT)
98</pre>
David Warren5c40a482009-06-05 15:11:21 -070099<h3><a name="staticJava"></a>Adding a Static Java Library</h3>
Gaurav Mathur6ff75722009-05-18 15:26:51 -0700100<pre>
101 LOCAL_PATH := $(call my-dir)
102 include $(CLEAR_VARS)
103 &nbsp;
104 # Build all java files in the java subdirectory
105 LOCAL_SRC_FILES := $(call all-subdir-java-files)
106 &nbsp;
107 # Any libraries that this library depends on
108 LOCAL_JAVA_LIBRARIES := android.test.runner
109 &nbsp;
110 # The name of the jar file to create
111 LOCAL_MODULE := sample
112 &nbsp;
113 # Build a static jar file.
114 include $(BUILD_STATIC_JAVA_LIBRARY)
115</pre>
David Warren5c40a482009-06-05 15:11:21 -0700116<h3><a name="mkVars"></a>Android.mk Variables</h3>
Reena Leec91e5f12009-06-02 15:00:28 -0700117
118<p>These are the variables that you'll commonly see in Android.mk files, listed
119alphabetically. First, a note on the variable naming: </p>
120
121<ul>
122 <li><b>LOCAL_</b> - These variables are set per-module. They are cleared
123 by the <code>include $(CLEAR_VARS)</code> line, so you can rely on them
124 being empty after including that file. Most of the variables you'll use
125 in most modules are LOCAL_ variables.</li>
126 <li><b>PRIVATE_</b> - These variables are make-target-specific variables. That
127 means they're only usable within the commands for that module. It also
128 means that they're unlikely to change behind your back from modules that
129 are included after yours. This
130 <a href="http://www.gnu.org/software/make/manual/make.html#Target_002dspecific">link to the make documentation</a>
131 describes more about target-specific variables.
132 </li>
133 <li><b>HOST_</b> and <b>TARGET_</b> - These contain the directories
134 and definitions that are specific to either the host or the target builds.
135 Do not set variables that start with HOST_ or TARGET_ in your makefiles.
136 </li>
137 <li><b>BUILD_</b> and <b>CLEAR_VARS</b> - These contain the names of
138 well-defined template makefiles to include. Some examples are CLEAR_VARS
139 and BUILD_HOST_PACKAGE.</li>
140 <li>Any other name is fair-game for you to use in your Android.mk. However,
141 remember that this is a non-recursive build system, so it is possible that
142 your variable will be changed by another Android.mk included later, and be
143 different when the commands for your rule / module are executed.</li>
Gaurav Mathur6ff75722009-05-18 15:26:51 -0700144</ul>
Reena Leec91e5f12009-06-02 15:00:28 -0700145
146<table border=1 cellpadding=2 cellspacing=0>
147 <tbody><tr>
148 <th scope="col">Parameter</th>
149 <th scope="col">Description</th>
150 </tr>
151<tr>
152<td valign="top">LOCAL_AAPT_FLAGS</td>
153<td valign="top"></td>
154</tr>
155<tr>
156<td valign="top">LOCAL_ACP_UNAVAILABLE</td>
157<td valign="top"></td>
158</tr>
159<tr>
160<td valign="top">LOCAL_ADDITIONAL_JAVA_DIR</td>
161<td valign="top"></td>
162</tr>
163<tr>
164<td valign="top">LOCAL_AIDL_INCLUDES</td>
165<td valign="top"></td>
166</tr>
167<tr>
168<td valign="top">LOCAL_ALLOW_UNDEFINED_SYMBOLS</td>
169<td valign="top"></td>
170</tr>
171<tr>
172<td valign="top">LOCAL_ARM_MODE</td>
173<td valign="top"></td>
174</tr>
175<tr>
176<td valign="top">LOCAL_ASFLAGS</td>
177<td valign="top"></td>
178</tr>
179<tr>
180<td valign="top">LOCAL_ASSET_DIR</td>
181<td valign="top"></td>
182</tr>
183<tr>
184<td valign="top">LOCAL_ASSET_FILES</td>
185<td valign="top">In Android.mk files that <code>include $(BUILD_PACKAGE)</code> set this
186to the set of files you want built into your app. Usually:</p>
187<p><code>LOCAL_ASSET_FILES += $(call find-subdir-assets)</code></td>
188</tr>
189<tr>
190<td valign="top">LOCAL_BUILT_MODULE_STEM</td>
191<td valign="top"></td>
192</tr>
193<tr>
194<td valign="top">LOCAL_C_INCLUDES</td>
195<td valign="top"><p>Additional directories to instruct the C/C++ compilers to look for header
196files in. These paths are rooted at the top of the tree. Use
197<code>LOCAL_PATH</code> if you have subdirectories of your own that you
198want in the include paths. For example:</p>
199<p><code>
200LOCAL_C_INCLUDES += extlibs/zlib-1.2.3<br/>
201LOCAL_C_INCLUDES += $(LOCAL_PATH)/src
202</code></p>
203<p>You should not add subdirectories of include to
204<code>LOCAL_C_INCLUDES</code>, instead you should reference those files
205in the <code>#include</code> statement with their subdirectories. For
206example:</p>
207<p><code>#include &lt;utils/KeyedVector.h&gt;</code><br/>
208not <code><s>#include &lt;KeyedVector.h&gt;</s></code></p> </td>
209</tr>
210<tr>
211<td valign="top">LOCAL_CC</td>
212<td valign="top">If you want to use a different C compiler for this module, set LOCAL_CC
213to the path to the compiler. If LOCAL_CC is blank, the appropriate default
214compiler is used.</td>
215</tr>
216<tr>
217<td valign="top">LOCAL_CERTIFICATE</td>
218<td valign="top"></td>
219</tr>
220<tr>
221<td valign="top">LOCAL_CFLAGS</td>
222<td valign="top">If you have additional flags to pass into the C or C++ compiler, add
223them here. For example:</p>
224<p><code>LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1</code></td>
225</tr>
226<tr>
227<td valign="top">LOCAL_CLASSPATH</td>
228<td valign="top"></td>
229</tr>
230<tr>
231<td valign="top">LOCAL_COMPRESS_MODULE_SYMBOLS</td>
232<td valign="top"></td>
233</tr>
234<tr>
235<td valign="top">LOCAL_COPY_HEADERS</td>
236<td valign="top"><p>The set of files to copy to the install include tree. You must also
237supply <code>LOCAL_COPY_HEADERS_TO</code>.</p>
238<p>This is going away because copying headers messes up the error messages, and
239may lead to people editing those headers instead of the correct ones. It also
240makes it easier to do bad layering in the system, which we want to avoid. We
241also aren't doing a C/C++ SDK, so there is no ultimate requirement to copy any
242headers.</p></td>
243</tr>
244<tr>
245<td valign="top">LOCAL_COPY_HEADERS_TO</td>
246<td valign="top"><p>The directory within "include" to copy the headers listed in
247<code>LOCAL_COPY_HEADERS</code> to.</p>
248<p>This is going away because copying headers messes up the error messages, and
249may lead to people editing those headers instead of the correct ones. It also
250makes it easier to do bad layering in the system, which we want to avoid. We
251also aren't doing a C/C++ SDK, so there is no ultimate requirement to copy any
252headers.</p></td>
253</tr>
254<tr>
255<td valign="top">LOCAL_CPP_EXTENSION</td>
256<td valign="top">If your C++ files end in something other than "<code>.cpp</code>",
257you can specify the custom extension here. For example:
258<p><code>LOCAL_CPP_EXTENSION := .cc</code></p>
259Note that all C++ files for a given module must have the same
260extension; it is not currently possible to mix different extensions.</td>
261</tr>
262<tr>
263<td valign="top">LOCAL_CPPFLAGS</td>
264<td valign="top">If you have additional flags to pass into <i>only</i> the C++ compiler, add
265them here. For example:</p>
266<p><code>LOCAL_CPPFLAGS += -ffriend-injection</code></p>
267<code>LOCAL_CPPFLAGS</code> is guaranteed to be after <code>LOCAL_CFLAGS</code>
268on the compile line, so you can use it to override flags listed in
269<code>LOCAL_CFLAGS</code></td>
270</tr>
271<tr>
272<td valign="top">LOCAL_CXX</td>
273<td valign="top">If you want to use a different C++ compiler for this module, set LOCAL_CXX
274to the path to the compiler. If LOCAL_CXX is blank, the appropriate default
275compiler is used.</td>
276</tr>
277<tr>
278<td valign="top">LOCAL_DX_FLAGS</td>
279<td valign="top"></td>
280</tr>
281<tr>
282<td valign="top">LOCAL_EXPORT_PACKAGE_RESOURCES</td>
283<td valign="top"></td>
284</tr>
285<tr>
286<td valign="top">LOCAL_FORCE_STATIC_EXECUTABLE</td>
287<td valign="top"><p>If your executable should be linked statically, set
288<code>LOCAL_FORCE_STATIC_EXECUTABLE:=true</code>. There is a very short
289list of libraries that we have in static form (currently only libc). This is
290really only used for executables in /sbin on the root filesystem.</p> </td>
291</tr>
292<tr>
293<td valign="top">LOCAL_GENERATED_SOURCES</td>
294<td valign="top"><p>Files that you add to <code>LOCAL_GENERATED_SOURCES</code> will be
295automatically generated and then linked in when your module is built.
296See the <a href="#custom-tools">Custom Tools</a> template makefile for an
297example.</p> </td>
298</tr>
299<tr>
300<td valign="top">LOCAL_INSTRUMENTATION_FOR</td>
301<td valign="top"></td>
302</tr>
303<tr>
304<td valign="top">LOCAL_INSTRUMENTATION_FOR_PACKAGE_NAME</td>
305<td valign="top"></td>
306</tr>
307<tr>
308<td valign="top">LOCAL_INTERMEDIATE_SOURCES</td>
309<td valign="top"></td>
310</tr>
311<tr>
312<td valign="top">LOCAL_INTERMEDIATE_TARGETS</td>
313<td valign="top"></td>
314</tr>
315<tr>
316<td valign="top">LOCAL_IS_HOST_MODULE</td>
317<td valign="top"></td>
318</tr>
319<tr>
320<td valign="top">LOCAL_JAR_MANIFEST</td>
321<td valign="top"></td>
322</tr>
323<tr>
324<td valign="top">LOCAL_JARJAR_RULES</td>
325<td valign="top"></td>
326</tr>
327<tr>
328<td valign="top">LOCAL_JAVA_LIBRARIES</td>
329<td valign="top"><p>When linking Java apps and libraries, <code>LOCAL_JAVA_LIBRARIES</code>
330specifies which sets of java classes to include. Currently there are
331two of these: <code>core</code> and <code>framework</code>.
332In most cases, it will look like this:</p>
333<p><code>LOCAL_JAVA_LIBRARIES := core framework</code></p>
334<p>Note that setting <code>LOCAL_JAVA_LIBRARIES</code> is not necessary
335(and is not allowed) when building an APK with
336"<code>include $(BUILD_PACKAGE)</code>". The appropriate libraries
337will be included automatically.</p> </td>
338</tr>
339<tr>
340<td valign="top">LOCAL_JAVA_RESOURCE_DIRS</td>
341<td valign="top"></td>
342</tr>
343<tr>
344<td valign="top">LOCAL_JAVA_RESOURCE_FILES</td>
345<td valign="top"></td>
346</tr>
347<tr>
348<td valign="top">LOCAL_JNI_SHARED_LIBRARIES</td>
349<td valign="top"></td>
350</tr>
351<tr>
352<td valign="top">LOCAL_LDFLAGS</td>
353<td valign="top"><p>You can pass additional flags to the linker by setting
354<code>LOCAL_LDFLAGS</code>. Keep in mind that the order of parameters is
355very important to ld, so test whatever you do on all platforms.</p> </td>
356</tr>
357<tr>
358<td valign="top">LOCAL_LDLIBS</td>
359<td valign="top"><p><code>LOCAL_LDLIBS</code> allows you to specify additional libraries
360that are not part of the build for your executable or library. Specify
361the libraries you want in -lxxx format; they're passed directly to the
362link line. However, keep in mind that there will be no dependency generated
363for these libraries. It's most useful in simulator builds where you want
364to use a library preinstalled on the host. The linker (ld) is a particularly
365fussy beast, so it's sometimes necessary to pass other flags here if you're
366doing something sneaky. Some examples:</p>
367<p><code>LOCAL_LDLIBS += -lcurses -lpthread<br/>
368LOCAL_LDLIBS += -Wl,-z,origin
369</code></p> </td>
370</tr>
371<tr>
372<td valign="top">LOCAL_MODULE</td>
373<td valign="top"><code>LOCAL_MODULE</code> is the name of what's supposed to be generated
374from your Android.mk. For exmample, for libkjs, the <code>LOCAL_MODULE</code>
375is "libkjs" (the build system adds the appropriate suffix -- .so .dylib .dll).
376For app modules, use <code>LOCAL_PACKAGE_NAME</code> instead of
377<code>LOCAL_MODULE</code>. </td>
378</tr>
379<tr>
380<td valign="top">LOCAL_MODULE_PATH</td>
381<td valign="top">Instructs the build system to put the module somewhere other than what's
382normal for its type. If you override this, make sure you also set
383<code>LOCAL_UNSTRIPPED_PATH</code> if it's an executable or a shared library
384so the unstripped binary has somewhere to go. An error will occur if you forget
385to.</p>
386<p>See <a href="#moving-modules">Putting modules elsewhere</a> for more.</td>
387</tr>
388<tr>
389<td valign="top">LOCAL_MODULE_STEM</td>
390<td valign="top"></td>
391</tr>
392<tr>
393<td valign="top">LOCAL_MODULE_TAGS</td>
394<td valign="top"><p>Set <code>LOCAL_MODULE_TAGS</code> to any number of whitespace-separated
395tags. <p>This variable controls what build flavors the package gets included in. For example:</p>
396<ul type="disc">
397 <li><code>user</code>: include this in user/userdebug builds</li>
398 <li><code>eng</code>: include this in eng builds</li>
399 <li><code>tests</code>: the target is a testing target and makes it available for tests</li>
400 <li><code>optional</code>: don't include this</li>
401</ul></td>
402</tr>
403<tr>
404<td valign="top">LOCAL_NO_DEFAULT_COMPILER_FLAGS</td>
405<td valign="top"></td>
406</tr>
407<tr>
408<td valign="top">LOCAL_NO_EMMA_COMPILE</td>
409<td valign="top"></td>
410</tr>
411<tr>
412<td valign="top">LOCAL_NO_EMMA_INSTRUMENT</td>
413<td valign="top"></td>
414</tr>
415<tr>
416<td valign="top">LOCAL_NO_STANDARD_LIBRARIES</td>
417<td valign="top"></td>
418</tr>
419<tr>
420<td valign="top">LOCAL_OVERRIDES_PACKAGES</td>
421<td valign="top"></td>
422</tr>
423<tr>
424<td valign="top">LOCAL_PACKAGE_NAME</td>
425<td valign="top"><code>LOCAL_PACKAGE_NAME</code> is the name of an app. For example,
426Dialer, Contacts, etc. </td>
427</tr>
428<tr>
429<td valign="top">LOCAL_POST_PROCESS_COMMAND</td>
430<td valign="top"><p>For host executables, you can specify a command to run on the module
431after it's been linked. You might have to go through some contortions
432to get variables right because of early or late variable evaluation:</p>
433<p><code>module := $(HOST_OUT_EXECUTABLES)/$(LOCAL_MODULE)<br/>
434LOCAL_POST_PROCESS_COMMAND := /Developer/Tools/Rez -d __DARWIN__ -t APPL\<br/>
435&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-d __WXMAC__ -o $(module) Carbon.r
436</code></p>
437 </td>
438</tr>
439<tr>
440<td valign="top">LOCAL_PREBUILT_EXECUTABLES</td>
441<td valign="top">When including $(BUILD_PREBUILT) or $(BUILD_HOST_PREBUILT), set these to
442executables that you want copied. They're located automatically into the
443right bin directory.</td>
444</tr>
445<tr>
446<td valign="top">LOCAL_PREBUILT_JAVA_LIBRARIES</td>
447<td valign="top"></td>
448</tr>
449<tr>
450<td valign="top">LOCAL_PREBUILT_LIBS</td>
451<td valign="top">When including $(BUILD_PREBUILT) or $(BUILD_HOST_PREBUILT), set these to
452libraries that you want copied. They're located automatically into the
453right lib directory.</td>
454</tr>
455<tr>
456<td valign="top">LOCAL_PREBUILT_OBJ_FILES</td>
457<td valign="top"></td>
458</tr>
459<tr>
460<td valign="top">LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES</td>
461<td valign="top"></td>
462</tr>
463<tr>
464<td valign="top">LOCAL_PRELINK_MODULE</td>
465<td valign="top"></td>
466</tr>
467<tr>
468<td valign="top">LOCAL_REQUIRED_MODULES</td>
469<td valign="top"><p>Set <code>LOCAL_REQUIRED_MODULES</code> to any number of whitespace-separated
470module names, like "libblah" or "Email". If this module is installed, all
471of the modules that it requires will be installed as well. This can be
472used to, e.g., ensure that necessary shared libraries or providers are
473installed when a given app is installed.</td>
474</tr>
475<tr>
476<td valign="top">LOCAL_RESOURCE_DIR</td>
477<td valign="top"></td>
478</tr>
479<tr>
480<td valign="top">LOCAL_SDK_VERSION</td>
481<td valign="top"></td>
482</tr>
483<tr>
484<td valign="top">LOCAL_SHARED_LIBRARIES</td>
485<td valign="top">These are the libraries you directly link against. You don't need to
486pass transitively included libraries. Specify the name without the suffix:</p>
487<p><code>LOCAL_SHARED_LIBRARIES := \<br/>
488 &nbsp;&nbsp;&nbsp;&nbsp;libutils \<br/>
489 &nbsp;&nbsp;&nbsp;&nbsp;libui \<br/>
490 &nbsp;&nbsp;&nbsp;&nbsp;libaudio \<br/>
491 &nbsp;&nbsp;&nbsp;&nbsp;libexpat \<br/>
492 &nbsp;&nbsp;&nbsp;&nbsp;libsgl
493</code></td>
494</tr>
495<tr>
496<td valign="top">LOCAL_SRC_FILES</td>
497<td valign="top">The build system looks at <code>LOCAL_SRC_FILES</code> to know what source
498files to compile -- .cpp .c .y .l .java. For lex and yacc files, it knows
499how to correctly do the intermediate .h and .c/.cpp files automatically. If
500the files are in a subdirectory of the one containing the Android.mk, prefix
501them with the directory name:</p>
502<p><code>LOCAL_SRC_FILES := \<br/>
503 &nbsp;&nbsp;&nbsp;&nbsp;file1.cpp \<br/>
504 &nbsp;&nbsp;&nbsp;&nbsp;dir/file2.cpp
505</code></td>
506</tr>
507<tr>
508<td valign="top">LOCAL_STATIC_JAVA_LIBRARIES</td>
509<td valign="top"></td>
510</tr>
511<tr>
512<td valign="top">LOCAL_STATIC_LIBRARIES</td>
513<td valign="top">These are the static libraries that you want to include in your module.
514Mostly, we use shared libraries, but there are a couple of places, like
515executables in sbin and host executables where we use static libraries instead.
516<p><code>LOCAL_STATIC_LIBRARIES := \<br/>
517 &nbsp;&nbsp;&nbsp;&nbsp;libutils \<br/>
518 &nbsp;&nbsp;&nbsp;&nbsp;libtinyxml
519</code></td>
520</tr>
521<tr>
522<td valign="top">LOCAL_UNINSTALLABLE_MODULE</td>
523<td valign="top"></td>
524</tr>
525<tr>
526<td valign="top">LOCAL_UNSTRIPPED_PATH</td>
527<td valign="top">Instructs the build system to put the unstripped version of the module
528somewhere other than what's normal for its type. Usually, you override this
529because you overrode <code>LOCAL_MODULE_PATH</code> for an executable or a
530shared library. If you overrode <code>LOCAL_MODULE_PATH</code>, but not
531<code>LOCAL_UNSTRIPPED_PATH</code>, an error will occur.</p>
532<p>See <a href="#moving-modules">Putting modules elsewhere</a> for more.</td>
533</tr>
534<tr>
535<td valign="top">LOCAL_WHOLE_STATIC_LIBRARIES</td>
536<td valign="top">These are the static libraries that you want to include in your module without allowing
537the linker to remove dead code from them. This is mostly useful if you want to add a static library
538to a shared library and have the static library's content exposed from the shared library.
539<p><code>LOCAL_WHOLE_STATIC_LIBRARIES := \<br/>
540 &nbsp;&nbsp;&nbsp;&nbsp;libsqlite3_android<br/>
541</code></td>
542</tr>
543<tr>
544<td valign="top">LOCAL_YACCFLAGS</td>
545<td valign="top">Any flags to pass to invocations of yacc for your module. A known limitation
546here is that the flags will be the same for all invocations of YACC for your
547module. This can be fixed. If you ever need it to be, just ask.</p>
548<p><code>LOCAL_YACCFLAGS := -p kjsyy</code></td>
549</tr>
550<tr>
551<td valign="top">OVERRIDE_BUILT_MODULE_PATH</td>
552<td valign="top"></td>
553</tr>
554
555</table>