2021-02-17 04:02:14 +01:00
|
|
|
package {
|
|
|
|
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",
|
2021-03-04 18:18:19 +01:00
|
|
|
"SPDX-license-identifier-MIT", // strlcpy.c
|
2021-02-17 04:02:14 +01:00
|
|
|
],
|
|
|
|
license_text: [
|
|
|
|
"NOTICE",
|
|
|
|
],
|
|
|
|
}
|
|
|
|
|
2020-09-17 18:39:24 +02:00
|
|
|
filegroup {
|
|
|
|
name: "android_filesystem_config_header",
|
|
|
|
srcs: ["include/private/android_filesystem_config.h"],
|
|
|
|
}
|
|
|
|
|
2021-03-04 18:18:19 +01:00
|
|
|
cc_defaults {
|
|
|
|
name: "libcutils_defaults",
|
|
|
|
cflags: [
|
|
|
|
"-Wno-exit-time-destructors",
|
|
|
|
],
|
2016-06-07 07:31:58 +02:00
|
|
|
|
2020-11-11 11:17:40 +01:00
|
|
|
product_available: true,
|
2020-09-17 18:38:42 +02:00
|
|
|
ramdisk_available: true,
|
2021-03-04 18:18:19 +01:00
|
|
|
recovery_available: true,
|
|
|
|
vendor_available: true,
|
2020-10-28 00:37:06 +01:00
|
|
|
vendor_ramdisk_available: true,
|
2021-03-04 18:18:19 +01:00
|
|
|
|
2017-01-25 19:52:17 +01:00
|
|
|
host_supported: true,
|
2021-03-04 18:18:19 +01:00
|
|
|
native_bridge_supported: true,
|
|
|
|
|
2020-03-07 08:36:09 +01:00
|
|
|
apex_available: [
|
|
|
|
"//apex_available:platform",
|
|
|
|
"//apex_available:anyapex",
|
|
|
|
],
|
2020-04-16 11:48:33 +02:00
|
|
|
min_sdk_version: "29",
|
2021-03-04 18:18:19 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
cc_library_headers {
|
|
|
|
name: "libcutils_headers",
|
|
|
|
defaults: ["libcutils_defaults"],
|
|
|
|
|
2017-01-25 19:52:17 +01:00
|
|
|
export_include_dirs: ["include"],
|
|
|
|
target: {
|
libcutils: vendor_available
By setting vendor_available, the following may become true:
* a prebuilt library from this release may be used at runtime by
in a later releasse (by vendor code compiled against this release).
so this library shouldn't depend on runtime state that may change
in the future.
* this library may be loaded twice into a single process (potentially
an old version and a newer version). The symbols will be isolated
using linker namespaces, but this may break assumptions about 1
library in 1 process (your singletons will run twice).
Background:
This means that these modules may be built and installed twice --
once for the system partition and once for the vendor partition. The
system version will build just like today, and will be used by the
framework components on /system. The vendor version will build
against a reduced set of exports and libraries -- similar to, but
separate from, the NDK. This means that all your dependencies must
also mark vendor_available.
At runtime, /system binaries will load libraries from /system/lib*,
while /vendor binaries will load libraries from /vendor/lib*. There
are some exceptions in both directions -- bionic(libc,etc) and liblog
are always loaded from /system. And SP-HALs (OpenGL, etc) may load
/vendor code into /system processes, but the dependencies of those
libraries will load from /vendor until it reaches a library that's
always on /system. In the SP-HAL case, if both framework and vendor
libraries depend on a library of the same name, both versions will be
loaded, but they will be isolated from each other.
It's possible to compile differently -- reducing your source files,
exporting different include directories, etc. For details see:
https://android-review.googlesource.com/368372
None of this is enabled unless the device opts into the system/vendor
split with BOARD_VNDK_VERSION := current.
Bug: 36426473
Bug: 36079834
Test: m -j libcutils
Test: attempt to compile with BOARD_VNDK_VERSION := current
Test: (sanity) boot internal marlin
(cherry picked from commit 9610c548a8e9018ecdfbe3d7204e8fd70d2554fc)
Merged-In: I76f9b28ef08a26d84d1365881e00696cc1dcfe5d
Change-Id: I76f9b28ef08a26d84d1365881e00696cc1dcfe5d
2017-04-13 23:29:58 +02:00
|
|
|
vendor: {
|
2020-11-11 11:17:40 +01:00
|
|
|
override_export_include_dirs: ["include_outside_system"],
|
|
|
|
},
|
|
|
|
product: {
|
|
|
|
override_export_include_dirs: ["include_outside_system"],
|
libcutils: vendor_available
By setting vendor_available, the following may become true:
* a prebuilt library from this release may be used at runtime by
in a later releasse (by vendor code compiled against this release).
so this library shouldn't depend on runtime state that may change
in the future.
* this library may be loaded twice into a single process (potentially
an old version and a newer version). The symbols will be isolated
using linker namespaces, but this may break assumptions about 1
library in 1 process (your singletons will run twice).
Background:
This means that these modules may be built and installed twice --
once for the system partition and once for the vendor partition. The
system version will build just like today, and will be used by the
framework components on /system. The vendor version will build
against a reduced set of exports and libraries -- similar to, but
separate from, the NDK. This means that all your dependencies must
also mark vendor_available.
At runtime, /system binaries will load libraries from /system/lib*,
while /vendor binaries will load libraries from /vendor/lib*. There
are some exceptions in both directions -- bionic(libc,etc) and liblog
are always loaded from /system. And SP-HALs (OpenGL, etc) may load
/vendor code into /system processes, but the dependencies of those
libraries will load from /vendor until it reaches a library that's
always on /system. In the SP-HAL case, if both framework and vendor
libraries depend on a library of the same name, both versions will be
loaded, but they will be isolated from each other.
It's possible to compile differently -- reducing your source files,
exporting different include directories, etc. For details see:
https://android-review.googlesource.com/368372
None of this is enabled unless the device opts into the system/vendor
split with BOARD_VNDK_VERSION := current.
Bug: 36426473
Bug: 36079834
Test: m -j libcutils
Test: attempt to compile with BOARD_VNDK_VERSION := current
Test: (sanity) boot internal marlin
(cherry picked from commit 9610c548a8e9018ecdfbe3d7204e8fd70d2554fc)
Merged-In: I76f9b28ef08a26d84d1365881e00696cc1dcfe5d
Change-Id: I76f9b28ef08a26d84d1365881e00696cc1dcfe5d
2017-04-13 23:29:58 +02:00
|
|
|
},
|
2017-03-15 23:23:36 +01:00
|
|
|
linux_bionic: {
|
|
|
|
enabled: true,
|
|
|
|
},
|
|
|
|
windows: {
|
|
|
|
enabled: true,
|
|
|
|
},
|
2017-01-25 19:52:17 +01:00
|
|
|
},
|
|
|
|
}
|
|
|
|
|
2020-02-19 22:50:57 +01:00
|
|
|
// Socket specific parts of libcutils that are safe to statically link into an APEX.
|
2020-03-09 23:20:55 +01:00
|
|
|
cc_library {
|
2020-02-19 22:50:57 +01:00
|
|
|
name: "libcutils_sockets",
|
2021-03-04 18:18:19 +01:00
|
|
|
defaults: ["libcutils_defaults"],
|
2020-02-19 22:50:57 +01:00
|
|
|
|
|
|
|
export_include_dirs: ["include"],
|
|
|
|
|
2020-03-09 23:20:55 +01:00
|
|
|
shared_libs: ["liblog"],
|
2020-02-19 22:50:57 +01:00
|
|
|
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",
|
|
|
|
],
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
cc_test {
|
|
|
|
name: "libcutils_sockets_test",
|
|
|
|
test_suites: ["device-tests"],
|
|
|
|
static_libs: ["libbase", "libcutils_sockets"],
|
|
|
|
cflags: [
|
|
|
|
"-Wall",
|
|
|
|
"-Wextra",
|
|
|
|
"-Werror",
|
|
|
|
],
|
|
|
|
|
|
|
|
srcs: ["sockets_test.cpp"],
|
|
|
|
target: {
|
|
|
|
android: {
|
|
|
|
srcs: [
|
|
|
|
"android_get_control_file_test.cpp",
|
|
|
|
"android_get_control_socket_test.cpp",
|
|
|
|
],
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
2021-03-04 18:18:19 +01:00
|
|
|
// 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",
|
|
|
|
]
|
|
|
|
|
2016-06-07 07:31:58 +02:00
|
|
|
cc_library {
|
|
|
|
name: "libcutils",
|
2021-03-04 18:18:19 +01:00
|
|
|
defaults: ["libcutils_defaults"],
|
2017-07-31 08:41:10 +02:00
|
|
|
vndk: {
|
|
|
|
enabled: true,
|
|
|
|
support_system_process: true,
|
|
|
|
},
|
2016-06-07 07:31:58 +02:00
|
|
|
srcs: [
|
2017-11-10 19:22:07 +01:00
|
|
|
"config_utils.cpp",
|
|
|
|
"iosched_policy.cpp",
|
|
|
|
"load_file.cpp",
|
|
|
|
"native_handle.cpp",
|
2020-05-08 08:15:45 +02:00
|
|
|
"properties.cpp",
|
2017-11-10 19:22:07 +01:00
|
|
|
"record_stream.cpp",
|
2016-06-07 07:31:58 +02:00
|
|
|
"strlcpy.c",
|
2017-11-10 19:22:07 +01:00
|
|
|
"threads.cpp",
|
2016-06-07 07:31:58 +02:00
|
|
|
],
|
|
|
|
|
|
|
|
target: {
|
2017-03-15 23:23:36 +01:00
|
|
|
linux_bionic: {
|
|
|
|
enabled: true,
|
2022-08-24 21:52:08 +02:00
|
|
|
static_libs: [
|
|
|
|
"libasync_safe",
|
|
|
|
],
|
2017-03-15 23:23:36 +01:00
|
|
|
},
|
2016-06-07 07:31:58 +02:00
|
|
|
not_windows: {
|
|
|
|
srcs: libcutils_nonwindows_sources + [
|
2017-11-10 19:22:07 +01:00
|
|
|
"ashmem-host.cpp",
|
2021-12-13 05:11:10 +01:00
|
|
|
"canned_fs_config.cpp",
|
2021-03-08 19:50:59 +01:00
|
|
|
"fs_config.cpp",
|
2017-11-10 19:22:07 +01:00
|
|
|
"trace-host.cpp",
|
2016-06-07 07:31:58 +02:00
|
|
|
],
|
|
|
|
},
|
|
|
|
windows: {
|
2019-03-26 04:38:56 +01:00
|
|
|
host_ldlibs: ["-lws2_32"],
|
|
|
|
|
2016-06-07 07:31:58 +02:00
|
|
|
srcs: [
|
2018-12-20 21:59:36 +01:00
|
|
|
"trace-host.cpp",
|
2016-06-07 07:31:58 +02:00
|
|
|
],
|
|
|
|
|
|
|
|
enabled: true,
|
2017-05-02 17:56:15 +02:00
|
|
|
cflags: [
|
|
|
|
"-D_GNU_SOURCE",
|
|
|
|
],
|
2016-06-07 07:31:58 +02:00
|
|
|
},
|
|
|
|
android: {
|
2022-10-18 18:31:04 +02:00
|
|
|
sanitize: {
|
|
|
|
misc_undefined: ["integer"],
|
|
|
|
},
|
2022-08-24 21:52:08 +02:00
|
|
|
static_libs: [
|
|
|
|
"libasync_safe",
|
|
|
|
],
|
2016-06-07 07:31:58 +02:00
|
|
|
srcs: libcutils_nonwindows_sources + [
|
2017-11-10 19:22:07 +01:00
|
|
|
"android_reboot.cpp",
|
|
|
|
"ashmem-dev.cpp",
|
2021-12-13 05:11:10 +01:00
|
|
|
"canned_fs_config.cpp",
|
2021-03-08 19:50:59 +01:00
|
|
|
"fs_config.cpp",
|
2016-06-07 07:31:58 +02:00
|
|
|
"klog.cpp",
|
2017-11-10 19:22:07 +01:00
|
|
|
"partition_utils.cpp",
|
2017-10-25 21:31:43 +02:00
|
|
|
"qtaguid.cpp",
|
2017-11-10 19:22:07 +01:00
|
|
|
"trace-dev.cpp",
|
2017-11-02 22:17:43 +01:00
|
|
|
"uevent.cpp",
|
2016-06-07 07:31:58 +02:00
|
|
|
],
|
|
|
|
},
|
|
|
|
|
2020-11-11 11:17:40 +01:00
|
|
|
// 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.
|
2018-05-08 11:37:29 +02:00
|
|
|
vendor: {
|
|
|
|
exclude_srcs: [
|
|
|
|
"qtaguid.cpp",
|
|
|
|
],
|
2023-06-23 04:12:38 +02:00
|
|
|
header_abi_checker: {
|
|
|
|
enabled: true,
|
|
|
|
ref_dump_dirs: ["abi-dumps"],
|
|
|
|
},
|
2020-11-11 11:17:40 +01:00
|
|
|
},
|
|
|
|
product: {
|
|
|
|
exclude_srcs: [
|
|
|
|
"qtaguid.cpp",
|
|
|
|
],
|
2023-06-23 04:12:38 +02:00
|
|
|
header_abi_checker: {
|
|
|
|
enabled: true,
|
|
|
|
ref_dump_dirs: ["abi-dumps"],
|
|
|
|
},
|
2020-11-11 11:17:40 +01:00
|
|
|
},
|
2016-06-07 07:31:58 +02:00
|
|
|
},
|
|
|
|
|
2020-02-19 22:50:57 +01:00
|
|
|
whole_static_libs: ["libcutils_sockets"],
|
2018-12-18 22:32:31 +01:00
|
|
|
shared_libs: [
|
|
|
|
"liblog",
|
|
|
|
"libbase",
|
|
|
|
],
|
2017-04-14 08:48:57 +02:00
|
|
|
header_libs: [
|
2018-04-25 23:52:50 +02:00
|
|
|
"libbase_headers",
|
2017-04-14 08:48:57 +02:00
|
|
|
"libcutils_headers",
|
2019-01-25 06:30:52 +01:00
|
|
|
"libprocessgroup_headers",
|
|
|
|
],
|
|
|
|
export_header_lib_headers: [
|
|
|
|
"libcutils_headers",
|
|
|
|
"libprocessgroup_headers",
|
2017-04-14 08:48:57 +02:00
|
|
|
],
|
2017-07-26 00:24:04 +02:00
|
|
|
local_include_dirs: ["include"],
|
2017-01-25 19:52:17 +01:00
|
|
|
|
2016-06-07 07:31:58 +02:00
|
|
|
cflags: [
|
|
|
|
"-Werror",
|
|
|
|
"-Wall",
|
|
|
|
"-Wextra",
|
|
|
|
],
|
|
|
|
}
|
|
|
|
|
2019-02-07 21:41:37 +01:00
|
|
|
cc_defaults {
|
|
|
|
name: "libcutils_test_default",
|
2019-11-13 05:20:42 +01:00
|
|
|
srcs: [
|
|
|
|
"native_handle_test.cpp",
|
2020-05-08 08:15:45 +02:00
|
|
|
"properties_test.cpp",
|
2019-11-13 05:20:42 +01:00
|
|
|
"sockets_test.cpp",
|
|
|
|
],
|
2019-02-07 21:41:37 +01:00
|
|
|
|
|
|
|
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",
|
|
|
|
],
|
|
|
|
}
|
|
|
|
|
2023-06-06 19:52:39 +02:00
|
|
|
always_static_test_libraries = [
|
|
|
|
"libjsoncpp",
|
|
|
|
]
|
|
|
|
|
2019-02-07 21:41:37 +01:00
|
|
|
test_libraries = [
|
|
|
|
"libcutils",
|
|
|
|
"liblog",
|
|
|
|
"libbase",
|
|
|
|
"libprocessgroup",
|
2019-03-23 01:01:08 +01:00
|
|
|
"libcgrouprc",
|
2019-02-07 21:41:37 +01:00
|
|
|
]
|
|
|
|
|
|
|
|
cc_test {
|
|
|
|
name: "libcutils_test",
|
|
|
|
test_suites: ["device-tests"],
|
|
|
|
defaults: ["libcutils_test_default"],
|
|
|
|
host_supported: true,
|
|
|
|
shared_libs: test_libraries,
|
2023-06-06 19:52:39 +02:00
|
|
|
static_libs: always_static_test_libraries,
|
2019-11-07 23:06:21 +01:00
|
|
|
require_root: true,
|
2019-02-07 21:41:37 +01:00
|
|
|
}
|
|
|
|
|
2020-01-16 10:20:18 +01:00
|
|
|
cc_defaults {
|
|
|
|
name: "libcutils_test_static_defaults",
|
2019-02-07 21:41:37 +01:00
|
|
|
defaults: ["libcutils_test_default"],
|
2019-03-23 01:01:08 +01:00
|
|
|
static_libs: [
|
|
|
|
"libc",
|
|
|
|
"libcgrouprc_format",
|
2023-06-06 19:52:39 +02:00
|
|
|
] + test_libraries + always_static_test_libraries,
|
2019-02-07 21:41:37 +01:00
|
|
|
stl: "libc++_static",
|
2019-11-07 23:06:21 +01:00
|
|
|
require_root: true,
|
2019-02-07 21:41:37 +01:00
|
|
|
|
|
|
|
target: {
|
|
|
|
android: {
|
|
|
|
static_executable: true,
|
|
|
|
},
|
|
|
|
windows: {
|
|
|
|
host_ldlibs: ["-lws2_32"],
|
|
|
|
|
|
|
|
enabled: true,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
2020-01-16 10:20:18 +01:00
|
|
|
|
|
|
|
cc_test {
|
|
|
|
name: "libcutils_test_static",
|
|
|
|
test_suites: ["device-tests"],
|
|
|
|
defaults: ["libcutils_test_static_defaults"],
|
|
|
|
}
|
|
|
|
|
|
|
|
cc_test {
|
|
|
|
name: "KernelLibcutilsTest",
|
2020-04-07 01:11:29 +02:00
|
|
|
test_suites: ["general-tests", "vts"],
|
2020-01-16 10:20:18 +01:00
|
|
|
defaults: ["libcutils_test_static_defaults"],
|
|
|
|
test_config: "KernelLibcutilsTest.xml",
|
|
|
|
}
|