• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright 2010 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.
14package {
15    // See: http://go/android-license-faq
16    // A large-scale-change added 'default_applicable_licenses' to import
17    // all of the 'license_kinds' from "frameworks_native_license"
18    // to get the below license kinds:
19    //   SPDX-license-identifier-Apache-2.0
20    default_applicable_licenses: ["frameworks_native_license"],
21}
22
23cc_library_headers {
24    name: "libgui_headers",
25    vendor_available: true,
26    export_include_dirs: ["include"],
27
28    // we must build this module to get the required header as that is generated
29    export_shared_lib_headers: [
30        "android.hidl.token@1.0-utils",
31        "android.hardware.graphics.bufferqueue@1.0",
32        "android.hardware.graphics.bufferqueue@2.0",
33    ],
34    shared_libs: [
35        "android.hidl.token@1.0-utils",
36        "android.hardware.graphics.bufferqueue@1.0",
37        "android.hardware.graphics.bufferqueue@2.0",
38    ],
39    min_sdk_version: "29",
40}
41
42cc_library_headers {
43    name: "libgui_aidl_headers",
44    vendor_available: true,
45    static_libs: [
46        "libgui_aidl_static",
47    ],
48
49    export_static_lib_headers: [
50        "libgui_aidl_static",
51    ],
52}
53
54filegroup {
55    name: "libgui_aidl",
56    srcs: ["aidl/**/*.aidl"],
57    path: "aidl/",
58}
59
60cc_library_static {
61    name: "libgui_aidl_static",
62    vendor_available: true,
63    srcs: [
64        ":libgui_aidl",
65    ],
66
67    shared_libs: [
68        "libbinder",
69        "libui",
70    ],
71
72    local_include_dirs: [
73        "include",
74    ],
75
76    export_shared_lib_headers: [
77        "libbinder",
78    ],
79
80    aidl: {
81        export_aidl_headers: true
82    }
83}
84
85
86cc_library_shared {
87    name: "libgui",
88    vendor_available: true,
89    vndk: {
90        enabled: true,
91        private: true,
92    },
93    double_loadable: true,
94
95    defaults: ["libgui_bufferqueue-defaults"],
96
97    static_libs: [
98        "libgui_aidl_static",
99    ],
100    export_static_lib_headers: [
101        "libgui_aidl_static",
102    ],
103
104    srcs: [
105        ":framework_native_aidl",
106        ":inputconstants_aidl",
107        ":libgui_bufferqueue_sources",
108
109        "BitTube.cpp",
110        "BLASTBufferQueue.cpp",
111        "BufferHubConsumer.cpp",
112        "BufferHubProducer.cpp",
113        "BufferItemConsumer.cpp",
114        "ConsumerBase.cpp",
115        "CpuConsumer.cpp",
116        "DebugEGLImageTracker.cpp",
117        "DisplayEventDispatcher.cpp",
118        "DisplayEventReceiver.cpp",
119        "FrameTimelineInfo.cpp",
120        "GLConsumer.cpp",
121        "IConsumerListener.cpp",
122        "IDisplayEventConnection.cpp",
123        "IGraphicBufferConsumer.cpp",
124        "IGraphicBufferProducer.cpp",
125        "IProducerListener.cpp",
126        "IRegionSamplingListener.cpp",
127        "ISurfaceComposer.cpp",
128        "ISurfaceComposerClient.cpp",
129        "ITransactionCompletedListener.cpp",
130        "LayerDebugInfo.cpp",
131        "LayerMetadata.cpp",
132        "LayerState.cpp",
133        "OccupancyTracker.cpp",
134        "StreamSplitter.cpp",
135        "ScreenCaptureResults.cpp",
136        "Surface.cpp",
137        "SurfaceControl.cpp",
138        "SurfaceComposerClient.cpp",
139        "SyncFeatures.cpp",
140        "TransactionTracing.cpp",
141        "view/Surface.cpp",
142        "bufferqueue/1.0/B2HProducerListener.cpp",
143        "bufferqueue/1.0/H2BGraphicBufferProducer.cpp",
144        "bufferqueue/2.0/B2HProducerListener.cpp",
145        "bufferqueue/2.0/H2BGraphicBufferProducer.cpp",
146    ],
147
148    shared_libs: [
149        "android.frameworks.bufferhub@1.0",
150        "libbinder",
151        "libbufferhub",
152        "libbufferhubqueue", // TODO(b/70046255): Remove this once BufferHub is integrated into libgui.
153        "libinput",
154        "libpdx_default_transport",
155    ],
156
157    export_shared_lib_headers: [
158        "libbinder",
159        "libinput",
160    ],
161
162    export_header_lib_headers: [
163        "libgui_aidl_headers",
164    ],
165
166    // bufferhub is not used when building libgui for vendors
167    target: {
168        vendor: {
169            cflags: [
170                "-DNO_BUFFERHUB",
171                "-DNO_INPUT",
172            ],
173            exclude_srcs: [
174                "BufferHubConsumer.cpp",
175                "BufferHubProducer.cpp",
176            ],
177            exclude_shared_libs: [
178                "android.frameworks.bufferhub@1.0",
179                "libbufferhub",
180                "libbufferhubqueue",
181                "libinput",
182                "libpdx_default_transport",
183            ],
184        },
185    },
186
187    aidl: {
188        export_aidl_headers: true,
189    },
190
191    header_libs: [
192        "libdvr_headers",
193        "libgui_aidl_headers",
194        "libpdx_headers",
195    ],
196
197    pgo: {
198        sampling: true,
199        profile_file: "libgui/libgui.profdata",
200    },
201
202    lto: {
203        thin: true,
204    },
205}
206
207// Used by media codec services exclusively as a static lib for
208// core bufferqueue support only.
209cc_library_static {
210    name: "libgui_bufferqueue_static",
211    vendor_available: true,
212    apex_available: [
213        "//apex_available:platform",
214        "com.android.media.swcodec",
215    ],
216    min_sdk_version: "29",
217
218    cflags: [
219        "-DNO_BUFFERHUB",
220        "-DNO_BINDER",
221    ],
222
223    defaults: ["libgui_bufferqueue-defaults"],
224
225    srcs: [
226        ":inputconstants_aidl",
227        ":libgui_bufferqueue_sources",
228        ":libgui_aidl",
229    ],
230}
231
232filegroup {
233    name: "libgui_bufferqueue_sources",
234    srcs: [
235        "BatchBufferOps.cpp",
236        "BufferItem.cpp",
237        "BufferQueue.cpp",
238        "BufferQueueConsumer.cpp",
239        "BufferQueueCore.cpp",
240        "BufferQueueProducer.cpp",
241        "BufferQueueThreadState.cpp",
242        "BufferSlot.cpp",
243        "FrameTimestamps.cpp",
244        "GLConsumerUtils.cpp",
245        "HdrMetadata.cpp",
246        "IGraphicBufferProducerFlattenables.cpp",
247        "bufferqueue/1.0/Conversion.cpp",
248        "bufferqueue/1.0/H2BProducerListener.cpp",
249        "bufferqueue/1.0/WProducerListener.cpp",
250        "bufferqueue/2.0/B2HGraphicBufferProducer.cpp",
251        "bufferqueue/2.0/H2BProducerListener.cpp",
252        "bufferqueue/2.0/types.cpp",
253    ],
254}
255
256// Common build config shared by libgui and libgui_bufferqueue_static.
257cc_defaults {
258    name: "libgui_bufferqueue-defaults",
259
260    clang: true,
261    cflags: [
262        "-Wall",
263        "-Werror",
264    ],
265
266    cppflags: [
267        "-Wextra",
268        "-DDEBUG_ONLY_CODE=0",
269    ],
270
271    product_variables: {
272        eng: {
273            cppflags: [
274                "-UDEBUG_ONLY_CODE",
275                "-DDEBUG_ONLY_CODE=1",
276            ],
277        },
278    },
279
280    whole_static_libs: [
281        "LibGuiProperties",
282    ],
283
284    shared_libs: [
285        "android.hardware.graphics.bufferqueue@1.0",
286        "android.hardware.graphics.bufferqueue@2.0",
287        "android.hardware.graphics.common@1.1",
288        "android.hardware.graphics.common@1.2",
289        "android.hidl.token@1.0-utils",
290        "libbase",
291        "libcutils",
292        "libEGL",
293        "libGLESv2",
294        "libhidlbase",
295        "liblog",
296        "libnativewindow",
297        "libsync",
298        "libui",
299        "libutils",
300        "libvndksupport",
301    ],
302
303    static_libs: [
304        "libbinderthreadstateutils",
305    ],
306
307    header_libs: [
308        "libgui_headers",
309        "libnativebase_headers",
310    ],
311
312    include_dirs: [
313        "frameworks/native/include",
314    ],
315
316    export_shared_lib_headers: [
317        "libEGL",
318        "libnativewindow",
319        "libui",
320        "android.hardware.graphics.bufferqueue@1.0",
321        "android.hardware.graphics.bufferqueue@2.0",
322        "android.hardware.graphics.common@1.1",
323        "android.hardware.graphics.common@1.2",
324        "android.hidl.token@1.0-utils",
325    ],
326
327    export_header_lib_headers: [
328        "libgui_headers",
329    ],
330
331    export_include_dirs: [
332        "include",
333    ],
334}
335
336// GMocks for use by external code
337cc_library_static {
338    name: "libgui_mocks",
339    vendor_available: false,
340
341    defaults: ["libgui_bufferqueue-defaults"],
342    static_libs: [
343        "libgtest",
344        "libgmock",
345    ],
346
347    srcs: [
348        "mock/GraphicBufferConsumer.cpp",
349        "mock/GraphicBufferProducer.cpp",
350    ],
351}
352
353subdirs = ["tests"]
354