merge from open-source master
[android-sdk/platform-bionic.git] / libc / Android.mk
1 LOCAL_PATH:= $(call my-dir)
3 include $(LOCAL_PATH)/arch-$(TARGET_ARCH)/syscalls.mk
5 # Define the common source files for all the libc instances
6 # =========================================================
7 libc_common_src_files := \
8         $(syscall_src) \
9         unistd/abort.c \
10         unistd/alarm.c \
11         unistd/brk.c \
12         unistd/creat.c \
13         unistd/daemon.c \
14         unistd/exec.c \
15         unistd/fcntl.c \
16         unistd/fnmatch.c \
17         unistd/ftime.c \
18         unistd/ftok.c \
19         unistd/getcwd.c \
20         unistd/getdtablesize.c \
21         unistd/gethostname.c \
22         unistd/getopt_long.c \
23         unistd/getpgrp.c \
24         unistd/getpriority.c \
25         unistd/getpt.c \
26         unistd/initgroups.c \
27         unistd/isatty.c \
28         unistd/issetugid.c \
29         unistd/killpg.c \
30         unistd/lseek64.c \
31         unistd/mmap.c \
32         unistd/nice.c \
33         unistd/open.c \
34         unistd/openat.c \
35         unistd/opendir.c \
36         unistd/pathconf.c \
37         unistd/perror.c \
38         unistd/popen.c \
39         unistd/pread.c \
40         unistd/pselect.c \
41         unistd/ptsname.c \
42         unistd/ptsname_r.c \
43         unistd/pwrite.c \
44         unistd/raise.c \
45         unistd/reboot.c \
46         unistd/recv.c \
47         unistd/sbrk.c \
48         unistd/send.c \
49         unistd/setegid.c \
50         unistd/setuid.c \
51         unistd/seteuid.c \
52         unistd/setreuid.c \
53         unistd/setresuid.c \
54         unistd/setpgrp.c \
55         unistd/sigblock.c \
56         unistd/siginterrupt.c \
57         unistd/siglist.c \
58         unistd/signal.c \
59         unistd/signame.c \
60         unistd/sigsetmask.c \
61         unistd/sigsuspend.c \
62         unistd/sigwait.c \
63         unistd/sleep.c \
64         unistd/statfs.c \
65         unistd/strsignal.c \
66         unistd/sysconf.c \
67         unistd/syslog.c \
68         unistd/system.c \
69         unistd/tcgetpgrp.c \
70         unistd/tcsetpgrp.c \
71         unistd/time.c \
72         unistd/umount.c \
73         unistd/unlockpt.c \
74         unistd/usleep.c \
75         unistd/wait.c \
76         stdio/asprintf.c \
77         stdio/clrerr.c \
78         stdio/fclose.c \
79         stdio/fdopen.c \
80         stdio/feof.c \
81         stdio/ferror.c \
82         stdio/fflush.c \
83         stdio/fgetc.c \
84         stdio/fgetln.c \
85         stdio/fgetpos.c \
86         stdio/fgets.c \
87         stdio/fileno.c \
88         stdio/findfp.c \
89         stdio/flags.c \
90         stdio/flockfile.c \
91         stdio/fopen.c \
92         stdio/fprintf.c \
93         stdio/fpurge.c \
94         stdio/fputc.c \
95         stdio/fputs.c \
96         stdio/fread.c \
97         stdio/freopen.c \
98         stdio/fscanf.c \
99         stdio/fseek.c \
100         stdio/fsetpos.c \
101         stdio/ftell.c \
102         stdio/funopen.c \
103         stdio/fvwrite.c \
104         stdio/fwalk.c \
105         stdio/fwrite.c \
106         stdio/getc.c \
107         stdio/getchar.c \
108         stdio/gets.c \
109         stdio/makebuf.c \
110         stdio/mktemp.c \
111         stdio/printf.c \
112         stdio/putc.c \
113         stdio/putchar.c \
114         stdio/puts.c \
115         stdio/putw.c \
116         stdio/refill.c \
117         stdio/remove.c \
118         stdio/rewind.c \
119         stdio/rget.c \
120         stdio/scanf.c \
121         stdio/setbuf.c \
122         stdio/setbuffer.c \
123         stdio/setvbuf.c \
124         stdio/snprintf.c\
125         stdio/sprintf.c \
126         stdio/sscanf.c \
127         stdio/stdio.c \
128         stdio/tempnam.c \
129         stdio/tmpfile.c \
130         stdio/tmpnam.c \
131         stdio/ungetc.c \
132         stdio/vasprintf.c \
133         stdio/vfprintf.c \
134         stdio/vfscanf.c \
135         stdio/vprintf.c \
136         stdio/vsnprintf.c \
137         stdio/vsprintf.c \
138         stdio/vscanf.c \
139         stdio/vsscanf.c \
140         stdio/wbuf.c \
141         stdio/wsetup.c \
142         stdlib/_rand48.c \
143         stdlib/assert.c \
144         stdlib/atexit.c \
145         stdlib/atoi.c \
146         stdlib/atol.c \
147         stdlib/atoll.c \
148         stdlib/bsearch.c \
149         stdlib/ctype_.c \
150         stdlib/div.c \
151         stdlib/exit.c \
152         stdlib/getenv.c \
153         stdlib/jrand48.c \
154         stdlib/ldiv.c \
155         stdlib/lldiv.c \
156         stdlib/locale.c \
157         stdlib/lrand48.c \
158         stdlib/mrand48.c \
159         stdlib/nrand48.c \
160         stdlib/putenv.c \
161         stdlib/qsort.c \
162         stdlib/seed48.c \
163         stdlib/setenv.c \
164         stdlib/setjmperr.c \
165         stdlib/srand48.c \
166         stdlib/strntoimax.c \
167         stdlib/strntoumax.c \
168         stdlib/strtod.c \
169         stdlib/strtoimax.c \
170         stdlib/strtol.c \
171         stdlib/strtoll.c \
172         stdlib/strtoul.c \
173         stdlib/strtoull.c \
174         stdlib/strtoumax.c \
175         stdlib/tolower_.c \
176         stdlib/toupper_.c \
177         stdlib/wchar.c \
178         string/index.c \
179         string/memccpy.c \
180         string/memchr.c \
181         string/memmem.c \
182         string/memrchr.c \
183         string/memswap.c \
184         string/strcasecmp.c \
185         string/strcasestr.c \
186         string/strcat.c \
187         string/strchr.c \
188         string/strcoll.c \
189         string/strcpy.c \
190         string/strcspn.c \
191         string/strdup.c \
192         string/strerror.c \
193         string/strerror_r.c \
194         string/strlcat.c \
195         string/strlcpy.c \
196         string/strncat.c \
197         string/strncpy.c \
198         string/strndup.c \
199         string/strnlen.c \
200         string/strpbrk.c \
201         string/strrchr.c \
202         string/strsep.c \
203         string/strspn.c \
204         string/strstr.c \
205         string/strtok.c \
206         string/strtotimeval.c \
207         string/strxfrm.c \
208         inet/bindresvport.c \
209         inet/inet_addr.c \
210         inet/inet_aton.c \
211         inet/inet_ntoa.c \
212         inet/inet_ntop.c \
213         inet/inet_pton.c \
214         tzcode/asctime.c \
215         tzcode/difftime.c \
216         tzcode/localtime.c \
217         tzcode/strftime.c \
218         tzcode/strptime.c \
219         bionic/__errno.c \
220         bionic/__set_errno.c \
221         bionic/_rand48.c \
222         bionic/cpuacct.c \
223         bionic/arc4random.c \
224         bionic/basename.c \
225         bionic/basename_r.c \
226         bionic/clearenv.c \
227         bionic/dirname.c \
228         bionic/dirname_r.c \
229         bionic/drand48.c \
230         bionic/erand48.c \
231         bionic/err.c \
232         bionic/fdprintf.c \
233         bionic/fork.c \
234         bionic/fts.c \
235         bionic/if_nametoindex.c \
236         bionic/if_indextoname.c \
237         bionic/ioctl.c \
238         bionic/ldexp.c \
239         bionic/libc_init_common.c \
240         bionic/logd_write.c \
241         bionic/md5.c \
242         bionic/pututline.c \
243         bionic/realpath.c \
244         bionic/semaphore.c \
245         bionic/sha1.c \
246         bionic/ssp.c \
247         bionic/stubs.c \
248         bionic/system_properties.c \
249         bionic/time64.c \
250         bionic/thread_atexit.c \
251         bionic/utime.c \
252         bionic/utmp.c \
253         netbsd/gethnamaddr.c \
254         netbsd/isc/ev_timers.c \
255         netbsd/isc/ev_streams.c \
256         netbsd/inet/nsap_addr.c \
257         netbsd/resolv/__dn_comp.c \
258         netbsd/resolv/__res_close.c \
259         netbsd/resolv/__res_send.c \
260         netbsd/resolv/herror.c \
261         netbsd/resolv/res_comp.c \
262         netbsd/resolv/res_data.c \
263         netbsd/resolv/res_debug.c \
264         netbsd/resolv/res_init.c \
265         netbsd/resolv/res_mkquery.c \
266         netbsd/resolv/res_query.c \
267         netbsd/resolv/res_send.c \
268         netbsd/resolv/res_state.c \
269         netbsd/resolv/res_cache.c \
270         netbsd/net/nsdispatch.c \
271         netbsd/net/getaddrinfo.c \
272         netbsd/net/getnameinfo.c \
273         netbsd/net/getservbyname.c \
274         netbsd/net/getservent.c \
275         netbsd/net/base64.c \
276         netbsd/net/getservbyport.c \
277         netbsd/nameser/ns_name.c \
278         netbsd/nameser/ns_parse.c \
279         netbsd/nameser/ns_ttl.c \
280         netbsd/nameser/ns_netint.c \
281         netbsd/nameser/ns_print.c \
282         netbsd/nameser/ns_samedomain.c \
283         regex/regcomp.c \
284         regex/regerror.c \
285         regex/regexec.c \
286         regex/regfree.c \
288 # Architecture specific source files go here
289 # =========================================================
290 ifeq ($(TARGET_ARCH),arm)
291 libc_common_src_files += \
292         bionic/eabi.c \
293         bionic/bionic_clone.c \
294         arch-arm/bionic/__get_pc.S \
295         arch-arm/bionic/__get_sp.S \
296         arch-arm/bionic/_exit_with_stack_teardown.S \
297         arch-arm/bionic/_setjmp.S \
298         arch-arm/bionic/atomics_arm.S \
299         arch-arm/bionic/clone.S \
300         arch-arm/bionic/ffs.S \
301         arch-arm/bionic/kill.S \
302         arch-arm/bionic/libgcc_compat.c \
303         arch-arm/bionic/tkill.S \
304         arch-arm/bionic/memcmp.S \
305         arch-arm/bionic/memcmp16.S \
306         arch-arm/bionic/memcpy.S \
307         arch-arm/bionic/memset.S \
308         arch-arm/bionic/setjmp.S \
309         arch-arm/bionic/sigsetjmp.S \
310         arch-arm/bionic/strlen.c.arm \
311         arch-arm/bionic/syscall.S \
312         string/memmove.c.arm \
313         string/bcopy.c \
314         string/strcmp.c \
315         string/strncmp.c \
316         unistd/socketcalls.c
318 # These files need to be arm so that gdbserver
319 # can set breakpoints in them without messing
320 # up any thumb code.
321 libc_common_src_files += \
322         bionic/pthread.c.arm \
323         bionic/pthread-timers.c.arm \
324         bionic/ptrace.c.arm
326 # these are used by the static and dynamic versions of the libc
327 # respectively
328 libc_arch_static_src_files := \
329         arch-arm/bionic/exidx_static.c
331 libc_arch_dynamic_src_files := \
332         arch-arm/bionic/exidx_dynamic.c
333 else # !arm
335 ifeq ($(TARGET_ARCH),x86)
336 libc_common_src_files += \
337         arch-x86/bionic/__get_sp.S \
338         arch-x86/bionic/__get_tls.c \
339         arch-x86/bionic/__set_tls.c \
340         arch-x86/bionic/atomics_x86.S \
341         arch-x86/bionic/clone.S \
342         arch-x86/bionic/_exit_with_stack_teardown.S \
343         arch-x86/bionic/setjmp.S \
344         arch-x86/bionic/_setjmp.S \
345         arch-x86/bionic/vfork.S \
346         arch-x86/bionic/syscall.S \
347         arch-x86/string/bcopy_wrapper.S \
348         arch-x86/string/memcpy_wrapper.S \
349         arch-x86/string/memmove_wrapper.S \
350         arch-x86/string/bzero_wrapper.S \
351         arch-x86/string/memcmp_wrapper.S \
352         arch-x86/string/memset_wrapper.S \
353         arch-x86/string/strcmp_wrapper.S \
354         arch-x86/string/strncmp_wrapper.S \
355         arch-x86/string/strlen.S \
356         bionic/pthread.c \
357         bionic/pthread-timers.c \
358         bionic/ptrace.c
360 # this is needed for static versions of libc
361 libc_arch_static_src_files := \
362         arch-x86/bionic/dl_iterate_phdr_static.c
364 libc_arch_dynamic_src_files :=
365 else # !x86
367 ifeq ($(TARGET_ARCH),sh)
368 libc_common_src_files += \
369         arch-sh/bionic/__get_pc.S \
370         arch-sh/bionic/__get_sp.S \
371         arch-sh/bionic/_exit_with_stack_teardown.S \
372         arch-sh/bionic/_setjmp.S \
373         arch-sh/bionic/atomics_sh.c \
374         arch-sh/bionic/atomic_cmpxchg.S \
375         arch-sh/bionic/clone.S \
376         arch-sh/bionic/pipe.S \
377         arch-sh/bionic/memcpy.S \
378         arch-sh/bionic/memset.S \
379         arch-sh/bionic/bzero.S \
380         arch-sh/bionic/setjmp.S \
381         arch-sh/bionic/sigsetjmp.S \
382         arch-sh/bionic/syscall.S \
383         arch-sh/bionic/memmove.S \
384         arch-sh/bionic/__set_tls.c \
385         arch-sh/bionic/__get_tls.c \
386         arch-sh/bionic/ffs.S \
387         string/bcopy.c \
388         string/strcmp.c \
389         string/strncmp.c \
390         string/memcmp.c \
391         string/strlen.c \
392         bionic/eabi.c \
393         bionic/pthread.c \
394         bionic/pthread-timers.c \
395         bionic/ptrace.c \
396         unistd/socketcalls.c
397 endif # sh
399 endif # !x86
400 endif # !arm
402 # Define some common cflags
403 # ========================================================
404 libc_common_cflags := \
405                 -DWITH_ERRLIST                  \
406                 -DANDROID_CHANGES               \
407                 -DUSE_LOCKS                     \
408                 -DREALLOC_ZERO_BYTES_FREES      \
409                 -D_LIBC=1                       \
410                 -DSOFTFLOAT                     \
411                 -DFLOATING_POINT                \
412                 -DNEED_PSELECT=1                \
413                 -DINET6 \
414                 -I$(LOCAL_PATH)/private \
415                 -DUSE_DL_PREFIX \
416                 -DPOSIX_MISTAKE
418 # these macro definitions are required to implement the
419 # 'timezone' and 'daylight' global variables, as well as
420 # properly update the 'tm_gmtoff' field in 'struct tm'.
422 libc_common_cflags += \
423     -DTM_GMTOFF=tm_gmtoff \
424     -DUSG_COMPAT=1
426 ifeq ($(strip $(DEBUG_BIONIC_LIBC)),true)
427   libc_common_cflags += -DDEBUG
428 endif
430 ifeq ($(TARGET_ARCH),arm)
431   libc_common_cflags += -fstrict-aliasing
432   libc_crt_target_cflags := -mthumb-interwork
433   #
434   # Define HAVE_ARM_TLS_REGISTER macro to indicate to the C library
435   # that it should access the hardware TLS register directly in
436   # private/bionic_tls.h
437   #
438   # The value must match your kernel configuration
439   #
440   ifeq ($(ARCH_ARM_HAVE_TLS_REGISTER),true)
441     libc_common_cflags += -DHAVE_ARM_TLS_REGISTER
442   endif
443 else # !arm
444   ifeq ($(TARGET_ARCH),x86)
445     libc_crt_target_cflags := -m32
447     # Enable recent IA friendly memory routines (such as for Atom)
448     # These will not work on the earlier x86 machines
449     libc_common_cflags += -mtune=i686 -DUSE_SSSE3 -DUSE_SSE2
450   endif # x86
451 endif # !arm
453 # Define some common includes
454 # ========================================================
455 libc_common_c_includes := \
456                 $(LOCAL_PATH)/stdlib  \
457                 $(LOCAL_PATH)/string  \
458                 $(LOCAL_PATH)/stdio
461 # Define the libc run-time (crt) support object files that must be built,
462 # which are needed to build all other objects (shared/static libs and
463 # executables)
464 # ==========================================================================
466 ifeq ($(TARGET_ARCH),x86)
467 # we only need begin_so/end_so for x86, since it needs an appropriate .init
468 # section in the shared library with a function to call all the entries in
469 # .ctors section. ARM uses init_array, and does not need the function.
470 GEN := $(TARGET_OUT_STATIC_LIBRARIES)/crtbegin_so.o
471 $(GEN): $(LOCAL_PATH)/arch-$(TARGET_ARCH)/bionic/crtbegin_so.S
472         @mkdir -p $(dir $@)
473         $(TARGET_CC) $(libc_crt_target_cflags) -o $@ -c $<
474 ALL_GENERATED_SOURCES += $(GEN)
476 GEN := $(TARGET_OUT_STATIC_LIBRARIES)/crtend_so.o
477 $(GEN): $(LOCAL_PATH)/arch-$(TARGET_ARCH)/bionic/crtend_so.S
478         @mkdir -p $(dir $@)
479         $(TARGET_CC) $(libc_crt_target_cflags) -o $@ -c $<
480 ALL_GENERATED_SOURCES += $(GEN)
481 endif # TARGET_ARCH == x86
484 GEN := $(TARGET_OUT_STATIC_LIBRARIES)/crtbegin_static.o
485 $(GEN): $(LOCAL_PATH)/arch-$(TARGET_ARCH)/bionic/crtbegin_static.S
486         @mkdir -p $(dir $@)
487         $(TARGET_CC) $(libc_crt_target_cflags) -o $@ -c $<
488 ALL_GENERATED_SOURCES += $(GEN)
490 GEN := $(TARGET_OUT_STATIC_LIBRARIES)/crtbegin_dynamic.o
491 $(GEN): $(LOCAL_PATH)/arch-$(TARGET_ARCH)/bionic/crtbegin_dynamic.S
492         @mkdir -p $(dir $@)
493         $(TARGET_CC) $(libc_crt_target_cflags) -o $@ -c $<
494 ALL_GENERATED_SOURCES += $(GEN)
497 # We rename crtend.o to crtend_android.o to avoid a
498 # name clash between gcc and bionic.
499 GEN := $(TARGET_OUT_STATIC_LIBRARIES)/crtend_android.o
500 $(GEN): $(LOCAL_PATH)/arch-$(TARGET_ARCH)/bionic/crtend.S
501         @mkdir -p $(dir $@)
502         $(TARGET_CC) $(libc_crt_target_cflags) -o $@ -c $<
503 ALL_GENERATED_SOURCES += $(GEN)
506 # To enable malloc leak check for statically linked programs, add
507 # "WITH_MALLOC_CHECK_LIBC_A := true" to buildspec.mk
508 WITH_MALLOC_CHECK_LIBC_A := $(strip $(WITH_MALLOC_CHECK_LIBC_A))
510 # ========================================================
511 # libc_common.a
512 # ========================================================
513 include $(CLEAR_VARS)
515 LOCAL_SRC_FILES := $(libc_common_src_files)
516 LOCAL_CFLAGS := $(libc_common_cflags)
517 LOCAL_C_INCLUDES := $(libc_common_c_includes)
518 LOCAL_MODULE := libc_common
519 LOCAL_SYSTEM_SHARED_LIBRARIES :=
521 include $(BUILD_STATIC_LIBRARY)
524 # ========================================================
525 # libc_nomalloc.a
526 # ========================================================
528 # This is a version of the static C library that does not
529 # include malloc. It's useful in situations when calling
530 # the user wants to provide their own malloc implementation,
531 # or wants to explicitly disallow the use of the use of malloc,
532 # like the dynamic loader.
534 include $(CLEAR_VARS)
536 LOCAL_SRC_FILES := \
537         $(libc_arch_static_src_files) \
538         bionic/libc_init_static.c
540 LOCAL_C_INCLUDES := $(libc_common_c_includes)
541 LOCAL_CFLAGS := $(libc_common_cflags)
543 LOCAL_MODULE := libc_nomalloc
544 LOCAL_WHOLE_STATIC_LIBRARIES := libc_common
545 LOCAL_SYSTEM_SHARED_LIBRARIES :=
547 include $(BUILD_STATIC_LIBRARY)
550 # ========================================================
551 # libc.a
552 # ========================================================
553 include $(CLEAR_VARS)
555 LOCAL_SRC_FILES := \
556         $(libc_arch_static_src_files) \
557         bionic/dlmalloc.c \
558         bionic/malloc_debug_common.c \
559         bionic/libc_init_static.c
561 LOCAL_CFLAGS := $(libc_common_cflags) \
562                 -DLIBC_STATIC
563 LOCAL_C_INCLUDES := $(libc_common_c_includes)
564 LOCAL_MODULE := libc
565 LOCAL_WHOLE_STATIC_LIBRARIES := libc_common
566 LOCAL_SYSTEM_SHARED_LIBRARIES :=
568 include $(BUILD_STATIC_LIBRARY)
571 # ========================================================
572 # libc.so
573 # ========================================================
574 include $(CLEAR_VARS)
576 LOCAL_CFLAGS := $(libc_common_cflags)
577 LOCAL_C_INCLUDES := $(libc_common_c_includes)
579 LOCAL_SRC_FILES := \
580         $(libc_arch_dynamic_src_files) \
581         bionic/dlmalloc.c \
582         bionic/malloc_debug_common.c \
583         bionic/libc_init_dynamic.c
585 LOCAL_MODULE:= libc
587 # WARNING: The only library libc.so should depend on is libdl.so!  If you add other libraries,
588 # make sure to add -Wl,--exclude-libs=libgcc.a to the LOCAL_LDFLAGS for those libraries.  This
589 # ensures that symbols that are pulled into those new libraries from libgcc.a are not declared
590 # external; if that were the case, then libc would not pull those symbols from libgcc.a as it
591 # should, instead relying on the external symbols from the dependent libraries.  That would
592 # create an "cloaked" dependency on libgcc.a in libc though the libraries, which is not what
593 # you wanted!
595 LOCAL_SHARED_LIBRARIES := libdl
596 LOCAL_WHOLE_STATIC_LIBRARIES := libc_common
597 LOCAL_SYSTEM_SHARED_LIBRARIES :=
599 include $(BUILD_SHARED_LIBRARY)
602 # For all builds, except for the -user build we will enable memory
603 # allocation checking (including memory leaks, buffer overwrites, etc.)
604 # Note that all these checks are also controlled by env. settings
605 # that can enable, or disable specific checks. Note also that some of
606 # the checks are available only in emulator and are implemeted in
607 # libc_malloc_qemu_instrumented.so.
608 ifneq ($(TARGET_BUILD_VARIANT),user)
610 # ========================================================
611 # libc_malloc_debug_leak.so
612 # ========================================================
613 include $(CLEAR_VARS)
615 LOCAL_CFLAGS := \
616         $(libc_common_cflags) \
617         -DMALLOC_LEAK_CHECK
619 LOCAL_C_INCLUDES := $(libc_common_c_includes)
621 LOCAL_SRC_FILES := \
622         bionic/malloc_debug_leak.c
624 LOCAL_MODULE:= libc_malloc_debug_leak
626 LOCAL_SHARED_LIBRARIES := libc
627 LOCAL_WHOLE_STATIC_LIBRARIES := libc_common
628 LOCAL_SYSTEM_SHARED_LIBRARIES :=
629 # Don't prelink
630 LOCAL_PRELINK_MODULE := false
631 # Don't install on release build
632 LOCAL_MODULE_TAGS := eng debug
634 include $(BUILD_SHARED_LIBRARY)
637 # ========================================================
638 # libc_malloc_debug_qemu.so
639 # ========================================================
640 include $(CLEAR_VARS)
642 LOCAL_CFLAGS := \
643         $(libc_common_cflags) \
644         -DMALLOC_QEMU_INSTRUMENT
646 LOCAL_C_INCLUDES := $(libc_common_c_includes)
648 LOCAL_SRC_FILES := \
649         bionic/malloc_debug_qemu.c
651 LOCAL_MODULE:= libc_malloc_debug_qemu
653 LOCAL_SHARED_LIBRARIES := libc
654 LOCAL_WHOLE_STATIC_LIBRARIES := libc_common
655 LOCAL_SYSTEM_SHARED_LIBRARIES :=
656 # Don't prelink
657 LOCAL_PRELINK_MODULE := false
658 # Don't install on release build
659 LOCAL_MODULE_TAGS := eng debug
661 include $(BUILD_SHARED_LIBRARY)
663 endif   #!user
666 # ========================================================
667 include $(call all-makefiles-under,$(LOCAL_PATH))