blob: b14ab816b8caf28d04424da569726d7d2761c410 [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.
38BUILD_EMULATOR_VULKAN := false
39
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 Yang6a283672018-11-01 13:37:56 -070046BUILD_EMULATOR_VULKAN := true
47
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 Yang6a283672018-11-01 13:37:56 -070066 -DGOLDFISH_VULKAN \
Lingfeng Yang4fa970a2018-09-24 07:53:40 -070067
68endif # GOLDFISH_OPENGL_BUILD_FOR_HOST
69
70ifeq (true,$(BUILD_EMULATOR_OPENGL)) # Guest build
71
72GOLDFISH_OPENGL_SHOULD_BUILD := true
73
74EMUGL_COMMON_CFLAGS += -DPLATFORM_SDK_VERSION=$(PLATFORM_SDK_VERSION)
keunyoungb85b2752013-03-08 12:28:03 -080075
Lingfeng Yang5a8161c2017-05-06 01:00:03 -070076ifeq (O, $(PLATFORM_VERSION_CODENAME))
Lingfeng Yang256462a2017-06-05 11:50:17 -070077EMUGL_COMMON_CFLAGS += -DGOLDFISH_HIDL_GRALLOC
78endif
79
80ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 25 && echo isApi26OrHigher),isApi26OrHigher)
81EMUGL_COMMON_CFLAGS += -DGOLDFISH_HIDL_GRALLOC
Lingfeng Yang5a8161c2017-05-06 01:00:03 -070082endif
83
Yifan Hong22dd0fe2017-06-08 17:17:17 -070084ifdef IS_AT_LEAST_OPD1
bohu8b0bfc72017-05-11 02:11:51 -070085 EMUGL_COMMON_CFLAGS += -DEMULATOR_OPENGL_POST_O=1
86endif
87
Yahan Zhou52dd9f02016-07-20 14:31:33 -070088ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 18 && echo PreJellyBeanMr2),PreJellyBeanMr2)
Yahan Zhouda1c76d2016-06-23 13:58:09 -070089 ifeq ($(ARCH_ARM_HAVE_TLS_REGISTER),true)
90 EMUGL_COMMON_CFLAGS += -DHAVE_ARM_TLS_REGISTER
91 endif
Yahan Zhoub795a342016-07-20 16:12:02 -070092endif
93ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 16 && echo PreJellyBean),PreJellyBean)
Yahan Zhouda1c76d2016-06-23 13:58:09 -070094 EMUGL_COMMON_CFLAGS += -DALOG_ASSERT=LOG_ASSERT
95 EMUGL_COMMON_CFLAGS += -DALOGE=LOGE
96 EMUGL_COMMON_CFLAGS += -DALOGW=LOGW
97 EMUGL_COMMON_CFLAGS += -DALOGD=LOGD
Lingfeng Yange5913372016-11-29 14:23:14 -080098 EMUGL_COMMON_CFLAGS += -DALOGV=LOGV
Yahan Zhouda1c76d2016-06-23 13:58:09 -070099endif
100
Lingfeng Yang6a283672018-11-01 13:37:56 -0700101ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 23 && echo isApi24OrHigher),isApi24OrHigher)
102 BUILD_EMULATOR_VULKAN := true
103 EMUGL_COMMON_CFLAGS += -DGOLDFISH_VULKAN
104endif
105
keunyoungb85b2752013-03-08 12:28:03 -0800106# Include common definitions used by all the modules included later
107# in this build file. This contains the definition of all useful
108# emugl-xxxx functions.
109#
Lingfeng Yang4fa970a2018-09-24 07:53:40 -0700110include $(GOLDFISH_OPENGL_PATH)/common.mk
111
112endif # BUILD_EMULATOR_OPENGL (guest build)
113
114ifeq (true,$(GOLDFISH_OPENGL_SHOULD_BUILD))
115
116# Uncomment the following line if you want to enable debug traces
117# in the GLES emulation libraries.
118# EMUGL_COMMON_CFLAGS += -DEMUGL_DEBUG=1
keunyoungb85b2752013-03-08 12:28:03 -0800119
120# IMPORTANT: ORDER IS CRUCIAL HERE
121#
122# For the import/export feature to work properly, you must include
123# modules below in correct order. That is, if module B depends on
124# module A, then it must be included after module A below.
125#
126# This ensures that anything exported by module A will be correctly
127# be imported by module B when it is declared.
128#
129# Note that the build system will complain if you try to import a
130# module that hasn't been declared yet anyway.
131#
Lingfeng Yang4fa970a2018-09-24 07:53:40 -0700132include $(GOLDFISH_OPENGL_PATH)/shared/OpenglCodecCommon/Android.mk
keunyoungb85b2752013-03-08 12:28:03 -0800133
Lingfeng Yang4fa970a2018-09-24 07:53:40 -0700134# Encoder shared libraries
135include $(GOLDFISH_OPENGL_PATH)/system/GLESv1_enc/Android.mk
136include $(GOLDFISH_OPENGL_PATH)/system/GLESv2_enc/Android.mk
137include $(GOLDFISH_OPENGL_PATH)/system/renderControl_enc/Android.mk
keunyoungb85b2752013-03-08 12:28:03 -0800138
Lingfeng Yang6a283672018-11-01 13:37:56 -0700139ifeq (true,$(BUILD_EMULATOR_VULKAN)) # Vulkan libs
140 include $(GOLDFISH_OPENGL_PATH)/android-emu/Android.mk
141 include $(GOLDFISH_OPENGL_PATH)/system/vulkan_cereal/Android.mk
142 include $(GOLDFISH_OPENGL_PATH)/system/vulkan_enc/Android.mk
143endif
144
Lingfeng Yang4fa970a2018-09-24 07:53:40 -0700145include $(GOLDFISH_OPENGL_PATH)/system/OpenglSystemCommon/Android.mk
keunyoungb85b2752013-03-08 12:28:03 -0800146
147# System shared libraries
Lingfeng Yang4fa970a2018-09-24 07:53:40 -0700148include $(GOLDFISH_OPENGL_PATH)/system/GLESv1/Android.mk
149include $(GOLDFISH_OPENGL_PATH)/system/GLESv2/Android.mk
keunyoungb85b2752013-03-08 12:28:03 -0800150
Lingfeng Yang2ed17d42018-09-27 08:04:08 -0700151include $(GOLDFISH_OPENGL_PATH)/system/gralloc/Android.mk
152
Lingfeng Yang4fa970a2018-09-24 07:53:40 -0700153include $(GOLDFISH_OPENGL_PATH)/system/egl/Android.mk
keunyoungb85b2752013-03-08 12:28:03 -0800154
Lingfeng Yang6a283672018-11-01 13:37:56 -0700155ifeq (true,$(BUILD_EMULATOR_VULKAN)) # Vulkan libs
Lingfeng Yangd7447042018-10-25 11:09:18 -0700156 include $(GOLDFISH_OPENGL_PATH)/system/vulkan/Android.mk
157endif
Lingfeng Yanga89af502018-10-18 13:46:20 -0700158
huansd96d5bd2018-10-15 14:32:46 -0700159ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 28 -o $(IS_AT_LEAST_QPR1) = true && echo isApi29OrHigher),isApi29OrHigher)
160 # HWC2 enabled after P
161 include $(GOLDFISH_OPENGL_PATH)/system/hwc2/Android.mk
162endif
163
Lingfeng Yang4fa970a2018-09-24 07:53:40 -0700164endif