• 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    default_team: "trendy_team_android_core_graphics_stack",
22}
23
24aconfig_declarations {
25    name: "libgui_flags",
26    package: "com.android.graphics.libgui.flags",
27    container: "system",
28    srcs: ["libgui_flags.aconfig"],
29}
30
31cc_aconfig_library {
32    name: "libguiflags",
33    host_supported: true,
34    vendor_available: true,
35    min_sdk_version: "29",
36    apex_available: [
37        "//apex_available:platform",
38        "com.android.media.swcodec",
39        "test_com.android.media.swcodec",
40    ],
41    aconfig_declarations: "libgui_flags",
42}
43
44cc_aconfig_library {
45    name: "libguiflags_no_apex",
46    aconfig_declarations: "libgui_flags",
47}
48
49cc_library_headers {
50    name: "libgui_headers",
51    vendor_available: true,
52    export_include_dirs: ["include"],
53
54    // we must build this module to get the required header as that is generated
55    export_shared_lib_headers: [
56        "android.hidl.token@1.0-utils",
57        "android.hardware.graphics.bufferqueue@1.0",
58        "android.hardware.graphics.bufferqueue@2.0",
59    ],
60    shared_libs: [
61        "android.hidl.token@1.0-utils",
62        "android.hardware.graphics.bufferqueue@1.0",
63        "android.hardware.graphics.bufferqueue@2.0",
64    ],
65    static_libs: ["libguiflags"],
66    export_static_lib_headers: ["libguiflags"],
67    min_sdk_version: "29",
68    // TODO(b/218719284) can media use be constrained to libgui_bufferqueue_static?
69    apex_available: [
70        "//apex_available:platform",
71        "com.android.media.swcodec",
72        "test_com.android.media.swcodec",
73    ],
74}
75
76cc_library_headers {
77    name: "libgui_aidl_headers",
78    vendor_available: true,
79    static_libs: [
80        "libgui_aidl_static",
81    ],
82
83    export_static_lib_headers: [
84        "libgui_aidl_static",
85    ],
86}
87
88// AIDL files that should be exposed to java
89filegroup {
90    name: "guiconstants_aidl",
91    srcs: [
92        "android/gui/DropInputMode.aidl",
93        "android/gui/StalledTransactionInfo.aidl",
94        "android/**/TouchOcclusionMode.aidl",
95        "android/gui/TrustedOverlay.aidl",
96        "android/gui/BorderSettings.aidl",
97    ],
98}
99
100filegroup {
101    name: "android_gui_aidl",
102    srcs: [
103        "android/gui/DisplayInfo.aidl",
104        "android/gui/FocusRequest.aidl",
105        "android/gui/InputApplicationInfo.aidl",
106        "android/gui/IWindowInfosListener.aidl",
107        "android/gui/IWindowInfosPublisher.aidl",
108        "android/gui/IWindowInfosReportedListener.aidl",
109        "android/gui/WindowInfo.aidl",
110        "android/gui/WindowInfosUpdate.aidl",
111    ],
112}
113
114cc_library_static {
115    name: "libgui_window_info_static",
116    vendor_available: true,
117    host_supported: true,
118    srcs: [
119        ":guiconstants_aidl",
120        ":inputconstants_aidl",
121        "android/gui/DisplayInfo.aidl",
122        "android/gui/FocusRequest.aidl",
123        "android/gui/InputApplicationInfo.aidl",
124        "android/gui/IWindowInfosListener.aidl",
125        "android/gui/IWindowInfosPublisher.aidl",
126        "android/gui/IWindowInfosReportedListener.aidl",
127        "android/gui/WindowInfosUpdate.aidl",
128        "android/gui/WindowInfo.aidl",
129        "DisplayInfo.cpp",
130        "WindowInfo.cpp",
131        "WindowInfosUpdate.cpp",
132    ],
133
134    shared_libs: [
135        "libbinder",
136    ],
137
138    local_include_dirs: [
139        "include",
140    ],
141
142    export_shared_lib_headers: [
143        "libbinder",
144    ],
145
146    static_libs: [
147        "libui-types",
148    ],
149
150    aidl: {
151        export_aidl_headers: true,
152    },
153
154    include_dirs: [
155        "frameworks/native/include",
156    ],
157
158    target: {
159        darwin: {
160            enabled: false,
161        },
162    },
163}
164
165filegroup {
166    name: "libgui_extra_aidl_files",
167    srcs: [
168        "android/gui/DisplayInfo.aidl",
169        "android/gui/FocusRequest.aidl",
170        "android/gui/InputApplicationInfo.aidl",
171        "android/gui/IWindowInfosListener.aidl",
172        "android/gui/IWindowInfosPublisher.aidl",
173        "android/gui/IWindowInfosReportedListener.aidl",
174        "android/gui/StalledTransactionInfo.aidl",
175        "android/gui/WindowInfo.aidl",
176        "android/gui/WindowInfosUpdate.aidl",
177    ],
178}
179
180filegroup {
181    name: "libgui_extra_unstructured_aidl_files",
182    srcs: [
183        "android/gui/DisplayInfo.aidl",
184        "android/gui/InputApplicationInfo.aidl",
185        "android/gui/WindowInfo.aidl",
186        "android/gui/WindowInfosUpdate.aidl",
187    ],
188}
189
190aidl_library {
191    name: "libgui_aidl_hdrs",
192    hdrs: [":libgui_extra_aidl_files"],
193}
194
195aidl_library {
196    name: "libgui_extra_unstructured_aidl_hdrs",
197    hdrs: [":libgui_extra_unstructured_aidl_files"],
198}
199
200aidl_library {
201    name: "libgui_aidl",
202    srcs: ["aidl/**/*.aidl"],
203    strip_import_prefix: "aidl",
204    deps: [
205        "libgui_aidl_hdrs",
206        "libgui_extra_unstructured_aidl_hdrs",
207    ],
208}
209
210filegroup {
211    name: "libgui_frame_event_aidl",
212    srcs: ["aidl/android/gui/FrameEvent.aidl"],
213    path: "aidl/",
214}
215
216cc_library_static {
217    name: "libgui_aidl_static",
218    vendor_available: true,
219
220    shared_libs: [
221        "libbinder",
222        "libui",
223    ],
224
225    local_include_dirs: [
226        "include",
227    ],
228
229    include_dirs: [
230        "frameworks/native/include",
231    ],
232
233    export_shared_lib_headers: [
234        "libbinder",
235    ],
236
237    static_libs: [
238        "libui-types",
239        "libgui_window_info_static",
240    ],
241
242    aidl: {
243        export_aidl_headers: true,
244        libs: ["libgui_aidl"],
245    },
246}
247
248filegroup {
249    name: "libgui-sources",
250    srcs: [
251        ":framework_native_aidl_binder",
252        ":framework_native_aidl_gui",
253        ":inputconstants_aidl",
254        ":libgui_bufferqueue_sources",
255
256        "BitTube.cpp",
257        "BLASTBufferQueue.cpp",
258        "BufferItemConsumer.cpp",
259        "BufferReleaseChannel.cpp",
260        "Choreographer.cpp",
261        "CompositorTiming.cpp",
262        "ConsumerBase.cpp",
263        "CpuConsumer.cpp",
264        "DebugEGLImageTracker.cpp",
265        "DisplayEventDispatcher.cpp",
266        "DisplayEventReceiver.cpp",
267        "FenceMonitor.cpp",
268        "Flags.cpp",
269        "GLConsumer.cpp",
270        "IGraphicBufferProducer.cpp",
271        "IProducerListener.cpp",
272        "ISurfaceComposer.cpp",
273        "ITransactionCompletedListener.cpp",
274        "LayerMetadata.cpp",
275        "LayerStatePermissions.cpp",
276        "LayerState.cpp",
277        "DisplayLuts.cpp",
278        "OccupancyTracker.cpp",
279        "StreamSplitter.cpp",
280        "ScreenCaptureResults.cpp",
281        "Surface.cpp",
282        "SurfaceControl.cpp",
283        "SurfaceComposerClient.cpp",
284        "SyncFeatures.cpp",
285        "TransactionState.cpp",
286        "VsyncEventData.cpp",
287        "view/Surface.cpp",
288        "WindowInfosListenerReporter.cpp",
289        "bufferqueue/1.0/B2HProducerListener.cpp",
290        "bufferqueue/1.0/H2BGraphicBufferProducer.cpp",
291        "bufferqueue/2.0/B2HProducerListener.cpp",
292        "bufferqueue/2.0/H2BGraphicBufferProducer.cpp",
293    ],
294}
295
296cc_defaults {
297    name: "libgui-defaults",
298    defaults: ["libgui_bufferqueue-defaults"],
299    static_libs: [
300        "libgui_aidl_static",
301        "libgui_window_info_static",
302        "libguiflags",
303    ],
304    shared_libs: [
305        "libbinder",
306        "libGLESv2",
307    ],
308    export_static_lib_headers: [
309        "libguiflags",
310    ],
311}
312
313cc_library_shared {
314    name: "libgui",
315    vendor_available: true,
316    double_loadable: true,
317
318    defaults: [
319        "libgui-defaults",
320    ],
321
322    srcs: [
323        ":libgui-sources",
324    ],
325
326    export_static_lib_headers: [
327        "libgui_aidl_static",
328        "libgui_window_info_static",
329    ],
330
331    export_shared_lib_headers: [
332        "libbinder",
333    ],
334
335    export_header_lib_headers: [
336        "libgui_aidl_headers",
337        "jni_headers",
338    ],
339
340    aidl: {
341        export_aidl_headers: true,
342    },
343
344    header_libs: [
345        "jni_headers",
346        "libgui_aidl_headers",
347    ],
348
349    static_libs: [
350        "libsurfaceflingerflags",
351    ],
352
353    afdo: true,
354
355    lto: {
356        thin: true,
357    },
358
359    cflags: [
360        "-Wthread-safety",
361    ],
362}
363
364// Used by media codec services exclusively as a static lib for
365// core bufferqueue support only.
366cc_library_static {
367    name: "libgui_bufferqueue_static",
368    vendor_available: true,
369    apex_available: [
370        "//apex_available:platform",
371        "com.android.media.swcodec",
372    ],
373    min_sdk_version: "29",
374
375    cflags: [
376        "-DNO_BINDER",
377    ],
378
379    defaults: ["libgui_bufferqueue-defaults"],
380
381    srcs: [
382        ":libgui_frame_event_aidl",
383        ":inputconstants_aidl",
384        ":libgui_bufferqueue_sources",
385    ],
386
387    aidl: {
388        include_dirs: [
389            "frameworks/native/libs/gui",
390        ],
391    },
392}
393
394filegroup {
395    name: "libgui_bufferqueue_sources",
396    srcs: [
397        "BatchBufferOps.cpp",
398        "BufferItem.cpp",
399        "BufferQueue.cpp",
400        "BufferQueueConsumer.cpp",
401        "BufferQueueCore.cpp",
402        "BufferQueueProducer.cpp",
403        "BufferQueueThreadState.cpp",
404        "BufferSlot.cpp",
405        "FrameRateUtils.cpp",
406        "FrameTimestamps.cpp",
407        "GLConsumerUtils.cpp",
408        "HdrMetadata.cpp",
409        "IGraphicBufferProducerFlattenables.cpp",
410        "bufferqueue/1.0/Conversion.cpp",
411        "bufferqueue/1.0/H2BProducerListener.cpp",
412        "bufferqueue/1.0/WProducerListener.cpp",
413        "bufferqueue/2.0/B2HGraphicBufferProducer.cpp",
414        "bufferqueue/2.0/H2BProducerListener.cpp",
415        "bufferqueue/2.0/types.cpp",
416    ],
417}
418
419// Common build config shared by libgui and libgui_bufferqueue_static.
420cc_defaults {
421    name: "libgui_bufferqueue-defaults",
422
423    defaults: ["android.hardware.graphics.common-ndk_shared"],
424
425    cflags: [
426        "-Wall",
427        "-Werror",
428    ],
429
430    cppflags: [
431        "-Wextra",
432        "-DDEBUG_ONLY_CODE=0",
433    ],
434
435    product_variables: {
436        eng: {
437            cppflags: [
438                "-UDEBUG_ONLY_CODE",
439                "-DDEBUG_ONLY_CODE=1",
440            ],
441        },
442    },
443
444    whole_static_libs: [
445        "libLibGuiProperties",
446    ],
447
448    shared_libs: [
449        "android.hardware.graphics.bufferqueue@1.0",
450        "android.hardware.graphics.bufferqueue@2.0",
451        "android.hardware.graphics.common@1.1",
452        "android.hardware.graphics.common@1.2",
453        "android.hidl.token@1.0-utils",
454        "libbase",
455        "libcutils",
456        "libEGL",
457        "libhidlbase",
458        "liblog",
459        "libnativewindow",
460        "libsync",
461        "libui",
462        "libutils",
463    ],
464
465    static_libs: [
466        "libbinderthreadstateutils",
467    ],
468
469    header_libs: [
470        "libgui_headers",
471        "libnativebase_headers",
472    ],
473
474    include_dirs: [
475        "frameworks/native/include",
476    ],
477
478    export_shared_lib_headers: [
479        "libEGL",
480        "libnativewindow",
481        "libui",
482        "android.hardware.graphics.bufferqueue@1.0",
483        "android.hardware.graphics.bufferqueue@2.0",
484        "android.hardware.graphics.common@1.1",
485        "android.hardware.graphics.common@1.2",
486        "android.hidl.token@1.0-utils",
487    ],
488
489    export_header_lib_headers: [
490        "libgui_headers",
491    ],
492
493    export_include_dirs: [
494        "include",
495    ],
496}
497
498// GMocks for use by external code
499cc_library_static {
500    name: "libgui_mocks",
501    vendor_available: false,
502
503    defaults: ["libgui_bufferqueue-defaults"],
504    static_libs: [
505        "libgtest",
506        "libgmock",
507        "libguiflags",
508    ],
509
510    srcs: [
511        ":libgui_frame_event_aidl",
512        "mock/GraphicBufferConsumer.cpp",
513        "mock/GraphicBufferProducer.cpp",
514    ],
515}
516
517subdirs = ["tests"]
518