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-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 "aconfig_lib_cc_shared_link.defaults", 63 "vhalclient_defaults", 64 ], 65} 66 67cc_library { 68 name: "libwatchdog_looper_wrapper", 69 srcs: [ 70 "src/LooperWrapper.cpp", 71 ], 72 defaults: [ 73 "carwatchdogd_defaults", 74 ], 75 export_include_dirs: [ 76 "src", 77 ], 78} 79 80cc_library { 81 name: "libwatchdog_package_info_resolver", 82 srcs: [ 83 "src/PackageInfoResolver.cpp", 84 ], 85 defaults: [ 86 "carwatchdogd_defaults", 87 ], 88 whole_static_libs: [ 89 "libwatchdog_looper_wrapper", 90 ], 91 shared_libs: [ 92 "libprocessgroup", 93 ], 94 export_include_dirs: [ 95 "src", 96 ], 97} 98 99cc_defaults { 100 name: "libwatchdog_perf_service_defaults", 101 shared_libs: [ 102 "libprocessgroup", 103 "libtinyxml2", 104 ], 105} 106 107cc_library { 108 name: "libwatchdog_binder_utils", 109 srcs: [ 110 "src/AIBinderDeathRegistrationWrapper.cpp", 111 ], 112 defaults: [ 113 "carwatchdogd_defaults", 114 ], 115} 116 117cc_library { 118 name: "libwatchdog_perf_service", 119 defaults: [ 120 "carwatchdogd_defaults", 121 "libwatchdog_perf_service_defaults", 122 ], 123 srcs: [ 124 "src/IoOveruseConfigs.cpp", 125 "src/IoOveruseMonitor.cpp", 126 "src/OveruseConfigurationXmlHelper.cpp", 127 "src/PerformanceProfiler.cpp", 128 "src/PressureMonitor.cpp", 129 "src/ProcDiskStatsCollector.cpp", 130 "src/ProcStatCollector.cpp", 131 "src/UidCpuStatsCollector.cpp", 132 "src/UidIoStatsCollector.cpp", 133 "src/UidProcStatsCollector.cpp", 134 "src/UidStatsCollector.cpp", 135 "src/WatchdogPerfService.cpp", 136 ], 137 static_libs: [ 138 "libwatchdog_binder_utils", 139 "libwatchdog_package_info_resolver", 140 "libwatchdog_looper_wrapper", 141 ], 142 export_include_dirs: [ 143 "src", 144 ], 145 target: { 146 android: { 147 proto: { 148 type: "lite", 149 }, 150 shared_libs: [ 151 "libprotobuf-cpp-full", 152 ], 153 }, 154 }, 155} 156 157filegroup { 158 name: "watchdog_test_xml_files", 159 srcs: [ 160 "tests/data/*.xml", 161 ], 162} 163 164cc_test { 165 name: "libwatchdog_test", 166 defaults: [ 167 "carwatchdogd_defaults", 168 "libwatchdog_perf_service_defaults", 169 "libwatchdog_process_service_defaults", 170 "libwatchdog_service_manager_defaults", 171 ], 172 generated_sources: ["gen-native-dump-proto-srcs"], 173 test_suites: [ 174 "general-tests", 175 "automotive-tests", 176 ], 177 tidy_disabled_srcs: [ 178 // b/207508335 179 "tests/PackageInfoResolverTest.cpp", 180 ], 181 tidy_timeout_srcs: [ 182 "tests/IoOveruseMonitorTest.cpp", 183 "tests/WatchdogServiceHelperTest.cpp", 184 ], 185 srcs: [ 186 "tests/IoOveruseConfigsTest.cpp", 187 "tests/IoOveruseMonitorTest.cpp", 188 "tests/PerformanceProfilerTest.cpp", 189 "tests/PressureMonitorTest.cpp", 190 "tests/LooperStub.cpp", 191 "tests/OveruseConfigurationTestUtils.cpp", 192 "tests/OveruseConfigurationXmlHelperTest.cpp", 193 "tests/PackageInfoResolverTest.cpp", 194 "tests/PackageInfoTestUtils.cpp", 195 "tests/ProcDiskStatsCollectorTest.cpp", 196 "tests/ProcPidDir.cpp", 197 "tests/ProcStatCollectorTest.cpp", 198 "tests/ThreadPriorityControllerTest.cpp", 199 "tests/UidIoStatsCollectorTest.cpp", 200 "tests/UidProcStatsCollectorTest.cpp", 201 "tests/UidCpuStatsCollectorTest.cpp", 202 "tests/UidStatsCollectorTest.cpp", 203 "tests/WatchdogBinderMediatorTest.cpp", 204 "tests/WatchdogInternalHandlerTest.cpp", 205 "tests/WatchdogPerfServiceTest.cpp", 206 "tests/WatchdogProcessServiceTest.cpp", 207 "tests/WatchdogServiceHelperTest.cpp", 208 209 ], 210 static_libs: [ 211 "[email protected]", 212 "libgmock", 213 "libgtest", 214 "libwatchdog_binder_mediator", 215 "libwatchdog_perf_service", 216 "libwatchdog_process_service", 217 "libwatchdog_service_manager", 218 ], 219 data: [":watchdog_test_xml_files"], 220 target: { 221 android: { 222 proto: { 223 type: "lite", 224 }, 225 shared_libs: [ 226 "libprotobuf-cpp-full", 227 ], 228 }, 229 }, 230} 231 232cc_defaults { 233 name: "libwatchdog_process_service_defaults", 234 shared_libs: [ 235 "libhidlbase", 236 ], 237} 238 239cc_library_static { 240 name: "libwatchdog_process_service", 241 srcs: [ 242 "src/WatchdogProcessService.cpp", 243 ], 244 static_libs: [ 245 "libwatchdog_binder_utils", 246 ], 247 defaults: [ 248 "carwatchdogd_defaults", 249 "libwatchdog_process_service_defaults", 250 ], 251 shared_libs: [ 252 "[email protected]", 253 ], 254} 255 256cc_library { 257 name: "libwatchdog_binder_mediator", 258 defaults: [ 259 "carwatchdogd_defaults", 260 "libwatchdog_perf_service_defaults", 261 "libwatchdog_process_service_defaults", 262 ], 263 srcs: [ 264 "src/ThreadPriorityController.cpp", 265 "src/WatchdogBinderMediator.cpp", 266 "src/WatchdogInternalHandler.cpp", 267 "src/WatchdogServiceHelper.cpp", 268 ], 269 shared_libs: [ 270 "[email protected]", 271 ], 272 static_libs: [ 273 "libwatchdog_binder_utils", 274 "libwatchdog_perf_service", 275 "libwatchdog_process_service", 276 ], 277 export_include_dirs: [ 278 "src", 279 ], 280} 281 282cc_defaults { 283 name: "libwatchdog_service_manager_defaults", 284 defaults: [ 285 "libwatchdog_perf_service_defaults", 286 "libwatchdog_process_service_defaults", 287 ], 288 static_libs: [ 289 "libwatchdog_binder_mediator", 290 "libwatchdog_binder_utils", 291 "libwatchdog_package_info_resolver", 292 "libwatchdog_perf_service", 293 "libwatchdog_process_service", 294 ], 295} 296 297cc_library { 298 name: "libwatchdog_service_manager", 299 defaults: [ 300 "carwatchdogd_defaults", 301 "libwatchdog_service_manager_defaults", 302 ], 303 srcs: [ 304 "src/ServiceManager.cpp", 305 ], 306} 307 308vintf_fragment { 309 name: "carwatchdogd.xml", 310 src: "carwatchdogd.xml", 311} 312 313cc_binary { 314 name: "carwatchdogd", 315 defaults: [ 316 "carwatchdogd_defaults", 317 "libwatchdog_service_manager_defaults", 318 ], 319 srcs: [ 320 "src/main.cpp", 321 ], 322 init_rc: ["carwatchdogd.rc"], 323 shared_libs: [ 324 "[email protected]", 325 ], 326 static_libs: [ 327 "libwatchdog_binder_utils", 328 "libwatchdog_service_manager", 329 ], 330 vintf_fragment_modules: ["carwatchdogd.xml"], 331 required: [ 332 "system_resource_overuse_configuration.xml", 333 "third_party_resource_overuse_configuration.xml", 334 ], 335} 336 337prebuilt_etc { 338 name: "system_resource_overuse_configuration.xml", 339 src: "data/system_resource_overuse_configuration.xml", 340 sub_dir: "automotive/watchdog/", 341} 342 343prebuilt_etc { 344 name: "third_party_resource_overuse_configuration.xml", 345 src: "data/third_party_resource_overuse_configuration.xml", 346 sub_dir: "automotive/watchdog/", 347} 348