• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# This is the top-level build file for the Android HW OpenGL ES emulation
2# in Android.
3#
4# You must define BUILD_EMULATOR_OPENGL to 'true' in your environment to
5# build the following files.
6#
7# Also define BUILD_EMULATOR_OPENGL_DRIVER to 'true' to build the gralloc
8# stuff as well.
9#
10# Top-level for all modules
11GOLDFISH_OPENGL_PATH := $(call my-dir)
12
13# There are two kinds of builds for goldfish-opengl:
14# 1. The standard guest build, denoted by BUILD_EMULATOR_OPENGL
15# 2. The host-side build, denoted by GOLDFISH_OPENGL_BUILD_FOR_HOST
16#
17# Variable controlling whether the build for goldfish-opengl
18# libraries (including their Android.mk's) should be triggered.
19GOLDFISH_OPENGL_SHOULD_BUILD := false
20
21# In the host build, some libraries have name collisions with
22# other libraries, so we have this variable here to control
23# adding a suffix to the names of libraries. Should be blank
24# for the guest build.
25GOLDFISH_OPENGL_LIB_SUFFIX :=
26
27# Directory containing common headers used by several modules
28# This is always set to a module's LOCAL_C_INCLUDES
29# See the definition of emugl-begin-module in common.mk
30EMUGL_COMMON_INCLUDES := $(GOLDFISH_OPENGL_PATH)/host/include/libOpenglRender $(GOLDFISH_OPENGL_PATH)/system/include
31
32# This is always set to a module's LOCAL_CFLAGS
33# See the definition of emugl-begin-module in common.mk
34EMUGL_COMMON_CFLAGS :=
35
36# Whether or not to build the Vulkan library.
37GFXSTREAM := false
38
39# Host build
40ifeq (true,$(GOLDFISH_OPENGL_BUILD_FOR_HOST))
41
42GOLDFISH_OPENGL_SHOULD_BUILD := true
43GOLDFISH_OPENGL_LIB_SUFFIX := _host
44
45GFXSTREAM := true
46
47# Set modern defaults for the codename, version, etc.
48PLATFORM_VERSION_CODENAME:=Q
49PLATFORM_SDK_VERSION:=29
50IS_AT_LEAST_OPD1:=true
51
52# The host-side Android framework implementation
53HOST_EMUGL_PATH := $(GOLDFISH_OPENGL_PATH)/../../../external/qemu/android/android-emugl
54EMUGL_COMMON_INCLUDES += $(HOST_EMUGL_PATH)/guest
55
56EMUGL_COMMON_CFLAGS += \
57    -DPLATFORM_SDK_VERSION=29 \
58    -DGOLDFISH_HIDL_GRALLOC \
59    -DHOST_BUILD \
60    -DANDROID \
61    -DGL_GLEXT_PROTOTYPES \
62    -fvisibility=default \
63    -DPAGE_SIZE=4096 \
64    -DGFXSTREAM \
65    -Wno-unused-parameter
66
67endif # GOLDFISH_OPENGL_BUILD_FOR_HOST
68
69ifeq (true,$(BUILD_EMULATOR_OPENGL)) # Guest build
70
71GOLDFISH_OPENGL_SHOULD_BUILD := true
72
73EMUGL_COMMON_CFLAGS += -DPLATFORM_SDK_VERSION=$(PLATFORM_SDK_VERSION)
74
75ifeq (O, $(PLATFORM_VERSION_CODENAME))
76EMUGL_COMMON_CFLAGS += -DGOLDFISH_HIDL_GRALLOC
77endif
78
79ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 25 && echo isApi26OrHigher),isApi26OrHigher)
80EMUGL_COMMON_CFLAGS += -DGOLDFISH_HIDL_GRALLOC
81endif
82
83ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 18 && echo PreJellyBeanMr2),PreJellyBeanMr2)
84    ifeq ($(ARCH_ARM_HAVE_TLS_REGISTER),true)
85        EMUGL_COMMON_CFLAGS += -DHAVE_ARM_TLS_REGISTER
86    endif
87endif
88ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 16 && echo PreJellyBean),PreJellyBean)
89    EMUGL_COMMON_CFLAGS += -DALOG_ASSERT=LOG_ASSERT
90    EMUGL_COMMON_CFLAGS += -DALOGE=LOGE
91    EMUGL_COMMON_CFLAGS += -DALOGW=LOGW
92    EMUGL_COMMON_CFLAGS += -DALOGD=LOGD
93    EMUGL_COMMON_CFLAGS += -DALOGV=LOGV
94endif
95
96ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 27 && echo isApi28OrHigher),isApi28OrHigher)
97    GFXSTREAM := true
98    EMUGL_COMMON_CFLAGS += -DGFXSTREAM
99endif
100
101# Include common definitions used by all the modules included later
102# in this build file. This contains the definition of all useful
103# emugl-xxxx functions.
104#
105include $(GOLDFISH_OPENGL_PATH)/common.mk
106
107endif # BUILD_EMULATOR_OPENGL (guest build)
108
109ifeq (true,$(GOLDFISH_OPENGL_SHOULD_BUILD))
110
111# Uncomment the following line if you want to enable debug traces
112# in the GLES emulation libraries.
113# EMUGL_COMMON_CFLAGS += -DEMUGL_DEBUG=1
114
115# IMPORTANT: ORDER IS CRUCIAL HERE
116#
117# For the import/export feature to work properly, you must include
118# modules below in correct order. That is, if module B depends on
119# module A, then it must be included after module A below.
120#
121# This ensures that anything exported by module A will be correctly
122# be imported by module B when it is declared.
123#
124# Note that the build system will complain if you try to import a
125# module that hasn't been declared yet anyway.
126#
127include $(GOLDFISH_OPENGL_PATH)/shared/qemupipe/Android.mk
128include $(GOLDFISH_OPENGL_PATH)/shared/gralloc_cb/Android.mk
129include $(GOLDFISH_OPENGL_PATH)/shared/GoldfishAddressSpace/Android.mk
130
131ifeq (true,$(GFXSTREAM)) # android-emu
132    include $(GOLDFISH_OPENGL_PATH)/android-emu/Android.mk
133endif
134
135include $(GOLDFISH_OPENGL_PATH)/shared/OpenglCodecCommon/Android.mk
136
137# Encoder shared libraries
138include $(GOLDFISH_OPENGL_PATH)/system/GLESv1_enc/Android.mk
139include $(GOLDFISH_OPENGL_PATH)/system/GLESv2_enc/Android.mk
140include $(GOLDFISH_OPENGL_PATH)/system/renderControl_enc/Android.mk
141
142ifeq (true,$(GFXSTREAM)) # Vulkan libs
143    include $(GOLDFISH_OPENGL_PATH)/system/vulkan_enc/Android.mk
144endif
145
146include $(GOLDFISH_OPENGL_PATH)/system/OpenglSystemCommon/Android.mk
147
148# Profiler library
149include $(GOLDFISH_OPENGL_PATH)/system/profiler/Android.mk
150
151# System shared libraries
152include $(GOLDFISH_OPENGL_PATH)/system/GLESv1/Android.mk
153include $(GOLDFISH_OPENGL_PATH)/system/GLESv2/Android.mk
154
155include $(GOLDFISH_OPENGL_PATH)/system/gralloc/Android.mk
156
157ifneq (true,$(GOLDFISH_OPENGL_BUILD_FOR_HOST))
158include $(GOLDFISH_OPENGL_PATH)/system/hals/Android.mk
159endif
160
161include $(GOLDFISH_OPENGL_PATH)/system/egl/Android.mk
162
163ifeq (true,$(GFXSTREAM)) # Vulkan libs
164    include $(GOLDFISH_OPENGL_PATH)/system/vulkan/Android.mk
165endif
166
167ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 28 -o $(IS_AT_LEAST_QPR1) = true && echo isApi29OrHigher),isApi29OrHigher)
168    # HWC2 enabled after P
169    include $(GOLDFISH_OPENGL_PATH)/system/hwc2/Android.mk
170    include $(GOLDFISH_OPENGL_PATH)/system/hwc3/Android.mk
171    # hardware codecs enabled after P
172    include $(GOLDFISH_OPENGL_PATH)/system/codecs/omx/common/Android.mk
173    include $(GOLDFISH_OPENGL_PATH)/system/codecs/omx/plugin/Android.mk
174    include $(GOLDFISH_OPENGL_PATH)/system/codecs/omx/avcdec/Android.mk
175    include $(GOLDFISH_OPENGL_PATH)/system/codecs/omx/vpxdec/Android.mk
176endif
177
178endif
179