blob: 3444354abc649d30225380893903c17b18b436a0 [file] [log] [blame]
keunyoungb85b2752013-03-08 12:28:03 -08001# 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#
keunyoungb85b2752013-03-08 12:28:03 -080010# Top-level for all modules
Lingfeng Yang4fa970a2018-09-24 07:53:40 -070011GOLDFISH_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 :=
keunyoungb85b2752013-03-08 12:28:03 -080026
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
Lingfeng Yang4fa970a2018-09-24 07:53:40 -070030EMUGL_COMMON_INCLUDES := $(GOLDFISH_OPENGL_PATH)/host/include/libOpenglRender $(GOLDFISH_OPENGL_PATH)/system/include
keunyoungb85b2752013-03-08 12:28:03 -080031
32# common cflags used by several modules
33# This is always set to a module's LOCAL_CFLAGS
34# See the definition of emugl-begin-module in common.mk
Lingfeng Yang4fa970a2018-09-24 07:53:40 -070035EMUGL_COMMON_CFLAGS := -DWITH_GLES2
36
Lingfeng Yang6a283672018-11-01 13:37:56 -070037# Whether or not to build the Vulkan library.
Lingfeng Yang6f9871b2020-08-17 15:46:53 -070038GFXSTREAM := false
Lingfeng Yang6a283672018-11-01 13:37:56 -070039
Lingfeng Yang4fa970a2018-09-24 07:53:40 -070040# Host build
41ifeq (true,$(GOLDFISH_OPENGL_BUILD_FOR_HOST))
42
43GOLDFISH_OPENGL_SHOULD_BUILD := true
44GOLDFISH_OPENGL_LIB_SUFFIX := _host
45
Lingfeng Yang6f9871b2020-08-17 15:46:53 -070046GFXSTREAM := true
Lingfeng Yang6a283672018-11-01 13:37:56 -070047
Lingfeng Yang4fa970a2018-09-24 07:53:40 -070048# Set modern defaults for the codename, version, etc.
49PLATFORM_VERSION_CODENAME:=Q
50PLATFORM_SDK_VERSION:=29
51IS_AT_LEAST_OPD1:=true
52
53# The host-side Android framework implementation
54HOST_EMUGL_PATH := $(GOLDFISH_OPENGL_PATH)/../../../external/qemu/android/android-emugl
55EMUGL_COMMON_INCLUDES += $(HOST_EMUGL_PATH)/guest
56
57EMUGL_COMMON_CFLAGS += \
58 -DPLATFORM_SDK_VERSION=29 \
59 -DGOLDFISH_HIDL_GRALLOC \
60 -DEMULATOR_OPENGL_POST_O=1 \
61 -DHOST_BUILD \
62 -DANDROID \
63 -DGL_GLEXT_PROTOTYPES \
Lingfeng Yange38d15c2018-09-24 16:24:01 -070064 -fvisibility=default \
Lingfeng Yang2ed17d42018-09-27 08:04:08 -070065 -DPAGE_SIZE=4096 \
Lingfeng Yang6f9871b2020-08-17 15:46:53 -070066 -DGFXSTREAM \
Aurimas Liutikasacc48742018-12-20 15:06:46 -080067 -Wno-unused-parameter
Lingfeng Yang4fa970a2018-09-24 07:53:40 -070068
69endif # GOLDFISH_OPENGL_BUILD_FOR_HOST
70
71ifeq (true,$(BUILD_EMULATOR_OPENGL)) # Guest build
72
73GOLDFISH_OPENGL_SHOULD_BUILD := true
74
75EMUGL_COMMON_CFLAGS += -DPLATFORM_SDK_VERSION=$(PLATFORM_SDK_VERSION)
keunyoungb85b2752013-03-08 12:28:03 -080076
Lingfeng Yang5a8161c2017-05-06 01:00:03 -070077ifeq (O, $(PLATFORM_VERSION_CODENAME))
Lingfeng Yang256462a2017-06-05 11:50:17 -070078EMUGL_COMMON_CFLAGS += -DGOLDFISH_HIDL_GRALLOC
79endif
80
81ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 25 && echo isApi26OrHigher),isApi26OrHigher)
82EMUGL_COMMON_CFLAGS += -DGOLDFISH_HIDL_GRALLOC
Lingfeng Yang5a8161c2017-05-06 01:00:03 -070083endif
84
Yifan Hong22dd0fe2017-06-08 17:17:17 -070085ifdef IS_AT_LEAST_OPD1
bohu8b0bfc72017-05-11 02:11:51 -070086 EMUGL_COMMON_CFLAGS += -DEMULATOR_OPENGL_POST_O=1
87endif
88
Yahan Zhou52dd9f02016-07-20 14:31:33 -070089ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 18 && echo PreJellyBeanMr2),PreJellyBeanMr2)
Yahan Zhouda1c76d2016-06-23 13:58:09 -070090 ifeq ($(ARCH_ARM_HAVE_TLS_REGISTER),true)
91 EMUGL_COMMON_CFLAGS += -DHAVE_ARM_TLS_REGISTER
92 endif
Yahan Zhoub795a342016-07-20 16:12:02 -070093endif
94ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 16 && echo PreJellyBean),PreJellyBean)
Yahan Zhouda1c76d2016-06-23 13:58:09 -070095 EMUGL_COMMON_CFLAGS += -DALOG_ASSERT=LOG_ASSERT
96 EMUGL_COMMON_CFLAGS += -DALOGE=LOGE
97 EMUGL_COMMON_CFLAGS += -DALOGW=LOGW
98 EMUGL_COMMON_CFLAGS += -DALOGD=LOGD
Lingfeng Yange5913372016-11-29 14:23:14 -080099 EMUGL_COMMON_CFLAGS += -DALOGV=LOGV
Yahan Zhouda1c76d2016-06-23 13:58:09 -0700100endif
101
Lingfeng Yanga4085412018-11-01 20:19:46 -0700102ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 27 && echo isApi28OrHigher),isApi28OrHigher)
Lingfeng Yang6f9871b2020-08-17 15:46:53 -0700103 GFXSTREAM := true
104 EMUGL_COMMON_CFLAGS += -DGFXSTREAM
Lingfeng Yang6a283672018-11-01 13:37:56 -0700105endif
106
keunyoungb85b2752013-03-08 12:28:03 -0800107# Include common definitions used by all the modules included later
108# in this build file. This contains the definition of all useful
109# emugl-xxxx functions.
110#
Lingfeng Yang4fa970a2018-09-24 07:53:40 -0700111include $(GOLDFISH_OPENGL_PATH)/common.mk
112
113endif # BUILD_EMULATOR_OPENGL (guest build)
114
115ifeq (true,$(GOLDFISH_OPENGL_SHOULD_BUILD))
116
117# Uncomment the following line if you want to enable debug traces
118# in the GLES emulation libraries.
119# EMUGL_COMMON_CFLAGS += -DEMUGL_DEBUG=1
keunyoungb85b2752013-03-08 12:28:03 -0800120
121# IMPORTANT: ORDER IS CRUCIAL HERE
122#
123# For the import/export feature to work properly, you must include
124# modules below in correct order. That is, if module B depends on
125# module A, then it must be included after module A below.
126#
127# This ensures that anything exported by module A will be correctly
128# be imported by module B when it is declared.
129#
130# Note that the build system will complain if you try to import a
131# module that hasn't been declared yet anyway.
132#
Roman Kiryanovb488e622020-05-19 18:07:23 -0700133include $(GOLDFISH_OPENGL_PATH)/shared/qemupipe/Android.mk
134include $(GOLDFISH_OPENGL_PATH)/shared/gralloc_cb/Android.mk
Roman Kiryanov1ef59e42020-05-11 15:50:11 -0700135include $(GOLDFISH_OPENGL_PATH)/shared/GoldfishAddressSpace/Android.mk
Lingfeng Yanged069c52020-09-03 19:11:02 -0700136
137ifeq (true,$(GFXSTREAM)) # android-emu
138 include $(GOLDFISH_OPENGL_PATH)/android-emu/Android.mk
139endif
140
Lingfeng Yang4fa970a2018-09-24 07:53:40 -0700141include $(GOLDFISH_OPENGL_PATH)/shared/OpenglCodecCommon/Android.mk
keunyoungb85b2752013-03-08 12:28:03 -0800142
Lingfeng Yang4fa970a2018-09-24 07:53:40 -0700143# Encoder shared libraries
144include $(GOLDFISH_OPENGL_PATH)/system/GLESv1_enc/Android.mk
145include $(GOLDFISH_OPENGL_PATH)/system/GLESv2_enc/Android.mk
146include $(GOLDFISH_OPENGL_PATH)/system/renderControl_enc/Android.mk
keunyoungb85b2752013-03-08 12:28:03 -0800147
Lingfeng Yang6f9871b2020-08-17 15:46:53 -0700148ifeq (true,$(GFXSTREAM)) # Vulkan libs
Lingfeng Yang6a283672018-11-01 13:37:56 -0700149 include $(GOLDFISH_OPENGL_PATH)/system/vulkan_enc/Android.mk
150endif
151
Lingfeng Yang4fa970a2018-09-24 07:53:40 -0700152include $(GOLDFISH_OPENGL_PATH)/system/OpenglSystemCommon/Android.mk
keunyoungb85b2752013-03-08 12:28:03 -0800153
Yahan Zhou838bc1b2021-06-24 13:30:56 -0700154# Profiler library
155include $(GOLDFISH_OPENGL_PATH)/system/profiler/Android.mk
156
keunyoungb85b2752013-03-08 12:28:03 -0800157# System shared libraries
Lingfeng Yang4fa970a2018-09-24 07:53:40 -0700158include $(GOLDFISH_OPENGL_PATH)/system/GLESv1/Android.mk
159include $(GOLDFISH_OPENGL_PATH)/system/GLESv2/Android.mk
keunyoungb85b2752013-03-08 12:28:03 -0800160
Lingfeng Yang2ed17d42018-09-27 08:04:08 -0700161include $(GOLDFISH_OPENGL_PATH)/system/gralloc/Android.mk
Lingfeng Yangb65946f2020-02-04 10:49:07 -0800162
163ifneq (true,$(GOLDFISH_OPENGL_BUILD_FOR_HOST))
Roman Kiryanovefb10582020-01-29 16:28:15 -0800164include $(GOLDFISH_OPENGL_PATH)/system/hals/Android.mk
Lingfeng Yangb65946f2020-02-04 10:49:07 -0800165endif
166
Lingfeng Yang4fa970a2018-09-24 07:53:40 -0700167include $(GOLDFISH_OPENGL_PATH)/system/egl/Android.mk
keunyoungb85b2752013-03-08 12:28:03 -0800168
Lingfeng Yang6f9871b2020-08-17 15:46:53 -0700169ifeq (true,$(GFXSTREAM)) # Vulkan libs
Lingfeng Yangd7447042018-10-25 11:09:18 -0700170 include $(GOLDFISH_OPENGL_PATH)/system/vulkan/Android.mk
171endif
Lingfeng Yanga89af502018-10-18 13:46:20 -0700172
huansd96d5bd2018-10-15 14:32:46 -0700173ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 28 -o $(IS_AT_LEAST_QPR1) = true && echo isApi29OrHigher),isApi29OrHigher)
174 # HWC2 enabled after P
175 include $(GOLDFISH_OPENGL_PATH)/system/hwc2/Android.mk
Roman Kiryanovf0ae38e2020-05-19 17:25:11 +0000176 # hardware codecs enabled after P
177 include $(GOLDFISH_OPENGL_PATH)/system/codecs/omx/common/Android.mk
178 include $(GOLDFISH_OPENGL_PATH)/system/codecs/omx/plugin/Android.mk
179 include $(GOLDFISH_OPENGL_PATH)/system/codecs/omx/avcdec/Android.mk
180 include $(GOLDFISH_OPENGL_PATH)/system/codecs/omx/vpxdec/Android.mk
huansd96d5bd2018-10-15 14:32:46 -0700181endif
182
Lingfeng Yang4fa970a2018-09-24 07:53:40 -0700183endif