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