1// Copyright (C) 2020 The Android Open Source Project 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15package { 16 default_team: "trendy_team_aaos_framework", 17 default_applicable_licenses: ["Android-Apache-2.0"], 18} 19 20cc_defaults { 21 name: "carwatchdogd_defaults", 22 cflags: [ 23 "-Wall", 24 "-Wno-missing-field-initializers", 25 "-Werror", 26 "-Wno-unused-variable", 27 "-Wunused-parameter", 28 "-Wno-error=deprecated", 29 "-DANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION", 30 ], 31 include_dirs: [ 32 "system/libbase/include", 33 ], 34 generated_headers: [ 35 "gen-native-dump-proto-headers", 36 "gen-native-dump-cppstream-proto-headers", 37 ], 38 shared_libs: [ 39 "libbase", 40 "libbinder", 41 "libbinder_ndk", 42 "liblog", 43 "libmeminfo", 44 "libpsi", 45 "libutils", 46 "packagemanager_aidl-cpp", 47 "libprotoutil", 48 "libcutils", 49 "server_configurable_flags", 50 ], 51 static_libs: [ 52 "android.automotive.watchdog.internal-V3-ndk", 53 "android.automotive.watchdog-V3-ndk", 54 "android.car.feature-aconfig-cpp", 55 "libvhalclient", 56 "libwatchdog_properties", 57 ], 58 header_libs: [ 59 "libgtest_prod_headers", 60 ], 61 defaults: [ 62 "vhalclient_defaults", 63 ], 64} 65 66cc_library { 67 name: "libwatchdog_looper_wrapper", 68 srcs: [ 69 "src/LooperWrapper.cpp", 70 ], 71 defaults: [ 72 "carwatchdogd_defaults", 73 ], 74 export_include_dirs: [ 75 "src", 76 ], 77} 78 79cc_library { 80 name: "libwatchdog_package_info_resolver", 81 srcs: [ 82 "src/PackageInfoResolver.cpp", 83 ], 84 defaults: [ 85 "carwatchdogd_defaults", 86 ], 87 whole_static_libs: [ 88 "libwatchdog_looper_wrapper", 89 ], 90 shared_libs: [ 91 "libprocessgroup", 92 ], 93 export_include_dirs: [ 94 "src", 95 ], 96} 97 98cc_defaults { 99 name: "libwatchdog_perf_service_defaults", 100 shared_libs: [ 101 "libprocessgroup", 102 "libtinyxml2", 103 ], 104} 105 106cc_library { 107 name: "libwatchdog_binder_utils", 108 srcs: [ 109 "src/AIBinderDeathRegistrationWrapper.cpp", 110 ], 111 defaults: [ 112 "carwatchdogd_defaults", 113 ], 114} 115 116cc_library { 117 name: "libwatchdog_perf_service", 118 defaults: [ 119 "carwatchdogd_defaults", 120 "libwatchdog_perf_service_defaults", 121 ], 122 srcs: [ 123 "src/IoOveruseConfigs.cpp", 124 "src/IoOveruseMonitor.cpp", 125 "src/OveruseConfigurationXmlHelper.cpp", 126 "src/PerformanceProfiler.cpp", 127 "src/PressureMonitor.cpp", 128 "src/ProcDiskStatsCollector.cpp", 129 "src/ProcStatCollector.cpp", 130 "src/UidCpuStatsCollector.cpp", 131 "src/UidIoStatsCollector.cpp", 132 "src/UidProcStatsCollector.cpp", 133 "src/UidStatsCollector.cpp", 134 "src/WatchdogPerfService.cpp", 135 ], 136 static_libs: [ 137 "libwatchdog_binder_utils", 138 "libwatchdog_package_info_resolver", 139 "libwatchdog_looper_wrapper", 140 ], 141 export_include_dirs: [ 142 "src", 143 ], 144 target: { 145 android: { 146 proto: { 147 type: "lite", 148 }, 149 shared_libs: [ 150 "libprotobuf-cpp-full", 151 ], 152 }, 153 }, 154} 155 156filegroup { 157 name: "watchdog_test_xml_files", 158 srcs: [ 159 "tests/data/*.xml", 160 ], 161} 162 163cc_test { 164 name: "libwatchdog_test", 165 defaults: [ 166 "carwatchdogd_defaults", 167 "libwatchdog_perf_service_defaults", 168 "libwatchdog_process_service_defaults", 169 "libwatchdog_service_manager_defaults", 170 ], 171 generated_sources: ["gen-native-dump-proto-srcs"], 172 test_suites: [ 173 "general-tests", 174 "automotive-tests", 175 ], 176 tidy_disabled_srcs: [ 177 // b/207508335 178 "tests/PackageInfoResolverTest.cpp", 179 ], 180 tidy_timeout_srcs: [ 181 "tests/IoOveruseMonitorTest.cpp", 182 "tests/WatchdogServiceHelperTest.cpp", 183 ], 184 srcs: [ 185 "tests/IoOveruseConfigsTest.cpp", 186 "tests/IoOveruseMonitorTest.cpp", 187 "tests/PerformanceProfilerTest.cpp", 188 "tests/PressureMonitorTest.cpp", 189 "tests/LooperStub.cpp", 190 "tests/OveruseConfigurationTestUtils.cpp", 191 "tests/OveruseConfigurationXmlHelperTest.cpp", 192 "tests/PackageInfoResolverTest.cpp", 193 "tests/PackageInfoTestUtils.cpp", 194 "tests/ProcDiskStatsCollectorTest.cpp", 195 "tests/ProcPidDir.cpp", 196 "tests/ProcStatCollectorTest.cpp", 197 "tests/ThreadPriorityControllerTest.cpp", 198 "tests/UidIoStatsCollectorTest.cpp", 199 "tests/UidProcStatsCollectorTest.cpp", 200 "tests/UidCpuStatsCollectorTest.cpp", 201 "tests/UidStatsCollectorTest.cpp", 202 "tests/WatchdogBinderMediatorTest.cpp", 203 "tests/WatchdogInternalHandlerTest.cpp", 204 "tests/WatchdogPerfServiceTest.cpp", 205 "tests/WatchdogProcessServiceTest.cpp", 206 "tests/WatchdogServiceHelperTest.cpp", 207 208 ], 209 static_libs: [ 210 "android.hardware.automotive.vehicle@2.0", 211 "libgmock", 212 "libgtest", 213 "libwatchdog_binder_mediator", 214 "libwatchdog_perf_service", 215 "libwatchdog_process_service", 216 "libwatchdog_service_manager", 217 ], 218 data: [":watchdog_test_xml_files"], 219 target: { 220 android: { 221 proto: { 222 type: "lite", 223 }, 224 shared_libs: [ 225 "libprotobuf-cpp-full", 226 ], 227 }, 228 }, 229} 230 231cc_defaults { 232 name: "libwatchdog_process_service_defaults", 233 shared_libs: [ 234 "libhidlbase", 235 ], 236} 237 238cc_library_static { 239 name: "libwatchdog_process_service", 240 srcs: [ 241 "src/WatchdogProcessService.cpp", 242 ], 243 static_libs: [ 244 "libwatchdog_binder_utils", 245 ], 246 defaults: [ 247 "carwatchdogd_defaults", 248 "libwatchdog_process_service_defaults", 249 ], 250 shared_libs: [ 251 "android.hardware.automotive.vehicle@2.0", 252 ], 253} 254 255cc_library { 256 name: "libwatchdog_binder_mediator", 257 defaults: [ 258 "carwatchdogd_defaults", 259 "libwatchdog_perf_service_defaults", 260 "libwatchdog_process_service_defaults", 261 ], 262 srcs: [ 263 "src/ThreadPriorityController.cpp", 264 "src/WatchdogBinderMediator.cpp", 265 "src/WatchdogInternalHandler.cpp", 266 "src/WatchdogServiceHelper.cpp", 267 ], 268 shared_libs: [ 269 "android.hardware.automotive.vehicle@2.0", 270 ], 271 static_libs: [ 272 "libwatchdog_binder_utils", 273 "libwatchdog_perf_service", 274 "libwatchdog_process_service", 275 ], 276 export_include_dirs: [ 277 "src", 278 ], 279} 280 281cc_defaults { 282 name: "libwatchdog_service_manager_defaults", 283 defaults: [ 284 "libwatchdog_perf_service_defaults", 285 "libwatchdog_process_service_defaults", 286 ], 287 static_libs: [ 288 "libwatchdog_binder_mediator", 289 "libwatchdog_binder_utils", 290 "libwatchdog_package_info_resolver", 291 "libwatchdog_perf_service", 292 "libwatchdog_process_service", 293 ], 294} 295 296cc_library { 297 name: "libwatchdog_service_manager", 298 defaults: [ 299 "carwatchdogd_defaults", 300 "libwatchdog_service_manager_defaults", 301 ], 302 srcs: [ 303 "src/ServiceManager.cpp", 304 ], 305} 306 307cc_binary { 308 name: "carwatchdogd", 309 defaults: [ 310 "carwatchdogd_defaults", 311 "libwatchdog_service_manager_defaults", 312 ], 313 srcs: [ 314 "src/main.cpp", 315 ], 316 init_rc: ["carwatchdogd.rc"], 317 shared_libs: [ 318 "android.hardware.automotive.vehicle@2.0", 319 ], 320 static_libs: [ 321 "libwatchdog_binder_utils", 322 "libwatchdog_service_manager", 323 ], 324 vintf_fragments: ["carwatchdogd.xml"], 325 required: [ 326 "system_resource_overuse_configuration.xml", 327 "third_party_resource_overuse_configuration.xml", 328 ], 329} 330 331prebuilt_etc { 332 name: "system_resource_overuse_configuration.xml", 333 src: "data/system_resource_overuse_configuration.xml", 334 sub_dir: "automotive/watchdog/", 335} 336 337prebuilt_etc { 338 name: "third_party_resource_overuse_configuration.xml", 339 src: "data/third_party_resource_overuse_configuration.xml", 340 sub_dir: "automotive/watchdog/", 341} 342