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"], default_team: "trendy_team_android_core_graphics_stack", } aconfig_declarations { name: "surfaceflinger_flags", package: "com.android.graphics.surfaceflinger.flags", container: "system", srcs: [ "surfaceflinger_flags.aconfig", "surfaceflinger_flags_new.aconfig", ], } cc_aconfig_library { name: "libsurfaceflingerflags", aconfig_declarations: "surfaceflinger_flags", } cc_defaults { name: "surfaceflinger_defaults", cflags: [ "-Wall", "-Werror", "-Wextra", "-Wformat", "-Wthread-safety", "-Wunused", "-Wunreachable-code", "-Wconversion", "-DANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION", ], } cc_defaults { name: "libsurfaceflinger_defaults", defaults: [ "android.hardware.graphics.composer3-ndk_shared", "android.hardware.power-ndk_shared", "librenderengine_deps", "libtimestats_deps", "libsurfaceflinger_common_deps", "surfaceflinger_defaults", "libsurfaceflinger_proto_deps", ], 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.common-V2-ndk", "android.hardware.common.fmq-V1-ndk", "android.hardware.graphics.composer@2.1", "android.hardware.graphics.composer@2.2", "android.hardware.graphics.composer@2.3", "android.hardware.graphics.composer@2.4", "libbase", "libbinder", "libbinder_ndk", "libcutils", "libEGL", "libfmq", "libGLESv1_CM", "libGLESv2", "libgui", "libhidlbase", "liblog", "libnativewindow", "libpowermanager", "libprocessgroup", "libprotobuf-cpp-lite", "libstatslog_surfaceflinger", "libsync", "libui", "libutils", "libSurfaceFlingerProp", "libaconfig_storage_read_api_cc", ], static_libs: [ "iinputflinger_aidl_lib_static", "libaidlcommonsupport", "libcompositionengine", "libframetimeline", "libgui_aidl_static", "libperfetto_client_experimental", "librenderengine", "libscheduler", "libserviceutils", "libshaders", "libsurfaceflingerflags", "libtimestats", "libtonemap", ], 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", "android.hardware.graphics.composer3-command-buffer", ], export_static_lib_headers: [ "libcompositionengine", "librenderengine", "libserviceutils", "libtimestats", ], 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", "libpowermanager", "libhidlbase", ], // 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"], lto: { thin: true, }, whole_program_vtables: true, // Requires ThinLTO afdo: true, // TODO(b/131771163): Fix broken fuzzer support with LTO. sanitize: { fuzzer: false, }, } // libsurfaceflinger_backend_{headers|sources} are a step towards pulling out // the "backend" sources to clean up the dependency graph between // CompositionEngine and SurfaceFlinger. Completing the cleanup would require // moving the headers in particular so that the dependency can strictly be a // DAG. There would certainly be additional cleanups: VirtualDisplaySurface.cpp // and FrameBufferSurface.cpp likely belong in CompositionEngine for example. cc_library_headers { name: "libsurfaceflinger_backend_headers", export_include_dirs: ["."], static_libs: ["libserviceutils"], export_static_lib_headers: ["libserviceutils"], shared_libs: [ "android.hardware.configstore-utils", "android.hardware.configstore@1.0", "android.hardware.configstore@1.1", "libbinder_ndk", ], export_shared_lib_headers: [ "android.hardware.configstore-utils", "android.hardware.configstore@1.0", "android.hardware.configstore@1.1", "libbinder_ndk", ], } filegroup { name: "libsurfaceflinger_backend_sources", srcs: [ "PowerAdvisor/*.cpp", "DisplayHardware/AidlComposerHal.cpp", "DisplayHardware/ComposerHal.cpp", "DisplayHardware/FramebufferSurface.cpp", "DisplayHardware/HWC2.cpp", "DisplayHardware/HWComposer.cpp", "DisplayHardware/HidlComposerHal.cpp", "DisplayHardware/VirtualDisplaySurface.cpp", ], } cc_library_headers { name: "libsurfaceflinger_headers", export_include_dirs: ["."], static_libs: ["libserviceutils"], export_static_lib_headers: ["libserviceutils"], } filegroup { name: "libsurfaceflinger_sources", srcs: [ ":libsurfaceflinger_backend_sources", "ActivePictureUpdater.cpp", "BackgroundExecutor.cpp", "Client.cpp", "ClientCache.cpp", "Display/DisplayModeController.cpp", "Display/DisplaySnapshot.cpp", "DisplayDevice.cpp", "DisplayRenderArea.cpp", "Effects/Daltonizer.cpp", "FrontEnd/LayerCreationArgs.cpp", "FrontEnd/LayerHandle.cpp", "FrontEnd/LayerSnapshot.cpp", "FrontEnd/LayerSnapshotBuilder.cpp", "FrontEnd/LayerHierarchy.cpp", "FrontEnd/LayerLifecycleManager.cpp", "FrontEnd/RequestedLayerState.cpp", "FrontEnd/TransactionHandler.cpp", "FpsReporter.cpp", "FrameTracer/FrameTracer.cpp", "FrameTracker.cpp", "HdrLayerInfoReporter.cpp", "HdrSdrRatioOverlay.cpp", "Jank/JankTracker.cpp", "WindowInfosListenerInvoker.cpp", "Layer.cpp", "LayerFE.cpp", "LayerProtoHelper.cpp", "LayerRenderArea.cpp", "LayerVector.cpp", "NativeWindowSurface.cpp", "RefreshRateOverlay.cpp", "RegionSamplingThread.cpp", "RenderArea.cpp", "Scheduler/EventThread.cpp", "Scheduler/FrameRateOverrideMappings.cpp", "Scheduler/OneShotTimer.cpp", "Scheduler/LayerHistory.cpp", "Scheduler/LayerInfo.cpp", "Scheduler/MessageQueue.cpp", "Scheduler/RefreshRateSelector.cpp", "Scheduler/Scheduler.cpp", "Scheduler/SmallAreaDetectionAllowMappings.cpp", "Scheduler/VSyncDispatchTimerQueue.cpp", "Scheduler/VSyncPredictor.cpp", "Scheduler/VSyncReactor.cpp", "Scheduler/VsyncConfiguration.cpp", "Scheduler/VsyncModulator.cpp", "Scheduler/VsyncSchedule.cpp", "ScreenCaptureOutput.cpp", "SurfaceFlinger.cpp", "SurfaceFlingerDefaultFactory.cpp", "Tracing/LayerDataSource.cpp", "Tracing/LayerTracing.cpp", "Tracing/TransactionDataSource.cpp", "Tracing/TransactionTracing.cpp", "Tracing/TransactionProtoParser.cpp", "Tracing/tools/LayerTraceGenerator.cpp", "TransactionCallbackInvoker.cpp", "TunnelModeEnabledReporter.cpp", ], } cc_defaults { name: "libsurfaceflinger_binary", defaults: [ "surfaceflinger_defaults", "libsurfaceflinger_production_defaults", ], cflags: [ "-DLOG_TAG=\"SurfaceFlinger\"", ], shared_libs: [ "android.hardware.configstore-utils", "android.hardware.configstore@1.0", "android.hardware.graphics.allocator@2.0", "android.hardware.graphics.allocator@3.0", "libbinder", "libcutils", "libhidlbase", "liblog", "libprocessgroup", "libsync", "libutils", ], static_libs: [ "android.frameworks.displayservice@1.0", "libdisplayservicehidl", "libserviceutils", ], } filegroup { name: "surfaceflinger_binary_sources", srcs: [ ":libsurfaceflinger_sources", "main_surfaceflinger.cpp", ], } cc_binary { name: "surfaceflinger", defaults: ["libsurfaceflinger_binary"], init_rc: ["surfaceflinger.rc"], srcs: [ ":surfaceflinger_binary_sources", // Note: SurfaceFlingerFactory is not in the filegroup so that it // can be easily replaced. "SurfaceFlingerFactory.cpp", ], shared_libs: [ "libSurfaceFlingerProp", ], logtags: ["surfaceflinger.logtags"], } 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: [ "libSurfaceFlingerProperties", ], export_shared_lib_headers: [ "android.hardware.graphics.common@1.2", "libhidlbase", "libui", ], export_static_lib_headers: [ "libSurfaceFlingerProperties", ], } cc_library { name: "libstatslog_surfaceflinger", generated_sources: ["statslog_surfaceflinger.cpp"], generated_headers: ["statslog_surfaceflinger.h"], export_generated_headers: ["statslog_surfaceflinger.h"], shared_libs: [ "libbinder", "libstatsbootstrap", "libutils", "android.os.statsbootstrap_aidl-cpp", ], } genrule { name: "statslog_surfaceflinger.h", tools: ["stats-log-api-gen"], cmd: "$(location stats-log-api-gen) --header $(genDir)/statslog_surfaceflinger.h" + " --module surfaceflinger --namespace android,surfaceflinger,stats --bootstrap", out: [ "statslog_surfaceflinger.h", ], } genrule { name: "statslog_surfaceflinger.cpp", tools: ["stats-log-api-gen"], cmd: "$(location stats-log-api-gen) --cpp $(genDir)/statslog_surfaceflinger.cpp" + " --module surfaceflinger --namespace android,surfaceflinger,stats" + " --importHeader statslog_surfaceflinger.h --bootstrap", out: [ "statslog_surfaceflinger.cpp", ], }