1LOCAL_PATH := $(call my-dir)
2include $(CLEAR_VARS)
3
4LOCAL_CLANG := true
5
6LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
7LOCAL_SRC_FILES := \
8    Client.cpp \
9    DisplayDevice.cpp \
10    DispSync.cpp \
11    EventControlThread.cpp \
12    EventThread.cpp \
13    FenceTracker.cpp \
14    FrameTracker.cpp \
15    GpuService.cpp \
16    Layer.cpp \
17    LayerDim.cpp \
18    MessageQueue.cpp \
19    MonitoredProducer.cpp \
20    SurfaceFlingerConsumer.cpp \
21    Transform.cpp \
22    DisplayHardware/FramebufferSurface.cpp \
23    DisplayHardware/HWC2.cpp \
24    DisplayHardware/HWC2On1Adapter.cpp \
25    DisplayHardware/PowerHAL.cpp \
26    DisplayHardware/VirtualDisplaySurface.cpp \
27    Effects/Daltonizer.cpp \
28    EventLog/EventLogTags.logtags \
29    EventLog/EventLog.cpp \
30    RenderEngine/Description.cpp \
31    RenderEngine/Mesh.cpp \
32    RenderEngine/Program.cpp \
33    RenderEngine/ProgramCache.cpp \
34    RenderEngine/GLExtensions.cpp \
35    RenderEngine/RenderEngine.cpp \
36    RenderEngine/Texture.cpp \
37    RenderEngine/GLES10RenderEngine.cpp \
38    RenderEngine/GLES11RenderEngine.cpp \
39    RenderEngine/GLES20RenderEngine.cpp
40
41LOCAL_C_INCLUDES := \
42	frameworks/native/vulkan/include \
43	external/vulkan-validation-layers/libs/vkjson
44
45LOCAL_CFLAGS := -DLOG_TAG=\"SurfaceFlinger\"
46LOCAL_CFLAGS += -DGL_GLEXT_PROTOTYPES -DEGL_EGLEXT_PROTOTYPES
47#LOCAL_CFLAGS += -DENABLE_FENCE_TRACKING
48
49USE_HWC2 := false
50ifeq ($(USE_HWC2),true)
51    LOCAL_CFLAGS += -DUSE_HWC2
52    LOCAL_SRC_FILES += \
53        SurfaceFlinger.cpp \
54        DisplayHardware/HWComposer.cpp
55else
56    LOCAL_SRC_FILES += \
57        SurfaceFlinger_hwc1.cpp \
58        DisplayHardware/HWComposer_hwc1.cpp
59endif
60
61ifeq ($(TARGET_BOARD_PLATFORM),omap4)
62    LOCAL_CFLAGS += -DHAS_CONTEXT_PRIORITY
63endif
64ifeq ($(TARGET_BOARD_PLATFORM),s5pc110)
65    LOCAL_CFLAGS += -DHAS_CONTEXT_PRIORITY
66endif
67
68ifeq ($(TARGET_DISABLE_TRIPLE_BUFFERING),true)
69    LOCAL_CFLAGS += -DTARGET_DISABLE_TRIPLE_BUFFERING
70endif
71
72ifeq ($(TARGET_FORCE_HWC_FOR_VIRTUAL_DISPLAYS),true)
73    LOCAL_CFLAGS += -DFORCE_HWC_COPY_FOR_VIRTUAL_DISPLAYS
74endif
75
76ifneq ($(NUM_FRAMEBUFFER_SURFACE_BUFFERS),)
77    LOCAL_CFLAGS += -DNUM_FRAMEBUFFER_SURFACE_BUFFERS=$(NUM_FRAMEBUFFER_SURFACE_BUFFERS)
78endif
79
80ifeq ($(TARGET_RUNNING_WITHOUT_SYNC_FRAMEWORK),true)
81    LOCAL_CFLAGS += -DRUNNING_WITHOUT_SYNC_FRAMEWORK
82endif
83
84# See build/target/board/generic/BoardConfig.mk for a description of this setting.
85ifneq ($(VSYNC_EVENT_PHASE_OFFSET_NS),)
86    LOCAL_CFLAGS += -DVSYNC_EVENT_PHASE_OFFSET_NS=$(VSYNC_EVENT_PHASE_OFFSET_NS)
87else
88    LOCAL_CFLAGS += -DVSYNC_EVENT_PHASE_OFFSET_NS=0
89endif
90
91# See build/target/board/generic/BoardConfig.mk for a description of this setting.
92ifneq ($(SF_VSYNC_EVENT_PHASE_OFFSET_NS),)
93    LOCAL_CFLAGS += -DSF_VSYNC_EVENT_PHASE_OFFSET_NS=$(SF_VSYNC_EVENT_PHASE_OFFSET_NS)
94else
95    LOCAL_CFLAGS += -DSF_VSYNC_EVENT_PHASE_OFFSET_NS=0
96endif
97
98ifneq ($(PRESENT_TIME_OFFSET_FROM_VSYNC_NS),)
99    LOCAL_CFLAGS += -DPRESENT_TIME_OFFSET_FROM_VSYNC_NS=$(PRESENT_TIME_OFFSET_FROM_VSYNC_NS)
100else
101    LOCAL_CFLAGS += -DPRESENT_TIME_OFFSET_FROM_VSYNC_NS=0
102endif
103
104ifneq ($(MAX_VIRTUAL_DISPLAY_DIMENSION),)
105    LOCAL_CFLAGS += -DMAX_VIRTUAL_DISPLAY_DIMENSION=$(MAX_VIRTUAL_DISPLAY_DIMENSION)
106else
107    LOCAL_CFLAGS += -DMAX_VIRTUAL_DISPLAY_DIMENSION=0
108endif
109
110LOCAL_CFLAGS += -fvisibility=hidden -Werror=format
111LOCAL_CFLAGS += -std=c++14
112
113LOCAL_STATIC_LIBRARIES := libvkjson
114LOCAL_SHARED_LIBRARIES := \
115    libcutils \
116    liblog \
117    libdl \
118    libhardware \
119    libutils \
120    libEGL \
121    libGLESv1_CM \
122    libGLESv2 \
123    libbinder \
124    libui \
125    libgui \
126    libpowermanager \
127    libvulkan
128
129LOCAL_MODULE := libsurfaceflinger
130
131LOCAL_CFLAGS += -Wall -Werror -Wunused -Wunreachable-code
132
133include $(BUILD_SHARED_LIBRARY)
134
135###############################################################
136# build surfaceflinger's executable
137include $(CLEAR_VARS)
138
139LOCAL_CLANG := true
140
141LOCAL_LDFLAGS := -Wl,--version-script,art/sigchainlib/version-script.txt -Wl,--export-dynamic
142LOCAL_CFLAGS := -DLOG_TAG=\"SurfaceFlinger\"
143LOCAL_CPPFLAGS := -std=c++14
144
145LOCAL_INIT_RC := surfaceflinger.rc
146
147ifneq ($(ENABLE_CPUSETS),)
148    LOCAL_CFLAGS += -DENABLE_CPUSETS
149endif
150
151LOCAL_SRC_FILES := \
152    main_surfaceflinger.cpp
153
154LOCAL_SHARED_LIBRARIES := \
155    libsurfaceflinger \
156    libcutils \
157    liblog \
158    libbinder \
159    libutils \
160    libdl
161
162LOCAL_WHOLE_STATIC_LIBRARIES := libsigchain
163
164LOCAL_MODULE := surfaceflinger
165
166ifdef TARGET_32_BIT_SURFACEFLINGER
167LOCAL_32_BIT_ONLY := true
168endif
169
170LOCAL_CFLAGS += -Wall -Werror -Wunused -Wunreachable-code
171
172include $(BUILD_EXECUTABLE)
173
174###############################################################
175# uses jni which may not be available in PDK
176ifneq ($(wildcard libnativehelper/include),)
177include $(CLEAR_VARS)
178
179LOCAL_CLANG := true
180
181LOCAL_CFLAGS := -DLOG_TAG=\"SurfaceFlinger\"
182LOCAL_CPPFLAGS := -std=c++14
183
184LOCAL_SRC_FILES := \
185    DdmConnection.cpp
186
187LOCAL_SHARED_LIBRARIES := \
188    libcutils \
189    liblog \
190    libdl
191
192LOCAL_MODULE := libsurfaceflinger_ddmconnection
193
194LOCAL_CFLAGS += -Wall -Werror -Wunused -Wunreachable-code
195
196include $(BUILD_SHARED_LIBRARY)
197endif # libnativehelper
198