Android.bp revision 9b687dc243c5cea56002947a5ae563ff6cf31968
1// Define the common source files for all the libc instances 2// ========================================================= 3libc_common_src_files = [ 4 "bionic/bindresvport.c", 5 "bionic/ether_aton.c", 6 "bionic/ether_ntoa.c", 7 "bionic/fts.c", 8 "bionic/getpriority.c", 9 "bionic/if_indextoname.c", 10 "bionic/if_nametoindex.c", 11 "bionic/initgroups.c", 12 "bionic/isatty.c", 13 "bionic/memmem.c", 14 "bionic/pututline.c", 15 "bionic/sched_cpualloc.c", 16 "bionic/sched_cpucount.c", 17 "bionic/sigblock.c", 18 "bionic/siginterrupt.c", 19 "bionic/sigsetmask.c", 20 "bionic/system_properties_compat.c", 21 "stdio/findfp.c", 22 "stdio/fread.c", 23 "stdio/refill.c", 24 "stdio/snprintf.c", 25 "stdio/sprintf.c", 26 "stdio/stdio.c", 27 "stdio/stdio_ext.cpp", 28 "stdlib/atexit.c", 29 "stdlib/exit.c", 30 31 // Fortify implementations of libc functions. 32 "bionic/__FD_chk.cpp", 33 "bionic/__fgets_chk.cpp", 34 "bionic/__fread_chk.cpp", 35 "bionic/__fwrite_chk.cpp", 36 "bionic/__getcwd_chk.cpp", 37 "bionic/__memchr_chk.cpp", 38 "bionic/__memmove_chk.cpp", 39 "bionic/__memrchr_chk.cpp", 40 "bionic/__poll_chk.cpp", 41 "bionic/__pread64_chk.cpp", 42 "bionic/__pread_chk.cpp", 43 "bionic/__pwrite64_chk.cpp", 44 "bionic/__pwrite_chk.cpp", 45 "bionic/__read_chk.cpp", 46 "bionic/__readlink_chk.cpp", 47 "bionic/__readlinkat_chk.cpp", 48 "bionic/__recvfrom_chk.cpp", 49 "bionic/__stpcpy_chk.cpp", 50 "bionic/__stpncpy_chk.cpp", 51 "bionic/__strchr_chk.cpp", 52 "bionic/__strlcat_chk.cpp", 53 "bionic/__strlcpy_chk.cpp", 54 "bionic/__strlen_chk.cpp", 55 "bionic/__strncat_chk.cpp", 56 "bionic/__strncpy_chk.cpp", 57 "bionic/__strrchr_chk.cpp", 58 "bionic/__umask_chk.cpp", 59 "bionic/__vsnprintf_chk.cpp", 60 "bionic/__vsprintf_chk.cpp", 61 "bionic/__write_chk.cpp", 62] 63 64// Various kinds of cruft. 65// ======================================================== 66libc_common_src_files += [ 67 "bionic/ndk_cruft.cpp", 68] 69 70libc_common_src_files_32 = [ 71 "bionic/legacy_32_bit_support.cpp", 72 "bionic/time64.c", 73] 74 75// Define some common cflags 76// ======================================================== 77cc_defaults { 78 name: "libc_defaults", 79 cflags: [ 80 "-D_LIBC=1", 81 "-Wall", 82 "-Wextra", 83 "-Wunused", 84 85 // Try to catch typical 32-bit assumptions that break with 64-bit pointers. 86 "-Werror=pointer-to-int-cast", 87 "-Werror=int-to-pointer-cast", 88 "-Werror=type-limits", 89 "-Werror", 90 ], 91 // TODO: split out the asflags. 92 asflags: [ 93 "-D_LIBC=1", 94 "-Wall", 95 "-Wextra", 96 "-Wunused", 97 98 // Try to catch typical 32-bit assumptions that break with 64-bit pointers. 99 "-Werror=pointer-to-int-cast", 100 "-Werror=int-to-pointer-cast", 101 "-Werror=type-limits", 102 "-Werror", 103 ], 104 conlyflags: ["-std=gnu99"], 105 cppflags: [], 106 107 product_variables: { 108 device_uses_jemalloc: { 109 cflags: ["-DUSE_JEMALLOC"], 110 include_dirs: ["external/jemalloc/include"], 111 }, 112 device_uses_dlmalloc: { 113 cflags: ["-DUSE_DLMALLOC"], 114 }, 115 // To customize dlmalloc's alignment, set BOARD_MALLOC_ALIGNMENT in 116 // the appropriate BoardConfig.mk file. 117 dlmalloc_alignment: { 118 cflags: ["-DMALLOC_ALIGNMENT=%d"], 119 }, 120 }, 121 // Clang/llvm has incompatible long double (fp128) for x86_64. 122 // https://llvm.org/bugs/show_bug.cgi?id=23897 123 arch: { 124 x86_64: { 125 clang: false, 126 }, 127 }, 128 129 stl: "none", 130 system_shared_libs: [], 131 sanitize: ["never"], 132 native_coverage: false, 133} 134 135// ANDROIDMK TRANSLATION ERROR: unsupported directive 136// ifeq ($(strip $(DEBUG_BIONIC_LIBC)),true) 137//libc_common_cflags += ["-DDEBUG"] 138// ANDROIDMK TRANSLATION ERROR: unsupported directive 139// endif 140 141// ======================================================== 142// libc_stack_protector.a - stack protector code 143// ======================================================== 144// 145// The stack protector code needs to be compiled 146// with -fno-stack-protector, since it modifies the 147// stack canary. 148 149cc_library_static { 150 151 srcs: ["bionic/__stack_chk_fail.cpp"], 152 defaults: ["libc_defaults"], 153 cflags: ["-fno-stack-protector"], 154 name: "libc_stack_protector", 155} 156 157// ======================================================== 158// libc_tzcode.a - upstream 'tzcode' code 159// ======================================================== 160 161cc_library_static { 162 163 defaults: ["libc_defaults"], 164 srcs: [ 165 "tzcode/asctime.c", 166 "tzcode/difftime.c", 167 "tzcode/localtime.c", 168 "tzcode/strftime.c", 169 "tzcode/strptime.c", 170 "upstream-openbsd/lib/libc/time/wcsftime.c", // tzcode doesn't include wcsftime, so we use the OpenBSD one. 171 ], 172 173 cflags: [ 174 "-fvisibility=hidden", 175 "-Wno-unused-parameter", 176 // Don't use ridiculous amounts of stack. 177 "-DALL_STATE", 178 // Include tzsetwall, timelocal, timegm, time2posix, and posix2time. 179 "-DSTD_INSPIRED", 180 // Obviously, we want to be thread-safe. 181 "-DTHREAD_SAFE", 182 // The name of the tm_gmtoff field in our struct tm. 183 "-DTM_GMTOFF=tm_gmtoff", 184 // Where we store our tzdata. 185 "-DTZDIR=\\\"/system/usr/share/zoneinfo\\\"", 186 // Include timezone and daylight globals. 187 "-DUSG_COMPAT=1", 188 // Use the empty string (instead of " ") as the timezone abbreviation 189 // fallback. 190 "-DWILDABBR=\\\"\\\"", 191 "-DNO_RUN_TIME_WARNINGS_ABOUT_YEAR_2000_PROBLEMS_THANK_YOU", 192 "-Dlint", 193 ], 194 195 local_include_dirs: ["tzcode/"], 196 name: "libc_tzcode", 197} 198 199// ======================================================== 200// libc_dns.a - modified NetBSD DNS code 201// ======================================================== 202 203cc_library_static { 204 205 defaults: ["libc_defaults"], 206 srcs: [ 207 "dns/net/gethnamaddr.c", 208 "dns/net/getservbyname.c", 209 "dns/net/getservbyport.c", 210 "dns/net/getaddrinfo.c", 211 "dns/net/getnameinfo.c", 212 "dns/net/sethostent.c", 213 "dns/net/getservent.c", 214 "dns/net/nsdispatch.c", 215 "dns/net/base64.c", 216 "dns/resolv/res_state.c", 217 "dns/resolv/res_init.c", 218 "dns/resolv/res_mkquery.c", 219 "dns/resolv/res_data.c", 220 "dns/resolv/res_debug.c", 221 "dns/resolv/herror.c", 222 "dns/resolv/res_cache.c", 223 "dns/resolv/res_query.c", 224 "dns/resolv/res_comp.c", 225 "dns/resolv/res_send.c", 226 "dns/nameser/ns_name.c", 227 "dns/nameser/ns_print.c", 228 "dns/nameser/ns_parse.c", 229 "dns/nameser/ns_ttl.c", 230 "dns/nameser/ns_netint.c", 231 "dns/nameser/ns_samedomain.c", 232 233 "upstream-netbsd/lib/libc/isc/ev_streams.c", 234 "upstream-netbsd/lib/libc/isc/ev_timers.c", 235 "upstream-netbsd/lib/libc/resolv/mtctxres.c", 236 // We use the OpenBSD res_random. 237 "upstream-openbsd/lib/libc/net/res_random.c", 238 ], 239 240 cflags: [ 241 "-Dres_randomid=__res_randomid", 242 "-DANDROID_CHANGES", 243 "-DINET6", 244 "-fvisibility=hidden", 245 "-Wno-unused-parameter", 246 "-include netbsd-compat.h", 247 ], 248 249 local_include_dirs: [ 250 "dns/include", 251 "private", 252 "upstream-netbsd/lib/libc/include", 253 "upstream-netbsd/android/include", 254 ], 255 256 name: "libc_dns", 257} 258 259// ======================================================== 260// libc_freebsd.a - upstream FreeBSD C library code 261// ======================================================== 262// 263// These files are built with the freebsd-compat.h header file 264// automatically included. 265 266cc_library_static { 267 defaults: ["libc_defaults"], 268 srcs: [ 269 "upstream-freebsd/lib/libc/gen/ldexp.c", 270 "upstream-freebsd/lib/libc/gen/sleep.c", 271 "upstream-freebsd/lib/libc/gen/usleep.c", 272 "upstream-freebsd/lib/libc/stdlib/getopt_long.c", 273 "upstream-freebsd/lib/libc/stdlib/qsort.c", 274 "upstream-freebsd/lib/libc/stdlib/quick_exit.c", 275 "upstream-freebsd/lib/libc/stdlib/realpath.c", 276 "upstream-freebsd/lib/libc/string/wcpcpy.c", 277 "upstream-freebsd/lib/libc/string/wcpncpy.c", 278 "upstream-freebsd/lib/libc/string/wcscasecmp.c", 279 "upstream-freebsd/lib/libc/string/wcscat.c", 280 "upstream-freebsd/lib/libc/string/wcschr.c", 281 "upstream-freebsd/lib/libc/string/wcscmp.c", 282 "upstream-freebsd/lib/libc/string/wcscpy.c", 283 "upstream-freebsd/lib/libc/string/wcscspn.c", 284 "upstream-freebsd/lib/libc/string/wcsdup.c", 285 "upstream-freebsd/lib/libc/string/wcslcat.c", 286 "upstream-freebsd/lib/libc/string/wcslen.c", 287 "upstream-freebsd/lib/libc/string/wcsncasecmp.c", 288 "upstream-freebsd/lib/libc/string/wcsncat.c", 289 "upstream-freebsd/lib/libc/string/wcsncmp.c", 290 "upstream-freebsd/lib/libc/string/wcsncpy.c", 291 "upstream-freebsd/lib/libc/string/wcsnlen.c", 292 "upstream-freebsd/lib/libc/string/wcspbrk.c", 293 "upstream-freebsd/lib/libc/string/wcsrchr.c", 294 "upstream-freebsd/lib/libc/string/wcsspn.c", 295 "upstream-freebsd/lib/libc/string/wcstok.c", 296 "upstream-freebsd/lib/libc/string/wmemchr.c", 297 "upstream-freebsd/lib/libc/string/wmemcmp.c", 298 "upstream-freebsd/lib/libc/string/wmemset.c", 299 "upstream-freebsd/lib/libc/string/wmemmove.c", 300 ], 301 arch: { 302 arm64: { 303 exclude_srcs: [ 304 "upstream-freebsd/lib/libc/string/wmemmove.c", 305 ], 306 }, 307 x86: { 308 exclude_srcs: [ 309 "upstream-freebsd/lib/libc/string/wcschr.c", 310 "upstream-freebsd/lib/libc/string/wcscmp.c", 311 "upstream-freebsd/lib/libc/string/wcslen.c", 312 "upstream-freebsd/lib/libc/string/wcsrchr.c", 313 ], 314 atom: { 315 exclude_srcs: [ 316 "upstream-freebsd/lib/libc/string/wmemcmp.c", 317 ], 318 }, 319 ssse3: { 320 exclude_srcs: [ 321 "upstream-freebsd/lib/libc/string/wcscat.c", 322 "upstream-freebsd/lib/libc/string/wcscpy.c", 323 ], 324 }, 325 sse4: { 326 exclude_srcs: [ 327 "upstream-freebsd/lib/libc/string/wmemcmp.c", 328 ], 329 }, 330 }, 331 }, 332 333 cflags: [ 334 "-Wno-sign-compare", 335 "-Wno-uninitialized", 336 "-include freebsd-compat.h", 337 ], 338 339 local_include_dirs: [ 340 "upstream-freebsd/android/include", 341 ], 342 343 name: "libc_freebsd", 344} 345 346// ======================================================== 347// libc_netbsd.a - upstream NetBSD C library code 348// ======================================================== 349// 350// These files are built with the netbsd-compat.h header file 351// automatically included. 352 353cc_library_static { 354 355 defaults: ["libc_defaults"], 356 srcs: [ 357 "upstream-netbsd/common/lib/libc/stdlib/random.c", 358 "upstream-netbsd/lib/libc/gen/ftw.c", 359 "upstream-netbsd/lib/libc/gen/nftw.c", 360 "upstream-netbsd/lib/libc/gen/nice.c", 361 "upstream-netbsd/lib/libc/gen/popen.c", 362 "upstream-netbsd/lib/libc/gen/psignal.c", 363 "upstream-netbsd/lib/libc/gen/utime.c", 364 "upstream-netbsd/lib/libc/gen/utmp.c", 365 "upstream-netbsd/lib/libc/inet/nsap_addr.c", 366 "upstream-netbsd/lib/libc/regex/regcomp.c", 367 "upstream-netbsd/lib/libc/regex/regerror.c", 368 "upstream-netbsd/lib/libc/regex/regexec.c", 369 "upstream-netbsd/lib/libc/regex/regfree.c", 370 "upstream-netbsd/lib/libc/stdlib/bsearch.c", 371 "upstream-netbsd/lib/libc/stdlib/div.c", 372 "upstream-netbsd/lib/libc/stdlib/drand48.c", 373 "upstream-netbsd/lib/libc/stdlib/erand48.c", 374 "upstream-netbsd/lib/libc/stdlib/jrand48.c", 375 "upstream-netbsd/lib/libc/stdlib/lcong48.c", 376 "upstream-netbsd/lib/libc/stdlib/ldiv.c", 377 "upstream-netbsd/lib/libc/stdlib/lldiv.c", 378 "upstream-netbsd/lib/libc/stdlib/lrand48.c", 379 "upstream-netbsd/lib/libc/stdlib/mrand48.c", 380 "upstream-netbsd/lib/libc/stdlib/nrand48.c", 381 "upstream-netbsd/lib/libc/stdlib/_rand48.c", 382 "upstream-netbsd/lib/libc/stdlib/rand_r.c", 383 "upstream-netbsd/lib/libc/stdlib/reallocarr.c", 384 "upstream-netbsd/lib/libc/stdlib/seed48.c", 385 "upstream-netbsd/lib/libc/stdlib/srand48.c", 386 "upstream-netbsd/lib/libc/string/memccpy.c", 387 "upstream-netbsd/lib/libc/string/strcasestr.c", 388 "upstream-netbsd/lib/libc/string/strcoll.c", 389 "upstream-netbsd/lib/libc/string/strxfrm.c", 390 ], 391 multilib: { 392 lib32: { 393 // LP32 cruft 394 srcs: ["upstream-netbsd/common/lib/libc/hash/sha1/sha1.c"], 395 }, 396 }, 397 cflags: [ 398 "-Wno-sign-compare", 399 "-Wno-uninitialized", 400 "-DPOSIX_MISTAKE", 401 "-include netbsd-compat.h", 402 ], 403 404 local_include_dirs: [ 405 "upstream-netbsd/android/include", 406 "upstream-netbsd/lib/libc/include", 407 ], 408 409 name: "libc_netbsd", 410} 411 412// ======================================================== 413// libc_openbsd_ndk.a - upstream OpenBSD C library code 414// that can be safely included in the libc_ndk.a (doesn't 415// contain any troublesome global data or constructors). 416// ======================================================== 417// 418// These files are built with the openbsd-compat.h header file 419// automatically included. 420 421cc_library_static { 422 name: "libc_openbsd_ndk", 423 defaults: ["libc_defaults"], 424 srcs: [ 425 "upstream-openbsd/lib/libc/compat-43/killpg.c", 426 "upstream-openbsd/lib/libc/gen/alarm.c", 427 "upstream-openbsd/lib/libc/gen/ctype_.c", 428 "upstream-openbsd/lib/libc/gen/daemon.c", 429 "upstream-openbsd/lib/libc/gen/err.c", 430 "upstream-openbsd/lib/libc/gen/errx.c", 431 "upstream-openbsd/lib/libc/gen/exec.c", 432 "upstream-openbsd/lib/libc/gen/fnmatch.c", 433 "upstream-openbsd/lib/libc/gen/ftok.c", 434 "upstream-openbsd/lib/libc/gen/getprogname.c", 435 "upstream-openbsd/lib/libc/gen/isctype.c", 436 "upstream-openbsd/lib/libc/gen/setprogname.c", 437 "upstream-openbsd/lib/libc/gen/time.c", 438 "upstream-openbsd/lib/libc/gen/tolower_.c", 439 "upstream-openbsd/lib/libc/gen/toupper_.c", 440 "upstream-openbsd/lib/libc/gen/verr.c", 441 "upstream-openbsd/lib/libc/gen/verrx.c", 442 "upstream-openbsd/lib/libc/gen/vwarn.c", 443 "upstream-openbsd/lib/libc/gen/vwarnx.c", 444 "upstream-openbsd/lib/libc/gen/warn.c", 445 "upstream-openbsd/lib/libc/gen/warnx.c", 446 "upstream-openbsd/lib/libc/locale/btowc.c", 447 "upstream-openbsd/lib/libc/locale/mbrlen.c", 448 "upstream-openbsd/lib/libc/locale/mbstowcs.c", 449 "upstream-openbsd/lib/libc/locale/mbtowc.c", 450 "upstream-openbsd/lib/libc/locale/wcscoll.c", 451 "upstream-openbsd/lib/libc/locale/wcstod.c", 452 "upstream-openbsd/lib/libc/locale/wcstof.c", 453 "upstream-openbsd/lib/libc/locale/wcstoimax.c", 454 "upstream-openbsd/lib/libc/locale/wcstol.c", 455 "upstream-openbsd/lib/libc/locale/wcstold.c", 456 "upstream-openbsd/lib/libc/locale/wcstoll.c", 457 "upstream-openbsd/lib/libc/locale/wcstombs.c", 458 "upstream-openbsd/lib/libc/locale/wcstoul.c", 459 "upstream-openbsd/lib/libc/locale/wcstoull.c", 460 "upstream-openbsd/lib/libc/locale/wcstoumax.c", 461 "upstream-openbsd/lib/libc/locale/wcsxfrm.c", 462 "upstream-openbsd/lib/libc/locale/wctob.c", 463 "upstream-openbsd/lib/libc/locale/wctomb.c", 464 "upstream-openbsd/lib/libc/net/htonl.c", 465 "upstream-openbsd/lib/libc/net/htons.c", 466 "upstream-openbsd/lib/libc/net/inet_lnaof.c", 467 "upstream-openbsd/lib/libc/net/inet_makeaddr.c", 468 "upstream-openbsd/lib/libc/net/inet_netof.c", 469 "upstream-openbsd/lib/libc/net/inet_ntoa.c", 470 "upstream-openbsd/lib/libc/net/inet_ntop.c", 471 "upstream-openbsd/lib/libc/net/inet_pton.c", 472 "upstream-openbsd/lib/libc/net/ntohl.c", 473 "upstream-openbsd/lib/libc/net/ntohs.c", 474 "upstream-openbsd/lib/libc/stdio/asprintf.c", 475 "upstream-openbsd/lib/libc/stdio/clrerr.c", 476 "upstream-openbsd/lib/libc/stdio/dprintf.c", 477 "upstream-openbsd/lib/libc/stdio/fclose.c", 478 "upstream-openbsd/lib/libc/stdio/fdopen.c", 479 "upstream-openbsd/lib/libc/stdio/feof.c", 480 "upstream-openbsd/lib/libc/stdio/ferror.c", 481 "upstream-openbsd/lib/libc/stdio/fflush.c", 482 "upstream-openbsd/lib/libc/stdio/fgetc.c", 483 "upstream-openbsd/lib/libc/stdio/fgetln.c", 484 "upstream-openbsd/lib/libc/stdio/fgetpos.c", 485 "upstream-openbsd/lib/libc/stdio/fgets.c", 486 "upstream-openbsd/lib/libc/stdio/fgetwc.c", 487 "upstream-openbsd/lib/libc/stdio/fgetws.c", 488 "upstream-openbsd/lib/libc/stdio/fileno.c", 489 "upstream-openbsd/lib/libc/stdio/flags.c", 490 "upstream-openbsd/lib/libc/stdio/fmemopen.c", 491 "upstream-openbsd/lib/libc/stdio/fopen.c", 492 "upstream-openbsd/lib/libc/stdio/fprintf.c", 493 "upstream-openbsd/lib/libc/stdio/fpurge.c", 494 "upstream-openbsd/lib/libc/stdio/fputc.c", 495 "upstream-openbsd/lib/libc/stdio/fputs.c", 496 "upstream-openbsd/lib/libc/stdio/fputwc.c", 497 "upstream-openbsd/lib/libc/stdio/fputws.c", 498 "upstream-openbsd/lib/libc/stdio/freopen.c", 499 "upstream-openbsd/lib/libc/stdio/fscanf.c", 500 "upstream-openbsd/lib/libc/stdio/fseek.c", 501 "upstream-openbsd/lib/libc/stdio/fsetpos.c", 502 "upstream-openbsd/lib/libc/stdio/ftell.c", 503 "upstream-openbsd/lib/libc/stdio/funopen.c", 504 "upstream-openbsd/lib/libc/stdio/fvwrite.c", 505 "upstream-openbsd/lib/libc/stdio/fwalk.c", 506 "upstream-openbsd/lib/libc/stdio/fwide.c", 507 "upstream-openbsd/lib/libc/stdio/fwprintf.c", 508 "upstream-openbsd/lib/libc/stdio/fwrite.c", 509 "upstream-openbsd/lib/libc/stdio/fwscanf.c", 510 "upstream-openbsd/lib/libc/stdio/getc.c", 511 "upstream-openbsd/lib/libc/stdio/getchar.c", 512 "upstream-openbsd/lib/libc/stdio/getdelim.c", 513 "upstream-openbsd/lib/libc/stdio/getline.c", 514 "upstream-openbsd/lib/libc/stdio/gets.c", 515 "upstream-openbsd/lib/libc/stdio/getwc.c", 516 "upstream-openbsd/lib/libc/stdio/getwchar.c", 517 "upstream-openbsd/lib/libc/stdio/makebuf.c", 518 "upstream-openbsd/lib/libc/stdio/mktemp.c", 519 "upstream-openbsd/lib/libc/stdio/open_memstream.c", 520 "upstream-openbsd/lib/libc/stdio/open_wmemstream.c", 521 "upstream-openbsd/lib/libc/stdio/perror.c", 522 "upstream-openbsd/lib/libc/stdio/printf.c", 523 "upstream-openbsd/lib/libc/stdio/putc.c", 524 "upstream-openbsd/lib/libc/stdio/putchar.c", 525 "upstream-openbsd/lib/libc/stdio/puts.c", 526 "upstream-openbsd/lib/libc/stdio/putwc.c", 527 "upstream-openbsd/lib/libc/stdio/putwchar.c", 528 "upstream-openbsd/lib/libc/stdio/remove.c", 529 "upstream-openbsd/lib/libc/stdio/rewind.c", 530 "upstream-openbsd/lib/libc/stdio/rget.c", 531 "upstream-openbsd/lib/libc/stdio/scanf.c", 532 "upstream-openbsd/lib/libc/stdio/setbuf.c", 533 "upstream-openbsd/lib/libc/stdio/setbuffer.c", 534 "upstream-openbsd/lib/libc/stdio/setvbuf.c", 535 "upstream-openbsd/lib/libc/stdio/sscanf.c", 536 "upstream-openbsd/lib/libc/stdio/swprintf.c", 537 "upstream-openbsd/lib/libc/stdio/swscanf.c", 538 "upstream-openbsd/lib/libc/stdio/tempnam.c", 539 "upstream-openbsd/lib/libc/stdio/tmpnam.c", 540 "upstream-openbsd/lib/libc/stdio/ungetc.c", 541 "upstream-openbsd/lib/libc/stdio/ungetwc.c", 542 "upstream-openbsd/lib/libc/stdio/vasprintf.c", 543 "upstream-openbsd/lib/libc/stdio/vdprintf.c", 544 "upstream-openbsd/lib/libc/stdio/vfprintf.c", 545 "upstream-openbsd/lib/libc/stdio/vfscanf.c", 546 "upstream-openbsd/lib/libc/stdio/vfwprintf.c", 547 "upstream-openbsd/lib/libc/stdio/vfwscanf.c", 548 "upstream-openbsd/lib/libc/stdio/vprintf.c", 549 "upstream-openbsd/lib/libc/stdio/vscanf.c", 550 "upstream-openbsd/lib/libc/stdio/vsnprintf.c", 551 "upstream-openbsd/lib/libc/stdio/vsprintf.c", 552 "upstream-openbsd/lib/libc/stdio/vsscanf.c", 553 "upstream-openbsd/lib/libc/stdio/vswprintf.c", 554 "upstream-openbsd/lib/libc/stdio/vswscanf.c", 555 "upstream-openbsd/lib/libc/stdio/vwprintf.c", 556 "upstream-openbsd/lib/libc/stdio/vwscanf.c", 557 "upstream-openbsd/lib/libc/stdio/wbuf.c", 558 "upstream-openbsd/lib/libc/stdio/wprintf.c", 559 "upstream-openbsd/lib/libc/stdio/wscanf.c", 560 "upstream-openbsd/lib/libc/stdio/wsetup.c", 561 "upstream-openbsd/lib/libc/stdlib/abs.c", 562 "upstream-openbsd/lib/libc/stdlib/atoi.c", 563 "upstream-openbsd/lib/libc/stdlib/atol.c", 564 "upstream-openbsd/lib/libc/stdlib/atoll.c", 565 "upstream-openbsd/lib/libc/stdlib/getenv.c", 566 "upstream-openbsd/lib/libc/stdlib/insque.c", 567 "upstream-openbsd/lib/libc/stdlib/imaxabs.c", 568 "upstream-openbsd/lib/libc/stdlib/imaxdiv.c", 569 "upstream-openbsd/lib/libc/stdlib/labs.c", 570 "upstream-openbsd/lib/libc/stdlib/llabs.c", 571 "upstream-openbsd/lib/libc/stdlib/lsearch.c", 572 "upstream-openbsd/lib/libc/stdlib/reallocarray.c", 573 "upstream-openbsd/lib/libc/stdlib/remque.c", 574 "upstream-openbsd/lib/libc/stdlib/setenv.c", 575 "upstream-openbsd/lib/libc/stdlib/strtoimax.c", 576 "upstream-openbsd/lib/libc/stdlib/strtol.c", 577 "upstream-openbsd/lib/libc/stdlib/strtoll.c", 578 "upstream-openbsd/lib/libc/stdlib/strtoul.c", 579 "upstream-openbsd/lib/libc/stdlib/strtoull.c", 580 "upstream-openbsd/lib/libc/stdlib/strtoumax.c", 581 "upstream-openbsd/lib/libc/stdlib/system.c", 582 "upstream-openbsd/lib/libc/stdlib/tfind.c", 583 "upstream-openbsd/lib/libc/stdlib/tsearch.c", 584 "upstream-openbsd/lib/libc/string/strcasecmp.c", 585 "upstream-openbsd/lib/libc/string/strcspn.c", 586 "upstream-openbsd/lib/libc/string/strdup.c", 587 "upstream-openbsd/lib/libc/string/strndup.c", 588 "upstream-openbsd/lib/libc/string/strpbrk.c", 589 "upstream-openbsd/lib/libc/string/strsep.c", 590 "upstream-openbsd/lib/libc/string/strspn.c", 591 "upstream-openbsd/lib/libc/string/strstr.c", 592 "upstream-openbsd/lib/libc/string/strtok.c", 593 "upstream-openbsd/lib/libc/string/wmemcpy.c", 594 "upstream-openbsd/lib/libc/string/wcslcpy.c", 595 "upstream-openbsd/lib/libc/string/wcsstr.c", 596 "upstream-openbsd/lib/libc/string/wcswidth.c", 597 ], 598 599 cflags: [ 600 "-Wno-sign-compare", 601 "-Wno-uninitialized", 602 "-Wno-unused-parameter", 603 "-include openbsd-compat.h", 604 ], 605 606 local_include_dirs: [ 607 "private", 608 "stdio", 609 "upstream-openbsd/android/include", 610 "upstream-openbsd/lib/libc/include", 611 "upstream-openbsd/lib/libc/gdtoa/", 612 ], 613} 614 615// ======================================================== 616// libc_openbsd.a - upstream OpenBSD C library code 617// ======================================================== 618// 619// These files are built with the openbsd-compat.h header file 620// automatically included. 621cc_library_static { 622 defaults: ["libc_defaults"], 623 srcs: [ 624 // These two depend on getentropy_linux.c, which isn't in libc_ndk.a. 625 "upstream-openbsd/lib/libc/crypt/arc4random.c", 626 "upstream-openbsd/lib/libc/crypt/arc4random_uniform.c", 627 628 // May be overriden by per-arch optimized versions 629 "upstream-openbsd/lib/libc/string/memchr.c", 630 "upstream-openbsd/lib/libc/string/memmove.c", 631 "upstream-openbsd/lib/libc/string/memrchr.c", 632 "upstream-openbsd/lib/libc/string/stpcpy.c", 633 "upstream-openbsd/lib/libc/string/stpncpy.c", 634 "upstream-openbsd/lib/libc/string/strcat.c", 635 "upstream-openbsd/lib/libc/string/strcpy.c", 636 "upstream-openbsd/lib/libc/string/strlcat.c", 637 "upstream-openbsd/lib/libc/string/strlcpy.c", 638 "upstream-openbsd/lib/libc/string/strncat.c", 639 "upstream-openbsd/lib/libc/string/strncmp.c", 640 "upstream-openbsd/lib/libc/string/strncpy.c", 641 ], 642 multilib: { 643 lib32: { 644 // LP32 cruft 645 srcs: ["upstream-openbsd/lib/libc/stdio/putw.c"], 646 }, 647 }, 648 649 arch: { 650 arm: { 651 exclude_srcs: [ 652 "upstream-openbsd/lib/libc/string/strcpy.c", 653 ], 654 cortex_a7: { 655 exclude_srcs: [ 656 "upstream-openbsd/lib/libc/string/memmove.c", 657 "upstream-openbsd/lib/libc/string/stpcpy.c", 658 "upstream-openbsd/lib/libc/string/strcat.c", 659 ], 660 }, 661 cortex_a53: { 662 exclude_srcs: [ 663 "upstream-openbsd/lib/libc/string/memmove.c", 664 "upstream-openbsd/lib/libc/string/stpcpy.c", 665 "upstream-openbsd/lib/libc/string/strcat.c", 666 ], 667 }, 668 cortex_a53_a57: { 669 exclude_srcs: [ 670 "upstream-openbsd/lib/libc/string/memmove.c", 671 "upstream-openbsd/lib/libc/string/stpcpy.c", 672 "upstream-openbsd/lib/libc/string/strcat.c", 673 ], 674 }, 675 cortex_a8: { 676 exclude_srcs: [ 677 "upstream-openbsd/lib/libc/string/memmove.c", 678 "upstream-openbsd/lib/libc/string/stpcpy.c", 679 "upstream-openbsd/lib/libc/string/strcat.c", 680 ], 681 }, 682 cortex_a9: { 683 exclude_srcs: [ 684 "upstream-openbsd/lib/libc/string/memmove.c", 685 "upstream-openbsd/lib/libc/string/stpcpy.c", 686 "upstream-openbsd/lib/libc/string/strcat.c", 687 ], 688 }, 689 cortex_a15: { 690 exclude_srcs: [ 691 "upstream-openbsd/lib/libc/string/memmove.c", 692 "upstream-openbsd/lib/libc/string/stpcpy.c", 693 "upstream-openbsd/lib/libc/string/strcat.c", 694 ], 695 }, 696 denver: { 697 exclude_srcs: [ 698 "upstream-openbsd/lib/libc/string/memmove.c", 699 "upstream-openbsd/lib/libc/string/stpcpy.c", 700 "upstream-openbsd/lib/libc/string/strcat.c", 701 ], 702 }, 703 krait: { 704 exclude_srcs: [ 705 "upstream-openbsd/lib/libc/string/memmove.c", 706 "upstream-openbsd/lib/libc/string/stpcpy.c", 707 "upstream-openbsd/lib/libc/string/strcat.c", 708 ], 709 }, 710 }, 711 arm64: { 712 exclude_srcs: [ 713 "upstream-openbsd/lib/libc/string/memchr.c", 714 "upstream-openbsd/lib/libc/string/memmove.c", 715 "upstream-openbsd/lib/libc/string/stpcpy.c", 716 "upstream-openbsd/lib/libc/string/strcpy.c", 717 "upstream-openbsd/lib/libc/string/strncmp.c", 718 ], 719 }, 720 721 x86: { 722 exclude_srcs: [ 723 "upstream-openbsd/lib/libc/string/memchr.c", 724 "upstream-openbsd/lib/libc/string/memmove.c", 725 "upstream-openbsd/lib/libc/string/memrchr.c", 726 "upstream-openbsd/lib/libc/string/stpcpy.c", 727 "upstream-openbsd/lib/libc/string/stpncpy.c", 728 "upstream-openbsd/lib/libc/string/strcat.c", 729 "upstream-openbsd/lib/libc/string/strcpy.c", 730 "upstream-openbsd/lib/libc/string/strncmp.c", 731 "upstream-openbsd/lib/libc/string/strncpy.c", 732 ], 733 ssse3: { 734 exclude_srcs: [ 735 "upstream-openbsd/lib/libc/string/strlcat.c", 736 "upstream-openbsd/lib/libc/string/strlcpy.c", 737 "upstream-openbsd/lib/libc/string/strncat.c", 738 ], 739 }, 740 }, 741 742 x86_64: { 743 exclude_srcs: [ 744 "upstream-openbsd/lib/libc/string/memmove.c", 745 "upstream-openbsd/lib/libc/string/stpcpy.c", 746 "upstream-openbsd/lib/libc/string/stpncpy.c", 747 "upstream-openbsd/lib/libc/string/strcat.c", 748 "upstream-openbsd/lib/libc/string/strcpy.c", 749 "upstream-openbsd/lib/libc/string/strlcat.c", 750 "upstream-openbsd/lib/libc/string/strlcpy.c", 751 "upstream-openbsd/lib/libc/string/strncat.c", 752 "upstream-openbsd/lib/libc/string/strncmp.c", 753 "upstream-openbsd/lib/libc/string/strncpy.c", 754 ], 755 }, 756 }, 757 758 cflags: [ 759 "-Wno-sign-compare", 760 "-Wno-uninitialized", 761 "-Wno-unused-parameter", 762 "-include openbsd-compat.h", 763 ], 764 765 local_include_dirs: [ 766 "private", 767 "stdio", 768 "upstream-openbsd/android/include", 769 "upstream-openbsd/lib/libc/include", 770 "upstream-openbsd/lib/libc/gdtoa/", 771 ], 772 773 name: "libc_openbsd", 774} 775 776// ======================================================== 777// libc_gdtoa.a - upstream OpenBSD C library gdtoa code 778// ======================================================== 779// 780// These files are built with the openbsd-compat.h header file 781// automatically included. 782 783cc_library_static { 784 defaults: ["libc_defaults"], 785 srcs: [ 786 "upstream-openbsd/android/gdtoa_support.cpp", 787 "upstream-openbsd/lib/libc/gdtoa/dmisc.c", 788 "upstream-openbsd/lib/libc/gdtoa/dtoa.c", 789 "upstream-openbsd/lib/libc/gdtoa/gdtoa.c", 790 "upstream-openbsd/lib/libc/gdtoa/gethex.c", 791 "upstream-openbsd/lib/libc/gdtoa/gmisc.c", 792 "upstream-openbsd/lib/libc/gdtoa/hd_init.c", 793 "upstream-openbsd/lib/libc/gdtoa/hdtoa.c", 794 "upstream-openbsd/lib/libc/gdtoa/hexnan.c", 795 "upstream-openbsd/lib/libc/gdtoa/ldtoa.c", 796 "upstream-openbsd/lib/libc/gdtoa/misc.c", 797 "upstream-openbsd/lib/libc/gdtoa/smisc.c", 798 "upstream-openbsd/lib/libc/gdtoa/strtod.c", 799 "upstream-openbsd/lib/libc/gdtoa/strtodg.c", 800 "upstream-openbsd/lib/libc/gdtoa/strtof.c", 801 "upstream-openbsd/lib/libc/gdtoa/strtord.c", 802 "upstream-openbsd/lib/libc/gdtoa/sum.c", 803 "upstream-openbsd/lib/libc/gdtoa/ulp.c", 804 ], 805 multilib: { 806 lib64: { 807 srcs: ["upstream-openbsd/lib/libc/gdtoa/strtorQ.c"], 808 }, 809 }, 810 811 cflags: [ 812 "-Wno-sign-compare", 813 "-Wno-uninitialized", 814 "-fvisibility=hidden", 815 "-include openbsd-compat.h", 816 ], 817 818 local_include_dirs: [ 819 "private", 820 "upstream-openbsd/android/include", 821 "upstream-openbsd/lib/libc/include", 822 ], 823 824 name: "libc_gdtoa", 825} 826 827// ======================================================== 828// libc_bionic.a - home-grown C library code 829// ======================================================== 830 831cc_library_static { 832 defaults: ["libc_defaults"], 833 srcs: [ 834 // The following implementations depend on pthread data, so we can't 835 // include them in libc_ndk.a. 836 "bionic/__cxa_thread_atexit_impl.cpp", 837 "bionic/fork.cpp", 838 839 // The data that backs getauxval is initialized in the libc init 840 // functions which are invoked by the linker. If this file is included 841 // in libc_ndk.a, only one of the copies of the global data will be 842 // initialized, resulting in nullptr dereferences. 843 "bionic/getauxval.cpp", 844 845 // These four require getauxval, which isn't available on older 846 // platforms. 847 "bionic/getentropy_linux.c", 848 "bionic/sysconf.cpp", 849 "bionic/vdso.cpp", 850 "bionic/setjmp_cookie.cpp", 851 852 "bionic/__memcpy_chk.cpp", 853 "bionic/__memset_chk.cpp", 854 "bionic/__strcat_chk.cpp", 855 "bionic/__strcpy_chk.cpp", 856 "bionic/strchr.cpp", 857 "bionic/strnlen.c", 858 "bionic/strrchr.cpp", 859 ], 860 cflags: ["-Wframe-larger-than=2048"], 861 862 arch: { 863 arm: { 864 srcs: [ 865 "arch-arm/bionic/abort_arm.S", 866 "arch-arm/bionic/atomics_arm.c", 867 "arch-arm/bionic/__bionic_clone.S", 868 "arch-arm/bionic/_exit_with_stack_teardown.S", 869 "arch-arm/bionic/libgcc_compat.c", 870 "arch-arm/bionic/popcount_tab.c", 871 "arch-arm/bionic/__restore.S", 872 "arch-arm/bionic/setjmp.S", 873 "arch-arm/bionic/syscall.S", 874 "arch-arm/bionic/vfork.S", 875 876 "arch-arm/generic/bionic/memcmp.S", 877 "arch-arm/generic/bionic/memcpy.S", 878 "arch-arm/generic/bionic/memset.S", 879 "arch-arm/generic/bionic/strcmp.S", 880 "arch-arm/generic/bionic/strcpy.S", 881 "arch-arm/generic/bionic/strlen.c", 882 ], 883 exclude_srcs: [ 884 "bionic/__memcpy_chk.cpp", 885 "bionic/__memset_chk.cpp", 886 ], 887 cortex_a7: { 888 srcs: [ 889 "arch-arm/cortex-a7/bionic/memset.S", 890 891 "arch-arm/cortex-a15/bionic/memcpy.S", 892 "arch-arm/cortex-a15/bionic/stpcpy.S", 893 "arch-arm/cortex-a15/bionic/strcat.S", 894 "arch-arm/cortex-a15/bionic/__strcat_chk.S", 895 "arch-arm/cortex-a15/bionic/strcmp.S", 896 "arch-arm/cortex-a15/bionic/strcpy.S", 897 "arch-arm/cortex-a15/bionic/__strcpy_chk.S", 898 "arch-arm/cortex-a15/bionic/strlen.S", 899 900 "arch-arm/denver/bionic/memmove.S", 901 ], 902 exclude_srcs: [ 903 "arch-arm/generic/bionic/memcpy.S", 904 "arch-arm/generic/bionic/memset.S", 905 "arch-arm/generic/bionic/strcmp.S", 906 "arch-arm/generic/bionic/strcpy.S", 907 "arch-arm/generic/bionic/strlen.c", 908 "bionic/__strcat_chk.cpp", 909 "bionic/__strcpy_chk.cpp", 910 ], 911 }, 912 cortex_a53: { 913 srcs: [ 914 "arch-arm/cortex-a53/bionic/memcpy.S", 915 "arch-arm/cortex-a53/bionic/__strcat_chk.S", 916 "arch-arm/cortex-a53/bionic/__strcpy_chk.S", 917 918 "arch-arm/cortex-a7/bionic/memset.S", 919 920 "arch-arm/cortex-a15/bionic/stpcpy.S", 921 "arch-arm/cortex-a15/bionic/strcat.S", 922 "arch-arm/cortex-a15/bionic/strcmp.S", 923 "arch-arm/cortex-a15/bionic/strcpy.S", 924 "arch-arm/cortex-a15/bionic/strlen.S", 925 926 "arch-arm/denver/bionic/memmove.S", 927 ], 928 exclude_srcs: [ 929 "arch-arm/generic/bionic/memcpy.S", 930 "arch-arm/generic/bionic/memset.S", 931 "arch-arm/generic/bionic/strcmp.S", 932 "arch-arm/generic/bionic/strcpy.S", 933 "arch-arm/generic/bionic/strlen.c", 934 "bionic/__strcat_chk.cpp", 935 "bionic/__strcpy_chk.cpp", 936 ], 937 }, 938 cortex_a53_a57: { 939 srcs: [ 940 "arch-arm/cortex-a15/bionic/memcpy.S", 941 "arch-arm/cortex-a15/bionic/memset.S", 942 "arch-arm/cortex-a15/bionic/stpcpy.S", 943 "arch-arm/cortex-a15/bionic/strcat.S", 944 "arch-arm/cortex-a15/bionic/__strcat_chk.S", 945 "arch-arm/cortex-a15/bionic/strcmp.S", 946 "arch-arm/cortex-a15/bionic/strcpy.S", 947 "arch-arm/cortex-a15/bionic/__strcpy_chk.S", 948 "arch-arm/cortex-a15/bionic/strlen.S", 949 950 "arch-arm/denver/bionic/memmove.S", 951 ], 952 exclude_srcs: [ 953 "arch-arm/generic/bionic/memcpy.S", 954 "arch-arm/generic/bionic/memset.S", 955 "arch-arm/generic/bionic/strcmp.S", 956 "arch-arm/generic/bionic/strcpy.S", 957 "arch-arm/generic/bionic/strlen.c", 958 "bionic/__strcat_chk.cpp", 959 "bionic/__strcpy_chk.cpp", 960 ], 961 }, 962 cortex_a8: { 963 srcs: [ 964 "arch-arm/cortex-a15/bionic/memcpy.S", 965 "arch-arm/cortex-a15/bionic/memset.S", 966 "arch-arm/cortex-a15/bionic/stpcpy.S", 967 "arch-arm/cortex-a15/bionic/strcat.S", 968 "arch-arm/cortex-a15/bionic/__strcat_chk.S", 969 "arch-arm/cortex-a15/bionic/strcmp.S", 970 "arch-arm/cortex-a15/bionic/strcpy.S", 971 "arch-arm/cortex-a15/bionic/__strcpy_chk.S", 972 "arch-arm/cortex-a15/bionic/strlen.S", 973 974 "arch-arm/denver/bionic/memmove.S", 975 ], 976 exclude_srcs: [ 977 "arch-arm/generic/bionic/memcpy.S", 978 "arch-arm/generic/bionic/memset.S", 979 "arch-arm/generic/bionic/strcmp.S", 980 "arch-arm/generic/bionic/strcpy.S", 981 "arch-arm/generic/bionic/strlen.c", 982 "bionic/__strcat_chk.cpp", 983 "bionic/__strcpy_chk.cpp", 984 ], 985 }, 986 cortex_a9: { 987 srcs: [ 988 "arch-arm/cortex-a9/bionic/memcpy.S", 989 "arch-arm/cortex-a9/bionic/memset.S", 990 "arch-arm/cortex-a9/bionic/stpcpy.S", 991 "arch-arm/cortex-a9/bionic/strcat.S", 992 "arch-arm/cortex-a9/bionic/__strcat_chk.S", 993 "arch-arm/cortex-a9/bionic/strcmp.S", 994 "arch-arm/cortex-a9/bionic/strcpy.S", 995 "arch-arm/cortex-a9/bionic/__strcpy_chk.S", 996 "arch-arm/cortex-a9/bionic/strlen.S", 997 998 "arch-arm/denver/bionic/memmove.S", 999 ], 1000 exclude_srcs: [ 1001 "arch-arm/generic/bionic/memcpy.S", 1002 "arch-arm/generic/bionic/memset.S", 1003 "arch-arm/generic/bionic/strcmp.S", 1004 "arch-arm/generic/bionic/strcpy.S", 1005 "arch-arm/generic/bionic/strlen.c", 1006 "bionic/__strcat_chk.cpp", 1007 "bionic/__strcpy_chk.cpp", 1008 ], 1009 }, 1010 cortex_a15: { 1011 srcs: [ 1012 "arch-arm/cortex-a15/bionic/memcpy.S", 1013 "arch-arm/cortex-a15/bionic/memset.S", 1014 "arch-arm/cortex-a15/bionic/stpcpy.S", 1015 "arch-arm/cortex-a15/bionic/strcat.S", 1016 "arch-arm/cortex-a15/bionic/__strcat_chk.S", 1017 "arch-arm/cortex-a15/bionic/strcmp.S", 1018 "arch-arm/cortex-a15/bionic/strcpy.S", 1019 "arch-arm/cortex-a15/bionic/__strcpy_chk.S", 1020 "arch-arm/cortex-a15/bionic/strlen.S", 1021 1022 "arch-arm/denver/bionic/memmove.S", 1023 ], 1024 exclude_srcs: [ 1025 "arch-arm/generic/bionic/memcpy.S", 1026 "arch-arm/generic/bionic/memset.S", 1027 "arch-arm/generic/bionic/strcmp.S", 1028 "arch-arm/generic/bionic/strcpy.S", 1029 "arch-arm/generic/bionic/strlen.c", 1030 "bionic/__strcat_chk.cpp", 1031 "bionic/__strcpy_chk.cpp", 1032 ], 1033 }, 1034 denver: { 1035 srcs: [ 1036 "arch-arm/denver/bionic/memcpy.S", 1037 "arch-arm/denver/bionic/memmove.S", 1038 "arch-arm/denver/bionic/memset.S", 1039 "arch-arm/denver/bionic/__strcat_chk.S", 1040 "arch-arm/denver/bionic/__strcpy_chk.S", 1041 1042 // Use cortex-a15 versions of strcat/strcpy/strlen. 1043 "arch-arm/cortex-a15/bionic/stpcpy.S", 1044 "arch-arm/cortex-a15/bionic/strcat.S", 1045 "arch-arm/cortex-a15/bionic/strcmp.S", 1046 "arch-arm/cortex-a15/bionic/strcpy.S", 1047 "arch-arm/cortex-a15/bionic/strlen.S", 1048 ], 1049 exclude_srcs: [ 1050 "arch-arm/generic/bionic/memcpy.S", 1051 "arch-arm/generic/bionic/memset.S", 1052 "arch-arm/generic/bionic/strcmp.S", 1053 "arch-arm/generic/bionic/strcpy.S", 1054 "arch-arm/generic/bionic/strlen.c", 1055 "bionic/__strcat_chk.cpp", 1056 "bionic/__strcpy_chk.cpp", 1057 ], 1058 }, 1059 krait: { 1060 srcs: [ 1061 "arch-arm/krait/bionic/memcpy.S", 1062 "arch-arm/krait/bionic/memset.S", 1063 "arch-arm/krait/bionic/strcmp.S", 1064 "arch-arm/krait/bionic/__strcat_chk.S", 1065 "arch-arm/krait/bionic/__strcpy_chk.S", 1066 1067 // Use cortex-a15 versions of strcat/strcpy/strlen. 1068 "arch-arm/cortex-a15/bionic/stpcpy.S", 1069 "arch-arm/cortex-a15/bionic/strcat.S", 1070 "arch-arm/cortex-a15/bionic/strcpy.S", 1071 "arch-arm/cortex-a15/bionic/strlen.S", 1072 1073 "arch-arm/denver/bionic/memmove.S", 1074 ], 1075 exclude_srcs: [ 1076 "arch-arm/generic/bionic/memcpy.S", 1077 "arch-arm/generic/bionic/memset.S", 1078 "arch-arm/generic/bionic/strcmp.S", 1079 "arch-arm/generic/bionic/strcpy.S", 1080 "arch-arm/generic/bionic/strlen.c", 1081 "bionic/__strcat_chk.cpp", 1082 "bionic/__strcpy_chk.cpp", 1083 ], 1084 }, 1085 1086 }, 1087 arm64: { 1088 srcs: [ 1089 "arch-arm64/bionic/__bionic_clone.S", 1090 "arch-arm64/bionic/_exit_with_stack_teardown.S", 1091 "arch-arm64/bionic/setjmp.S", 1092 "arch-arm64/bionic/__set_tls.c", 1093 "arch-arm64/bionic/syscall.S", 1094 "arch-arm64/bionic/vfork.S", 1095 1096 "arch-arm64/generic/bionic/memchr.S", 1097 "arch-arm64/generic/bionic/memcmp.S", 1098 "arch-arm64/generic/bionic/memcpy.S", 1099 "arch-arm64/generic/bionic/memmove.S", 1100 "arch-arm64/generic/bionic/memset.S", 1101 "arch-arm64/generic/bionic/stpcpy.S", 1102 "arch-arm64/generic/bionic/strchr.S", 1103 "arch-arm64/generic/bionic/strcmp.S", 1104 "arch-arm64/generic/bionic/strcpy.S", 1105 "arch-arm64/generic/bionic/strlen.S", 1106 "arch-arm64/generic/bionic/strncmp.S", 1107 "arch-arm64/generic/bionic/strnlen.S", 1108 "arch-arm64/generic/bionic/wmemmove.S", 1109 ], 1110 exclude_srcs: [ 1111 "bionic/__memcpy_chk.cpp", 1112 "bionic/strchr.cpp", 1113 "bionic/strnlen.c", 1114 ], 1115 denver64: { 1116 srcs: [ 1117 "arch-arm64/denver64/bionic/memcpy.S", 1118 "arch-arm64/denver64/bionic/memset.S", 1119 ], 1120 exclude_srcs: [ 1121 "arch-arm64/generic/bionic/memcpy.S", 1122 "arch-arm64/generic/bionic/memset.S", 1123 ], 1124 }, 1125 }, 1126 1127 mips: { 1128 srcs: [ 1129 "arch-mips/bionic/__bionic_clone.S", 1130 "arch-mips/bionic/bzero.S", 1131 "arch-mips/bionic/cacheflush.cpp", 1132 "arch-mips/bionic/_exit_with_stack_teardown.S", 1133 "arch-mips/bionic/setjmp.S", 1134 "arch-mips/bionic/syscall.S", 1135 "arch-mips/bionic/vfork.S", 1136 1137 "arch-mips/string/memcmp.c", 1138 "arch-mips/string/memcpy.S", 1139 "arch-mips/string/memset.S", 1140 "arch-mips/string/strcmp.S", 1141 "arch-mips/string/strlen.c", 1142 ], 1143 rev6: { 1144 srcs: [ 1145 "arch-mips/string/mips_strlen.c", 1146 ], 1147 exclude_srcs: [ 1148 "arch-mips/string/strlen.c", 1149 ], 1150 }, 1151 }, 1152 mips64: { 1153 srcs: [ 1154 "arch-mips64/bionic/__bionic_clone.S", 1155 "arch-mips64/bionic/_exit_with_stack_teardown.S", 1156 "arch-mips64/bionic/setjmp.S", 1157 "arch-mips64/bionic/syscall.S", 1158 "arch-mips64/bionic/vfork.S", 1159 "arch-mips64/bionic/stat.cpp", 1160 1161 "arch-mips/string/memcmp.c", 1162 "arch-mips/string/memcpy.S", 1163 "arch-mips/string/memset.S", 1164 "arch-mips/string/strcmp.S", 1165 "arch-mips/string/strlen.c", 1166 ], 1167 }, 1168 1169 x86: { 1170 srcs: [ 1171 "arch-x86/bionic/__bionic_clone.S", 1172 "arch-x86/bionic/_exit_with_stack_teardown.S", 1173 "arch-x86/bionic/libgcc_compat.c", 1174 "arch-x86/bionic/__restore.S", 1175 "arch-x86/bionic/setjmp.S", 1176 "arch-x86/bionic/__set_tls.c", 1177 "arch-x86/bionic/syscall.S", 1178 "arch-x86/bionic/vfork.S", 1179 1180 "arch-x86/generic/string/memcmp.S", 1181 "arch-x86/generic/string/strcmp.S", 1182 "arch-x86/generic/string/strncmp.S", 1183 "arch-x86/generic/string/strcat.S", 1184 "arch-x86/atom/string/sse2-memchr-atom.S", 1185 "arch-x86/atom/string/sse2-memrchr-atom.S", 1186 "arch-x86/atom/string/sse2-strchr-atom.S", 1187 "arch-x86/atom/string/sse2-strnlen-atom.S", 1188 "arch-x86/atom/string/sse2-strrchr-atom.S", 1189 "arch-x86/atom/string/sse2-wcschr-atom.S", 1190 "arch-x86/atom/string/sse2-wcsrchr-atom.S", 1191 "arch-x86/atom/string/sse2-wcslen-atom.S", 1192 "arch-x86/atom/string/sse2-wcscmp-atom.S", 1193 "arch-x86/silvermont/string/sse2-bcopy-slm.S", 1194 "arch-x86/silvermont/string/sse2-bzero-slm.S", 1195 "arch-x86/silvermont/string/sse2-memcpy-slm.S", 1196 "arch-x86/silvermont/string/sse2-memmove-slm.S", 1197 "arch-x86/silvermont/string/sse2-memset-slm.S", 1198 "arch-x86/silvermont/string/sse2-stpcpy-slm.S", 1199 "arch-x86/silvermont/string/sse2-stpncpy-slm.S", 1200 "arch-x86/silvermont/string/sse2-strcpy-slm.S", 1201 "arch-x86/silvermont/string/sse2-strlen-slm.S", 1202 "arch-x86/silvermont/string/sse2-strncpy-slm.S", 1203 ], 1204 1205 exclude_srcs: [ 1206 "bionic/strchr.cpp", 1207 "bionic/strnlen.c", 1208 "bionic/strrchr.cpp", 1209 ], 1210 atom: { 1211 srcs: [ 1212 "arch-x86/atom/string/sse2-bzero-atom.S", 1213 "arch-x86/atom/string/sse2-memset-atom.S", 1214 "arch-x86/atom/string/sse2-strlen-atom.S", 1215 "arch-x86/atom/string/ssse3-bcopy-atom.S", 1216 "arch-x86/atom/string/ssse3-memcmp-atom.S", 1217 "arch-x86/atom/string/ssse3-memmove-atom.S", 1218 "arch-x86/atom/string/ssse3-strncpy-atom.S", 1219 "arch-x86/atom/string/ssse3-wmemcmp-atom.S", 1220 ], 1221 exclude_srcs: [ 1222 "arch-x86/generic/string/memcmp.S", 1223 "arch-x86/silvermont/string/sse2-bcopy-slm.S", 1224 "arch-x86/silvermont/string/sse2-bzero-slm.S", 1225 "arch-x86/silvermont/string/sse2-memcpy-slm.S", 1226 "arch-x86/silvermont/string/sse2-memmove-slm.S", 1227 "arch-x86/silvermont/string/sse2-memset-slm.S", 1228 "arch-x86/silvermont/string/sse2-strcpy-slm.S", 1229 "arch-x86/silvermont/string/sse2-strlen-slm.S", 1230 "arch-x86/silvermont/string/sse2-strncpy-slm.S", 1231 ], 1232 }, 1233 ssse3: { 1234 srcs: [ 1235 "arch-x86/atom/string/ssse3-strncat-atom.S", 1236 "arch-x86/atom/string/ssse3-strlcat-atom.S", 1237 "arch-x86/atom/string/ssse3-strlcpy-atom.S", 1238 "arch-x86/atom/string/ssse3-strcat-atom.S", 1239 "arch-x86/atom/string/ssse3-strcmp-atom.S", 1240 "arch-x86/atom/string/ssse3-strncmp-atom.S", 1241 "arch-x86/atom/string/ssse3-wcscat-atom.S", 1242 "arch-x86/atom/string/ssse3-wcscpy-atom.S", 1243 ], 1244 exclude_srcs: [ 1245 "arch-x86/generic/string/strcmp.S", 1246 "arch-x86/generic/string/strncmp.S", 1247 "arch-x86/generic/string/strcat.S", 1248 ], 1249 }, 1250 sse4: { 1251 srcs: [ 1252 "arch-x86/silvermont/string/sse4-memcmp-slm.S", 1253 "arch-x86/silvermont/string/sse4-wmemcmp-slm.S", 1254 ], 1255 exclude_srcs: [ 1256 "arch-x86/generic/string/memcmp.S", 1257 ], 1258 }, 1259 }, 1260 x86_64: { 1261 srcs: [ 1262 "arch-x86_64/bionic/__bionic_clone.S", 1263 "arch-x86_64/bionic/_exit_with_stack_teardown.S", 1264 "arch-x86_64/bionic/__restore_rt.S", 1265 "arch-x86_64/bionic/setjmp.S", 1266 "arch-x86_64/bionic/__set_tls.c", 1267 "arch-x86_64/bionic/syscall.S", 1268 "arch-x86_64/bionic/vfork.S", 1269 1270 "arch-x86_64/string/sse2-memcpy-slm.S", 1271 "arch-x86_64/string/sse2-memmove-slm.S", 1272 "arch-x86_64/string/sse2-memset-slm.S", 1273 "arch-x86_64/string/sse2-stpcpy-slm.S", 1274 "arch-x86_64/string/sse2-stpncpy-slm.S", 1275 "arch-x86_64/string/sse2-strcat-slm.S", 1276 "arch-x86_64/string/sse2-strcpy-slm.S", 1277 "arch-x86_64/string/sse2-strlcat-slm.S", 1278 "arch-x86_64/string/sse2-strlcpy-slm.S", 1279 "arch-x86_64/string/sse2-strlen-slm.S", 1280 "arch-x86_64/string/sse2-strncat-slm.S", 1281 "arch-x86_64/string/sse2-strncpy-slm.S", 1282 "arch-x86_64/string/sse4-memcmp-slm.S", 1283 "arch-x86_64/string/ssse3-strcmp-slm.S", 1284 "arch-x86_64/string/ssse3-strncmp-slm.S", 1285 ], 1286 }, 1287 }, 1288 1289 cppflags: ["-Wold-style-cast"], 1290 include_dirs: ["bionic/libstdc++/include"], 1291 name: "libc_bionic", 1292} 1293 1294// ======================================================== 1295// libc_bionic_ndk.a- The portions of libc_bionic that can 1296// be safely used in libc_ndk.a (no troublesome global data 1297// or constructors). 1298// ======================================================== 1299cc_library_static { 1300 defaults: ["libc_defaults"], 1301 srcs: [ 1302 "bionic/abort.cpp", 1303 "bionic/accept.cpp", 1304 "bionic/accept4.cpp", 1305 "bionic/access.cpp", 1306 "bionic/arpa_inet.cpp", 1307 "bionic/assert.cpp", 1308 "bionic/atof.cpp", 1309 "bionic/bionic_systrace.cpp", 1310 "bionic/bionic_time_conversions.cpp", 1311 "bionic/brk.cpp", 1312 "bionic/c16rtomb.cpp", 1313 "bionic/c32rtomb.cpp", 1314 "bionic/chmod.cpp", 1315 "bionic/chown.cpp", 1316 "bionic/clearenv.cpp", 1317 "bionic/clock.cpp", 1318 "bionic/clock_getcpuclockid.cpp", 1319 "bionic/clock_nanosleep.cpp", 1320 "bionic/clone.cpp", 1321 "bionic/close.cpp", 1322 "bionic/__cmsg_nxthdr.cpp", 1323 "bionic/connect.cpp", 1324 "bionic/ctype.cpp", 1325 "bionic/dirent.cpp", 1326 "bionic/dup2.cpp", 1327 "bionic/epoll_create.cpp", 1328 "bionic/epoll_pwait.cpp", 1329 "bionic/epoll_wait.cpp", 1330 "bionic/__errno.cpp", 1331 "bionic/error.cpp", 1332 "bionic/eventfd_read.cpp", 1333 "bionic/eventfd_write.cpp", 1334 "bionic/faccessat.cpp", 1335 "bionic/fchmod.cpp", 1336 "bionic/fchmodat.cpp", 1337 "bionic/ffs.cpp", 1338 "bionic/fgetxattr.cpp", 1339 "bionic/flistxattr.cpp", 1340 "bionic/flockfile.cpp", 1341 "bionic/fpclassify.cpp", 1342 "bionic/fsetxattr.cpp", 1343 "bionic/ftruncate.cpp", 1344 "bionic/futimens.cpp", 1345 "bionic/getcwd.cpp", 1346 "bionic/gethostname.cpp", 1347 "bionic/getpgrp.cpp", 1348 "bionic/getpid.cpp", 1349 "bionic/gettid.cpp", 1350 "bionic/__gnu_basename.cpp", 1351 "bionic/inotify_init.cpp", 1352 "bionic/ioctl.cpp", 1353 "bionic/lchown.cpp", 1354 "bionic/lfs64_support.cpp", 1355 "bionic/__libc_current_sigrtmax.cpp", 1356 "bionic/__libc_current_sigrtmin.cpp", 1357 "bionic/libc_init_common.cpp", 1358 "bionic/libc_logging.cpp", 1359 "bionic/libgen.cpp", 1360 "bionic/link.cpp", 1361 "bionic/locale.cpp", 1362 "bionic/lstat.cpp", 1363 "bionic/malloc_info.cpp", 1364 "bionic/mbrtoc16.cpp", 1365 "bionic/mbrtoc32.cpp", 1366 "bionic/mbstate.cpp", 1367 "bionic/mempcpy.cpp", 1368 "bionic/mkdir.cpp", 1369 "bionic/mkfifo.cpp", 1370 "bionic/mknod.cpp", 1371 "bionic/mntent.cpp", 1372 "bionic/mremap.cpp", 1373 "bionic/NetdClientDispatch.cpp", 1374 "bionic/open.cpp", 1375 "bionic/pathconf.cpp", 1376 "bionic/pause.cpp", 1377 "bionic/pipe.cpp", 1378 "bionic/poll.cpp", 1379 "bionic/posix_fadvise.cpp", 1380 "bionic/posix_fallocate.cpp", 1381 "bionic/posix_madvise.cpp", 1382 "bionic/posix_timers.cpp", 1383 "bionic/ptrace.cpp", 1384 "bionic/pty.cpp", 1385 "bionic/raise.cpp", 1386 "bionic/rand.cpp", 1387 "bionic/readlink.cpp", 1388 "bionic/reboot.cpp", 1389 "bionic/recv.cpp", 1390 "bionic/rename.cpp", 1391 "bionic/rmdir.cpp", 1392 "bionic/scandir.cpp", 1393 "bionic/sched_getaffinity.cpp", 1394 "bionic/sched_getcpu.cpp", 1395 "bionic/semaphore.cpp", 1396 "bionic/send.cpp", 1397 "bionic/setegid.cpp", 1398 "bionic/__set_errno.cpp", 1399 "bionic/seteuid.cpp", 1400 "bionic/setpgrp.cpp", 1401 "bionic/sigaction.cpp", 1402 "bionic/sigaddset.cpp", 1403 "bionic/sigdelset.cpp", 1404 "bionic/sigemptyset.cpp", 1405 "bionic/sigfillset.cpp", 1406 "bionic/sigismember.cpp", 1407 "bionic/signal.cpp", 1408 "bionic/signalfd.cpp", 1409 "bionic/sigpending.cpp", 1410 "bionic/sigprocmask.cpp", 1411 "bionic/sigqueue.cpp", 1412 "bionic/sigsuspend.cpp", 1413 "bionic/sigtimedwait.cpp", 1414 "bionic/sigwait.cpp", 1415 "bionic/sigwaitinfo.cpp", 1416 "bionic/socket.cpp", 1417 "bionic/stat.cpp", 1418 "bionic/statvfs.cpp", 1419 "bionic/strchrnul.cpp", 1420 "bionic/strerror.cpp", 1421 "bionic/strerror_r.cpp", 1422 "bionic/strsignal.cpp", 1423 "bionic/strtold.cpp", 1424 "bionic/stubs.cpp", 1425 "bionic/symlink.cpp", 1426 "bionic/sysinfo.cpp", 1427 "bionic/syslog.cpp", 1428 "bionic/sys_siglist.c", 1429 "bionic/sys_signame.c", 1430 "bionic/system_properties.cpp", 1431 "bionic/tdestroy.cpp", 1432 "bionic/termios.cpp", 1433 "bionic/thread_private.cpp", 1434 "bionic/tmpfile.cpp", 1435 "bionic/umount.cpp", 1436 "bionic/unlink.cpp", 1437 "bionic/utimes.cpp", 1438 "bionic/wait.cpp", 1439 "bionic/wchar.cpp", 1440 "bionic/wctype.cpp", 1441 "bionic/wmempcpy.cpp", 1442 ], 1443 cflags: ["-Wframe-larger-than=2048"], 1444 1445 multilib: { 1446 lib32: { 1447 // LP32 cruft 1448 srcs: ["bionic/mmap.cpp"], 1449 }, 1450 }, 1451 1452 cppflags: ["-Wold-style-cast"], 1453 local_include_dirs: ["stdio"], 1454 include_dirs: ["bionic/libstdc++/include"], 1455 name: "libc_bionic_ndk", 1456} 1457 1458// ======================================================== 1459// libc_pthread.a - pthreads parts that previously lived in 1460// libc_bionic.a. Relocated to their own library because 1461// they can't be included in libc_ndk.a (as they layout of 1462// pthread_t has changed over the years and has ABI 1463// compatibility issues). 1464// ======================================================== 1465 1466cc_library_static { 1467 defaults: ["libc_defaults"], 1468 srcs: [ 1469 "bionic/pthread_atfork.cpp", 1470 "bionic/pthread_attr.cpp", 1471 "bionic/pthread_barrier.cpp", 1472 "bionic/pthread_cond.cpp", 1473 "bionic/pthread_create.cpp", 1474 "bionic/pthread_detach.cpp", 1475 "bionic/pthread_equal.cpp", 1476 "bionic/pthread_exit.cpp", 1477 "bionic/pthread_getcpuclockid.cpp", 1478 "bionic/pthread_getschedparam.cpp", 1479 "bionic/pthread_gettid_np.cpp", 1480 "bionic/pthread_internal.cpp", 1481 "bionic/pthread_join.cpp", 1482 "bionic/pthread_key.cpp", 1483 "bionic/pthread_kill.cpp", 1484 "bionic/pthread_mutex.cpp", 1485 "bionic/pthread_once.cpp", 1486 "bionic/pthread_rwlock.cpp", 1487 "bionic/pthread_self.cpp", 1488 "bionic/pthread_setname_np.cpp", 1489 "bionic/pthread_setschedparam.cpp", 1490 "bionic/pthread_sigmask.cpp", 1491 "bionic/pthread_spinlock.cpp", 1492 ], 1493 cflags: ["-Wframe-larger-than=2048"], 1494 1495 cppflags: ["-Wold-style-cast"], 1496 include_dirs: ["bionic/libstdc++/include"], 1497 name: "libc_pthread", 1498} 1499 1500// ======================================================== 1501// libc_cxa.a - Things traditionally in libstdc++ 1502// ======================================================== 1503 1504cc_library_static { 1505 defaults: ["libc_defaults"], 1506 srcs: [ 1507 "bionic/__cxa_guard.cpp", 1508 "bionic/__cxa_pure_virtual.cpp", 1509 "bionic/new.cpp", 1510 ], 1511 cflags: ["-fvisibility=hidden"], 1512 include_dirs: ["bionic/libstdc++/include"], 1513 name: "libc_cxa", 1514 clang: true, // GCC refuses to hide new/delete 1515 1516 // b/17574078: Need to disable coverage until we have a prebuilt libprofile_rt. 1517 // Since this is a static library built with clang, it needs to link 1518 // libprofile_rt when it is linked into the final binary. Since the final binary 1519 // is built with GCC, it won't link libprofile_rt. We can't very easily just add 1520 // libprofile_rt to all link lines the way we've done for libgcov because 1521 // libprofile_rt isn't prebuilt, and it would be tricky to write a rule that 1522 // would make sure libprofile_rt is built. 1523 native_coverage: false, 1524} 1525 1526// ======================================================== 1527// libc_syscalls.a 1528// ======================================================== 1529 1530cc_library_static { 1531 arch: { 1532 arm: { 1533 srcs: ["arch-arm/syscalls/**/*.S"], 1534 }, 1535 arm64: { 1536 srcs: ["arch-arm64/syscalls/**/*.S"], 1537 }, 1538 mips: { 1539 srcs: ["arch-mips/syscalls/**/*.S"], 1540 }, 1541 mips64: { 1542 srcs: ["arch-mips64/syscalls/**/*.S"], 1543 }, 1544 x86: { 1545 srcs: ["arch-x86/syscalls/**/*.S"], 1546 }, 1547 x86_64: { 1548 srcs: ["arch-x86_64/syscalls/**/*.S"], 1549 }, 1550 }, 1551 name: "libc_syscalls", 1552} 1553 1554// ======================================================== 1555// libc_aeabi.a 1556// This is an LP32 ARM-only library that needs to be built with -fno-builtin 1557// to avoid infinite recursion. For the other architectures we just build an 1558// empty library to keep this makefile simple. 1559// ======================================================== 1560 1561cc_library_static { 1562 defaults: ["libc_defaults"], 1563 arch: { 1564 arm: { 1565 srcs: ["arch-arm/bionic/__aeabi.c"], 1566 }, 1567 }, 1568 name: "libc_aeabi", 1569 cflags: ["-fno-builtin"], 1570} 1571 1572// ======================================================== 1573// libc_ndk.a 1574// Compatibility library for the NDK. This library contains 1575// all the parts of libc that are safe to statically link. 1576// We can't safely statically link things that can only run 1577// on a certain version of the OS. Examples include 1578// anything that talks to netd (a large portion of the DNS 1579// code) and anything that is dependent on the layout of a 1580// data structure that has changed across releases (such as 1581// pthread_t). 1582// ======================================================== 1583 1584cc_library_static { 1585 name: "libc_ndk", 1586 defaults: ["libc_defaults"], 1587 srcs: libc_common_src_files + ["bionic/malloc_debug_common.cpp"], 1588 multilib: { 1589 lib32: { 1590 srcs: libc_common_src_files_32, 1591 }, 1592 }, 1593 arch: { 1594 arm: { 1595 srcs: [ 1596 "arch-arm/bionic/exidx_dynamic.c", 1597 "arch-common/bionic/crtbegin_so.c", 1598 "arch-arm/bionic/atexit_legacy.c", 1599 "arch-common/bionic/crtend_so.S", 1600 ], 1601 whole_static_libs: ["libc_aeabi"], 1602 }, 1603 }, 1604 1605 cflags: [ 1606 "-fvisibility=hidden", 1607 "-DLIBC_STATIC", 1608 ], 1609 1610 whole_static_libs: [ 1611 "libc_bionic_ndk", 1612 "libc_cxa", 1613 "libc_freebsd", 1614 "libc_gdtoa", 1615 "libc_malloc", 1616 "libc_netbsd", 1617 "libc_openbsd_ndk", 1618 "libc_stack_protector", 1619 "libc_syscalls", 1620 "libc_tzcode", 1621 "libm", 1622 ], 1623} 1624 1625// ======================================================== 1626// libc_common.a 1627// ======================================================== 1628 1629cc_library_static { 1630 defaults: ["libc_defaults"], 1631 srcs: libc_common_src_files, 1632 multilib: { 1633 lib32: { 1634 srcs: libc_common_src_files_32, 1635 }, 1636 }, 1637 name: "libc_common", 1638 1639 whole_static_libs: [ 1640 "libc_bionic", 1641 "libc_bionic_ndk", 1642 "libc_cxa", 1643 "libc_dns", 1644 "libc_freebsd", 1645 "libc_gdtoa", 1646 "libc_malloc", 1647 "libc_netbsd", 1648 "libc_openbsd", 1649 "libc_openbsd_ndk", 1650 "libc_pthread", 1651 "libc_stack_protector", 1652 "libc_syscalls", 1653 "libc_tzcode", 1654 ], 1655 1656 arch: { 1657 arm: { 1658 whole_static_libs: ["libc_aeabi"], 1659 }, 1660 }, 1661} 1662 1663// ======================================================== 1664// libc_nomalloc.a 1665// ======================================================== 1666// 1667// This is a version of the static C library that does not 1668// include malloc. It's useful in situations when the user wants 1669// to provide their own malloc implementation, or wants to 1670// explicitly disallow the use of malloc, such as in the 1671// dynamic linker. 1672 1673cc_library_static { 1674 defaults: ["libc_defaults"], 1675 srcs: [ 1676 "bionic/dl_iterate_phdr_static.cpp", 1677 "bionic/libc_init_static.cpp", 1678 ], 1679 1680 arch: { 1681 arm: { 1682 srcs: ["arch-arm/bionic/exidx_static.c"], 1683 }, 1684 }, 1685 1686 cflags: ["-DLIBC_STATIC"], 1687 1688 name: "libc_nomalloc", 1689 1690 whole_static_libs: ["libc_common"], 1691} 1692 1693// ======================================================== 1694// libc_malloc.a: the _prefixed_ malloc functions (like dlcalloc). 1695// ======================================================== 1696cc_library_static { 1697 defaults: ["libc_defaults"], 1698 product_variables: { 1699 device_uses_jemalloc: { 1700 srcs: ["bionic/jemalloc_wrapper.cpp"], 1701 whole_static_libs: ["libjemalloc"], 1702 }, 1703 device_uses_dlmalloc: { 1704 srcs: ["bionic/dlmalloc.c"], 1705 }, 1706 }, 1707 cflags: ["-fvisibility=hidden"], 1708 1709 name: "libc_malloc", 1710} 1711 1712// ======================================================== 1713// libc.a + libc.so 1714// ======================================================== 1715cc_library { 1716 defaults: ["libc_defaults"], 1717 name: "libc", 1718 product_variables: { 1719 platform_sdk_version: { 1720 asflags: ["-DPLATFORM_SDK_VERSION=%d"], 1721 }, 1722 }, 1723 srcs: ["bionic/malloc_debug_common.cpp"], 1724 static: { 1725 srcs: [ 1726 "bionic/dl_iterate_phdr_static.cpp", 1727 "bionic/libc_init_static.cpp", 1728 ], 1729 cflags: ["-DLIBC_STATIC"], 1730 }, 1731 shared: { 1732 srcs: [ 1733 "arch-common/bionic/crtbegin_so.c", 1734 "arch-common/bionic/crtbrand.S", 1735 "bionic/libc_init_dynamic.cpp", 1736 "bionic/NetdClient.cpp", 1737 "arch-common/bionic/crtend_so.S", 1738 ], 1739 }, 1740 1741 required: ["tzdata"], 1742 1743 // Leave the symbols in the shared library so that stack unwinders can produce 1744 // meaningful name resolution. 1745 strip: "keep_symbols", 1746 1747 // WARNING: The only library libc.so should depend on is libdl.so! If you add other libraries, 1748 // make sure to add -Wl,--exclude-libs=libgcc.a to the LOCAL_LDFLAGS for those libraries. This 1749 // ensures that symbols that are pulled into those new libraries from libgcc.a are not declared 1750 // external; if that were the case, then libc would not pull those symbols from libgcc.a as it 1751 // should, instead relying on the external symbols from the dependent libraries. That would 1752 // create a "cloaked" dependency on libgcc.a in libc though the libraries, which is not what 1753 // you wanted! 1754 1755 shared_libs: ["libdl"], 1756 whole_static_libs: ["libc_common"], 1757 1758 // We'd really like to do this for all architectures, but since this wasn't done 1759 // before, these symbols must continue to be exported on LP32 for binary 1760 // compatibility. 1761 multilib: { 1762 lib64: { 1763 ldflags: ["-Wl,--exclude-libs,libgcc.a"], 1764 }, 1765 }, 1766 1767 nocrt: true, 1768 1769 // special for arm 1770 arch: { 1771 arm: { 1772 //TODO: This is to work around b/24465209. Remove after root cause is fixed 1773 ldflags: ["-Wl,--hash-style=both"], 1774 1775 // Don't re-export new/delete and friends, even if the compiler really wants to. 1776 version_script: "libc.arm.map", 1777 1778 shared: { 1779 srcs: ["arch-arm/bionic/exidx_dynamic.c"], 1780 }, 1781 static: { 1782 srcs: ["arch-arm/bionic/exidx_static.c"], 1783 }, 1784 cflags: ["-DCRT_LEGACY_WORKAROUND"], 1785 srcs: [ 1786 "arch-arm/bionic/atexit_legacy.c", 1787 ], 1788 }, 1789 arm64: { 1790 // Don't re-export new/delete and friends, even if the compiler really wants to. 1791 version_script: "libc.arm64.map", 1792 }, 1793 mips: { 1794 // Don't re-export new/delete and friends, even if the compiler really wants to. 1795 version_script: "libc.mips.map", 1796 }, 1797 mips64: { 1798 // Don't re-export new/delete and friends, even if the compiler really wants to. 1799 version_script: "libc.mips64.map", 1800 }, 1801 x86: { 1802 //TODO: This is to work around b/24465209. Remove after root cause is fixed 1803 ldflags: ["-Wl,--hash-style=both"], 1804 1805 // Don't re-export new/delete and friends, even if the compiler really wants to. 1806 version_script: "libc.x86.map", 1807 }, 1808 x86_64: { 1809 // Don't re-export new/delete and friends, even if the compiler really wants to. 1810 version_script: "libc.x86_64.map", 1811 }, 1812 }, 1813} 1814 1815// For all builds, except for the -user build we will enable memory 1816// allocation checking (including memory leaks, buffer overwrites, etc.) 1817// Note that all these checks are also controlled by env. settings 1818// that can enable, or disable specific checks. Note also that some of 1819// the checks are available only in emulator and are implemeted in 1820// libc_malloc_qemu_instrumented.so. 1821// ANDROIDMK TRANSLATION ERROR: unsupported directive 1822// ifneq ($(TARGET_BUILD_VARIANT),user) 1823// ======================================================== 1824// libc_malloc_debug_leak.so 1825// ======================================================== 1826cc_library_shared { 1827 defaults: ["libc_defaults"], 1828 1829 srcs: [ 1830 "bionic/debug_backtrace.cpp", 1831 "bionic/debug_mapinfo.cpp", 1832 "bionic/libc_logging.cpp", 1833 "bionic/malloc_debug_leak.cpp", 1834 "bionic/malloc_debug_check.cpp", 1835 ], 1836 1837 name: "libc_malloc_debug_leak", 1838 1839 shared_libs: [ 1840 "libc", 1841 "libdl", 1842 ], 1843 // Only need this for arm since libc++ uses its own unwind code that 1844 // doesn't mix with the other default unwind code. 1845 arch: { 1846 arm: { 1847 static_libs: [ 1848 "libunwind_llvm", 1849 "libc++abi", 1850 ], 1851 ldflags: ["-Wl,--exclude-libs,libunwind_llvm.a"], 1852 }, 1853 }, 1854 allow_undefined_symbols: true, 1855 1856 // Don't re-export new/delete and friends, even if the compiler really wants to. 1857 version_script: "version_script.txt", 1858 1859 // Don't install on release build 1860 tags: [ 1861 "eng", 1862 "debug", 1863 ], 1864} 1865 1866// ======================================================== 1867// libc_malloc_debug_qemu.so 1868// ======================================================== 1869cc_library_shared { 1870 defaults: ["libc_defaults"], 1871 cflags: ["-DMALLOC_QEMU_INSTRUMENT"], 1872 1873 srcs: [ 1874 "bionic/libc_logging.cpp", 1875 "bionic/malloc_debug_qemu.cpp", 1876 ], 1877 1878 name: "libc_malloc_debug_qemu", 1879 1880 shared_libs: [ 1881 "libc", 1882 "libdl", 1883 ], 1884 1885 // Don't re-export new/delete and friends, even if the compiler really wants to. 1886 version_script: "version_script.txt", 1887 1888 // Don't install on release build 1889 tags: [ 1890 "eng", 1891 "debug", 1892 ], 1893} 1894 1895// ANDROIDMK TRANSLATION ERROR: unsupported directive 1896// endif 1897//!user 1898 1899// ======================================================== 1900// libstdc++.so + libstdc++.a 1901// ======================================================== 1902cc_library { 1903 defaults: ["libc_defaults"], 1904 include_dirs: ["bionic/libstdc++/include"], 1905 srcs: [ 1906 "bionic/__cxa_guard.cpp", 1907 "bionic/__cxa_pure_virtual.cpp", 1908 "bionic/new.cpp", 1909 "bionic/libc_logging.cpp", 1910 ], 1911 name: "libstdc++", 1912 system_shared_libs: ["libc"], 1913 1914 //TODO: This is to work around b/24465209. Remove after root cause is fixed 1915 arch: { 1916 arm: { 1917 ldflags: ["-Wl,--hash-style=both"], 1918 }, 1919 x86: { 1920 ldflags: ["-Wl,--hash-style=both"], 1921 }, 1922 }, 1923} 1924 1925cc_defaults { 1926 name: "crt_defaults", 1927 1928 no_default_compiler_flags: true, 1929 1930 arch: { 1931 arm: { 1932 local_include_dirs: ["arch-arm/include"], 1933 }, 1934 arm64: { 1935 local_include_dirs: ["arch-arm64/include"], 1936 }, 1937 mips: { 1938 local_include_dirs: ["arch-mips/include"], 1939 }, 1940 mips64: { 1941 local_include_dirs: ["arch-mips64/include"], 1942 }, 1943 x86: { 1944 local_include_dirs: ["arch-x86/include"], 1945 }, 1946 x86_64: { 1947 local_include_dirs: ["arch-x86_64/include"], 1948 }, 1949 }, 1950 clang: false, 1951} 1952 1953cc_defaults { 1954 name: "crt_so_defaults", 1955 1956 arch: { 1957 mips: { 1958 cflags: ["-fPIC"], 1959 }, 1960 mips64: { 1961 cflags: ["-fPIC"], 1962 }, 1963 x86: { 1964 cflags: ["-fPIC"], 1965 }, 1966 x86_64: { 1967 cflags: ["-fPIC"], 1968 }, 1969 }, 1970} 1971 1972// Android.mk:start 1973// # crt obj files 1974// # ======================================================== 1975// # crtbrand.c needs <stdint.h> and a #define for the platform SDK version. 1976// libc_crt_target_cflags := \ 1977// -I$(LOCAL_PATH)/include \ 1978// -DPLATFORM_SDK_VERSION=$(PLATFORM_SDK_VERSION) \ 1979// 1980// my_2nd_arch_prefix := 1981// include $(LOCAL_PATH)/arch-$(TARGET_ARCH)/$(TARGET_ARCH).mk 1982// include $(LOCAL_PATH)/crt.mk 1983// ifdef TARGET_2ND_ARCH 1984// my_2nd_arch_prefix := $(TARGET_2ND_ARCH_VAR_PREFIX) 1985// include $(LOCAL_PATH)/arch-$(TARGET_2ND_ARCH)/$(TARGET_2ND_ARCH).mk 1986// include $(LOCAL_PATH)/crt.mk 1987// my_2nd_arch_prefix := 1988// endif 1989// 1990// include $(call all-makefiles-under,$(LOCAL_PATH)) 1991// Android.mk:end 1992cc_object { 1993 name: "crtbrand", 1994 local_include_dirs: ["include"], 1995 product_variables: { 1996 platform_sdk_version: { 1997 asflags: ["-DPLATFORM_SDK_VERSION=%d"], 1998 }, 1999 }, 2000 srcs: ["arch-common/bionic/crtbrand.S"], 2001 2002 defaults: [ 2003 "crt_defaults", 2004 "crt_so_defaults", 2005 ], 2006} 2007 2008// Android.mk:ignore 2009cc_object { 2010 name: "crtbegin_so1", 2011 local_include_dirs: ["include"], 2012 srcs: ["arch-common/bionic/crtbegin_so.c"], 2013 2014 defaults: [ 2015 "crt_defaults", 2016 "crt_so_defaults", 2017 ], 2018} 2019 2020// Android.mk:ignore 2021cc_object { 2022 name: "crtbegin_so", 2023 2024 defaults: [ 2025 "crt_defaults", 2026 "crt_so_defaults", 2027 ], 2028 deps: [ 2029 "crtbegin_so1", 2030 "crtbrand", 2031 ], 2032} 2033 2034// Android.mk:ignore 2035cc_object { 2036 name: "crtend_so", 2037 local_include_dirs: ["include"], 2038 srcs: ["arch-common/bionic/crtend_so.S"], 2039 2040 defaults: [ 2041 "crt_defaults", 2042 "crt_so_defaults", 2043 ], 2044} 2045 2046// Android.mk:ignore 2047cc_object { 2048 name: "crtbegin_static1", 2049 local_include_dirs: ["include"], 2050 srcs: ["arch-common/bionic/crtbegin.c"], 2051 2052 arch: { 2053 arm64: { 2054 srcs: [ 2055 "arch-arm64/bionic/crtbegin.c", 2056 ], 2057 exclude_srcs: [ 2058 "arch-common/bionic/crtbegin.c", 2059 ], 2060 }, 2061 mips: { 2062 srcs: [ 2063 "arch-mips/bionic/crtbegin.c", 2064 ], 2065 exclude_srcs: [ 2066 "arch-common/bionic/crtbegin.c", 2067 ], 2068 }, 2069 mips64: { 2070 srcs: [ 2071 "arch-mips64/bionic/crtbegin.c", 2072 ], 2073 exclude_srcs: [ 2074 "arch-common/bionic/crtbegin.c", 2075 ], 2076 }, 2077 }, 2078 2079 defaults: ["crt_defaults"], 2080} 2081 2082// Android.mk:ignore 2083cc_object { 2084 name: "crtbegin_static", 2085 2086 deps: [ 2087 "crtbegin_static1", 2088 "crtbrand", 2089 ], 2090 defaults: ["crt_defaults"], 2091} 2092 2093// Android.mk:ignore 2094cc_object { 2095 name: "crtbegin_dynamic1", 2096 local_include_dirs: ["include"], 2097 srcs: ["arch-common/bionic/crtbegin.c"], 2098 2099 arch: { 2100 arm64: { 2101 srcs: [ 2102 "arch-arm64/bionic/crtbegin.c", 2103 ], 2104 exclude_srcs: [ 2105 "arch-common/bionic/crtbegin.c", 2106 ], 2107 }, 2108 mips: { 2109 srcs: [ 2110 "arch-mips/bionic/crtbegin.c", 2111 ], 2112 exclude_srcs: [ 2113 "arch-common/bionic/crtbegin.c", 2114 ], 2115 }, 2116 mips64: { 2117 srcs: [ 2118 "arch-mips64/bionic/crtbegin.c", 2119 ], 2120 exclude_srcs: [ 2121 "arch-common/bionic/crtbegin.c", 2122 ], 2123 }, 2124 }, 2125 defaults: ["crt_defaults"], 2126} 2127 2128// Android.mk:ignore 2129cc_object { 2130 name: "crtbegin_dynamic", 2131 2132 deps: [ 2133 "crtbegin_dynamic1", 2134 "crtbrand", 2135 ], 2136 defaults: ["crt_defaults"], 2137} 2138 2139// Android.mk:ignore 2140cc_object { 2141 // We rename crtend.o to crtend_android.o to avoid a 2142 // name clash between gcc and bionic. 2143 name: "crtend_android", 2144 local_include_dirs: ["include"], 2145 srcs: ["arch-common/bionic/crtend.S"], 2146 2147 defaults: ["crt_defaults"], 2148} 2149