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