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_applicable_licenses: ["Android-Apache-2.0"],
17}
18
19cc_defaults {
20    name: "carwatchdogd_defaults",
21    cflags: [
22        "-Wall",
23        "-Wno-missing-field-initializers",
24        "-Werror",
25        "-Wno-unused-variable",
26        "-Wunused-parameter",
27        "-Wno-error=deprecated",
28    ],
29    include_dirs: [
30        "system/libbase/include",
31    ],
32    shared_libs: [
33        "libbase",
34        "libbinder",
35        "liblog",
36        "libutils",
37    ],
38    static_libs: [
39        "android.automotive.watchdog.internal-cpp",
40        "android.automotive.watchdog-V3-cpp",
41    ],
42    header_libs: [
43        "libgtest_prod_headers",
44    ],
45}
46
47cc_library {
48  name: "libwatchdog_package_info_resolver",
49  srcs: [
50      "src/PackageInfoResolver.cpp",
51  ],
52  defaults: [
53      "carwatchdogd_defaults",
54  ],
55  shared_libs: [
56      "android.hardware.automotive.vehicle@2.0",
57      "libcutils",
58  ],
59  export_include_dirs: [
60       "src",
61  ],
62}
63
64cc_defaults {
65    name: "libwatchdog_perf_service_defaults",
66    shared_libs: [
67        "libcutils",
68        "libprocessgroup",
69        "libtinyxml2",
70    ],
71}
72
73cc_library {
74    name: "libwatchdog_perf_service",
75    defaults: [
76        "carwatchdogd_defaults",
77        "libwatchdog_perf_service_defaults",
78    ],
79    srcs: [
80        "src/WatchdogPerfService.cpp",
81        "src/IoOveruseConfigs.cpp",
82        "src/IoOveruseMonitor.cpp",
83        "src/IoPerfCollection.cpp",
84        "src/LooperWrapper.cpp",
85        "src/OveruseConfigurationXmlHelper.cpp",
86        "src/ProcDiskStats.cpp",
87        "src/ProcStat.cpp",
88        "src/UidIoStatsCollector.cpp",
89        "src/UidProcStatsCollector.cpp",
90        "src/UidStatsCollector.cpp",
91    ],
92    shared_libs: [
93        "android.hardware.automotive.vehicle@2.0",
94    ],
95    whole_static_libs: [
96        "libwatchdog_properties",
97        "libwatchdog_package_info_resolver",
98    ],
99    export_include_dirs: [
100        "src",
101    ],
102}
103
104filegroup {
105    name: "watchdog_test_xml_files",
106    srcs: [
107        "tests/data/*.xml",
108    ],
109}
110
111cc_test {
112    name: "libwatchdog_test",
113    defaults: [
114        "carwatchdogd_defaults",
115        "libwatchdog_perf_service_defaults",
116        "libwatchdog_process_service_defaults",
117    ],
118    test_suites: ["general-tests"],
119    srcs: [
120        "tests/IoOveruseConfigsTest.cpp",
121        "tests/IoOveruseMonitorTest.cpp",
122        "tests/IoPerfCollectionTest.cpp",
123        "tests/LooperStub.cpp",
124        "tests/OveruseConfigurationTestUtils.cpp",
125        "tests/OveruseConfigurationXmlHelperTest.cpp",
126        "tests/PackageInfoResolverTest.cpp",
127        "tests/PackageInfoTestUtils.cpp",
128        "tests/ProcDiskStatsTest.cpp",
129        "tests/ProcPidDir.cpp",
130        "tests/ProcStatTest.cpp",
131        "tests/UidIoStatsCollectorTest.cpp",
132        "tests/UidProcStatsCollectorTest.cpp",
133        "tests/UidStatsCollectorTest.cpp",
134        "tests/WatchdogBinderMediatorTest.cpp",
135        "tests/WatchdogInternalHandlerTest.cpp",
136        "tests/WatchdogPerfServiceTest.cpp",
137        "tests/WatchdogProcessServiceTest.cpp",
138        "tests/WatchdogServiceHelperTest.cpp",
139    ],
140    static_libs: [
141        "libgmock",
142        "libgtest",
143        "libwatchdog_binder_mediator",
144        "libwatchdog_perf_service",
145        "libwatchdog_process_service",
146    ],
147    whole_static_libs: [
148        "libwatchdog_package_info_resolver",
149        "android.hardware.automotive.vehicle@2.0",
150    ],
151    data: [":watchdog_test_xml_files"],
152}
153
154cc_defaults {
155    name: "libwatchdog_process_service_defaults",
156    shared_libs: [
157        "libhidlbase",
158    ],
159}
160
161cc_library {
162    name: "libwatchdog_process_service",
163    srcs: [
164        "src/WatchdogProcessService.cpp",
165    ],
166    defaults: [
167        "carwatchdogd_defaults",
168        "libwatchdog_process_service_defaults"
169    ],
170    shared_libs: [
171        "android.hardware.automotive.vehicle@2.0",
172    ],
173}
174
175cc_library {
176    name: "libwatchdog_binder_mediator",
177    defaults: [
178        "carwatchdogd_defaults",
179        "libwatchdog_perf_service_defaults",
180        "libwatchdog_process_service_defaults",
181    ],
182    srcs: [
183        "src/WatchdogBinderMediator.cpp",
184        "src/WatchdogInternalHandler.cpp",
185        "src/WatchdogServiceHelper.cpp",
186    ],
187    shared_libs: [
188        "android.hardware.automotive.vehicle@2.0",
189    ],
190    static_libs: [
191        "libwatchdog_perf_service",
192        "libwatchdog_process_service",
193    ],
194    export_include_dirs: [
195        "src",
196    ],
197}
198
199cc_binary {
200    name: "carwatchdogd",
201    defaults: [
202        "carwatchdogd_defaults",
203        "libwatchdog_perf_service_defaults",
204        "libwatchdog_process_service_defaults",
205    ],
206    srcs: [
207        "src/main.cpp",
208        "src/ServiceManager.cpp",
209    ],
210    init_rc: ["carwatchdogd.rc"],
211    shared_libs: [
212        "android.hardware.automotive.vehicle@2.0",
213    ],
214    static_libs: [
215        "libwatchdog_binder_mediator",
216        "libwatchdog_perf_service",
217        "libwatchdog_process_service",
218    ],
219    whole_static_libs: [
220        "libwatchdog_package_info_resolver",
221    ],
222    vintf_fragments: ["carwatchdogd.xml"],
223    required: [
224        "system_resource_overuse_configuration.xml",
225        "third_party_resource_overuse_configuration.xml",
226    ],
227}
228
229prebuilt_etc {
230    name: "system_resource_overuse_configuration.xml",
231    src: "data/system_resource_overuse_configuration.xml",
232    sub_dir: "automotive/watchdog/",
233}
234
235prebuilt_etc {
236    name: "third_party_resource_overuse_configuration.xml",
237    src: "data/third_party_resource_overuse_configuration.xml",
238    sub_dir: "automotive/watchdog/",
239}
240