1 LOCAL_PATH := $(call my-dir) 2 3 bionic_coverage ?= false 4 5 # Make everything depend on any changes to included makefiles. 6 libc_common_additional_dependencies := $(LOCAL_PATH)/Android.mk 7 8 # Load config for TARGET_ARCH 9 my_2nd_arch_prefix := 10 include $(LOCAL_PATH)/arch-$(TARGET_ARCH)/$(TARGET_ARCH).mk 11 libc_common_additional_dependencies += \ 12 $(LOCAL_PATH)/arch-$(TARGET_ARCH)/$(TARGET_ARCH).mk 13 14 15 ifdef TARGET_2ND_ARCH 16 # Load config for TARGET_2ND_ARCH 17 my_2nd_arch_prefix := $(TARGET_2ND_ARCH_VAR_PREFIX) 18 include $(LOCAL_PATH)/arch-$(TARGET_2ND_ARCH)/$(TARGET_2ND_ARCH).mk 19 my_2nd_arch_prefix := 20 libc_common_additional_dependencies += \ 21 $(LOCAL_PATH)/arch-$(TARGET_2ND_ARCH)/$(TARGET_2ND_ARCH).mk 22 endif 23 24 # crt obj files 25 # ======================================================== 26 # crtbrand.c needs <stdint.h> and a #define for the platform SDK version. 27 libc_crt_target_cflags := \ 28 -I$(LOCAL_PATH)/include \ 29 -DPLATFORM_SDK_VERSION=$(PLATFORM_SDK_VERSION) \ 30 31 my_2nd_arch_prefix := 32 include $(LOCAL_PATH)/crt.mk 33 ifdef TARGET_2ND_ARCH 34 my_2nd_arch_prefix := $(TARGET_2ND_ARCH_VAR_PREFIX) 35 include $(LOCAL_PATH)/crt.mk 36 my_2nd_arch_prefix := 37 endif 38 39 # Define the common source files for all the libc instances 40 # ========================================================= 41 libc_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. 66 libc_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 98 libc_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 245 libc_bionic_src_files := 246 247 # The following implementations depend on pthread data, so we can't include 248 # them in libc_ndk.a. 249 libc_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. 257 libc_bionic_src_files += bionic/getauxval.cpp 258 259 # These four require getauxval, which isn't available on older platforms. 260 libc_bionic_src_files += bionic/getentropy_linux.c 261 libc_bionic_src_files += bionic/sysconf.cpp 262 libc_bionic_src_files += bionic/vdso.cpp 263 libc_bionic_src_files += bionic/setjmp_cookie.cpp 264 265 libc_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 274 libc_cxa_src_files := \ 275 bionic/__cxa_guard.cpp \ 276 bionic/__cxa_pure_virtual.cpp \ 277 bionic/new.cpp \ 278 279 libc_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 312 libc_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 347 libc_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 367 libc_upstream_openbsd_gdtoa_src_files_32 := \ 368 $(libc_upstream_openbsd_gdtoa_src_files) \ 369 370 libc_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. 375 libc_upstream_openbsd_src_files := \ 376 upstream-openbsd/lib/libc/crypt/arc4random.c \ 377 upstream-openbsd/lib/libc/crypt/arc4random_uniform.c \ 378 379 libc_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 393 libc_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 558 libc_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 583 libc_arch_static_src_files := \ 584 bionic/dl_iterate_phdr_static.cpp \ 585 586 # Various kinds of cruft. 587 # ======================================================== 588 libc_common_src_files += \ 589 bionic/ndk_cruft.cpp \ 590 591 libc_bionic_ndk_src_files_32 += \ 592 bionic/mmap.cpp \ 593 594 libc_common_src_files_32 += \ 595 bionic/legacy_32_bit_support.cpp \ 596 bionic/time64.c \ 597 598 libc_netbsd_src_files_32 += \ 599 upstream-netbsd/common/lib/libc/hash/sha1/sha1.c \ 600 601 libc_openbsd_src_files_32 += \ 602 upstream-openbsd/lib/libc/stdio/putw.c \ 603 604 605 # Define some common cflags 606 # ======================================================== 607 libc_common_cflags := \ 608 -D_LIBC=1 \ 609 -Wall -Wextra -Wunused \ 610 611 use_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 615 ifeq ($(TARGET_ARCH),x86_64) 616 use_clang := false 617 endif 618 619 # b/25291096, Clang/llvm compiled libc.so for mips/mips64 failed to boot. 620 ifeq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),mips mips64)) 621 use_clang := false 622 endif 623 624 ifeq ($(use_clang),) 625 use_clang := true 626 endif 627 628 # Try to catch typical 32-bit assumptions that break with 64-bit pointers. 629 libc_common_cflags += \ 630 -Werror=pointer-to-int-cast \ 631 -Werror=int-to-pointer-cast \ 632 -Werror=type-limits \ 633 -Werror \ 634 635 ifeq ($(strip $(DEBUG_BIONIC_LIBC)),true) 636 libc_common_cflags += -DDEBUG 637 endif 638 639 libc_malloc_src := bionic/jemalloc_wrapper.cpp 640 libc_common_c_includes += external/jemalloc/include 641 642 # Define some common conlyflags 643 libc_common_conlyflags := \ 644 -std=gnu99 645 646 # Define some common cppflags 647 libc_common_cppflags := \ 648 649 # Define some common includes 650 # ======================================================== 651 libc_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 659 define patch-up-arch-specific-flags 660 $(1)_$(TARGET_ARCH) += $($(2)_$(TARGET_ARCH)) 661 $(1)_32 += $($(2)_32) 662 ifdef TARGET_2ND_ARCH 663 $(1)_$(TARGET_2ND_ARCH) += $($(2)_$(TARGET_2ND_ARCH)) 664 endif 665 endef 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 677 include $(CLEAR_VARS) 678 679 LOCAL_SRC_FILES := \ 680 bionic/__libc_init_main_thread.cpp \ 681 bionic/__stack_chk_fail.cpp \ 682 683 LOCAL_SRC_FILES_arm64 := arch-arm64/bionic/__set_tls.c 684 LOCAL_SRC_FILES_x86 := arch-x86/bionic/__set_tls.c 685 LOCAL_SRC_FILES_x86_64 := arch-x86_64/bionic/__set_tls.c 686 687 LOCAL_CFLAGS := $(libc_common_cflags) -fno-stack-protector 688 LOCAL_CONLYFLAGS := $(libc_common_conlyflags) 689 LOCAL_CPPFLAGS := $(libc_common_cppflags) 690 LOCAL_C_INCLUDES := $(libc_common_c_includes) 691 LOCAL_MODULE := libc_stack_protector 692 LOCAL_CLANG := $(use_clang) 693 LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 694 LOCAL_CXX_STL := none 695 LOCAL_SYSTEM_SHARED_LIBRARIES := 696 LOCAL_SANITIZE := never 697 LOCAL_NATIVE_COVERAGE := $(bionic_coverage) 698 699 $(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags)) 700 include $(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 708 include $(CLEAR_VARS) 709 710 LOCAL_SRC_FILES := bionic/libc_init_static.cpp 711 LOCAL_CFLAGS := $(libc_common_cflags) -fno-stack-protector 712 LOCAL_CONLYFLAGS := $(libc_common_conlyflags) 713 LOCAL_CPPFLAGS := $(libc_common_cppflags) 714 LOCAL_C_INCLUDES := $(libc_common_c_includes) 715 LOCAL_MODULE := libc_init_static 716 LOCAL_CLANG := $(use_clang) 717 LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 718 LOCAL_CXX_STL := none 719 LOCAL_SYSTEM_SHARED_LIBRARIES := 720 LOCAL_SANITIZE := never 721 LOCAL_NATIVE_COVERAGE := $(bionic_coverage) 722 723 $(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags)) 724 include $(BUILD_STATIC_LIBRARY) 725 726 727 # ======================================================== 728 # libc_tzcode.a - upstream 'tzcode' code 729 # ======================================================== 730 731 include $(CLEAR_VARS) 732 733 LOCAL_SRC_FILES := $(call all-c-files-under,tzcode) 734 # tzcode doesn't include wcsftime, so we use the OpenBSD one. 735 LOCAL_SRC_FILES += upstream-openbsd/lib/libc/time/wcsftime.c 736 737 LOCAL_CFLAGS := $(libc_common_cflags) \ 738 -fvisibility=hidden \ 739 -Wno-unused-parameter \ 740 741 # Don't use ridiculous amounts of stack. 742 LOCAL_CFLAGS += -DALL_STATE 743 # Include tzsetwall, timelocal, timegm, time2posix, and posix2time. 744 LOCAL_CFLAGS += -DSTD_INSPIRED 745 # Obviously, we want to be thread-safe. 746 LOCAL_CFLAGS += -DTHREAD_SAFE 747 # The name of the tm_gmtoff field in our struct tm. 748 LOCAL_CFLAGS += -DTM_GMTOFF=tm_gmtoff 749 # Where we store our tzdata. 750 LOCAL_CFLAGS += -DTZDIR=\"/system/usr/share/zoneinfo\" 751 # Include timezone and daylight globals. 752 LOCAL_CFLAGS += -DUSG_COMPAT=1 753 # Use the empty string (instead of " ") as the timezone abbreviation fallback. 754 LOCAL_CFLAGS += -DWILDABBR=\"\" 755 LOCAL_CFLAGS += -DNO_RUN_TIME_WARNINGS_ABOUT_YEAR_2000_PROBLEMS_THANK_YOU 756 LOCAL_CFLAGS += -Dlint 757 758 LOCAL_CONLYFLAGS := $(libc_common_conlyflags) 759 LOCAL_CPPFLAGS := $(libc_common_cppflags) 760 LOCAL_C_INCLUDES := $(libc_common_c_includes) $(LOCAL_PATH)/tzcode/ 761 LOCAL_MODULE := libc_tzcode 762 LOCAL_CLANG := $(use_clang) 763 LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 764 LOCAL_CXX_STL := none 765 LOCAL_SYSTEM_SHARED_LIBRARIES := 766 LOCAL_SANITIZE := never 767 LOCAL_NATIVE_COVERAGE := $(bionic_coverage) 768 769 $(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags)) 770 include $(BUILD_STATIC_LIBRARY) 771 772 773 # ======================================================== 774 # libc_dns.a - modified NetBSD DNS code 775 # ======================================================== 776 777 include $(CLEAR_VARS) 778 779 LOCAL_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 785 LOCAL_CFLAGS += \ 786 $(libc_common_cflags) \ 787 -DANDROID_CHANGES \ 788 -DINET6 \ 789 -fvisibility=hidden \ 790 -Wno-unused-parameter \ 791 -include netbsd-compat.h \ 792 793 LOCAL_CONLYFLAGS := $(libc_common_conlyflags) 794 LOCAL_CPPFLAGS := $(libc_common_cppflags) 795 LOCAL_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 801 LOCAL_MODULE := libc_dns 802 LOCAL_CLANG := $(use_clang) 803 LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 804 LOCAL_CXX_STL := none 805 LOCAL_SYSTEM_SHARED_LIBRARIES := 806 LOCAL_SANITIZE := never 807 LOCAL_NATIVE_COVERAGE := $(bionic_coverage) 808 809 $(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags)) 810 include $(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 820 include $(CLEAR_VARS) 821 822 LOCAL_SRC_FILES := $(libc_upstream_freebsd_src_files) 823 LOCAL_CFLAGS := \ 824 $(libc_common_cflags) \ 825 -Wno-sign-compare -Wno-uninitialized \ 826 -include freebsd-compat.h \ 827 828 LOCAL_CONLYFLAGS := $(libc_common_conlyflags) 829 LOCAL_CPPFLAGS := $(libc_common_cppflags) 830 LOCAL_C_INCLUDES := $(libc_common_c_includes) \ 831 $(LOCAL_PATH)/upstream-freebsd/android/include \ 832 $(LOCAL_PATH)/upstream-freebsd/lib/libc/include \ 833 834 LOCAL_MODULE := libc_freebsd 835 LOCAL_CLANG := $(use_clang) 836 LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 837 LOCAL_CXX_STL := none 838 LOCAL_SYSTEM_SHARED_LIBRARIES := 839 LOCAL_SANITIZE := never 840 LOCAL_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)) 844 include $(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 854 include $(CLEAR_VARS) 855 856 LOCAL_SRC_FILES := $(libc_upstream_netbsd_src_files) 857 LOCAL_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 865 LOCAL_CONLYFLAGS := $(libc_common_conlyflags) 866 LOCAL_CPPFLAGS := $(libc_common_cppflags) 867 LOCAL_C_INCLUDES := $(libc_common_c_includes) \ 868 $(LOCAL_PATH)/upstream-netbsd/android/include \ 869 $(LOCAL_PATH)/upstream-netbsd/lib/libc/include \ 870 871 LOCAL_MODULE := libc_netbsd 872 LOCAL_CLANG := $(use_clang) 873 LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 874 LOCAL_CXX_STL := none 875 LOCAL_SYSTEM_SHARED_LIBRARIES := 876 LOCAL_SANITIZE := never 877 LOCAL_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)) 881 include $(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 893 include $(CLEAR_VARS) 894 895 LOCAL_SRC_FILES := $(libc_upstream_openbsd_ndk_src_files) 896 LOCAL_CLANG := $(use_clang) 897 898 LOCAL_CFLAGS := \ 899 $(libc_common_cflags) \ 900 -Wno-sign-compare \ 901 -Wno-uninitialized \ 902 -Wno-unused-parameter \ 903 -include openbsd-compat.h \ 904 905 LOCAL_CONLYFLAGS := $(libc_common_conlyflags) 906 LOCAL_CPPFLAGS := $(libc_common_cppflags) 907 LOCAL_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 913 LOCAL_MODULE := libc_openbsd_ndk 914 LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 915 LOCAL_CXX_STL := none 916 LOCAL_SYSTEM_SHARED_LIBRARIES := 917 LOCAL_SANITIZE := never 918 LOCAL_NATIVE_COVERAGE := $(bionic_coverage) 919 920 $(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags)) 921 include $(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 931 include $(CLEAR_VARS) 932 933 LOCAL_SRC_FILES := $(libc_upstream_openbsd_src_files) 934 LOCAL_CLANG := $(use_clang) 935 936 LOCAL_CFLAGS := \ 937 $(libc_common_cflags) \ 938 -Wno-sign-compare \ 939 -Wno-uninitialized \ 940 -Wno-unused-parameter \ 941 -include openbsd-compat.h \ 942 943 LOCAL_CONLYFLAGS := $(libc_common_conlyflags) 944 LOCAL_CPPFLAGS := $(libc_common_cppflags) 945 LOCAL_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 951 LOCAL_MODULE := libc_openbsd 952 LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 953 LOCAL_CXX_STL := none 954 LOCAL_SYSTEM_SHARED_LIBRARIES := 955 LOCAL_SANITIZE := never 956 LOCAL_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)) 961 include $(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 971 include $(CLEAR_VARS) 972 973 LOCAL_SRC_FILES_32 := $(libc_upstream_openbsd_gdtoa_src_files_32) 974 LOCAL_SRC_FILES_64 := $(libc_upstream_openbsd_gdtoa_src_files_64) 975 LOCAL_CLANG := $(use_clang) 976 977 LOCAL_CFLAGS := \ 978 $(libc_common_cflags) \ 979 -Wno-sign-compare -Wno-uninitialized \ 980 -fvisibility=hidden \ 981 -include openbsd-compat.h \ 982 983 LOCAL_CONLYFLAGS := $(libc_common_conlyflags) 984 LOCAL_CPPFLAGS := $(libc_common_cppflags) 985 LOCAL_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 990 LOCAL_MODULE := libc_gdtoa 991 LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 992 LOCAL_CXX_STL := none 993 LOCAL_SYSTEM_SHARED_LIBRARIES := 994 LOCAL_SANITIZE := never 995 LOCAL_NATIVE_COVERAGE := $(bionic_coverage) 996 997 $(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags)) 998 include $(BUILD_STATIC_LIBRARY) 999 1000 1001 # ======================================================== 1002 # libc_bionic.a - home-grown C library code 1003 # ======================================================== 1004 1005 include $(CLEAR_VARS) 1006 1007 LOCAL_SRC_FILES := $(libc_bionic_src_files) 1008 LOCAL_CFLAGS := $(libc_common_cflags) \ 1009 -Wframe-larger-than=2048 \ 1010 1011 LOCAL_CONLYFLAGS := $(libc_common_conlyflags) 1012 LOCAL_CPPFLAGS := $(libc_common_cppflags) -Wold-style-cast 1013 LOCAL_C_INCLUDES := $(libc_common_c_includes) bionic/libstdc++/include 1014 LOCAL_MODULE := libc_bionic 1015 LOCAL_CLANG := $(use_clang) 1016 LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 1017 LOCAL_CXX_STL := none 1018 LOCAL_SYSTEM_SHARED_LIBRARIES := 1019 LOCAL_SANITIZE := never 1020 LOCAL_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)) 1025 include $(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 1034 include $(CLEAR_VARS) 1035 1036 LOCAL_SRC_FILES := $(libc_bionic_ndk_src_files) 1037 LOCAL_CFLAGS := $(libc_common_cflags) \ 1038 -Wframe-larger-than=2048 \ 1039 1040 LOCAL_CONLYFLAGS := $(libc_common_conlyflags) 1041 LOCAL_CPPFLAGS := $(libc_common_cppflags) -Wold-style-cast 1042 LOCAL_C_INCLUDES := $(libc_common_c_includes) bionic/libstdc++/include 1043 LOCAL_MODULE := libc_bionic_ndk 1044 LOCAL_CLANG := $(use_clang) 1045 LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 1046 LOCAL_CXX_STL := none 1047 LOCAL_SYSTEM_SHARED_LIBRARIES := 1048 LOCAL_SANITIZE := never 1049 LOCAL_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)) 1053 include $(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 1064 include $(CLEAR_VARS) 1065 1066 LOCAL_SRC_FILES := $(libc_pthread_src_files) 1067 LOCAL_CFLAGS := $(libc_common_cflags) \ 1068 -Wframe-larger-than=2048 \ 1069 1070 LOCAL_CONLYFLAGS := $(libc_common_conlyflags) 1071 LOCAL_CPPFLAGS := $(libc_common_cppflags) -Wold-style-cast 1072 LOCAL_C_INCLUDES := $(libc_common_c_includes) 1073 LOCAL_MODULE := libc_pthread 1074 LOCAL_CLANG := $(use_clang) 1075 LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 1076 LOCAL_CXX_STL := none 1077 LOCAL_SYSTEM_SHARED_LIBRARIES := 1078 LOCAL_SANITIZE := never 1079 LOCAL_NATIVE_COVERAGE := $(bionic_coverage) 1080 1081 include $(BUILD_STATIC_LIBRARY) 1082 1083 1084 # ======================================================== 1085 # libc_cxa.a - Things traditionally in libstdc++ 1086 # ======================================================== 1087 1088 include $(CLEAR_VARS) 1089 1090 LOCAL_SRC_FILES := $(libc_cxa_src_files) 1091 LOCAL_CFLAGS := $(libc_common_cflags) \ 1092 -fvisibility=hidden \ 1093 1094 LOCAL_CONLYFLAGS := $(libc_common_conlyflags) 1095 LOCAL_CPPFLAGS := $(libc_common_cppflags) 1096 LOCAL_C_INCLUDES := $(libc_common_c_includes) bionic/libstdc++/include 1097 LOCAL_MODULE := libc_cxa 1098 LOCAL_CLANG := true # GCC refuses to hide new/delete 1099 LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 1100 LOCAL_CXX_STL := none 1101 LOCAL_SYSTEM_SHARED_LIBRARIES := 1102 LOCAL_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. 1110 LOCAL_NATIVE_COVERAGE := false 1111 1112 include $(BUILD_STATIC_LIBRARY) 1113 1114 1115 # ======================================================== 1116 # libc_syscalls.a 1117 # ======================================================== 1118 1119 include $(CLEAR_VARS) 1120 1121 LOCAL_SRC_FILES_$(TARGET_ARCH) := $(call all-S-files-under,arch-$(TARGET_ARCH)/syscalls) 1122 ifdef TARGET_2ND_ARCH 1123 LOCAL_SRC_FILES_$(TARGET_2ND_ARCH) := $(call all-S-files-under,arch-$(TARGET_2ND_ARCH)/syscalls) 1124 endif 1125 LOCAL_MODULE := libc_syscalls 1126 LOCAL_CLANG := $(use_clang) 1127 LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 1128 LOCAL_CXX_STL := none 1129 LOCAL_SYSTEM_SHARED_LIBRARIES := 1130 LOCAL_SANITIZE := never 1131 LOCAL_NATIVE_COVERAGE := $(bionic_coverage) 1132 1133 include $(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 1143 include $(CLEAR_VARS) 1144 1145 LOCAL_SRC_FILES_arm := arch-arm/bionic/__aeabi.c 1146 LOCAL_MODULE := libc_aeabi 1147 LOCAL_CLANG := $(use_clang) 1148 LOCAL_CFLAGS := $(libc_common_cflags) -fno-builtin 1149 LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 1150 LOCAL_CXX_STL := none 1151 LOCAL_SYSTEM_SHARED_LIBRARIES := 1152 LOCAL_SANITIZE := never 1153 LOCAL_NATIVE_COVERAGE := $(bionic_coverage) 1154 1155 include $(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 1169 include $(CLEAR_VARS) 1170 1171 LOCAL_MODULE := libc_ndk 1172 LOCAL_CLANG := $(use_clang) 1173 LOCAL_ASFLAGS := $(LOCAL_CFLAGS) 1174 LOCAL_CONLYFLAGS := $(libc_common_conlyflags) 1175 LOCAL_CFLAGS := $(libc_common_cflags) -fvisibility=hidden -O0 1176 LOCAL_CPPFLAGS := $(libc_common_cppflags) 1177 LOCAL_C_INCLUDES := $(libc_common_c_includes) 1178 LOCAL_SANITIZE := never 1179 LOCAL_NATIVE_COVERAGE := $(bionic_coverage) 1180 LOCAL_SYSTEM_SHARED_LIBRARIES := 1181 1182 LOCAL_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 1188 LOCAL_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 1193 LOCAL_CFLAGS := $(libc_common_cflags) \ 1194 -DLIBC_STATIC \ 1195 1196 LOCAL_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 1210 LOCAL_WHOLE_STATIC_LIBRARIES_arm := libc_aeabi 1211 LOCAL_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 1218 LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 1219 include $(BUILD_STATIC_LIBRARY) 1220 1221 # ======================================================== 1222 # libc_common.a 1223 # ======================================================== 1224 1225 include $(CLEAR_VARS) 1226 1227 LOCAL_SRC_FILES := $(libc_common_src_files) 1228 LOCAL_CFLAGS := $(libc_common_cflags) 1229 LOCAL_CONLYFLAGS := $(libc_common_conlyflags) 1230 LOCAL_CPPFLAGS := $(libc_common_cppflags) 1231 LOCAL_C_INCLUDES := $(libc_common_c_includes) 1232 LOCAL_MODULE := libc_common 1233 LOCAL_CLANG := $(use_clang) 1234 LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 1235 LOCAL_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 1251 LOCAL_WHOLE_STATIC_LIBRARIES_arm := libc_aeabi 1252 1253 LOCAL_CXX_STL := none 1254 LOCAL_SYSTEM_SHARED_LIBRARIES := 1255 1256 # TODO: split out the asflags. 1257 LOCAL_ASFLAGS := $(LOCAL_CFLAGS) 1258 LOCAL_SANITIZE := never 1259 LOCAL_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)) 1264 include $(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 1277 include $(CLEAR_VARS) 1278 1279 LOCAL_SRC_FILES := \ 1280 $(libc_arch_static_src_files) \ 1281 1282 LOCAL_C_INCLUDES := $(libc_common_c_includes) 1283 LOCAL_CFLAGS := $(libc_common_cflags) \ 1284 -DLIBC_STATIC \ 1285 1286 LOCAL_CONLYFLAGS := $(libc_common_conlyflags) 1287 LOCAL_CPPFLAGS := $(libc_common_cppflags) 1288 1289 LOCAL_MODULE := libc_nomalloc 1290 LOCAL_CLANG := $(use_clang) 1291 LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 1292 LOCAL_WHOLE_STATIC_LIBRARIES := libc_common libc_init_static 1293 LOCAL_CXX_STL := none 1294 LOCAL_SYSTEM_SHARED_LIBRARIES := 1295 LOCAL_SANITIZE := never 1296 LOCAL_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)) 1300 include $(BUILD_STATIC_LIBRARY) 1301 1302 1303 # ======================================================== 1304 # libc_malloc.a: the _prefixed_ malloc functions (like dlcalloc). 1305 # ======================================================== 1306 1307 include $(CLEAR_VARS) 1308 LOCAL_SRC_FILES := $(libc_malloc_src) 1309 LOCAL_CFLAGS := $(libc_common_cflags) \ 1310 -fvisibility=hidden \ 1311 1312 LOCAL_CONLYFLAGS := $(libc_common_conlyflags) 1313 LOCAL_CPPFLAGS := $(libc_common_cppflags) 1314 LOCAL_C_INCLUDES := $(libc_common_c_includes) 1315 LOCAL_MODULE := libc_malloc 1316 LOCAL_CLANG := $(use_clang) 1317 LOCAL_CXX_STL := none 1318 LOCAL_SANITIZE := never 1319 LOCAL_NATIVE_COVERAGE := $(bionic_coverage) 1320 LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 1321 include $(BUILD_STATIC_LIBRARY) 1322 1323 1324 # ======================================================== 1325 # libc.a 1326 # ======================================================== 1327 include $(CLEAR_VARS) 1328 1329 LOCAL_SRC_FILES := \ 1330 $(libc_arch_static_src_files) \ 1331 bionic/malloc_common.cpp \ 1332 bionic/libc_init_static.cpp \ 1333 1334 LOCAL_CFLAGS := $(libc_common_cflags) \ 1335 -DLIBC_STATIC \ 1336 1337 LOCAL_CONLYFLAGS := $(libc_common_conlyflags) 1338 LOCAL_CPPFLAGS := $(libc_common_cppflags) 1339 LOCAL_C_INCLUDES := $(libc_common_c_includes) 1340 LOCAL_MODULE := libc 1341 LOCAL_CLANG := $(use_clang) 1342 LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 1343 LOCAL_WHOLE_STATIC_LIBRARIES := libc_common libc_init_static libjemalloc 1344 1345 LOCAL_CXX_STL := none 1346 LOCAL_SYSTEM_SHARED_LIBRARIES := 1347 LOCAL_SANITIZE := never 1348 LOCAL_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)) 1352 include $(BUILD_STATIC_LIBRARY) 1353 1354 1355 # ======================================================== 1356 # libc.so 1357 # ======================================================== 1358 include $(CLEAR_VARS) 1359 1360 LOCAL_CFLAGS := $(libc_common_cflags) 1361 LOCAL_CONLYFLAGS := $(libc_common_conlyflags) 1362 LOCAL_CPPFLAGS := $(libc_common_cppflags) 1363 1364 LOCAL_C_INCLUDES := $(libc_common_c_includes) 1365 LOCAL_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 1374 LOCAL_MODULE := libc 1375 LOCAL_CLANG := $(use_clang) 1376 LOCAL_REQUIRED_MODULES := tzdata 1377 LOCAL_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. 1391 LOCAL_STRIP_MODULE := keep_symbols 1392 1393 # Do not pack libc.so relocations; see http://b/20645321 for details. 1394 LOCAL_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 1404 LOCAL_SHARED_LIBRARIES := libdl 1405 LOCAL_WHOLE_STATIC_LIBRARIES := libc_common libjemalloc 1406 1407 LOCAL_CXX_STL := none 1408 LOCAL_SYSTEM_SHARED_LIBRARIES := 1409 1410 # TODO: This is to work around b/24465209. Remove after root cause is fixed 1411 LOCAL_LDFLAGS_arm := -Wl,--hash-style=both 1412 LOCAL_LDFLAGS_x86 := -Wl,--hash-style=both 1413 1414 # Don't re-export new/delete and friends, even if the compiler really wants to. 1415 ifdef BRILLO 1416 LOCAL_LDFLAGS_arm += -Wl,--version-script,$(LOCAL_PATH)/libc.arm.brillo.map 1417 LOCAL_LDFLAGS_mips += -Wl,--version-script,$(LOCAL_PATH)/libc.mips.brillo.map 1418 LOCAL_LDFLAGS_x86 += -Wl,--version-script,$(LOCAL_PATH)/libc.x86.brillo.map 1419 else 1420 LOCAL_LDFLAGS_arm += -Wl,--version-script,$(LOCAL_PATH)/libc.arm.map 1421 LOCAL_LDFLAGS_mips += -Wl,--version-script,$(LOCAL_PATH)/libc.mips.map 1422 LOCAL_LDFLAGS_x86 += -Wl,--version-script,$(LOCAL_PATH)/libc.x86.map 1423 endif 1424 1425 LOCAL_LDFLAGS_arm64 += -Wl,--version-script,$(LOCAL_PATH)/libc.arm64.map 1426 LOCAL_LDFLAGS_mips64 += -Wl,--version-script,$(LOCAL_PATH)/libc.mips64.map 1427 LOCAL_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. 1432 LOCAL_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. 1436 LOCAL_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 1441 LOCAL_NO_CRT := true 1442 LOCAL_ASFLAGS += $(libc_crt_target_cflags) 1443 1444 # special for arm 1445 LOCAL_CFLAGS_arm += -DCRT_LEGACY_WORKAROUND 1446 LOCAL_SRC_FILES_arm += \ 1447 arch-arm/bionic/atexit_legacy.c 1448 1449 LOCAL_SANITIZE := never 1450 LOCAL_NATIVE_COVERAGE := $(bionic_coverage) 1451 1452 include $(BUILD_SHARED_LIBRARY) 1453 1454 # ======================================================== 1455 # libc_logging.a 1456 # ======================================================== 1457 include $(CLEAR_VARS) 1458 1459 LOCAL_CFLAGS := $(libc_common_cflags) 1460 LOCAL_CONLYFLAGS := $(libc_common_conlyflags) 1461 LOCAL_CPPFLAGS := $(libc_common_cppflags) 1462 LOCAL_C_INCLUDES := $(libc_common_c_includes) 1463 1464 LOCAL_SRC_FILES := \ 1465 bionic/libc_logging.cpp \ 1466 1467 LOCAL_MODULE := libc_logging 1468 1469 LOCAL_CLANG := $(use_clang) 1470 LOCAL_ADDITIONAL_DEPENDENCIES := $(libc_common_additional_dependencies) 1471 LOCAL_SYSTEM_SHARED_LIBRARIES := 1472 1473 LOCAL_SANITIZE := never 1474 LOCAL_NATIVE_COVERAGE := $(bionic_coverage) 1475 1476 $(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags)) 1477 include $(BUILD_STATIC_LIBRARY) 1478 1479 # ======================================================== 1480 # libstdc++.so 1481 # ======================================================== 1482 libstdcxx_common_src_files := \ 1483 bionic/__cxa_guard.cpp \ 1484 bionic/__cxa_pure_virtual.cpp \ 1485 bionic/new.cpp \ 1486 1487 include $(CLEAR_VARS) 1488 LOCAL_C_INCLUDES := $(libc_common_c_includes) bionic/libstdc++/include 1489 LOCAL_CFLAGS := $(libc_common_cflags) 1490 LOCAL_CPPFLAGS := $(libc_common_cppflags) 1491 1492 # TODO: This is to work around b/24465209. Remove after root cause is fixed 1493 LOCAL_LDFLAGS_arm := -Wl,--hash-style=both 1494 LOCAL_LDFLAGS_x86 := -Wl,--hash-style=both 1495 1496 LOCAL_SRC_FILES := $(libstdcxx_common_src_files) 1497 LOCAL_MODULE:= libstdc++ 1498 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 1499 LOCAL_CXX_STL := none 1500 LOCAL_SYSTEM_SHARED_LIBRARIES := libc 1501 LOCAL_STATIC_LIBRARIES := libc_logging 1502 LOCAL_SANITIZE := never 1503 LOCAL_NATIVE_COVERAGE := $(bionic_coverage) 1504 include $(BUILD_SHARED_LIBRARY) 1505 1506 # ======================================================== 1507 # libstdc++.a 1508 # ======================================================== 1509 include $(CLEAR_VARS) 1510 LOCAL_C_INCLUDES := $(libc_common_c_includes) bionic/libstdc++/include 1511 LOCAL_CFLAGS := $(libc_common_cflags) 1512 LOCAL_CPPFLAGS := $(libc_common_cppflags) 1513 LOCAL_SRC_FILES := $(libstdcxx_common_src_files) 1514 LOCAL_MODULE:= libstdc++ 1515 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 1516 LOCAL_CXX_STL := none 1517 LOCAL_SYSTEM_SHARED_LIBRARIES := libc 1518 LOCAL_SANITIZE := never 1519 LOCAL_NATIVE_COVERAGE := $(bionic_coverage) 1520 include $(BUILD_STATIC_LIBRARY) 1521