| package { | |
| default_team: "trendy_team_native_tools_libraries", | |
| default_applicable_licenses: ["system_core_libcutils_license"], | |
| } | |
| license { | |
| name: "system_core_libcutils_license", | |
| visibility: [":__subpackages__"], | |
| license_kinds: [ | |
| "SPDX-license-identifier-Apache-2.0", | |
| "SPDX-license-identifier-BSD", | |
| "SPDX-license-identifier-MIT", // strlcpy.c | |
| ], | |
| license_text: [ | |
| "NOTICE", | |
| ], | |
| } | |
| filegroup { | |
| name: "android_filesystem_config_header", | |
| srcs: ["include/private/android_filesystem_config.h"], | |
| } | |
| rust_bindgen { | |
| name: "libandroid_ids", | |
| crate_name: "android_ids", | |
| source_stem: "bindings", | |
| wrapper_src: "rust/aid_bindings.h", | |
| header_libs: ["libcutils_headers"], | |
| visibility: [ | |
| "//system/bpf/loader", | |
| ], | |
| } | |
| cc_defaults { | |
| name: "libcutils_defaults", | |
| cflags: [ | |
| "-Wno-exit-time-destructors", | |
| ], | |
| product_available: true, | |
| ramdisk_available: true, | |
| recovery_available: true, | |
| vendor_available: true, | |
| vendor_ramdisk_available: true, | |
| host_supported: true, | |
| native_bridge_supported: true, | |
| apex_available: [ | |
| "//apex_available:platform", | |
| "//apex_available:anyapex", | |
| ], | |
| min_sdk_version: "29", | |
| } | |
| cc_library_headers { | |
| name: "libcutils_headers", | |
| defaults: ["libcutils_defaults"], | |
| export_include_dirs: ["include"], | |
| header_libs: ["libprocessgroup_headers"], | |
| export_header_lib_headers: ["libprocessgroup_headers"], | |
| target: { | |
| vendor: { | |
| override_export_include_dirs: ["include_outside_system"], | |
| }, | |
| product: { | |
| override_export_include_dirs: ["include_outside_system"], | |
| }, | |
| linux_bionic: { | |
| enabled: true, | |
| }, | |
| windows: { | |
| enabled: true, | |
| }, | |
| }, | |
| } | |
| // Socket specific parts of libcutils that are safe to statically link into an APEX. | |
| cc_library { | |
| name: "libcutils_sockets", | |
| defaults: ["libcutils_defaults"], | |
| export_include_dirs: ["include"], | |
| shared_libs: ["liblog"], | |
| srcs: ["sockets.cpp"], | |
| target: { | |
| linux_bionic: { | |
| enabled: true, | |
| }, | |
| not_windows: { | |
| srcs: [ | |
| "socket_inaddr_any_server_unix.cpp", | |
| "socket_local_client_unix.cpp", | |
| "socket_local_server_unix.cpp", | |
| "socket_network_client_unix.cpp", | |
| "sockets_unix.cpp", | |
| ], | |
| }, | |
| // "not_windows" means "non-Windows host". | |
| android: { | |
| srcs: [ | |
| "android_get_control_file.cpp", | |
| "socket_inaddr_any_server_unix.cpp", | |
| "socket_local_client_unix.cpp", | |
| "socket_local_server_unix.cpp", | |
| "socket_network_client_unix.cpp", | |
| "sockets_unix.cpp", | |
| ], | |
| static_libs: ["libbase"], | |
| }, | |
| windows: { | |
| host_ldlibs: ["-lws2_32"], | |
| srcs: [ | |
| "socket_inaddr_any_server_windows.cpp", | |
| "socket_network_client_windows.cpp", | |
| "sockets_windows.cpp", | |
| ], | |
| enabled: true, | |
| cflags: [ | |
| "-D_GNU_SOURCE", | |
| ], | |
| }, | |
| }, | |
| } | |
| // some files must not be compiled when building against Mingw | |
| // they correspond to features not used by our host development tools | |
| // which are also hard or even impossible to port to native Win32 | |
| libcutils_nonwindows_sources = [ | |
| "fs.cpp", | |
| "hashmap.cpp", | |
| "multiuser.cpp", | |
| "str_parms.cpp", | |
| ] | |
| cc_library { | |
| name: "libcutils", | |
| defaults: ["libcutils_defaults"], | |
| double_loadable: true, | |
| srcs: [ | |
| "config_utils.cpp", | |
| "iosched_policy.cpp", | |
| "load_file.cpp", | |
| "native_handle.cpp", | |
| "properties.cpp", | |
| "record_stream.cpp", | |
| "strlcpy.c", | |
| ], | |
| target: { | |
| linux_bionic: { | |
| enabled: true, | |
| static_libs: [ | |
| "libasync_safe", | |
| ], | |
| }, | |
| linux: { | |
| srcs: [ | |
| "canned_fs_config.cpp", | |
| "fs_config.cpp", | |
| ], | |
| }, | |
| host: { | |
| srcs: [ | |
| "trace-host.cpp", | |
| "ashmem-host.cpp", | |
| ], | |
| }, | |
| not_windows: { | |
| srcs: libcutils_nonwindows_sources, | |
| }, | |
| windows: { | |
| enabled: true, | |
| host_ldlibs: ["-lws2_32"], | |
| }, | |
| android: { | |
| sanitize: { | |
| misc_undefined: ["integer"], | |
| }, | |
| static_libs: [ | |
| "libasync_safe", | |
| ], | |
| srcs: libcutils_nonwindows_sources + [ | |
| "android_reboot.cpp", | |
| "ashmem-dev.cpp", | |
| "klog.cpp", | |
| "partition_utils.cpp", | |
| "qtaguid.cpp", | |
| "trace-dev.cpp", | |
| "uevent.cpp", | |
| ], | |
| }, | |
| // qtaguid.cpp loads libnetd_client.so with dlopen(). Since | |
| // the interface of libnetd_client.so may vary between AOSP | |
| // releases, exclude qtaguid.cpp from the VNDK-SP variant. | |
| vendor: { | |
| exclude_srcs: [ | |
| "qtaguid.cpp", | |
| ], | |
| header_abi_checker: { | |
| enabled: true, | |
| ref_dump_dirs: ["abi-dumps"], | |
| }, | |
| }, | |
| product: { | |
| exclude_srcs: [ | |
| "qtaguid.cpp", | |
| ], | |
| header_abi_checker: { | |
| enabled: true, | |
| ref_dump_dirs: ["abi-dumps"], | |
| }, | |
| }, | |
| }, | |
| whole_static_libs: ["libcutils_sockets"], | |
| shared_libs: [ | |
| "liblog", | |
| "libbase", | |
| ], | |
| header_libs: [ | |
| "libbase_headers", | |
| "libcutils_headers", | |
| "libprocessgroup_headers", | |
| ], | |
| export_header_lib_headers: [ | |
| "libcutils_headers", | |
| "libprocessgroup_headers", | |
| ], | |
| local_include_dirs: ["include"], | |
| cflags: [ | |
| "-Werror", | |
| "-Wall", | |
| "-Wextra", | |
| ], | |
| } | |
| cc_defaults { | |
| name: "libcutils_test_default", | |
| srcs: [ | |
| "ashmem_base_test.cpp", | |
| "native_handle_test.cpp", | |
| "properties_test.cpp", | |
| "sockets_test.cpp", | |
| ], | |
| target: { | |
| android: { | |
| srcs: [ | |
| "android_get_control_file_test.cpp", | |
| "android_get_control_socket_test.cpp", | |
| "ashmem_test.cpp", | |
| "fs_config_test.cpp", | |
| "multiuser_test.cpp", | |
| "sched_policy_test.cpp", | |
| "str_parms_test.cpp", | |
| "trace-dev_test.cpp", | |
| ], | |
| }, | |
| not_windows: { | |
| srcs: [ | |
| "str_parms_test.cpp", | |
| ], | |
| }, | |
| }, | |
| cflags: [ | |
| "-Wall", | |
| "-Wextra", | |
| "-Werror", | |
| ], | |
| } | |
| always_static_test_libraries = [ | |
| "libjsoncpp", | |
| ] | |
| test_libraries = [ | |
| "libcutils", | |
| "liblog", | |
| "libbase", | |
| "libprocessgroup", | |
| ] | |
| cc_test { | |
| name: "libcutils_test", | |
| test_suites: ["device-tests"], | |
| defaults: ["libcutils_test_default"], | |
| host_supported: true, | |
| shared_libs: test_libraries, | |
| static_libs: always_static_test_libraries, | |
| require_root: true, | |
| } | |
| cc_defaults { | |
| name: "libcutils_test_static_defaults", | |
| defaults: ["libcutils_test_default"], | |
| stl: "libc++_static", | |
| require_root: true, | |
| target: { | |
| android: { | |
| static_executable: true, | |
| static_libs: [ | |
| "libprocessgroup_util", | |
| ] + test_libraries + always_static_test_libraries, | |
| }, | |
| not_windows: { | |
| static_libs: test_libraries + always_static_test_libraries, | |
| }, | |
| windows: { | |
| static_libs: [ | |
| "libbase", | |
| "libcutils", | |
| "libcutils_sockets", | |
| ], | |
| host_ldlibs: ["-lws2_32"], | |
| enabled: true, | |
| }, | |
| }, | |
| } | |
| cc_test { | |
| name: "libcutils_test_static", | |
| host_supported: true, | |
| test_suites: ["device-tests"], | |
| defaults: ["libcutils_test_static_defaults"], | |
| } | |
| cc_test { | |
| name: "KernelLibcutilsTest", | |
| test_suites: [ | |
| "general-tests", | |
| "vts", | |
| ], | |
| defaults: ["libcutils_test_static_defaults"], | |
| test_config: "KernelLibcutilsTest.xml", | |
| } |