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