blob: c9eae7049f4d69cf80f5a1b508b057295c74e2d0 [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
37# Host build
38ifeq (true,$(GOLDFISH_OPENGL_BUILD_FOR_HOST))
39
40GOLDFISH_OPENGL_SHOULD_BUILD := true
41GOLDFISH_OPENGL_LIB_SUFFIX := _host
42
43# Set modern defaults for the codename, version, etc.
44PLATFORM_VERSION_CODENAME:=Q
45PLATFORM_SDK_VERSION:=29
46IS_AT_LEAST_OPD1:=true
47
48# The host-side Android framework implementation
49HOST_EMUGL_PATH := $(GOLDFISH_OPENGL_PATH)/../../../external/qemu/android/android-emugl
50EMUGL_COMMON_INCLUDES += $(HOST_EMUGL_PATH)/guest
51
52EMUGL_COMMON_CFLAGS += \
53 -DPLATFORM_SDK_VERSION=29 \
54 -DGOLDFISH_HIDL_GRALLOC \
55 -DEMULATOR_OPENGL_POST_O=1 \
56 -DHOST_BUILD \
57 -DANDROID \
58 -DGL_GLEXT_PROTOTYPES \
Lingfeng Yange38d15c2018-09-24 16:24:01 -070059 -fvisibility=default \
Lingfeng Yang2ed17d42018-09-27 08:04:08 -070060 -DPAGE_SIZE=4096 \
Lingfeng Yang4fa970a2018-09-24 07:53:40 -070061
62endif # GOLDFISH_OPENGL_BUILD_FOR_HOST
63
64ifeq (true,$(BUILD_EMULATOR_OPENGL)) # Guest build
65
66GOLDFISH_OPENGL_SHOULD_BUILD := true
67
68EMUGL_COMMON_CFLAGS += -DPLATFORM_SDK_VERSION=$(PLATFORM_SDK_VERSION)
keunyoungb85b2752013-03-08 12:28:03 -080069
Lingfeng Yang5a8161c2017-05-06 01:00:03 -070070ifeq (O, $(PLATFORM_VERSION_CODENAME))
Lingfeng Yang256462a2017-06-05 11:50:17 -070071EMUGL_COMMON_CFLAGS += -DGOLDFISH_HIDL_GRALLOC
72endif
73
74ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 25 && echo isApi26OrHigher),isApi26OrHigher)
75EMUGL_COMMON_CFLAGS += -DGOLDFISH_HIDL_GRALLOC
Lingfeng Yang5a8161c2017-05-06 01:00:03 -070076endif
77
Yifan Hong22dd0fe2017-06-08 17:17:17 -070078ifdef IS_AT_LEAST_OPD1
bohu8b0bfc72017-05-11 02:11:51 -070079 EMUGL_COMMON_CFLAGS += -DEMULATOR_OPENGL_POST_O=1
80endif
81
Yahan Zhou52dd9f02016-07-20 14:31:33 -070082ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 18 && echo PreJellyBeanMr2),PreJellyBeanMr2)
Yahan Zhouda1c76d2016-06-23 13:58:09 -070083 ifeq ($(ARCH_ARM_HAVE_TLS_REGISTER),true)
84 EMUGL_COMMON_CFLAGS += -DHAVE_ARM_TLS_REGISTER
85 endif
Yahan Zhoub795a342016-07-20 16:12:02 -070086endif
87ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 16 && echo PreJellyBean),PreJellyBean)
Yahan Zhouda1c76d2016-06-23 13:58:09 -070088 EMUGL_COMMON_CFLAGS += -DALOG_ASSERT=LOG_ASSERT
89 EMUGL_COMMON_CFLAGS += -DALOGE=LOGE
90 EMUGL_COMMON_CFLAGS += -DALOGW=LOGW
91 EMUGL_COMMON_CFLAGS += -DALOGD=LOGD
Lingfeng Yange5913372016-11-29 14:23:14 -080092 EMUGL_COMMON_CFLAGS += -DALOGV=LOGV
Yahan Zhouda1c76d2016-06-23 13:58:09 -070093endif
94
keunyoungb85b2752013-03-08 12:28:03 -080095# Include common definitions used by all the modules included later
96# in this build file. This contains the definition of all useful
97# emugl-xxxx functions.
98#
Lingfeng Yang4fa970a2018-09-24 07:53:40 -070099include $(GOLDFISH_OPENGL_PATH)/common.mk
100
101endif # BUILD_EMULATOR_OPENGL (guest build)
102
103ifeq (true,$(GOLDFISH_OPENGL_SHOULD_BUILD))
104
105# Uncomment the following line if you want to enable debug traces
106# in the GLES emulation libraries.
107# EMUGL_COMMON_CFLAGS += -DEMUGL_DEBUG=1
keunyoungb85b2752013-03-08 12:28:03 -0800108
109# IMPORTANT: ORDER IS CRUCIAL HERE
110#
111# For the import/export feature to work properly, you must include
112# modules below in correct order. That is, if module B depends on
113# module A, then it must be included after module A below.
114#
115# This ensures that anything exported by module A will be correctly
116# be imported by module B when it is declared.
117#
118# Note that the build system will complain if you try to import a
119# module that hasn't been declared yet anyway.
120#
Lingfeng Yang4fa970a2018-09-24 07:53:40 -0700121include $(GOLDFISH_OPENGL_PATH)/shared/OpenglCodecCommon/Android.mk
keunyoungb85b2752013-03-08 12:28:03 -0800122
Lingfeng Yang4fa970a2018-09-24 07:53:40 -0700123# Encoder shared libraries
124include $(GOLDFISH_OPENGL_PATH)/system/GLESv1_enc/Android.mk
125include $(GOLDFISH_OPENGL_PATH)/system/GLESv2_enc/Android.mk
126include $(GOLDFISH_OPENGL_PATH)/system/renderControl_enc/Android.mk
keunyoungb85b2752013-03-08 12:28:03 -0800127
Lingfeng Yang4fa970a2018-09-24 07:53:40 -0700128include $(GOLDFISH_OPENGL_PATH)/system/OpenglSystemCommon/Android.mk
keunyoungb85b2752013-03-08 12:28:03 -0800129
130# System shared libraries
Lingfeng Yang4fa970a2018-09-24 07:53:40 -0700131include $(GOLDFISH_OPENGL_PATH)/system/GLESv1/Android.mk
132include $(GOLDFISH_OPENGL_PATH)/system/GLESv2/Android.mk
keunyoungb85b2752013-03-08 12:28:03 -0800133
Lingfeng Yang2ed17d42018-09-27 08:04:08 -0700134include $(GOLDFISH_OPENGL_PATH)/system/gralloc/Android.mk
135
Lingfeng Yang4fa970a2018-09-24 07:53:40 -0700136include $(GOLDFISH_OPENGL_PATH)/system/egl/Android.mk
keunyoungb85b2752013-03-08 12:28:03 -0800137
Lingfeng Yanga89af502018-10-18 13:46:20 -0700138include $(GOLDFISH_OPENGL_PATH)/system/vulkan/Android.mk
139
huansd96d5bd2018-10-15 14:32:46 -0700140ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 28 -o $(IS_AT_LEAST_QPR1) = true && echo isApi29OrHigher),isApi29OrHigher)
141 # HWC2 enabled after P
142 include $(GOLDFISH_OPENGL_PATH)/system/hwc2/Android.mk
143endif
144
Lingfeng Yang4fa970a2018-09-24 07:53:40 -0700145endif