// // Copyright (C) 2012 The Android Open Source Project // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // cc_defaults { name: "bionic_tests_defaults", host_supported: true, target: { darwin: { enabled: false, }, }, cflags: [ "-fstack-protector-all", "-g", "-Wall", "-Wextra", "-Wunused", "-Werror", "-fno-builtin", // We want to test deprecated API too. "-Wno-deprecated-declarations", // For glibc. "-D__STDC_LIMIT_MACROS", ], stl: "libc++", sanitize: { never: true, }, } // ----------------------------------------------------------------------------- // All standard tests. // ----------------------------------------------------------------------------- cc_test_library { name: "libBionicStandardTests", defaults: ["bionic_tests_defaults"], srcs: [ "arpa_inet_test.cpp", "assert_test.cpp", "buffer_tests.cpp", "bug_26110743_test.cpp", "complex_test.cpp", "ctype_test.cpp", "dirent_test.cpp", "endian_test.cpp", "error_test.cpp", "eventfd_test.cpp", "fcntl_test.cpp", "fenv_test.cpp", "ftw_test.cpp", "getauxval_test.cpp", "getcwd_test.cpp", "grp_pwd_test.cpp", "ifaddrs_test.cpp", "inttypes_test.cpp", "langinfo_test.cpp", "leak_test.cpp", "libc_logging_test.cpp", "libgen_basename_test.cpp", "libgen_test.cpp", "locale_test.cpp", "malloc_test.cpp", "math_test.cpp", "mntent_test.cpp", "netdb_test.cpp", "net_if_test.cpp", "netinet_ether_test.cpp", "netinet_in_test.cpp", "netinet_udp_test.cpp", "nl_types_test.cpp", "pthread_test.cpp", "pty_test.cpp", "regex_test.cpp", "resolv_test.cpp", "sched_test.cpp", "search_test.cpp", "semaphore_test.cpp", "setjmp_test.cpp", "signal_test.cpp", "stack_protector_test.cpp", "stack_protector_test_helper.cpp", "stack_unwinding_test.cpp", "stdatomic_test.cpp", "stdint_test.cpp", "stdio_nofortify_test.cpp", "stdio_test.cpp", "stdio_ext_test.cpp", "stdlib_test.cpp", "string_nofortify_test.cpp", "string_test.cpp", "string_posix_strerror_r_test.cpp", "strings_nofortify_test.cpp", "strings_test.cpp", "sstream_test.cpp", "sys_epoll_test.cpp", "sys_mman_test.cpp", "sys_msg_test.cpp", "sys_personality_test.cpp", "sys_prctl_test.cpp", "sys_procfs_test.cpp", "sys_ptrace_test.cpp", "sys_quota_test.cpp", "sys_resource_test.cpp", "sys_select_test.cpp", "sys_sem_test.cpp", "sys_sendfile_test.cpp", "sys_shm_test.cpp", "sys_socket_test.cpp", "sys_stat_test.cpp", "sys_statvfs_test.cpp", "sys_syscall_test.cpp", "sys_sysinfo_test.cpp", "sys_sysmacros_test.cpp", "sys_time_test.cpp", "sys_timex_test.cpp", "sys_types_test.cpp", "sys_uio_test.cpp", "sys_vfs_test.cpp", "sys_xattr_test.cpp", "system_properties_test.cpp", "system_properties_test2.cpp", "time_test.cpp", "uchar_test.cpp", "unistd_nofortify_test.cpp", "unistd_test.cpp", "utmp_test.cpp", "wchar_test.cpp", "wctype_test.cpp", ], include_dirs: [ "bionic/libc", "external/tinyxml2", ], static_libs: [ "libtinyxml2", "liblog", "libbase", ], host_ldlibs: ["-lrt"], shared: { enabled: false, }, generated_headers: ["generated_android_ids"], } // ----------------------------------------------------------------------------- // Fortify tests. // ----------------------------------------------------------------------------- cc_defaults { name: "bionic_fortify_tests_defaults", cflags: [ "-Wno-error", "-U_FORTIFY_SOURCE", ], srcs: ["fortify_test_main.cpp"], target: { host: { clang_cflags: ["-D__clang__"], }, }, } cc_test_library { name: "libfortify1-tests-clang", defaults: ["bionic_fortify_tests_defaults", "bionic_tests_defaults"], clang: true, cflags: [ "-D_FORTIFY_SOURCE=1", "-DTEST_NAME=Fortify1_clang" ], shared: { enabled: false, }, } cc_test_library { name: "libfortify2-tests-clang", defaults: ["bionic_fortify_tests_defaults", "bionic_tests_defaults"], clang: true, cflags: [ "-D_FORTIFY_SOURCE=2", "-DTEST_NAME=Fortify2_clang" ], shared: { enabled: false, }, } // ----------------------------------------------------------------------------- // Library of all tests (excluding the dynamic linker tests). // ----------------------------------------------------------------------------- cc_test_library { name: "libBionicTests", defaults: ["bionic_tests_defaults"], whole_static_libs: [ "libBionicStandardTests", "libfortify1-tests-clang", "libfortify2-tests-clang", ], shared: { enabled: false, }, } // ----------------------------------------------------------------------------- // Library of bionic customized gtest main function, with simplified output format. // ----------------------------------------------------------------------------- cc_test_library { name: "libBionicGtestMain", defaults: ["bionic_tests_defaults"], srcs: [ "gtest_main.cpp", "gtest_globals.cpp", ], static_libs: [ "libbase", ], include_dirs: [ "bionic/libc", ], target: { darwin: { enabled: true, }, }, shared: { enabled: false, }, } cc_test_library { name: "libBionicLoaderTests", defaults: ["bionic_tests_defaults", "llvm-defaults"], srcs: [ "atexit_test.cpp", "dl_test.cpp", "dlfcn_symlink_support.cpp", "dlfcn_test.cpp", "pthread_dlfcn_test.cpp", ], static_libs: [ "libbase", ], include_dirs: [ "bionic/libc", ], shared: { enabled: false, }, target: { android: { srcs: [ "cfi_test.cpp", "dlext_test.cpp", "libdl_test.cpp", ], static_libs: [ "libpagemap", "libLLVMObject", "libLLVMBitReader", "libLLVMMC", "libLLVMMCParser", "libLLVMCore", "libLLVMSupport", ], } } } // ----------------------------------------------------------------------------- // Library of bionic customized gtest main function, with normal gtest output format, // which is needed by bionic cts test. // ----------------------------------------------------------------------------- cc_test_library { name: "libBionicCtsGtestMain", defaults: ["bionic_tests_defaults"], srcs: [ "gtest_main.cpp", "gtest_globals_cts.cpp", ], cppflags: ["-DUSING_GTEST_OUTPUT_FORMAT"], shared: { enabled: false, }, } // ----------------------------------------------------------------------------- // Tests for the device using bionic's .so. Run with: // adb shell /data/nativetest/bionic-unit-tests/bionic-unit-tests32 // adb shell /data/nativetest/bionic-unit-tests/bionic-unit-tests64 // adb shell /data/nativetest/bionic-unit-tests/bionic-unit-tests-gcc32 // adb shell /data/nativetest/bionic-unit-tests/bionic-unit-tests-gcc64 // ----------------------------------------------------------------------------- cc_defaults { name: "bionic_unit_tests_defaults", host_supported: false, whole_static_libs: [ "libBionicTests", "libBionicLoaderTests", "libBionicGtestMain", ], static_libs: [ "libtinyxml2", "liblog", "libbase", ], srcs: [ // TODO: Include __cxa_thread_atexit_test.cpp to glibc tests once it is upgraded (glibc 2.18+) "__cxa_thread_atexit_test.cpp", "thread_local_test.cpp", ], conlyflags: [ "-fexceptions", "-fnon-call-exceptions", ], ldflags: ["-Wl,--export-dynamic"], include_dirs: ["bionic/libc"], stl: "libc++_static", target: { android: { shared_libs: [ "libdl", "libdl_preempt_test_1", "libdl_preempt_test_2", "libdl_test_df_1_global", ], static_libs: [ // The order of these libraries matters, do not shuffle them. "libbase", "libpagemap", "libziparchive", "libz", "libutils", "libLLVMObject", "libLLVMBitReader", "libLLVMMC", "libLLVMMCParser", "libLLVMCore", "libLLVMSupport", ], ldflags: [ "-Wl,--rpath,${ORIGIN}/../bionic-loader-test-libs", "-Wl,--enable-new-dtags", ], }, } } cc_test { name: "bionic-unit-tests", defaults: ["bionic_unit_tests_defaults", "bionic_tests_defaults"], clang: true, target: { android: { shared_libs: ["libicuuc"], }, }, } // ----------------------------------------------------------------------------- // Tests for the device linked against bionic's static library. Run with: // adb shell /data/nativetest/bionic-unit-tests-static/bionic-unit-tests-static32 // adb shell /data/nativetest/bionic-unit-tests-static/bionic-unit-tests-static64 // ----------------------------------------------------------------------------- cc_test { name: "bionic-unit-tests-static", defaults: ["bionic_tests_defaults"], host_supported: false, srcs: [ "gtest_preinit_debuggerd.cpp", ], whole_static_libs: [ "libBionicTests", "libBionicGtestMain", ], static_libs: [ "libm", "libc", "libc++_static", "libdl", "libtinyxml2", "liblog", "libbase", "libdebuggerd_handler", ], static_executable: true, stl: "libc++_static", // libc and libc++ both define std::nothrow. libc's is a private symbol, but this // still causes issues when linking libc.a and libc++.a, since private isn't // effective until it has been linked. To fix this, just allow multiple symbol // definitions for the static tests. ldflags: ["-Wl,--allow-multiple-definition"], } // ----------------------------------------------------------------------------- // Tests to run on the host and linked against glibc. Run with: // cd bionic/tests; mm bionic-unit-tests-glibc-run // ----------------------------------------------------------------------------- cc_test_host { name: "bionic-unit-tests-glibc", defaults: ["bionic_tests_defaults"], srcs: [ "atexit_test.cpp", "dlfcn_symlink_support.cpp", "dlfcn_test.cpp", "dl_test.cpp", "pthread_dlfcn_test.cpp", ], shared_libs: [ "libdl_preempt_test_1", "libdl_preempt_test_2", "libdl_test_df_1_global", ], whole_static_libs: [ "libBionicStandardTests", "libBionicGtestMain", "libfortify1-tests-clang", "libfortify2-tests-clang", ], static_libs: [ "libbase", "liblog", "libcutils", ], host_ldlibs: [ "-lresolv", "-lrt", "-ldl", "-lutil", ], include_dirs: ["bionic/libc"], ldflags: [ "-Wl,--rpath,${ORIGIN}/../bionic-loader-test-libs", "-Wl,--export-dynamic", ], sanitize: { never: false, }, } subdirs = ["libs"]