1// Copyright (C) 2022 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//
15//
16
17package {
18    default_team: "trendy_team_automotive",
19    default_applicable_licenses: ["Android-Apache-2.0"],
20}
21
22cc_defaults {
23    name: "evsmanagerd_defaults",
24    defaults: ["android.hardware.graphics.common-ndk_static"],
25    shared_libs: [
26        "[email protected]",
27        "[email protected]",
28        "libbase",
29        "libbinder_ndk",
30        "libcamera_metadata",
31        "libhardware",
32        "libhidlbase",
33        "liblog",
34        "libprocessgroup",
35        "libstatslog_evsmanagerd",
36        "libutils",
37    ],
38    static_libs: [
39        "android.hardware.automotive.evs-V2-ndk",
40        "android.hardware.common-V2-ndk",
41        "libaidlcommonsupport",
42        "libcutils",
43    ],
44    header_libs: [
45        "libarect_headers",
46        "libui_headers",
47    ],
48    cflags: [
49        "-DGL_GLEXT_PROTOTYPES",
50        "-DEGL_EGLEXT_PROTOTYPES",
51        "-D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS",
52        "-Wall",
53        "-Werror",
54        "-Wunused",
55        "-Wunreachable-code",
56        "-Wthread-safety",
57    ],
58    export_include_dirs: [
59        ".",
60        "./include",
61        "./stats/include",
62        "./wrappers/include",
63    ],
64    product_variables: {
65        debuggable: {
66            cflags: [
67                "-DEVS_DEBUG",
68            ],
69        },
70    },
71}
72
73filegroup {
74    name: "evsmanagerd_sources",
75    srcs: [
76        "wrappers/src/HidlCameraStream.cpp",
77        "wrappers/src/AidlDisplay.cpp",
78        "wrappers/src/AidlCamera.cpp",
79        "wrappers/src/HidlEnumerator.cpp",
80        "wrappers/src/AidlCameraStream.cpp",
81        "wrappers/src/AidlEnumerator.cpp",
82        "wrappers/src/HidlDisplay.cpp",
83        "wrappers/src/HidlCamera.cpp",
84        "stats/src/CameraUsageStats.cpp",
85        "stats/src/StatsCollector.cpp",
86        "stats/src/LooperWrapper.cpp",
87        "utils/src/Utils.cpp",
88        "src/HalDisplay.cpp",
89        "src/VirtualCamera.cpp",
90        "src/Enumerator.cpp",
91        "src/HalCamera.cpp",
92    ],
93}
94
95cc_library_static {
96    name: "libevsmanagerd_static",
97    defaults: ["evsmanagerd_defaults"],
98    srcs: [":evsmanagerd_sources"],
99    export_include_dirs: [
100        "./include",
101        "./stats/include",
102        "./wrappers/include",
103    ],
104}
105
106vintf_fragment {
107    name: "manifest_evsmanagerd.xml",
108    src: "manifest_evsmanagerd.xml",
109}
110
111cc_binary {
112    name: "evsmanagerd",
113    defaults: ["evsmanagerd_defaults"],
114    static_libs: ["libevsmanagerd_static"],
115    srcs: ["src/service.cpp"],
116    init_rc: ["evsmanagerd.rc"],
117    vintf_fragment_modules: ["manifest_evsmanagerd.xml"],
118}
119
120cc_test {
121    name: "evsmanagerd_test",
122    defaults: ["evsmanagerd_defaults"],
123    test_suites: [
124        "general-tests",
125        "automotive-tests",
126    ],
127    srcs: [
128        ":evsmanagerd_sources",
129        "tests/unit/**/*.cpp",
130    ],
131    local_include_dirs: ["tests/unit/include"],
132    shared_libs: [
133        "libcamera_client",
134        "libnativewindow",
135        "libui",
136    ],
137    static_libs: [
138        "libgmock",
139        "libgtest",
140        "libevsmanagerd_static",
141    ],
142}
143
144cc_test_library {
145    name: "libmockevshal",
146    defaults: ["android.hardware.graphics.common-ndk_static"],
147    local_include_dirs: [
148        "include",
149        "tests/unit/include",
150    ],
151    export_include_dirs: ["tests/unit/include"],
152    srcs: [
153        "tests/unit/src/MockEvsHal.cpp",
154        "tests/unit/src/MockHidlEvsHal.cpp",
155        "tests/unit/src/MockHidlEvsHal_1_0.cpp",
156    ],
157    shared_libs: [
158        "[email protected]",
159        "[email protected]",
160        "libbase",
161        "libbinder_ndk",
162        "libcamera_client",
163        "libcamera_metadata",
164        "libcutils",
165        "libhidlbase",
166        "libnativewindow",
167        "libui",
168        "libutils",
169    ],
170    static_libs: [
171        "android.hardware.automotive.evs-V2-ndk",
172        "android.hardware.common-V2-ndk",
173        "libaidlcommonsupport",
174        "libgmock",
175        "libgtest",
176    ],
177    cflags: ["-DLOG_TAG=\"MockEVS\""],
178}
179
180cc_library_headers {
181    name: "libmockevshal_headers",
182    export_include_dirs: ["tests/unit/include"],
183}
184
185cc_library {
186    name: "libstatslog_evsmanagerd",
187    generated_sources: ["statslog_evsmanagerd.cpp"],
188    generated_headers: ["statslog_evsmanagerd.h"],
189    export_generated_headers: ["statslog_evsmanagerd.h"],
190    min_sdk_version: "30",
191    shared_libs: [
192        "libbinder",
193        "libstatsbootstrap",
194        "libutils",
195        "android.os.statsbootstrap_aidl-cpp",
196    ],
197}
198
199genrule {
200    name: "statslog_evsmanagerd.h",
201    tools: ["stats-log-api-gen"],
202    cmd: "$(location stats-log-api-gen) --header $(genDir)/statslog_evsmanagerd.h --module evs" +
203        " --namespace aidl,android,automotive,evs,stats --bootstrap",
204    out: [
205        "statslog_evsmanagerd.h",
206    ],
207}
208
209genrule {
210    name: "statslog_evsmanagerd.cpp",
211    tools: ["stats-log-api-gen"],
212    cmd: "$(location stats-log-api-gen) --cpp $(genDir)/statslog_evsmanagerd.cpp --module evs" +
213        " --namespace aidl,android,automotive,evs,stats --importHeader statslog_evsmanagerd.h" +
214        " --bootstrap",
215    out: [
216        "statslog_evsmanagerd.cpp",
217    ],
218}
219