1LOCAL_PATH := $(call my-dir) 2 3bionic_coverage ?= false 4 5# Make everything depend on any changes to included makefiles. 6libc_common_additional_dependencies := $(LOCAL_PATH)/Android.mk 7 8# Load config for TARGET_ARCH 9my_2nd_arch_prefix := 10include $(LOCAL_PATH)/arch-$(TARGET_ARCH)/$(TARGET_ARCH).mk 11libc_common_additional_dependencies += \ 12 $(LOCAL_PATH)/arch-$(TARGET_ARCH)/$(TARGET_ARCH).mk 13 14 15ifdef TARGET_2ND_ARCH 16# Load config for TARGET_2ND_ARCH 17my_2nd_arch_prefix := $(TARGET_2ND_ARCH_VAR_PREFIX) 18include $(LOCAL_PATH)/arch-$(TARGET_2ND_ARCH)/$(TARGET_2ND_ARCH).mk 19my_2nd_arch_prefix := 20libc_common_additional_dependencies += \ 21 $(LOCAL_PATH)/arch-$(TARGET_2ND_ARCH)/$(TARGET_2ND_ARCH).mk 22endif 23 24# crt obj files 25# ======================================================== 26# crtbrand.c needs <stdint.h> and a #define for the platform SDK version. 27libc_crt_target_cflags := \ 28 -I$(LOCAL_PATH)/include \ 29 -DPLATFORM_SDK_VERSION=$(PLATFORM_SDK_VERSION) \ 30 31my_2nd_arch_prefix := 32include $(LOCAL_PATH)/crt.mk 33ifdef TARGET_2ND_ARCH 34my_2nd_arch_prefix := $(TARGET_2ND_ARCH_VAR_PREFIX) 35include $(LOCAL_PATH)/crt.mk 36my_2nd_arch_prefix := 37endif 38 39# Define the common source files for all the libc instances 40# ========================================================= 41libc_common_src_files := \ 42 bionic/ether_aton.c \ 43 bionic/ether_ntoa.c \ 44 bionic/fts.c \ 45 bionic/getpriority.c \ 46 bionic/initgroups.c \ 47 bionic/isatty.c \ 48 bionic/memmem.c \ 49 bionic/pututline.c \ 50 bionic/sched_cpualloc.c \ 51 bionic/sched_cpucount.c \ 52 bionic/sigblock.c \ 53 bionic/siginterrupt.c \ 54 bionic/sigsetmask.c \ 55 bionic/system_properties_compat.c \ 56 stdio/fread.c \ 57 stdio/refill.c \ 58 stdio/snprintf.c\ 59 stdio/sprintf.c \ 60 stdio/stdio.cpp \ 61 stdio/stdio_ext.cpp \ 62 stdlib/atexit.c \ 63 stdlib/exit.c \ 64 65# Fortify implementations of libc functions. 66libc_common_src_files += \ 67 bionic/__FD_chk.cpp \ 68 bionic/__fgets_chk.cpp \ 69 bionic/__fread_chk.cpp \ 70 bionic/__fwrite_chk.cpp \ 71 bionic/__getcwd_chk.cpp \ 72 bionic/__memchr_chk.cpp \ 73 bionic/__memmove_chk.cpp \ 74 bionic/__memrchr_chk.cpp \ 75 bionic/__poll_chk.cpp \ 76 bionic/__pread64_chk.cpp \ 77 bionic/__pread_chk.cpp \ 78 bionic/__pwrite64_chk.cpp \ 79 bionic/__pwrite_chk.cpp \ 80 bionic/__read_chk.cpp \ 81 bionic/__readlink_chk.cpp \ 82 bionic/__readlinkat_chk.cpp \ 83 bionic/__recvfrom_chk.cpp \ 84 bionic/__stpcpy_chk.cpp \ 85 bionic/__stpncpy_chk.cpp \ 86 bionic/__strchr_chk.cpp \ 87 bionic/__strlcat_chk.cpp \ 88 bionic/__strlcpy_chk.cpp \ 89 bionic/__strlen_chk.cpp \ 90 bionic/__strncat_chk.cpp \ 91 bionic/__strncpy_chk.cpp \ 92 bionic/__strrchr_chk.cpp \ 93 bionic/__umask_chk.cpp \ 94 bionic/__vsnprintf_chk.cpp \ 95 bionic/__vsprintf_chk.cpp \ 96 bionic/__write_chk.cpp 97 98libc_bionic_ndk_src_files := \ 99 bionic/abort.cpp \ 100 bionic/accept.cpp \ 101 bionic/accept4.cpp \ 102 bionic/access.cpp \ 103 bionic/arpa_inet.cpp \ 104 bionic/assert.cpp \ 105 bionic/atof.cpp \ 106 bionic/bionic_netlink.cpp \ 107 bionic/bionic_systrace.cpp \ 108 bionic/bionic_time_conversions.cpp \ 109 bionic/brk.cpp \ 110 bionic/c16rtomb.cpp \ 111 bionic/c32rtomb.cpp \ 112 bionic/chmod.cpp \ 113 bionic/chown.cpp \ 114 bionic/clearenv.cpp \ 115 bionic/clock.cpp \ 116 bionic/clock_getcpuclockid.cpp \ 117 bionic/clock_nanosleep.cpp \ 118 bionic/clone.cpp \ 119 bionic/close.cpp \ 120 bionic/__cmsg_nxthdr.cpp \ 121 bionic/connect.cpp \ 122 bionic/ctype.cpp \ 123 bionic/dirent.cpp \ 124 bionic/dup2.cpp \ 125 bionic/epoll_create.cpp \ 126 bionic/epoll_pwait.cpp \ 127 bionic/epoll_wait.cpp \ 128 bionic/__errno.cpp \ 129 bionic/error.cpp \ 130 bionic/eventfd_read.cpp \ 131 bionic/eventfd_write.cpp \ 132 bionic/faccessat.cpp \ 133 bionic/fchmod.cpp \ 134 bionic/fchmodat.cpp \ 135 bionic/ffs.cpp \ 136 bionic/fgetxattr.cpp \ 137 bionic/flistxattr.cpp \ 138 bionic/flockfile.cpp \ 139 bionic/fpclassify.cpp \ 140 bionic/fsetxattr.cpp \ 141 bionic/ftruncate.cpp \ 142 bionic/futimens.cpp \ 143 bionic/getcwd.cpp \ 144 bionic/gethostname.cpp \ 145 bionic/getpgrp.cpp \ 146 bionic/getpid.cpp \ 147 bionic/gettid.cpp \ 148 bionic/__gnu_basename.cpp \ 149 bionic/ifaddrs.cpp \ 150 bionic/inotify_init.cpp \ 151 bionic/ioctl.cpp \ 152 bionic/lchown.cpp \ 153 bionic/lfs64_support.cpp \ 154 bionic/__libc_current_sigrtmax.cpp \ 155 bionic/__libc_current_sigrtmin.cpp \ 156 bionic/libc_init_common.cpp \ 157 bionic/libc_logging.cpp \ 158 bionic/libgen.cpp \ 159 bionic/link.cpp \ 160 bionic/locale.cpp \ 161 bionic/lockf.cpp \ 162 bionic/lstat.cpp \ 163 bionic/malloc_info.cpp \ 164 bionic/mbrtoc16.cpp \ 165 bionic/mbrtoc32.cpp \ 166 bionic/mbstate.cpp \ 167 bionic/mempcpy.cpp \ 168 bionic/mkdir.cpp \ 169 bionic/mkfifo.cpp \ 170 bionic/mknod.cpp \ 171 bionic/mntent.cpp \ 172 bionic/mremap.cpp \ 173 bionic/NetdClientDispatch.cpp \ 174 bionic/net_if.cpp \ 175 bionic/netinet_in.cpp \ 176 bionic/open.cpp \ 177 bionic/pathconf.cpp \ 178 bionic/pause.cpp \ 179 bionic/pipe.cpp \ 180 bionic/poll.cpp \ 181 bionic/posix_fadvise.cpp \ 182 bionic/posix_fallocate.cpp \ 183 bionic/posix_madvise.cpp \ 184 bionic/posix_timers.cpp \ 185 bionic/ptrace.cpp \ 186 bionic/pty.cpp \ 187 bionic/raise.cpp \ 188 bionic/rand.cpp \ 189 bionic/readlink.cpp \ 190 bionic/reboot.cpp \ 191 bionic/recv.cpp \ 192 bionic/rename.cpp \ 193 bionic/rmdir.cpp \ 194 bionic/scandir.cpp \ 195 bionic/sched_getaffinity.cpp \ 196 bionic/sched_getcpu.cpp \ 197 bionic/semaphore.cpp \ 198 bionic/send.cpp \ 199 bionic/setegid.cpp \ 200 bionic/__set_errno.cpp \ 201 bionic/seteuid.cpp \ 202 bionic/setpgrp.cpp \ 203 bionic/sigaction.cpp \ 204 bionic/sigaddset.cpp \ 205 bionic/sigdelset.cpp \ 206 bionic/sigemptyset.cpp \ 207 bionic/sigfillset.cpp \ 208 bionic/sigismember.cpp \ 209 bionic/signal.cpp \ 210 bionic/signalfd.cpp \ 211 bionic/sigpending.cpp \ 212 bionic/sigprocmask.cpp \ 213 bionic/sigqueue.cpp \ 214 bionic/sigsuspend.cpp \ 215 bionic/sigtimedwait.cpp \ 216 bionic/sigwait.cpp \ 217 bionic/sigwaitinfo.cpp \ 218 bionic/socket.cpp \ 219 bionic/stat.cpp \ 220 bionic/statvfs.cpp \ 221 bionic/strchrnul.cpp \ 222 bionic/strerror.cpp \ 223 bionic/strerror_r.cpp \ 224 bionic/strsignal.cpp \ 225 bionic/strtold.cpp \ 226 bionic/stubs.cpp \ 227 bionic/symlink.cpp \ 228 bionic/sysinfo.cpp \ 229 bionic/syslog.cpp \ 230 bionic/sys_siglist.c \ 231 bionic/sys_signame.c \ 232 bionic/system_properties.cpp \ 233 bionic/tdestroy.cpp \ 234 bionic/termios.cpp \ 235 bionic/thread_private.cpp \ 236 bionic/tmpfile.cpp \ 237 bionic/umount.cpp \ 238 bionic/unlink.cpp \ 239 bionic/utimes.cpp \ 240 bionic/wait.cpp \ 241 bionic/wchar.cpp \ 242 bionic/wctype.cpp \ 243 bionic/wmempcpy.cpp \ 244 245libc_bionic_src_files := 246 247# The following implementations depend on pthread data, so we can't include 248# them in libc_ndk.a. 249libc_bionic_src_files += \ 250 bionic/__cxa_thread_atexit_impl.cpp \ 251 bionic/fork.cpp \ 252 253# The data that backs getauxval is initialized in the libc init functions which 254# are invoked by the linker. If this file is included in libc_ndk.a, only one of 255# the copies of the global data will be initialized, resulting in nullptr 256# dereferences. 257libc_bionic_src_files += bionic/getauxval.cpp 258 259# These four require getauxval, which isn't available on older platforms. 260libc_bionic_src_files += bionic/getentropy_linux.c 261libc_bionic_src_files += bionic/sysconf.cpp 262libc_bionic_src_files += bionic/vdso.cpp 263libc_bionic_src_files += bionic/setjmp_cookie.cpp 264 265libc_bionic_src_files += \ 266 bionic/__memcpy_chk.cpp \ 267 bionic/__memset_chk.cpp \ 268 bionic/__strcat_chk.cpp \ 269 bionic/__strcpy_chk.cpp \ 270 bionic/strchr.cpp \ 271 bionic/strnlen.c \ 272 bionic/strrchr.cpp \ 273 274libc_cxa_src_files := \ 275 bionic/__cxa_guard.cpp \ 276 bionic/__cxa_pure_virtual.cpp \ 277 bionic/new.cpp \ 278 279libc_upstream_freebsd_src_files := \ 280 upstream-freebsd/lib/libc/gen/ldexp.c \ 281 upstream-freebsd/lib/libc/gen/sleep.c \ 282 upstream-freebsd/lib/libc/gen/usleep.c \ 283 upstream-freebsd/lib/libc/stdlib/getopt_long.c \ 284 upstream-freebsd/lib/libc/stdlib/qsort.c \ 285 upstream-freebsd/lib/libc/stdlib/quick_exit.c \ 286 upstream-freebsd/lib/libc/stdlib/realpath.c \ 287 upstream-freebsd/lib/libc/string/wcpcpy.c \ 288 upstream-freebsd/lib/libc/string/wcpncpy.c \ 289 upstream-freebsd/lib/libc/string/wcscasecmp.c \ 290 upstream-freebsd/lib/libc/string/wcscat.c \ 291 upstream-freebsd/lib/libc/string/wcschr.c \ 292 upstream-freebsd/lib/libc/string/wcscmp.c \ 293 upstream-freebsd/lib/libc/string/wcscpy.c \ 294 upstream-freebsd/lib/libc/string/wcscspn.c \ 295 upstream-freebsd/lib/libc/string/wcsdup.c \ 296 upstream-freebsd/lib/libc/string/wcslcat.c \ 297 upstream-freebsd/lib/libc/string/wcslen.c \ 298 upstream-freebsd/lib/libc/string/wcsncasecmp.c \ 299 upstream-freebsd/lib/libc/string/wcsncat.c \ 300 upstream-freebsd/lib/libc/string/wcsncmp.c \ 301 upstream-freebsd/lib/libc/string/wcsncpy.c \ 302 upstream-freebsd/lib/libc/string/wcsnlen.c \ 303 upstream-freebsd/lib/libc/string/wcspbrk.c \ 304 upstream-freebsd/lib/libc/string/wcsrchr.c \ 305 upstream-freebsd/lib/libc/string/wcsspn.c \ 306 upstream-freebsd/lib/libc/string/wcstok.c \ 307 upstream-freebsd/lib/libc/string/wmemchr.c \ 308 upstream-freebsd/lib/libc/string/wmemcmp.c \ 309 upstream-freebsd/lib/libc/string/wmemmove.c \ 310 upstream-freebsd/lib/libc/string/wmemset.c \ 311 312libc_upstream_netbsd_src_files := \ 313 upstream-netbsd/common/lib/libc/stdlib/random.c \ 314 upstream-netbsd/lib/libc/gen/ftw.c \ 315 upstream-netbsd/lib/libc/gen/nftw.c \ 316 upstream-netbsd/lib/libc/gen/nice.c \ 317 upstream-netbsd/lib/libc/gen/popen.c \ 318 upstream-netbsd/lib/libc/gen/psignal.c \ 319 upstream-netbsd/lib/libc/gen/utime.c \ 320 upstream-netbsd/lib/libc/gen/utmp.c \ 321 upstream-netbsd/lib/libc/inet/nsap_addr.c \ 322 upstream-netbsd/lib/libc/regex/regcomp.c \ 323 upstream-netbsd/lib/libc/regex/regerror.c \ 324 upstream-netbsd/lib/libc/regex/regexec.c \ 325 upstream-netbsd/lib/libc/regex/regfree.c \ 326 upstream-netbsd/lib/libc/stdlib/bsearch.c \ 327 upstream-netbsd/lib/libc/stdlib/div.c \ 328 upstream-netbsd/lib/libc/stdlib/drand48.c \ 329 upstream-netbsd/lib/libc/stdlib/erand48.c \ 330 upstream-netbsd/lib/libc/stdlib/jrand48.c \ 331 upstream-netbsd/lib/libc/stdlib/lcong48.c \ 332 upstream-netbsd/lib/libc/stdlib/ldiv.c \ 333 upstream-netbsd/lib/libc/stdlib/lldiv.c \ 334 upstream-netbsd/lib/libc/stdlib/lrand48.c \ 335 upstream-netbsd/lib/libc/stdlib/mrand48.c \ 336 upstream-netbsd/lib/libc/stdlib/nrand48.c \ 337 upstream-netbsd/lib/libc/stdlib/_rand48.c \ 338 upstream-netbsd/lib/libc/stdlib/rand_r.c \ 339 upstream-netbsd/lib/libc/stdlib/reallocarr.c \ 340 upstream-netbsd/lib/libc/stdlib/seed48.c \ 341 upstream-netbsd/lib/libc/stdlib/srand48.c \ 342 upstream-netbsd/lib/libc/string/memccpy.c \ 343 upstream-netbsd/lib/libc/string/strcasestr.c \ 344 upstream-netbsd/lib/libc/string/strcoll.c \ 345 upstream-netbsd/lib/libc/string/strxfrm.c \ 346 347libc_upstream_openbsd_gdtoa_src_files := \ 348 upstream-openbsd/android/gdtoa_support.cpp \ 349 upstream-openbsd/lib/libc/gdtoa/dmisc.c \ 350 upstream-openbsd/lib/libc/gdtoa/dtoa.c \ 351 upstream-openbsd/lib/libc/gdtoa/gdtoa.c \ 352 upstream-openbsd/lib/libc/gdtoa/gethex.c \ 353 upstream-openbsd/lib/libc/gdtoa/gmisc.c \ 354 upstream-openbsd/lib/libc/gdtoa/hd_init.c \ 355 upstream-openbsd/lib/libc/gdtoa/hdtoa.c \ 356 upstream-openbsd/lib/libc/gdtoa/hexnan.c \ 357 upstream-openbsd/lib/libc/gdtoa/ldtoa.c \ 358 upstream-openbsd/lib/libc/gdtoa/misc.c \ 359 upstream-openbsd/lib/libc/gdtoa/smisc.c \ 360 upstream-openbsd/lib/libc/gdtoa/strtod.c \ 361 upstream-openbsd/lib/libc/gdtoa/strtodg.c \ 362 upstream-openbsd/lib/libc/gdtoa/strtof.c \ 363 upstream-openbsd/lib/libc/gdtoa/strtord.c \ 364 upstream-openbsd/lib/libc/gdtoa/sum.c \ 365 upstream-openbsd/lib/libc/gdtoa/ulp.c \ 366 367libc_upstream_openbsd_gdtoa_src_files_32 := \ 368 $(libc_upstream_openbsd_gdtoa_src_files) \ 369 370libc_upstream_openbsd_gdtoa_src_files_64 := \ 371 $(libc_upstream_openbsd_gdtoa_src_files) \ 372 upstream-openbsd/lib/libc/gdtoa/strtorQ.c \ 373 374# These two depend on getentropy_linux.c, which isn't in libc_ndk.a. 375libc_upstream_openbsd_src_files := \ 376 upstream-openbsd/lib/libc/crypt/arc4random.c \ 377 upstream-openbsd/lib/libc/crypt/arc4random_uniform.c \ 378 379libc_upstream_openbsd_src_files += \ 380 upstream-openbsd/lib/libc/string/memchr.c \ 381 upstream-openbsd/lib/libc/string/memmove.c \ 382 upstream-openbsd/lib/libc/string/memrchr.c \ 383 upstream-openbsd/lib/libc/string/stpcpy.c \ 384 upstream-openbsd/lib/libc/string/stpncpy.c \ 385 upstream-openbsd/lib/libc/string/strcat.c \ 386 upstream-openbsd/lib/libc/string/strcpy.c \ 387 upstream-openbsd/lib/libc/string/strlcat.c \ 388 upstream-openbsd/lib/libc/string/strlcpy.c \ 389 upstream-openbsd/lib/libc/string/strncat.c \ 390 upstream-openbsd/lib/libc/string/strncmp.c \ 391 upstream-openbsd/lib/libc/string/strncpy.c \ 392 393libc_upstream_openbsd_ndk_src_files := \ 394 upstream-openbsd/lib/libc/compat-43/killpg.c \ 395 upstream-openbsd/lib/libc/gen/alarm.c \ 396 upstream-openbsd/lib/libc/gen/ctype_.c \ 397 upstream-openbsd/lib/libc/gen/daemon.c \ 398 upstream-openbsd/lib/libc/gen/err.c \ 399 upstream-openbsd/lib/libc/gen/errx.c \ 400 upstream-openbsd/lib/libc/gen/exec.c \ 401 upstream-openbsd/lib/libc/gen/fnmatch.c \ 402 upstream-openbsd/lib/libc/gen/ftok.c \ 403 upstream-openbsd/lib/libc/gen/getprogname.c \ 404 upstream-openbsd/lib/libc/gen/isctype.c \ 405 upstream-openbsd/lib/libc/gen/setprogname.c \ 406 upstream-openbsd/lib/libc/gen/time.c \ 407 upstream-openbsd/lib/libc/gen/tolower_.c \ 408 upstream-openbsd/lib/libc/gen/toupper_.c \ 409 upstream-openbsd/lib/libc/gen/verr.c \ 410 upstream-openbsd/lib/libc/gen/verrx.c \ 411 upstream-openbsd/lib/libc/gen/vwarn.c \ 412 upstream-openbsd/lib/libc/gen/vwarnx.c \ 413 upstream-openbsd/lib/libc/gen/warn.c \ 414 upstream-openbsd/lib/libc/gen/warnx.c \ 415 upstream-openbsd/lib/libc/locale/btowc.c \ 416 upstream-openbsd/lib/libc/locale/mbrlen.c \ 417 upstream-openbsd/lib/libc/locale/mbstowcs.c \ 418 upstream-openbsd/lib/libc/locale/mbtowc.c \ 419 upstream-openbsd/lib/libc/locale/wcscoll.c \ 420 upstream-openbsd/lib/libc/locale/wcstod.c \ 421 upstream-openbsd/lib/libc/locale/wcstof.c \ 422 upstream-openbsd/lib/libc/locale/wcstoimax.c \ 423 upstream-openbsd/lib/libc/locale/wcstol.c \ 424 upstream-openbsd/lib/libc/locale/wcstold.c \ 425 upstream-openbsd/lib/libc/locale/wcstoll.c \ 426 upstream-openbsd/lib/libc/locale/wcstombs.c \ 427 upstream-openbsd/lib/libc/locale/wcstoul.c \ 428 upstream-openbsd/lib/libc/locale/wcstoull.c \ 429 upstream-openbsd/lib/libc/locale/wcstoumax.c \ 430 upstream-openbsd/lib/libc/locale/wcsxfrm.c \ 431 upstream-openbsd/lib/libc/locale/wctob.c \ 432 upstream-openbsd/lib/libc/locale/wctomb.c \ 433 upstream-openbsd/lib/libc/net/htonl.c \ 434 upstream-openbsd/lib/libc/net/htons.c \ 435 upstream-openbsd/lib/libc/net/inet_lnaof.c \ 436 upstream-openbsd/lib/libc/net/inet_makeaddr.c \ 437 upstream-openbsd/lib/libc/net/inet_netof.c \ 438 upstream-openbsd/lib/libc/net/inet_ntoa.c \ 439 upstream-openbsd/lib/libc/net/inet_ntop.c \ 440 upstream-openbsd/lib/libc/net/inet_pton.c \ 441 upstream-openbsd/lib/libc/net/ntohl.c \ 442 upstream-openbsd/lib/libc/net/ntohs.c \ 443 upstream-openbsd/lib/libc/net/res_random.c \ 444 upstream-openbsd/lib/libc/stdio/asprintf.c \ 445 upstream-openbsd/lib/libc/stdio/clrerr.c \ 446 upstream-openbsd/lib/libc/stdio/dprintf.c \ 447 upstream-openbsd/lib/libc/stdio/feof.c \ 448 upstream-openbsd/lib/libc/stdio/ferror.c \ 449 upstream-openbsd/lib/libc/stdio/fflush.c \ 450 upstream-openbsd/lib/libc/stdio/fgetc.c \ 451 upstream-openbsd/lib/libc/stdio/fgetln.c \ 452 upstream-openbsd/lib/libc/stdio/fgets.c \ 453 upstream-openbsd/lib/libc/stdio/fgetwc.c \ 454 upstream-openbsd/lib/libc/stdio/fgetws.c \ 455 upstream-openbsd/lib/libc/stdio/flags.c \ 456 upstream-openbsd/lib/libc/stdio/fmemopen.c \ 457 upstream-openbsd/lib/libc/stdio/fprintf.c \ 458 upstream-openbsd/lib/libc/stdio/fpurge.c \ 459 upstream-openbsd/lib/libc/stdio/fputc.c \ 460 upstream-openbsd/lib/libc/stdio/fputs.c \ 461 upstream-openbsd/lib/libc/stdio/fputwc.c \ 462 upstream-openbsd/lib/libc/stdio/fputws.c \ 463 upstream-openbsd/lib/libc/stdio/fscanf.c \ 464 upstream-openbsd/lib/libc/stdio/fvwrite.c \ 465 upstream-openbsd/lib/libc/stdio/fwalk.c \ 466 upstream-openbsd/lib/libc/stdio/fwide.c \ 467 upstream-openbsd/lib/libc/stdio/fwprintf.c \ 468 upstream-openbsd/lib/libc/stdio/fwrite.c \ 469 upstream-openbsd/lib/libc/stdio/fwscanf.c \ 470 upstream-openbsd/lib/libc/stdio/getc.c \ 471 upstream-openbsd/lib/libc/stdio/getchar.c \ 472 upstream-openbsd/lib/libc/stdio/getdelim.c \ 473 upstream-openbsd/lib/libc/stdio/getline.c \ 474 upstream-openbsd/lib/libc/stdio/gets.c \ 475 upstream-openbsd/lib/libc/stdio/getwc.c \ 476 upstream-openbsd/lib/libc/stdio/getwchar.c \ 477 upstream-openbsd/lib/libc/stdio/makebuf.c \ 478 upstream-openbsd/lib/libc/stdio/mktemp.c \ 479 upstream-openbsd/lib/libc/stdio/open_memstream.c \ 480 upstream-openbsd/lib/libc/stdio/open_wmemstream.c \ 481 upstream-openbsd/lib/libc/stdio/perror.c \ 482 upstream-openbsd/lib/libc/stdio/printf.c \ 483 upstream-openbsd/lib/libc/stdio/putc.c \ 484 upstream-openbsd/lib/libc/stdio/putchar.c \ 485 upstream-openbsd/lib/libc/stdio/puts.c \ 486 upstream-openbsd/lib/libc/stdio/putwc.c \ 487 upstream-openbsd/lib/libc/stdio/putwchar.c \ 488 upstream-openbsd/lib/libc/stdio/remove.c \ 489 upstream-openbsd/lib/libc/stdio/rewind.c \ 490 upstream-openbsd/lib/libc/stdio/rget.c \ 491 upstream-openbsd/lib/libc/stdio/scanf.c \ 492 upstream-openbsd/lib/libc/stdio/setbuf.c \ 493 upstream-openbsd/lib/libc/stdio/setbuffer.c \ 494 upstream-openbsd/lib/libc/stdio/setvbuf.c \ 495 upstream-openbsd/lib/libc/stdio/sscanf.c \ 496 upstream-openbsd/lib/libc/stdio/swprintf.c \ 497 upstream-openbsd/lib/libc/stdio/swscanf.c \ 498 upstream-openbsd/lib/libc/stdio/tempnam.c \ 499 upstream-openbsd/lib/libc/stdio/tmpnam.c \ 500 upstream-openbsd/lib/libc/stdio/ungetc.c \ 501 upstream-openbsd/lib/libc/stdio/ungetwc.c \ 502 upstream-openbsd/lib/libc/stdio/vasprintf.c \ 503 upstream-openbsd/lib/libc/stdio/vdprintf.c \ 504 upstream-openbsd/lib/libc/stdio/vfprintf.c \ 505 upstream-openbsd/lib/libc/stdio/vfscanf.c \ 506 upstream-openbsd/lib/libc/stdio/vfwprintf.c \ 507 upstream-openbsd/lib/libc/stdio/vfwscanf.c \ 508 upstream-openbsd/lib/libc/stdio/vprintf.c \ 509 upstream-openbsd/lib/libc/stdio/vscanf.c \ 510 upstream-openbsd/lib/libc/stdio/vsnprintf.c \ 511 upstream-openbsd/lib/libc/stdio/vsprintf.c \ 512 upstream-openbsd/lib/libc/stdio/vsscanf.c \ 513 upstream-openbsd/lib/libc/stdio/vswprintf.c \ 514 upstream-openbsd/lib/libc/stdio/vswscanf.c \ 515 upstream-openbsd/lib/libc/stdio/vwprintf.c \ 516 upstream-openbsd/lib/libc/stdio/vwscanf.c \ 517 upstream-openbsd/lib/libc/stdio/wbuf.c \ 518 upstream-openbsd/lib/libc/stdio/wprintf.c \ 519 upstream-openbsd/lib/libc/stdio/wscanf.c \ 520 upstream-openbsd/lib/libc/stdio/wsetup.c \ 521 upstream-openbsd/lib/libc/stdlib/abs.c \ 522 upstream-openbsd/lib/libc/stdlib/atoi.c \ 523 upstream-openbsd/lib/libc/stdlib/atol.c \ 524 upstream-openbsd/lib/libc/stdlib/atoll.c \ 525 upstream-openbsd/lib/libc/stdlib/getenv.c \ 526 upstream-openbsd/lib/libc/stdlib/insque.c \ 527 upstream-openbsd/lib/libc/stdlib/imaxabs.c \ 528 upstream-openbsd/lib/libc/stdlib/imaxdiv.c \ 529 upstream-openbsd/lib/libc/stdlib/labs.c \ 530 upstream-openbsd/lib/libc/stdlib/llabs.c \ 531 upstream-openbsd/lib/libc/stdlib/lsearch.c \ 532 upstream-openbsd/lib/libc/stdlib/reallocarray.c \ 533 upstream-openbsd/lib/libc/stdlib/remque.c \ 534 upstream-openbsd/lib/libc/stdlib/setenv.c \ 535 upstream-openbsd/lib/libc/stdlib/strtoimax.c \ 536 upstream-openbsd/lib/libc/stdlib/strtol.c \ 537 upstream-openbsd/lib/libc/stdlib/strtoll.c \ 538 upstream-openbsd/lib/libc/stdlib/strtoul.c \ 539 upstream-openbsd/lib/libc/stdlib/strtoull.c \ 540 upstream-openbsd/lib/libc/stdlib/strtoumax.c \ 541 upstream-openbsd/lib/libc/stdlib/system.c \ 542 upstream-openbsd/lib/libc/stdlib/tfind.c \ 543 upstream-openbsd/lib/libc/stdlib/tsearch.c \ 544 upstream-openbsd/lib/libc/string/strcasecmp.c \ 545 upstream-openbsd/lib/libc/string/strcspn.c \ 546 upstream-openbsd/lib/libc/string/strdup.c \ 547 upstream-openbsd/lib/libc/string/strndup.c \ 548 upstream-openbsd/lib/libc/string/strpbrk.c \ 549 upstream-openbsd/lib/libc/string/strsep.c \ 550 upstream-openbsd/lib/libc/string/strspn.c \ 551 upstream-openbsd/lib/libc/string/strstr.c \ 552 upstream-openbsd/lib/libc/string/strtok.c \ 553 upstream-openbsd/lib/libc/string/wmemcpy.c \ 554 upstream-openbsd/lib/libc/string/wcslcpy.c \ 555 upstream-openbsd/lib/libc/string/wcsstr.c \ 556 upstream-openbsd/lib/libc/string/wcswidth.c \ 557 558libc_pthread_src_files := \ 559 bionic/pthread_atfork.cpp \ 560 bionic/pthread_attr.cpp \ 561 bionic/pthread_barrier.cpp \ 562 bionic/pthread_cond.cpp \ 563 bionic/pthread_create.cpp \ 564 bionic/pthread_detach.cpp \ 565 bionic/pthread_equal.cpp \ 566 bionic/pthread_exit.cpp \ 567 bionic/pthread_getcpuclockid.cpp \ 568 bionic/pthread_getschedparam.cpp \ 569 bionic/pthread_gettid_np.cpp \ 570 bionic/pthread_internal.cpp \ 571 bionic/pthread_join.cpp \ 572 bionic/pthread_key.cpp \ 573 bionic/pthread_kill.cpp \ 574 bionic/pthread_mutex.cpp \ 575 bionic/pthread_once.cpp \ 576 bionic/pthread_rwlock.cpp \ 577 bionic/pthread_self.cpp \ 578 bionic/pthread_setname_np.cpp \ 579 bionic/pthread_setschedparam.cpp \ 580 bionic/pthread_sigmask.cpp \ 581 bionic/pthread_spinlock.cpp \ 582 583libc_arch_static_src_files := \ 584 bionic/dl_iterate_phdr_static.cpp \ 585 586# Various kinds of cruft. 587# ======================================================== 588libc_common_src_files += \ 589 bionic/ndk_cruft.cpp \ 590 591libc_bionic_ndk_src_files_32 += \ 592 bionic/mmap.cpp \ 593 594libc_common_src_files_32 += \ 595 bionic/legacy_32_bit_support.cpp \ 596 bionic/time64.c \ 597 598libc_netbsd_src_files_32 += \ 599 upstream-netbsd/common/lib/libc/hash/sha1/sha1.c \ 600 601libc_openbsd_src_files_32 += \ 602 upstream-openbsd/lib/libc/stdio/putw.c \ 603 604 605# Define some common cflags 606# ======================================================== 607libc_common_cflags := \ 608 -D_LIBC=1 \ 609 -Wall -Wextra -Wunused \ 610 611use_clang := $(USE_CLANG_PLATFORM_BUILD) 612 613# Clang/llvm has incompatible long double (fp128) for x86_64. 614# https://llvm.org/bugs/show_bug.cgi?id=23897 615ifeq ($(TARGET_ARCH),x86_64) 616 use_clang := false 617endif 618 619# b/25291096, Clang/llvm compiled libc.so for mips/mips64 failed to boot. 620ifeq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),mips mips64)) 621 use_clang := false 622endif 623 624ifeq ($(use_clang),) 625 use_clang := true 626endif 627 628# Try to catch typical 32-bit assumptions that break with 64-bit pointers. 629libc_common_cflags += \ 630 -Werror=pointer-to-int-cast \ 631 -Werror=int-to-pointer-cast \ 632 -Werror=type-limits \ 633 -Werror \ 634 635ifeq ($(strip $(DEBUG_BIONIC_LIBC)),true) 636 libc_common_cflags += -DDEBUG 637endif 638 639libc_malloc_src := bionic/jemalloc_wrapper.cpp 640libc_common_c_includes += external/jemalloc/include 641 642# Define some common conlyflags 643libc_common_conlyflags := \ 644 -std=gnu99 645 646# Define some common cppflags 647libc_common_cppflags := \ 648 649# Define some common includes 650# ======================================================== 651libc_common_c_includes += \ 652 $(LOCAL_PATH)/stdio \ 653 654# ======================================================== 655# Add in the arch or 32-bit specific flags 656# Must be called with $(eval). 657# $(1): the LOCAL_ variable name 658# $(2): the bionic variable name to pull in 659define patch-up-arch-specific-flags 660$(1)_$(TARGET_ARCH) += $($(2)_$(TARGET_ARCH)) 661$(1)_32 += $($(2)_32) 662ifdef TARGET_2ND_ARCH 663$(1)_$(TARGET_2ND_ARCH) += $($(2)_$(TARGET_2ND_ARCH)) 664endif 665endef 666 667 668# ======================================================== 669# libc_stack_protector.a - stack protector code 670# ======================================================== 671# 672# Code that implements the stack protector (or that runs 673# before TLS has been set up) needs to be compiled with 674# -fno-stack-protector, since it accesses the stack canary 675# TLS slot. 676 677include $(CLEAR_VARS) 678 679LOCAL_SRC_FILES := \ 680 bionic/__libc_init_main_thread.cpp \ 681 bionic/__stack_chk_fail.cpp \ 682 683LOCAL_SRC_FILES_arm64 := arch-arm64/bionic/__set_tls.c 684LOCAL_SRC_FILES_x86 := arch-x86/bionic/__set_tls.c 685LOCAL_SRC_FILES_x86_64 := arch-x86_64/bionic/__set_tls.c 686 687LOCAL_CFLAGS := $(libc_common_cflags) -fno-stack-protector 688LOCAL_CONLYFLAGS := $(libc_common_conlyflags) 689LOCAL_CPPFLAGS := $(libc_common_cppflags) 690LOCAL_C_INCLUDES := $(libc_common_c_includes) 691LOCAL_MODULE := libc_stack_protector 692LOCAL_CLANG := $(use_clang) 693LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 694LOCAL_CXX_STL := none 695LOCAL_SYSTEM_SHARED_LIBRARIES := 696LOCAL_SANITIZE := never 697LOCAL_NATIVE_COVERAGE := $(bionic_coverage) 698 699$(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags)) 700include $(BUILD_STATIC_LIBRARY) 701 702 703# libc_init_static.cpp also needs to be built without stack protector, 704# because it's responsible for setting up TLS for static executables. 705# This isn't the case for dynamic executables because the dynamic linker 706# has already set up the main thread's TLS. 707 708include $(CLEAR_VARS) 709 710LOCAL_SRC_FILES := bionic/libc_init_static.cpp 711LOCAL_CFLAGS := $(libc_common_cflags) -fno-stack-protector 712LOCAL_CONLYFLAGS := $(libc_common_conlyflags) 713LOCAL_CPPFLAGS := $(libc_common_cppflags) 714LOCAL_C_INCLUDES := $(libc_common_c_includes) 715LOCAL_MODULE := libc_init_static 716LOCAL_CLANG := $(use_clang) 717LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 718LOCAL_CXX_STL := none 719LOCAL_SYSTEM_SHARED_LIBRARIES := 720LOCAL_SANITIZE := never 721LOCAL_NATIVE_COVERAGE := $(bionic_coverage) 722 723$(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags)) 724include $(BUILD_STATIC_LIBRARY) 725 726 727# ======================================================== 728# libc_tzcode.a - upstream 'tzcode' code 729# ======================================================== 730 731include $(CLEAR_VARS) 732 733LOCAL_SRC_FILES := $(call all-c-files-under,tzcode) 734# tzcode doesn't include wcsftime, so we use the OpenBSD one. 735LOCAL_SRC_FILES += upstream-openbsd/lib/libc/time/wcsftime.c 736 737LOCAL_CFLAGS := $(libc_common_cflags) \ 738 -fvisibility=hidden \ 739 -Wno-unused-parameter \ 740 741# Don't use ridiculous amounts of stack. 742LOCAL_CFLAGS += -DALL_STATE 743# Include tzsetwall, timelocal, timegm, time2posix, and posix2time. 744LOCAL_CFLAGS += -DSTD_INSPIRED 745# Obviously, we want to be thread-safe. 746LOCAL_CFLAGS += -DTHREAD_SAFE 747# The name of the tm_gmtoff field in our struct tm. 748LOCAL_CFLAGS += -DTM_GMTOFF=tm_gmtoff 749# Where we store our tzdata. 750LOCAL_CFLAGS += -DTZDIR=\"/system/usr/share/zoneinfo\" 751# Include timezone and daylight globals. 752LOCAL_CFLAGS += -DUSG_COMPAT=1 753# Use the empty string (instead of " ") as the timezone abbreviation fallback. 754LOCAL_CFLAGS += -DWILDABBR=\"\" 755LOCAL_CFLAGS += -DNO_RUN_TIME_WARNINGS_ABOUT_YEAR_2000_PROBLEMS_THANK_YOU 756LOCAL_CFLAGS += -Dlint 757 758LOCAL_CONLYFLAGS := $(libc_common_conlyflags) 759LOCAL_CPPFLAGS := $(libc_common_cppflags) 760LOCAL_C_INCLUDES := $(libc_common_c_includes) $(LOCAL_PATH)/tzcode/ 761LOCAL_MODULE := libc_tzcode 762LOCAL_CLANG := $(use_clang) 763LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 764LOCAL_CXX_STL := none 765LOCAL_SYSTEM_SHARED_LIBRARIES := 766LOCAL_SANITIZE := never 767LOCAL_NATIVE_COVERAGE := $(bionic_coverage) 768 769$(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags)) 770include $(BUILD_STATIC_LIBRARY) 771 772 773# ======================================================== 774# libc_dns.a - modified NetBSD DNS code 775# ======================================================== 776 777include $(CLEAR_VARS) 778 779LOCAL_SRC_FILES := \ 780 $(call all-c-files-under,dns) \ 781 upstream-netbsd/lib/libc/isc/ev_streams.c \ 782 upstream-netbsd/lib/libc/isc/ev_timers.c \ 783 upstream-netbsd/lib/libc/resolv/mtctxres.c \ 784 785LOCAL_CFLAGS += \ 786 $(libc_common_cflags) \ 787 -DANDROID_CHANGES \ 788 -DINET6 \ 789 -fvisibility=hidden \ 790 -Wno-unused-parameter \ 791 -include netbsd-compat.h \ 792 793LOCAL_CONLYFLAGS := $(libc_common_conlyflags) 794LOCAL_CPPFLAGS := $(libc_common_cppflags) 795LOCAL_C_INCLUDES := $(libc_common_c_includes) \ 796 $(LOCAL_PATH)/dns/include \ 797 $(LOCAL_PATH)/private \ 798 $(LOCAL_PATH)/upstream-netbsd/lib/libc/include \ 799 $(LOCAL_PATH)/upstream-netbsd/android/include \ 800 801LOCAL_MODULE := libc_dns 802LOCAL_CLANG := $(use_clang) 803LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 804LOCAL_CXX_STL := none 805LOCAL_SYSTEM_SHARED_LIBRARIES := 806LOCAL_SANITIZE := never 807LOCAL_NATIVE_COVERAGE := $(bionic_coverage) 808 809$(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags)) 810include $(BUILD_STATIC_LIBRARY) 811 812 813# ======================================================== 814# libc_freebsd.a - upstream FreeBSD C library code 815# ======================================================== 816# 817# These files are built with the freebsd-compat.h header file 818# automatically included. 819 820include $(CLEAR_VARS) 821 822LOCAL_SRC_FILES := $(libc_upstream_freebsd_src_files) 823LOCAL_CFLAGS := \ 824 $(libc_common_cflags) \ 825 -Wno-sign-compare -Wno-uninitialized \ 826 -include freebsd-compat.h \ 827 828LOCAL_CONLYFLAGS := $(libc_common_conlyflags) 829LOCAL_CPPFLAGS := $(libc_common_cppflags) 830LOCAL_C_INCLUDES := $(libc_common_c_includes) \ 831 $(LOCAL_PATH)/upstream-freebsd/android/include \ 832 $(LOCAL_PATH)/upstream-freebsd/lib/libc/include \ 833 834LOCAL_MODULE := libc_freebsd 835LOCAL_CLANG := $(use_clang) 836LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 837LOCAL_CXX_STL := none 838LOCAL_SYSTEM_SHARED_LIBRARIES := 839LOCAL_SANITIZE := never 840LOCAL_NATIVE_COVERAGE := $(bionic_coverage) 841 842$(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags)) 843$(eval $(call patch-up-arch-specific-flags,LOCAL_SRC_FILES_EXCLUDE,libc_freebsd_src_files_exclude)) 844include $(BUILD_STATIC_LIBRARY) 845 846 847# ======================================================== 848# libc_netbsd.a - upstream NetBSD C library code 849# ======================================================== 850# 851# These files are built with the netbsd-compat.h header file 852# automatically included. 853 854include $(CLEAR_VARS) 855 856LOCAL_SRC_FILES := $(libc_upstream_netbsd_src_files) 857LOCAL_CFLAGS := \ 858 $(libc_common_cflags) \ 859 -Wno-sign-compare \ 860 -Wno-uninitialized \ 861 -Wno-unused-parameter \ 862 -DPOSIX_MISTAKE \ 863 -include netbsd-compat.h \ 864 865LOCAL_CONLYFLAGS := $(libc_common_conlyflags) 866LOCAL_CPPFLAGS := $(libc_common_cppflags) 867LOCAL_C_INCLUDES := $(libc_common_c_includes) \ 868 $(LOCAL_PATH)/upstream-netbsd/android/include \ 869 $(LOCAL_PATH)/upstream-netbsd/lib/libc/include \ 870 871LOCAL_MODULE := libc_netbsd 872LOCAL_CLANG := $(use_clang) 873LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 874LOCAL_CXX_STL := none 875LOCAL_SYSTEM_SHARED_LIBRARIES := 876LOCAL_SANITIZE := never 877LOCAL_NATIVE_COVERAGE := $(bionic_coverage) 878 879$(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags)) 880$(eval $(call patch-up-arch-specific-flags,LOCAL_SRC_FILES,libc_netbsd_src_files)) 881include $(BUILD_STATIC_LIBRARY) 882 883 884# ======================================================== 885# libc_openbsd_ndk.a - upstream OpenBSD C library code 886# that can be safely included in the libc_ndk.a (doesn't 887# contain any troublesome global data or constructors). 888# ======================================================== 889# 890# These files are built with the openbsd-compat.h header file 891# automatically included. 892 893include $(CLEAR_VARS) 894 895LOCAL_SRC_FILES := $(libc_upstream_openbsd_ndk_src_files) 896LOCAL_CLANG := $(use_clang) 897 898LOCAL_CFLAGS := \ 899 $(libc_common_cflags) \ 900 -Wno-sign-compare \ 901 -Wno-uninitialized \ 902 -Wno-unused-parameter \ 903 -include openbsd-compat.h \ 904 905LOCAL_CONLYFLAGS := $(libc_common_conlyflags) 906LOCAL_CPPFLAGS := $(libc_common_cppflags) 907LOCAL_C_INCLUDES := $(libc_common_c_includes) \ 908 $(LOCAL_PATH)/private \ 909 $(LOCAL_PATH)/upstream-openbsd/android/include \ 910 $(LOCAL_PATH)/upstream-openbsd/lib/libc/include \ 911 $(LOCAL_PATH)/upstream-openbsd/lib/libc/gdtoa/ \ 912 913LOCAL_MODULE := libc_openbsd_ndk 914LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 915LOCAL_CXX_STL := none 916LOCAL_SYSTEM_SHARED_LIBRARIES := 917LOCAL_SANITIZE := never 918LOCAL_NATIVE_COVERAGE := $(bionic_coverage) 919 920$(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags)) 921include $(BUILD_STATIC_LIBRARY) 922 923 924# ======================================================== 925# libc_openbsd.a - upstream OpenBSD C library code 926# ======================================================== 927# 928# These files are built with the openbsd-compat.h header file 929# automatically included. 930 931include $(CLEAR_VARS) 932 933LOCAL_SRC_FILES := $(libc_upstream_openbsd_src_files) 934LOCAL_CLANG := $(use_clang) 935 936LOCAL_CFLAGS := \ 937 $(libc_common_cflags) \ 938 -Wno-sign-compare \ 939 -Wno-uninitialized \ 940 -Wno-unused-parameter \ 941 -include openbsd-compat.h \ 942 943LOCAL_CONLYFLAGS := $(libc_common_conlyflags) 944LOCAL_CPPFLAGS := $(libc_common_cppflags) 945LOCAL_C_INCLUDES := $(libc_common_c_includes) \ 946 $(LOCAL_PATH)/private \ 947 $(LOCAL_PATH)/upstream-openbsd/android/include \ 948 $(LOCAL_PATH)/upstream-openbsd/lib/libc/include \ 949 $(LOCAL_PATH)/upstream-openbsd/lib/libc/gdtoa/ \ 950 951LOCAL_MODULE := libc_openbsd 952LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 953LOCAL_CXX_STL := none 954LOCAL_SYSTEM_SHARED_LIBRARIES := 955LOCAL_SANITIZE := never 956LOCAL_NATIVE_COVERAGE := $(bionic_coverage) 957 958$(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags)) 959$(eval $(call patch-up-arch-specific-flags,LOCAL_SRC_FILES,libc_openbsd_src_files)) 960$(eval $(call patch-up-arch-specific-flags,LOCAL_SRC_FILES_EXCLUDE,libc_openbsd_src_files_exclude)) 961include $(BUILD_STATIC_LIBRARY) 962 963 964# ======================================================== 965# libc_gdtoa.a - upstream OpenBSD C library gdtoa code 966# ======================================================== 967# 968# These files are built with the openbsd-compat.h header file 969# automatically included. 970 971include $(CLEAR_VARS) 972 973LOCAL_SRC_FILES_32 := $(libc_upstream_openbsd_gdtoa_src_files_32) 974LOCAL_SRC_FILES_64 := $(libc_upstream_openbsd_gdtoa_src_files_64) 975LOCAL_CLANG := $(use_clang) 976 977LOCAL_CFLAGS := \ 978 $(libc_common_cflags) \ 979 -Wno-sign-compare -Wno-uninitialized \ 980 -fvisibility=hidden \ 981 -include openbsd-compat.h \ 982 983LOCAL_CONLYFLAGS := $(libc_common_conlyflags) 984LOCAL_CPPFLAGS := $(libc_common_cppflags) 985LOCAL_C_INCLUDES := $(libc_common_c_includes) \ 986 $(LOCAL_PATH)/private \ 987 $(LOCAL_PATH)/upstream-openbsd/android/include \ 988 $(LOCAL_PATH)/upstream-openbsd/lib/libc/include \ 989 990LOCAL_MODULE := libc_gdtoa 991LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 992LOCAL_CXX_STL := none 993LOCAL_SYSTEM_SHARED_LIBRARIES := 994LOCAL_SANITIZE := never 995LOCAL_NATIVE_COVERAGE := $(bionic_coverage) 996 997$(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags)) 998include $(BUILD_STATIC_LIBRARY) 999 1000 1001# ======================================================== 1002# libc_bionic.a - home-grown C library code 1003# ======================================================== 1004 1005include $(CLEAR_VARS) 1006 1007LOCAL_SRC_FILES := $(libc_bionic_src_files) 1008LOCAL_CFLAGS := $(libc_common_cflags) \ 1009 -Wframe-larger-than=2048 \ 1010 1011LOCAL_CONLYFLAGS := $(libc_common_conlyflags) 1012LOCAL_CPPFLAGS := $(libc_common_cppflags) -Wold-style-cast 1013LOCAL_C_INCLUDES := $(libc_common_c_includes) bionic/libstdc++/include 1014LOCAL_MODULE := libc_bionic 1015LOCAL_CLANG := $(use_clang) 1016LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 1017LOCAL_CXX_STL := none 1018LOCAL_SYSTEM_SHARED_LIBRARIES := 1019LOCAL_SANITIZE := never 1020LOCAL_NATIVE_COVERAGE := $(bionic_coverage) 1021 1022$(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags)) 1023$(eval $(call patch-up-arch-specific-flags,LOCAL_SRC_FILES,libc_bionic_src_files)) 1024$(eval $(call patch-up-arch-specific-flags,LOCAL_SRC_FILES_EXCLUDE,libc_bionic_src_files_exclude)) 1025include $(BUILD_STATIC_LIBRARY) 1026 1027 1028# ======================================================== 1029# libc_bionic_ndk.a - The portions of libc_bionic that can 1030# be safely used in libc_ndk.a (no troublesome global data 1031# or constructors). 1032# ======================================================== 1033 1034include $(CLEAR_VARS) 1035 1036LOCAL_SRC_FILES := $(libc_bionic_ndk_src_files) 1037LOCAL_CFLAGS := $(libc_common_cflags) \ 1038 -Wframe-larger-than=2048 \ 1039 1040LOCAL_CONLYFLAGS := $(libc_common_conlyflags) 1041LOCAL_CPPFLAGS := $(libc_common_cppflags) -Wold-style-cast 1042LOCAL_C_INCLUDES := $(libc_common_c_includes) bionic/libstdc++/include 1043LOCAL_MODULE := libc_bionic_ndk 1044LOCAL_CLANG := $(use_clang) 1045LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 1046LOCAL_CXX_STL := none 1047LOCAL_SYSTEM_SHARED_LIBRARIES := 1048LOCAL_SANITIZE := never 1049LOCAL_NATIVE_COVERAGE := $(bionic_coverage) 1050 1051$(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags)) 1052$(eval $(call patch-up-arch-specific-flags,LOCAL_SRC_FILES,libc_bionic_ndk_src_files)) 1053include $(BUILD_STATIC_LIBRARY) 1054 1055 1056# ======================================================== 1057# libc_pthread.a - pthreads parts that previously lived in 1058# libc_bionic.a. Relocated to their own library because 1059# they can't be included in libc_ndk.a (as they layout of 1060# pthread_t has changed over the years and has ABI 1061# compatibility issues). 1062# ======================================================== 1063 1064include $(CLEAR_VARS) 1065 1066LOCAL_SRC_FILES := $(libc_pthread_src_files) 1067LOCAL_CFLAGS := $(libc_common_cflags) \ 1068 -Wframe-larger-than=2048 \ 1069 1070LOCAL_CONLYFLAGS := $(libc_common_conlyflags) 1071LOCAL_CPPFLAGS := $(libc_common_cppflags) -Wold-style-cast 1072LOCAL_C_INCLUDES := $(libc_common_c_includes) 1073LOCAL_MODULE := libc_pthread 1074LOCAL_CLANG := $(use_clang) 1075LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 1076LOCAL_CXX_STL := none 1077LOCAL_SYSTEM_SHARED_LIBRARIES := 1078LOCAL_SANITIZE := never 1079LOCAL_NATIVE_COVERAGE := $(bionic_coverage) 1080 1081include $(BUILD_STATIC_LIBRARY) 1082 1083 1084# ======================================================== 1085# libc_cxa.a - Things traditionally in libstdc++ 1086# ======================================================== 1087 1088include $(CLEAR_VARS) 1089 1090LOCAL_SRC_FILES := $(libc_cxa_src_files) 1091LOCAL_CFLAGS := $(libc_common_cflags) \ 1092 -fvisibility=hidden \ 1093 1094LOCAL_CONLYFLAGS := $(libc_common_conlyflags) 1095LOCAL_CPPFLAGS := $(libc_common_cppflags) 1096LOCAL_C_INCLUDES := $(libc_common_c_includes) bionic/libstdc++/include 1097LOCAL_MODULE := libc_cxa 1098LOCAL_CLANG := true # GCC refuses to hide new/delete 1099LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 1100LOCAL_CXX_STL := none 1101LOCAL_SYSTEM_SHARED_LIBRARIES := 1102LOCAL_SANITIZE := never 1103# b/17574078: Need to disable coverage until we have a prebuilt libprofile_rt. 1104# Since this is a static library built with clang, it needs to link 1105# libprofile_rt when it is linked into the final binary. Since the final binary 1106# is built with GCC, it won't link libprofile_rt. We can't very easily just add 1107# libprofile_rt to all link lines the way we've done for libgcov because 1108# libprofile_rt isn't prebuilt, and it would be tricky to write a rule that 1109# would make sure libprofile_rt is built. 1110LOCAL_NATIVE_COVERAGE := false 1111 1112include $(BUILD_STATIC_LIBRARY) 1113 1114 1115# ======================================================== 1116# libc_syscalls.a 1117# ======================================================== 1118 1119include $(CLEAR_VARS) 1120 1121LOCAL_SRC_FILES_$(TARGET_ARCH) := $(call all-S-files-under,arch-$(TARGET_ARCH)/syscalls) 1122ifdef TARGET_2ND_ARCH 1123LOCAL_SRC_FILES_$(TARGET_2ND_ARCH) := $(call all-S-files-under,arch-$(TARGET_2ND_ARCH)/syscalls) 1124endif 1125LOCAL_MODULE := libc_syscalls 1126LOCAL_CLANG := $(use_clang) 1127LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 1128LOCAL_CXX_STL := none 1129LOCAL_SYSTEM_SHARED_LIBRARIES := 1130LOCAL_SANITIZE := never 1131LOCAL_NATIVE_COVERAGE := $(bionic_coverage) 1132 1133include $(BUILD_STATIC_LIBRARY) 1134 1135 1136# ======================================================== 1137# libc_aeabi.a 1138# This is an LP32 ARM-only library that needs to be built with -fno-builtin 1139# to avoid infinite recursion. For the other architectures we just build an 1140# empty library to keep this makefile simple. 1141# ======================================================== 1142 1143include $(CLEAR_VARS) 1144 1145LOCAL_SRC_FILES_arm := arch-arm/bionic/__aeabi.c 1146LOCAL_MODULE := libc_aeabi 1147LOCAL_CLANG := $(use_clang) 1148LOCAL_CFLAGS := $(libc_common_cflags) -fno-builtin 1149LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 1150LOCAL_CXX_STL := none 1151LOCAL_SYSTEM_SHARED_LIBRARIES := 1152LOCAL_SANITIZE := never 1153LOCAL_NATIVE_COVERAGE := $(bionic_coverage) 1154 1155include $(BUILD_STATIC_LIBRARY) 1156 1157# ======================================================== 1158# libc_ndk.a 1159# Compatibility library for the NDK. This library contains 1160# all the parts of libc that are safe to statically link. 1161# We can't safely statically link things that can only run 1162# on a certain version of the OS. Examples include 1163# anything that talks to netd (a large portion of the DNS 1164# code) and anything that is dependent on the layout of a 1165# data structure that has changed across releases (such as 1166# pthread_t). 1167# ======================================================== 1168 1169include $(CLEAR_VARS) 1170 1171LOCAL_MODULE := libc_ndk 1172LOCAL_CLANG := $(use_clang) 1173LOCAL_ASFLAGS := $(LOCAL_CFLAGS) 1174LOCAL_CONLYFLAGS := $(libc_common_conlyflags) 1175LOCAL_CFLAGS := $(libc_common_cflags) -fvisibility=hidden -O0 1176LOCAL_CPPFLAGS := $(libc_common_cppflags) 1177LOCAL_C_INCLUDES := $(libc_common_c_includes) 1178LOCAL_SANITIZE := never 1179LOCAL_NATIVE_COVERAGE := $(bionic_coverage) 1180LOCAL_SYSTEM_SHARED_LIBRARIES := 1181 1182LOCAL_SRC_FILES := \ 1183 $(libc_common_src_files) \ 1184 $(libc_arch_dynamic_src_files) \ 1185 $(libc_ndk_stub_src_files) \ 1186 bionic/malloc_common.cpp \ 1187 1188LOCAL_SRC_FILES_arm += \ 1189 arch-common/bionic/crtbegin_so.c \ 1190 arch-arm/bionic/atexit_legacy.c \ 1191 arch-common/bionic/crtend_so.S \ 1192 1193LOCAL_CFLAGS := $(libc_common_cflags) \ 1194 -DLIBC_STATIC \ 1195 1196LOCAL_WHOLE_STATIC_LIBRARIES := \ 1197 libc_bionic_ndk \ 1198 libc_cxa \ 1199 libc_freebsd \ 1200 libc_gdtoa \ 1201 libc_malloc \ 1202 libc_netbsd \ 1203 libc_openbsd_ndk \ 1204 libc_stack_protector \ 1205 libc_syscalls \ 1206 libc_tzcode \ 1207 libm \ 1208 libjemalloc \ 1209 1210LOCAL_WHOLE_STATIC_LIBRARIES_arm := libc_aeabi 1211LOCAL_CXX_STL := none 1212 1213$(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags)) 1214$(eval $(call patch-up-arch-specific-flags,LOCAL_SRC_FILES,libc_common_src_files)) 1215$(eval $(call patch-up-arch-specific-flags,LOCAL_SRC_FILES,libc_arch_dynamic_src_files)) 1216$(eval $(call patch-up-arch-specific-flags,LOCAL_ASFLAGS,LOCAL_CFLAGS)) 1217 1218LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 1219include $(BUILD_STATIC_LIBRARY) 1220 1221# ======================================================== 1222# libc_common.a 1223# ======================================================== 1224 1225include $(CLEAR_VARS) 1226 1227LOCAL_SRC_FILES := $(libc_common_src_files) 1228LOCAL_CFLAGS := $(libc_common_cflags) 1229LOCAL_CONLYFLAGS := $(libc_common_conlyflags) 1230LOCAL_CPPFLAGS := $(libc_common_cppflags) 1231LOCAL_C_INCLUDES := $(libc_common_c_includes) 1232LOCAL_MODULE := libc_common 1233LOCAL_CLANG := $(use_clang) 1234LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 1235LOCAL_WHOLE_STATIC_LIBRARIES := \ 1236 libc_bionic \ 1237 libc_bionic_ndk \ 1238 libc_cxa \ 1239 libc_dns \ 1240 libc_freebsd \ 1241 libc_gdtoa \ 1242 libc_malloc \ 1243 libc_netbsd \ 1244 libc_openbsd \ 1245 libc_openbsd_ndk \ 1246 libc_pthread \ 1247 libc_stack_protector \ 1248 libc_syscalls \ 1249 libc_tzcode \ 1250 1251LOCAL_WHOLE_STATIC_LIBRARIES_arm := libc_aeabi 1252 1253LOCAL_CXX_STL := none 1254LOCAL_SYSTEM_SHARED_LIBRARIES := 1255 1256# TODO: split out the asflags. 1257LOCAL_ASFLAGS := $(LOCAL_CFLAGS) 1258LOCAL_SANITIZE := never 1259LOCAL_NATIVE_COVERAGE := $(bionic_coverage) 1260 1261$(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags)) 1262$(eval $(call patch-up-arch-specific-flags,LOCAL_SRC_FILES,libc_common_src_files)) 1263$(eval $(call patch-up-arch-specific-flags,LOCAL_ASFLAGS,LOCAL_CFLAGS)) 1264include $(BUILD_STATIC_LIBRARY) 1265 1266 1267# ======================================================== 1268# libc_nomalloc.a 1269# ======================================================== 1270# 1271# This is a version of the static C library that does not 1272# include malloc. It's useful in situations when the user wants 1273# to provide their own malloc implementation, or wants to 1274# explicitly disallow the use of malloc, such as in the 1275# dynamic linker. 1276 1277include $(CLEAR_VARS) 1278 1279LOCAL_SRC_FILES := \ 1280 $(libc_arch_static_src_files) \ 1281 1282LOCAL_C_INCLUDES := $(libc_common_c_includes) 1283LOCAL_CFLAGS := $(libc_common_cflags) \ 1284 -DLIBC_STATIC \ 1285 1286LOCAL_CONLYFLAGS := $(libc_common_conlyflags) 1287LOCAL_CPPFLAGS := $(libc_common_cppflags) 1288 1289LOCAL_MODULE := libc_nomalloc 1290LOCAL_CLANG := $(use_clang) 1291LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 1292LOCAL_WHOLE_STATIC_LIBRARIES := libc_common libc_init_static 1293LOCAL_CXX_STL := none 1294LOCAL_SYSTEM_SHARED_LIBRARIES := 1295LOCAL_SANITIZE := never 1296LOCAL_NATIVE_COVERAGE := $(bionic_coverage) 1297 1298$(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags)) 1299$(eval $(call patch-up-arch-specific-flags,LOCAL_SRC_FILES,libc_arch_static_src_files)) 1300include $(BUILD_STATIC_LIBRARY) 1301 1302 1303# ======================================================== 1304# libc_malloc.a: the _prefixed_ malloc functions (like dlcalloc). 1305# ======================================================== 1306 1307include $(CLEAR_VARS) 1308LOCAL_SRC_FILES := $(libc_malloc_src) 1309LOCAL_CFLAGS := $(libc_common_cflags) \ 1310 -fvisibility=hidden \ 1311 1312LOCAL_CONLYFLAGS := $(libc_common_conlyflags) 1313LOCAL_CPPFLAGS := $(libc_common_cppflags) 1314LOCAL_C_INCLUDES := $(libc_common_c_includes) 1315LOCAL_MODULE := libc_malloc 1316LOCAL_CLANG := $(use_clang) 1317LOCAL_CXX_STL := none 1318LOCAL_SANITIZE := never 1319LOCAL_NATIVE_COVERAGE := $(bionic_coverage) 1320LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 1321include $(BUILD_STATIC_LIBRARY) 1322 1323 1324# ======================================================== 1325# libc.a 1326# ======================================================== 1327include $(CLEAR_VARS) 1328 1329LOCAL_SRC_FILES := \ 1330 $(libc_arch_static_src_files) \ 1331 bionic/malloc_common.cpp \ 1332 bionic/libc_init_static.cpp \ 1333 1334LOCAL_CFLAGS := $(libc_common_cflags) \ 1335 -DLIBC_STATIC \ 1336 1337LOCAL_CONLYFLAGS := $(libc_common_conlyflags) 1338LOCAL_CPPFLAGS := $(libc_common_cppflags) 1339LOCAL_C_INCLUDES := $(libc_common_c_includes) 1340LOCAL_MODULE := libc 1341LOCAL_CLANG := $(use_clang) 1342LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 1343LOCAL_WHOLE_STATIC_LIBRARIES := libc_common libc_init_static libjemalloc 1344 1345LOCAL_CXX_STL := none 1346LOCAL_SYSTEM_SHARED_LIBRARIES := 1347LOCAL_SANITIZE := never 1348LOCAL_NATIVE_COVERAGE := $(bionic_coverage) 1349 1350$(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags)) 1351$(eval $(call patch-up-arch-specific-flags,LOCAL_SRC_FILES,libc_arch_static_src_files)) 1352include $(BUILD_STATIC_LIBRARY) 1353 1354 1355# ======================================================== 1356# libc.so 1357# ======================================================== 1358include $(CLEAR_VARS) 1359 1360LOCAL_CFLAGS := $(libc_common_cflags) 1361LOCAL_CONLYFLAGS := $(libc_common_conlyflags) 1362LOCAL_CPPFLAGS := $(libc_common_cppflags) 1363 1364LOCAL_C_INCLUDES := $(libc_common_c_includes) 1365LOCAL_SRC_FILES := \ 1366 arch-common/bionic/crtbegin_so.c \ 1367 arch-common/bionic/crtbrand.S \ 1368 $(libc_arch_dynamic_src_files) \ 1369 bionic/malloc_common.cpp \ 1370 bionic/libc_init_dynamic.cpp \ 1371 bionic/NetdClient.cpp \ 1372 arch-common/bionic/crtend_so.S \ 1373 1374LOCAL_MODULE := libc 1375LOCAL_CLANG := $(use_clang) 1376LOCAL_REQUIRED_MODULES := tzdata 1377LOCAL_ADDITIONAL_DEPENDENCIES := \ 1378 $(libc_common_additional_dependencies) \ 1379 $(LOCAL_PATH)/libc.arm.map \ 1380 $(LOCAL_PATH)/libc.arm64.map \ 1381 $(LOCAL_PATH)/libc.mips.map \ 1382 $(LOCAL_PATH)/libc.mips64.map \ 1383 $(LOCAL_PATH)/libc.x86.map \ 1384 $(LOCAL_PATH)/libc.x86_64.map \ 1385 $(LOCAL_PATH)/libc.arm.brillo.map \ 1386 $(LOCAL_PATH)/libc.mips.brillo.map \ 1387 $(LOCAL_PATH)/libc.x86.brillo.map \ 1388 1389# Leave the symbols in the shared library so that stack unwinders can produce 1390# meaningful name resolution. 1391LOCAL_STRIP_MODULE := keep_symbols 1392 1393# Do not pack libc.so relocations; see http://b/20645321 for details. 1394LOCAL_PACK_MODULE_RELOCATIONS := false 1395 1396# WARNING: The only library libc.so should depend on is libdl.so! If you add other libraries, 1397# make sure to add -Wl,--exclude-libs=libgcc.a to the LOCAL_LDFLAGS for those libraries. This 1398# ensures that symbols that are pulled into those new libraries from libgcc.a are not declared 1399# external; if that were the case, then libc would not pull those symbols from libgcc.a as it 1400# should, instead relying on the external symbols from the dependent libraries. That would 1401# create a "cloaked" dependency on libgcc.a in libc though the libraries, which is not what 1402# you wanted! 1403 1404LOCAL_SHARED_LIBRARIES := libdl 1405LOCAL_WHOLE_STATIC_LIBRARIES := libc_common libjemalloc 1406 1407LOCAL_CXX_STL := none 1408LOCAL_SYSTEM_SHARED_LIBRARIES := 1409 1410# TODO: This is to work around b/24465209. Remove after root cause is fixed 1411LOCAL_LDFLAGS_arm := -Wl,--hash-style=both 1412LOCAL_LDFLAGS_x86 := -Wl,--hash-style=both 1413 1414# Don't re-export new/delete and friends, even if the compiler really wants to. 1415ifdef BRILLO 1416LOCAL_LDFLAGS_arm += -Wl,--version-script,$(LOCAL_PATH)/libc.arm.brillo.map 1417LOCAL_LDFLAGS_mips += -Wl,--version-script,$(LOCAL_PATH)/libc.mips.brillo.map 1418LOCAL_LDFLAGS_x86 += -Wl,--version-script,$(LOCAL_PATH)/libc.x86.brillo.map 1419else 1420LOCAL_LDFLAGS_arm += -Wl,--version-script,$(LOCAL_PATH)/libc.arm.map 1421LOCAL_LDFLAGS_mips += -Wl,--version-script,$(LOCAL_PATH)/libc.mips.map 1422LOCAL_LDFLAGS_x86 += -Wl,--version-script,$(LOCAL_PATH)/libc.x86.map 1423endif 1424 1425LOCAL_LDFLAGS_arm64 += -Wl,--version-script,$(LOCAL_PATH)/libc.arm64.map 1426LOCAL_LDFLAGS_mips64 += -Wl,--version-script,$(LOCAL_PATH)/libc.mips64.map 1427LOCAL_LDFLAGS_x86_64 += -Wl,--version-script,$(LOCAL_PATH)/libc.x86_64.map 1428 1429# We'd really like to do this for all architectures, but since this wasn't done 1430# before, these symbols must continue to be exported on LP32 for binary 1431# compatibility. 1432LOCAL_LDFLAGS_64 := -Wl,--exclude-libs,libgcc.a 1433 1434# Unfortunately --exclude-libs clobbers our version script, so we have to 1435# prevent the build system from using this flag. 1436LOCAL_NO_EXCLUDE_LIBS := true 1437 1438$(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags)) 1439$(eval $(call patch-up-arch-specific-flags,LOCAL_SRC_FILES,libc_arch_dynamic_src_files)) 1440 1441LOCAL_NO_CRT := true 1442LOCAL_ASFLAGS += $(libc_crt_target_cflags) 1443 1444# special for arm 1445LOCAL_CFLAGS_arm += -DCRT_LEGACY_WORKAROUND 1446LOCAL_SRC_FILES_arm += \ 1447 arch-arm/bionic/atexit_legacy.c 1448 1449LOCAL_SANITIZE := never 1450LOCAL_NATIVE_COVERAGE := $(bionic_coverage) 1451 1452include $(BUILD_SHARED_LIBRARY) 1453 1454# ======================================================== 1455# libc_logging.a 1456# ======================================================== 1457include $(CLEAR_VARS) 1458 1459LOCAL_CFLAGS := $(libc_common_cflags) 1460LOCAL_CONLYFLAGS := $(libc_common_conlyflags) 1461LOCAL_CPPFLAGS := $(libc_common_cppflags) 1462LOCAL_C_INCLUDES := $(libc_common_c_includes) 1463 1464LOCAL_SRC_FILES := \ 1465 bionic/libc_logging.cpp \ 1466 1467LOCAL_MODULE := libc_logging 1468 1469LOCAL_CLANG := $(use_clang) 1470LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 1471LOCAL_SYSTEM_SHARED_LIBRARIES := 1472 1473LOCAL_SANITIZE := never 1474LOCAL_NATIVE_COVERAGE := $(bionic_coverage) 1475 1476$(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags)) 1477include $(BUILD_STATIC_LIBRARY) 1478 1479# ======================================================== 1480# libstdc++.so 1481# ======================================================== 1482libstdcxx_common_src_files := \ 1483 bionic/__cxa_guard.cpp \ 1484 bionic/__cxa_pure_virtual.cpp \ 1485 bionic/new.cpp \ 1486 1487include $(CLEAR_VARS) 1488LOCAL_C_INCLUDES := $(libc_common_c_includes) bionic/libstdc++/include 1489LOCAL_CFLAGS := $(libc_common_cflags) 1490LOCAL_CPPFLAGS := $(libc_common_cppflags) 1491 1492# TODO: This is to work around b/24465209. Remove after root cause is fixed 1493LOCAL_LDFLAGS_arm := -Wl,--hash-style=both 1494LOCAL_LDFLAGS_x86 := -Wl,--hash-style=both 1495 1496LOCAL_SRC_FILES := $(libstdcxx_common_src_files) 1497LOCAL_MODULE:= libstdc++ 1498LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 1499LOCAL_CXX_STL := none 1500LOCAL_SYSTEM_SHARED_LIBRARIES := libc 1501LOCAL_STATIC_LIBRARIES := libc_logging 1502LOCAL_SANITIZE := never 1503LOCAL_NATIVE_COVERAGE := $(bionic_coverage) 1504include $(BUILD_SHARED_LIBRARY) 1505 1506# ======================================================== 1507# libstdc++.a 1508# ======================================================== 1509include $(CLEAR_VARS) 1510LOCAL_C_INCLUDES := $(libc_common_c_includes) bionic/libstdc++/include 1511LOCAL_CFLAGS := $(libc_common_cflags) 1512LOCAL_CPPFLAGS := $(libc_common_cppflags) 1513LOCAL_SRC_FILES := $(libstdcxx_common_src_files) 1514LOCAL_MODULE:= libstdc++ 1515LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 1516LOCAL_CXX_STL := none 1517LOCAL_SYSTEM_SHARED_LIBRARIES := libc 1518LOCAL_SANITIZE := never 1519LOCAL_NATIVE_COVERAGE := $(bionic_coverage) 1520include $(BUILD_STATIC_LIBRARY) 1521