blob: 8e3be613d1aa2cf1d93c754d59b50aaf3eddfb67 [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
keunyoungb85b2752013-03-08 12:28:03 -080032# This is always set to a module's LOCAL_CFLAGS
33# See the definition of emugl-begin-module in common.mk
Gurchetan Singhcb790882021-12-06 09:42:42 -080034EMUGL_COMMON_CFLAGS :=
Lingfeng Yang4fa970a2018-09-24 07:53:40 -070035
Lingfeng Yang6a283672018-11-01 13:37:56 -070036# Whether or not to build the Vulkan library.
Lingfeng Yang6f9871b2020-08-17 15:46:53 -070037GFXSTREAM := false
Lingfeng Yang6a283672018-11-01 13:37:56 -070038
Lingfeng Yang4fa970a2018-09-24 07:53:40 -070039# Host build
40ifeq (true,$(GOLDFISH_OPENGL_BUILD_FOR_HOST))
41
42GOLDFISH_OPENGL_SHOULD_BUILD := true
43GOLDFISH_OPENGL_LIB_SUFFIX := _host
44
Lingfeng Yang6f9871b2020-08-17 15:46:53 -070045GFXSTREAM := true
Lingfeng Yang6a283672018-11-01 13:37:56 -070046
Lingfeng Yang4fa970a2018-09-24 07:53:40 -070047# 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 \
Lingfeng Yang4fa970a2018-09-24 07:53:40 -070059 -DHOST_BUILD \
60 -DANDROID \
61 -DGL_GLEXT_PROTOTYPES \
Lingfeng Yange38d15c2018-09-24 16:24:01 -070062 -fvisibility=default \
Lingfeng Yang2ed17d42018-09-27 08:04:08 -070063 -DPAGE_SIZE=4096 \
Lingfeng Yang6f9871b2020-08-17 15:46:53 -070064 -DGFXSTREAM \
Aurimas Liutikasacc48742018-12-20 15:06:46 -080065 -Wno-unused-parameter
Lingfeng Yang4fa970a2018-09-24 07:53:40 -070066
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)
keunyoungb85b2752013-03-08 12:28:03 -080074
Lingfeng Yang5a8161c2017-05-06 01:00:03 -070075ifeq (O, $(PLATFORM_VERSION_CODENAME))
Lingfeng Yang256462a2017-06-05 11:50:17 -070076EMUGL_COMMON_CFLAGS += -DGOLDFISH_HIDL_GRALLOC
77endif
78
79ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 25 && echo isApi26OrHigher),isApi26OrHigher)
80EMUGL_COMMON_CFLAGS += -DGOLDFISH_HIDL_GRALLOC
Lingfeng Yang5a8161c2017-05-06 01:00:03 -070081endif
82
Yahan Zhou52dd9f02016-07-20 14:31:33 -070083ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 18 && echo PreJellyBeanMr2),PreJellyBeanMr2)
Yahan Zhouda1c76d2016-06-23 13:58:09 -070084 ifeq ($(ARCH_ARM_HAVE_TLS_REGISTER),true)
85 EMUGL_COMMON_CFLAGS += -DHAVE_ARM_TLS_REGISTER
86 endif
Yahan Zhoub795a342016-07-20 16:12:02 -070087endif
88ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 16 && echo PreJellyBean),PreJellyBean)
Yahan Zhouda1c76d2016-06-23 13:58:09 -070089 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
Lingfeng Yange5913372016-11-29 14:23:14 -080093 EMUGL_COMMON_CFLAGS += -DALOGV=LOGV
Yahan Zhouda1c76d2016-06-23 13:58:09 -070094endif
95
Lingfeng Yanga4085412018-11-01 20:19:46 -070096ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 27 && echo isApi28OrHigher),isApi28OrHigher)
Lingfeng Yang6f9871b2020-08-17 15:46:53 -070097 GFXSTREAM := true
98 EMUGL_COMMON_CFLAGS += -DGFXSTREAM
Lingfeng Yang6a283672018-11-01 13:37:56 -070099endif
100
keunyoungb85b2752013-03-08 12:28:03 -0800101# 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#
Lingfeng Yang4fa970a2018-09-24 07:53:40 -0700105include $(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
keunyoungb85b2752013-03-08 12:28:03 -0800114
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#
Roman Kiryanovb488e622020-05-19 18:07:23 -0700127include $(GOLDFISH_OPENGL_PATH)/shared/qemupipe/Android.mk
128include $(GOLDFISH_OPENGL_PATH)/shared/gralloc_cb/Android.mk
Roman Kiryanov1ef59e42020-05-11 15:50:11 -0700129include $(GOLDFISH_OPENGL_PATH)/shared/GoldfishAddressSpace/Android.mk
Lingfeng Yanged069c52020-09-03 19:11:02 -0700130
131ifeq (true,$(GFXSTREAM)) # android-emu
132 include $(GOLDFISH_OPENGL_PATH)/android-emu/Android.mk
133endif
134
Lingfeng Yang4fa970a2018-09-24 07:53:40 -0700135include $(GOLDFISH_OPENGL_PATH)/shared/OpenglCodecCommon/Android.mk
keunyoungb85b2752013-03-08 12:28:03 -0800136
Lingfeng Yang4fa970a2018-09-24 07:53:40 -0700137# 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
keunyoungb85b2752013-03-08 12:28:03 -0800141
Lingfeng Yang6f9871b2020-08-17 15:46:53 -0700142ifeq (true,$(GFXSTREAM)) # Vulkan libs
Lingfeng Yang6a283672018-11-01 13:37:56 -0700143 include $(GOLDFISH_OPENGL_PATH)/system/vulkan_enc/Android.mk
144endif
145
Lingfeng Yang4fa970a2018-09-24 07:53:40 -0700146include $(GOLDFISH_OPENGL_PATH)/system/OpenglSystemCommon/Android.mk
keunyoungb85b2752013-03-08 12:28:03 -0800147
Yahan Zhou4719ae92021-06-24 13:30:56 -0700148# Profiler library
149include $(GOLDFISH_OPENGL_PATH)/system/profiler/Android.mk
150
keunyoungb85b2752013-03-08 12:28:03 -0800151# System shared libraries
Lingfeng Yang4fa970a2018-09-24 07:53:40 -0700152include $(GOLDFISH_OPENGL_PATH)/system/GLESv1/Android.mk
153include $(GOLDFISH_OPENGL_PATH)/system/GLESv2/Android.mk
keunyoungb85b2752013-03-08 12:28:03 -0800154
Lingfeng Yang2ed17d42018-09-27 08:04:08 -0700155include $(GOLDFISH_OPENGL_PATH)/system/gralloc/Android.mk
Lingfeng Yangb65946f2020-02-04 10:49:07 -0800156
157ifneq (true,$(GOLDFISH_OPENGL_BUILD_FOR_HOST))
Roman Kiryanovefb10582020-01-29 16:28:15 -0800158include $(GOLDFISH_OPENGL_PATH)/system/hals/Android.mk
Lingfeng Yangb65946f2020-02-04 10:49:07 -0800159endif
160
Lingfeng Yang4fa970a2018-09-24 07:53:40 -0700161include $(GOLDFISH_OPENGL_PATH)/system/egl/Android.mk
keunyoungb85b2752013-03-08 12:28:03 -0800162
Lingfeng Yang6f9871b2020-08-17 15:46:53 -0700163ifeq (true,$(GFXSTREAM)) # Vulkan libs
Lingfeng Yangd7447042018-10-25 11:09:18 -0700164 include $(GOLDFISH_OPENGL_PATH)/system/vulkan/Android.mk
165endif
Lingfeng Yanga89af502018-10-18 13:46:20 -0700166
huansd96d5bd2018-10-15 14:32:46 -0700167ifeq ($(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
Jason Macnakb53b7902022-01-12 15:59:56 -0800170 include $(GOLDFISH_OPENGL_PATH)/system/hwc3/Android.mk
Roman Kiryanovf0ae38e2020-05-19 17:25:11 +0000171 # 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
huansd96d5bd2018-10-15 14:32:46 -0700176endif
177
Lingfeng Yang4fa970a2018-09-24 07:53:40 -0700178endif