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