|  | package { | 
|  | // See: http://go/android-license-faq | 
|  | // A large-scale-change added 'default_applicable_licenses' to import | 
|  | // all of the 'license_kinds' from "frameworks_native_license" | 
|  | // to get the below license kinds: | 
|  | //   SPDX-license-identifier-Apache-2.0 | 
|  | default_applicable_licenses: ["frameworks_native_license"], | 
|  | } | 
|  |  | 
|  | cc_defaults { | 
|  | name: "surfaceflinger_defaults", | 
|  | cflags: [ | 
|  | "-Wall", | 
|  | "-Werror", | 
|  | "-Wformat", | 
|  | "-Wthread-safety", | 
|  | "-Wunused", | 
|  | "-Wunreachable-code", | 
|  | "-Wconversion", | 
|  | ], | 
|  | } | 
|  |  | 
|  | cc_defaults { | 
|  | name: "libsurfaceflinger_defaults", | 
|  | defaults: ["surfaceflinger_defaults"], | 
|  | cflags: [ | 
|  | "-DLOG_TAG=\"SurfaceFlinger\"", | 
|  | "-DGL_GLEXT_PROTOTYPES", | 
|  | "-DEGL_EGLEXT_PROTOTYPES", | 
|  | ], | 
|  | shared_libs: [ | 
|  | "android.hardware.configstore-utils", | 
|  | "android.hardware.configstore@1.0", | 
|  | "android.hardware.configstore@1.1", | 
|  | "android.hardware.graphics.allocator@2.0", | 
|  | "android.hardware.graphics.allocator@3.0", | 
|  | "android.hardware.graphics.common@1.2", | 
|  | "android.hardware.graphics.composer@2.1", | 
|  | "android.hardware.graphics.composer@2.2", | 
|  | "android.hardware.graphics.composer@2.3", | 
|  | "android.hardware.graphics.composer@2.4", | 
|  | "android.hardware.power@1.0", | 
|  | "android.hardware.power@1.3", | 
|  | "android.hardware.power-V1-cpp", | 
|  | "libbase", | 
|  | "libbinder", | 
|  | "libbufferhubqueue", | 
|  | "libcutils", | 
|  | "libEGL", | 
|  | "libfmq", | 
|  | "libGLESv1_CM", | 
|  | "libGLESv2", | 
|  | "libgui", | 
|  | "libhidlbase", | 
|  | "liblayers_proto", | 
|  | "liblog", | 
|  | "libnativewindow", | 
|  | "libpdx_default_transport", | 
|  | "libprocessgroup", | 
|  | "libprotobuf-cpp-lite", | 
|  | "libstatslog", | 
|  | "libsync", | 
|  | "libtimestats", | 
|  | "libui", | 
|  | "libinput", | 
|  | "libutils", | 
|  | "libSurfaceFlingerProp", | 
|  | ], | 
|  | static_libs: [ | 
|  | "libcompositionengine", | 
|  | "libperfetto_client_experimental", | 
|  | "librenderengine", | 
|  | "libserviceutils", | 
|  | "libtrace_proto", | 
|  | ], | 
|  | header_libs: [ | 
|  | "android.hardware.graphics.composer@2.1-command-buffer", | 
|  | "android.hardware.graphics.composer@2.2-command-buffer", | 
|  | "android.hardware.graphics.composer@2.3-command-buffer", | 
|  | "android.hardware.graphics.composer@2.4-command-buffer", | 
|  | ], | 
|  | export_static_lib_headers: [ | 
|  | "libcompositionengine", | 
|  | "librenderengine", | 
|  | "libserviceutils", | 
|  | ], | 
|  | export_shared_lib_headers: [ | 
|  | "android.hardware.graphics.allocator@2.0", | 
|  | "android.hardware.graphics.allocator@3.0", | 
|  | "android.hardware.graphics.common@1.2", | 
|  | "android.hardware.graphics.composer@2.1", | 
|  | "android.hardware.graphics.composer@2.2", | 
|  | "android.hardware.graphics.composer@2.3", | 
|  | "android.hardware.graphics.composer@2.4", | 
|  | "android.hardware.power@1.3", | 
|  | "libhidlbase", | 
|  | "libtimestats", | 
|  | ], | 
|  | // TODO (marissaw): this library is not used by surfaceflinger. This is here so | 
|  | // the library compiled in a way that is accessible to system partition when running | 
|  | // IMapper's VTS. | 
|  | required: ["libgralloctypes"] | 
|  | } | 
|  |  | 
|  | cc_defaults { | 
|  | name: "libsurfaceflinger_production_defaults", | 
|  | defaults: ["libsurfaceflinger_defaults"], | 
|  | cflags: [ | 
|  | "-fvisibility=hidden", | 
|  | ], | 
|  | lto: { | 
|  | thin: true, | 
|  | }, | 
|  | whole_program_vtables: true, // Requires ThinLTO | 
|  | pgo: { | 
|  | sampling: true, | 
|  | profile_file: "surfaceflinger/surfaceflinger.profdata", | 
|  | }, | 
|  | // TODO(b/131771163): Fix broken fuzzer support with LTO. | 
|  | sanitize: { | 
|  | fuzzer: false, | 
|  | }, | 
|  | } | 
|  |  | 
|  | cc_library_headers { | 
|  | name: "libsurfaceflinger_headers", | 
|  | export_include_dirs: ["."], | 
|  | static_libs: ["libserviceutils"], | 
|  | export_static_lib_headers: ["libserviceutils"], | 
|  | } | 
|  |  | 
|  | filegroup { | 
|  | name: "libsurfaceflinger_sources", | 
|  | srcs: [ | 
|  | "BufferLayer.cpp", | 
|  | "BufferLayerConsumer.cpp", | 
|  | "BufferQueueLayer.cpp", | 
|  | "BufferStateLayer.cpp", | 
|  | "ClientCache.cpp", | 
|  | "Client.cpp", | 
|  | "EffectLayer.cpp", | 
|  | "ContainerLayer.cpp", | 
|  | "DisplayDevice.cpp", | 
|  | "DisplayHardware/ComposerHal.cpp", | 
|  | "DisplayHardware/DisplayIdentification.cpp", | 
|  | "DisplayHardware/FramebufferSurface.cpp", | 
|  | "DisplayHardware/HWC2.cpp", | 
|  | "DisplayHardware/HWComposer.cpp", | 
|  | "DisplayHardware/PowerAdvisor.cpp", | 
|  | "DisplayHardware/VirtualDisplaySurface.cpp", | 
|  | "Effects/Daltonizer.cpp", | 
|  | "EventLog/EventLog.cpp", | 
|  | "FrameTracer/FrameTracer.cpp", | 
|  | "FrameTracker.cpp", | 
|  | "Layer.cpp", | 
|  | "LayerProtoHelper.cpp", | 
|  | "LayerRejecter.cpp", | 
|  | "LayerVector.cpp", | 
|  | "MonitoredProducer.cpp", | 
|  | "NativeWindowSurface.cpp", | 
|  | "RefreshRateOverlay.cpp", | 
|  | "RegionSamplingThread.cpp", | 
|  | "RenderArea.cpp", | 
|  | "Scheduler/DispSync.cpp", | 
|  | "Scheduler/DispSyncSource.cpp", | 
|  | "Scheduler/EventControlThread.cpp", | 
|  | "Scheduler/EventThread.cpp", | 
|  | "Scheduler/OneShotTimer.cpp", | 
|  | "Scheduler/LayerHistory.cpp", | 
|  | "Scheduler/LayerHistoryV2.cpp", | 
|  | "Scheduler/LayerInfo.cpp", | 
|  | "Scheduler/LayerInfoV2.cpp", | 
|  | "Scheduler/MessageQueue.cpp", | 
|  | "Scheduler/PhaseOffsets.cpp", | 
|  | "Scheduler/RefreshRateConfigs.cpp", | 
|  | "Scheduler/Scheduler.cpp", | 
|  | "Scheduler/SchedulerUtils.cpp", | 
|  | "Scheduler/Timer.cpp", | 
|  | "Scheduler/VSyncDispatchTimerQueue.cpp", | 
|  | "Scheduler/VSyncPredictor.cpp", | 
|  | "Scheduler/VSyncModulator.cpp", | 
|  | "Scheduler/VSyncReactor.cpp", | 
|  | "StartPropertySetThread.cpp", | 
|  | "SurfaceFlinger.cpp", | 
|  | "SurfaceFlingerDefaultFactory.cpp", | 
|  | "SurfaceInterceptor.cpp", | 
|  | "SurfaceTracing.cpp", | 
|  | "TransactionCompletedThread.cpp", | 
|  | ], | 
|  | } | 
|  |  | 
|  | cc_library_shared { | 
|  | // Please use libsurfaceflinger_defaults to configure how the sources are | 
|  | // built, so the same settings can be used elsewhere. | 
|  | name: "libsurfaceflinger", | 
|  | defaults: ["libsurfaceflinger_production_defaults"], | 
|  | srcs: [ | 
|  | ":libsurfaceflinger_sources", | 
|  |  | 
|  | // Note: SurfaceFlingerFactory is not in the default sources so that it | 
|  | // can be easily replaced. | 
|  | "SurfaceFlingerFactory.cpp", | 
|  | ], | 
|  | logtags: ["EventLog/EventLogTags.logtags"], | 
|  | } | 
|  |  | 
|  | cc_defaults { | 
|  | name: "libsurfaceflinger_binary", | 
|  | defaults: ["surfaceflinger_defaults"], | 
|  | cflags: [ | 
|  | "-DLOG_TAG=\"SurfaceFlinger\"", | 
|  | ], | 
|  | shared_libs: [ | 
|  | "android.frameworks.displayservice@1.0", | 
|  | "android.hardware.configstore-utils", | 
|  | "android.hardware.configstore@1.0", | 
|  | "android.hardware.graphics.allocator@2.0", | 
|  | "android.hardware.graphics.allocator@3.0", | 
|  | "libbinder", | 
|  | "libcutils", | 
|  | "libdisplayservicehidl", | 
|  | "libhidlbase", | 
|  | "libinput", | 
|  | "liblayers_proto", | 
|  | "liblog", | 
|  | "libprocessgroup", | 
|  | "libsync", | 
|  | "libutils", | 
|  | ], | 
|  | static_libs: [ | 
|  | "libserviceutils", | 
|  | "libtrace_proto", | 
|  | ], | 
|  | ldflags: ["-Wl,--export-dynamic"], | 
|  | } | 
|  |  | 
|  | filegroup { | 
|  | name: "surfaceflinger_binary_sources", | 
|  | srcs: ["main_surfaceflinger.cpp"], | 
|  | } | 
|  |  | 
|  | cc_binary { | 
|  | name: "surfaceflinger", | 
|  | defaults: ["libsurfaceflinger_binary"], | 
|  | init_rc: ["surfaceflinger.rc"], | 
|  | srcs: [":surfaceflinger_binary_sources"], | 
|  | shared_libs: [ | 
|  | "libsurfaceflinger", | 
|  | "libSurfaceFlingerProp", | 
|  | ], | 
|  | } | 
|  |  | 
|  | subdirs = [ | 
|  | "layerproto", | 
|  | "tests", | 
|  | ] | 
|  |  | 
|  | cc_library_shared { | 
|  | name: "libSurfaceFlingerProp", | 
|  | srcs: [ | 
|  | "SurfaceFlingerProperties.cpp", | 
|  | ], | 
|  | shared_libs: [ | 
|  | "android.hardware.configstore-utils", | 
|  | "android.hardware.configstore@1.0", | 
|  | "android.hardware.configstore@1.1", | 
|  | "android.hardware.graphics.common@1.2", | 
|  | "libhidlbase", | 
|  | "libui", | 
|  | "libutils", | 
|  | "liblog", | 
|  | ], | 
|  | static_libs: [ | 
|  | "SurfaceFlingerProperties", | 
|  | ], | 
|  | export_shared_lib_headers: [ | 
|  | "android.hardware.graphics.common@1.2", | 
|  | "libhidlbase", | 
|  | "libui", | 
|  | ], | 
|  | export_static_lib_headers: [ | 
|  | "SurfaceFlingerProperties", | 
|  | ], | 
|  | } |