third-party: add egl dependency
After removing ANGLE, we are also removing our EGL headers.
For an AOSP tree build, we expect that headers to be found in
external/angle. For SYSTEM build, we use pkg-config to detect it. For
DOWNLOAD we directly download the EGL registry hosted on github.
Test: presubmit, build with SYSTEM and AOSP dependency resolution
Change-Id: I304b50be56669e9e034a801b56c71a2ac763f280
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c1f51c9..0d304c6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -42,6 +42,10 @@
option(ASTC_CPU_DECODING "Enable decoding ASTC textures on the CPU" OFF)
+# For now the caller of the cmake script is responsible to create the angle_shader_translator
+# target.
+option(USE_ANGLE_SHADER_PARSER "Build with ANGLE shader parser." OFF)
+
if(UNIX AND NOT APPLE)
set(LINUX TRUE)
endif()
@@ -75,6 +79,8 @@
add_compile_definitions(VK_USE_PLATFORM_MACOS_MVK)
elseif(UNIX)
# TODO(kaiyili, b/179477624): Add Linux specific Vulkan platform macro definitions
+ # Use X11 version of EGL platform specific definitions.
+ add_compile_definitions(USE_X11)
elseif(WIN32)
add_compile_definitions(VK_USE_PLATFORM_WIN32_KHR)
endif()
@@ -118,15 +124,15 @@
set(GFXSTREAM_REPO_ROOT ${CMAKE_CURRENT_SOURCE_DIR})
+if(USE_ANGLE_SHADER_PARSER)
+ add_compile_definitions(USE_ANGLE_SHADER_PARSER)
+endif()
+
include(android.cmake)
set(EXTRA_SUBDIR_TEST_INCLUDE_FILES)
-if(DEPENDENCY_RESOLUTION STREQUAL "AOSP")
- add_compile_definitions(USE_ANGLE_SHADER_PARSER)
-endif ()
-
# Third party dependencies
add_subdirectory(third-party)
diff --git a/stream-servers/CMakeLists.txt b/stream-servers/CMakeLists.txt
index df4b098..62c6145 100644
--- a/stream-servers/CMakeLists.txt
+++ b/stream-servers/CMakeLists.txt
@@ -64,6 +64,7 @@
renderControl_dec
gfxstream-gl-server
gfxstream-vulkan-server
+ gfxstream_egl_headers
gfxstream-snapshot
apigen-codec-common
${GFXSTREAM_HOST_COMMON_LIB}
@@ -78,7 +79,6 @@
${GFXSTREAM_REPO_ROOT}/stream-servers/apigen-codec-common
${GFXSTREAM_REPO_ROOT}/stream-servers/gl
${GFXSTREAM_REPO_ROOT}/stream-servers/vulkan
- ${GFXSTREAM_REPO_ROOT}/third-party/angle/include
${GFXSTREAM_REPO_ROOT}/third-party/glm/include)
if (WIN32)
diff --git a/stream-servers/gl/CMakeLists.txt b/stream-servers/gl/CMakeLists.txt
index 2cc3688..5218c10 100644
--- a/stream-servers/gl/CMakeLists.txt
+++ b/stream-servers/gl/CMakeLists.txt
@@ -25,6 +25,7 @@
PUBLIC
aemu-base.headers
gfxstream_vulkan_headers
+ gfxstream_egl_headers
gles1_dec
gles2_dec
GLSnapshot
@@ -37,5 +38,4 @@
${GFXSTREAM_REPO_ROOT}/include
${GFXSTREAM_REPO_ROOT}/stream-servers
${GFXSTREAM_REPO_ROOT}/stream-servers/gl
- ${GFXSTREAM_REPO_ROOT}/third-party/angle/include
${GFXSTREAM_REPO_ROOT}/third-party/glm/include)
diff --git a/stream-servers/gl/gles1_dec/CMakeLists.txt b/stream-servers/gl/gles1_dec/CMakeLists.txt
index 98fc749..2d618d0 100644
--- a/stream-servers/gl/gles1_dec/CMakeLists.txt
+++ b/stream-servers/gl/gles1_dec/CMakeLists.txt
@@ -7,12 +7,13 @@
gles1_dec
PUBLIC
apigen-codec-common
- GLSnapshot)
+ GLSnapshot
+ PRIVATE
+ gfxstream_egl_headers)
target_include_directories(
gles1_dec
PRIVATE
${GFXSTREAM_REPO_ROOT}
${GFXSTREAM_REPO_ROOT}/include
${GFXSTREAM_REPO_ROOT}/stream-servers
- ${GFXSTREAM_REPO_ROOT}/stream-servers/apigen-codec-common
- ${GFXSTREAM_REPO_ROOT}/third-party/angle/include)
+ ${GFXSTREAM_REPO_ROOT}/stream-servers/apigen-codec-common)
diff --git a/stream-servers/gl/gles2_dec/CMakeLists.txt b/stream-servers/gl/gles2_dec/CMakeLists.txt
index d520c3c..e2374d6 100644
--- a/stream-servers/gl/gles2_dec/CMakeLists.txt
+++ b/stream-servers/gl/gles2_dec/CMakeLists.txt
@@ -7,12 +7,13 @@
gles2_dec
PUBLIC
apigen-codec-common
- GLSnapshot)
+ GLSnapshot
+ PRIVATE
+ gfxstream_egl_headers)
target_include_directories(
gles2_dec
PRIVATE
${GFXSTREAM_REPO_ROOT}
${GFXSTREAM_REPO_ROOT}/include
${GFXSTREAM_REPO_ROOT}/stream-servers
- ${GFXSTREAM_REPO_ROOT}/stream-servers/apigen-codec-common
- ${GFXSTREAM_REPO_ROOT}/third-party/angle/include)
+ ${GFXSTREAM_REPO_ROOT}/stream-servers/apigen-codec-common)
diff --git a/stream-servers/gl/glestranslator/GLES_CM/CMakeLists.txt b/stream-servers/gl/glestranslator/GLES_CM/CMakeLists.txt
index db1f96b..0028b18 100644
--- a/stream-servers/gl/glestranslator/GLES_CM/CMakeLists.txt
+++ b/stream-servers/gl/glestranslator/GLES_CM/CMakeLists.txt
@@ -11,12 +11,12 @@
apigen-codec-common
aemu-base.headers
aemu-host-common.headers
- gfxstream-snapshot.headers)
+ gfxstream-snapshot.headers
+ gfxstream_egl_headers)
target_include_directories(
GLES_CM_translator_static PRIVATE
${GFXSTREAM_REPO_ROOT}
${GFXSTREAM_REPO_ROOT}/include
${GFXSTREAM_REPO_ROOT}/stream-servers/
${GFXSTREAM_REPO_ROOT}/stream-servers/gl/glestranslator/include
- ${GFXSTREAM_REPO_ROOT}/third-party/angle/include
${GFXSTREAM_REPO_ROOT}/third-party/glm/include)
diff --git a/stream-servers/gl/glestranslator/GLES_V2/CMakeLists.txt b/stream-servers/gl/glestranslator/GLES_V2/CMakeLists.txt
index c4f100b..550ed00 100644
--- a/stream-servers/gl/glestranslator/GLES_V2/CMakeLists.txt
+++ b/stream-servers/gl/glestranslator/GLES_V2/CMakeLists.txt
@@ -20,7 +20,7 @@
aemu-base.headers
aemu-host-common.headers)
-if(DEPENDENCY_RESOLUTION STREQUAL "AOSP")
+if(USE_ANGLE_SHADER_PARSER)
target_link_libraries(
GLES_V2_translator_static PRIVATE
angle_shader_translator)
diff --git a/stream-servers/gl/glestranslator/GLcommon/CMakeLists.txt b/stream-servers/gl/glestranslator/GLcommon/CMakeLists.txt
index cc0af8c..2874168 100644
--- a/stream-servers/gl/glestranslator/GLcommon/CMakeLists.txt
+++ b/stream-servers/gl/glestranslator/GLcommon/CMakeLists.txt
@@ -25,14 +25,14 @@
${GFXSTREAM_REPO_ROOT}
${GFXSTREAM_REPO_ROOT}/include
${GFXSTREAM_REPO_ROOT}/stream-servers
- ${GFXSTREAM_REPO_ROOT}/stream-servers/gl/glestranslator/include
- ${GFXSTREAM_REPO_ROOT}/third-party/angle/include)
+ ${GFXSTREAM_REPO_ROOT}/stream-servers/gl/glestranslator/include)
target_link_libraries(
GLcommon PUBLIC
aemu-base.headers
aemu-host-common.headers
gfxstream-snapshot.headers
- gfxstream-compressedTextures)
+ gfxstream-compressedTextures
+ gfxstream_egl_headers)
if (NOT MSVC)
target_compile_options(GLcommon PRIVATE -fvisibility=hidden)
endif()
diff --git a/stream-servers/renderControl_dec/CMakeLists.txt b/stream-servers/renderControl_dec/CMakeLists.txt
index 5fd4111..db8c280 100644
--- a/stream-servers/renderControl_dec/CMakeLists.txt
+++ b/stream-servers/renderControl_dec/CMakeLists.txt
@@ -5,12 +5,13 @@
target_link_libraries(
renderControl_dec
PUBLIC
- apigen-codec-common)
+ apigen-codec-common
+ PRIVATE
+ gfxstream_egl_headers)
target_include_directories(
renderControl_dec
PRIVATE
${GFXSTREAM_REPO_ROOT}
${GFXSTREAM_REPO_ROOT}/include
${GFXSTREAM_REPO_ROOT}/stream-servers
- ${GFXSTREAM_REPO_ROOT}/stream-servers/apigen-codec-common
- ${GFXSTREAM_REPO_ROOT}/third-party/angle/include)
+ ${GFXSTREAM_REPO_ROOT}/stream-servers/apigen-codec-common)
diff --git a/stream-servers/testlibs/CMakeLists.txt b/stream-servers/testlibs/CMakeLists.txt
index ce94658..3e41a07 100644
--- a/stream-servers/testlibs/CMakeLists.txt
+++ b/stream-servers/testlibs/CMakeLists.txt
@@ -18,14 +18,14 @@
target_link_libraries(
OSWindow
PRIVATE
- aemu-base.headers)
+ aemu-base.headers
+ gfxstream_egl_headers)
target_include_directories(
OSWindow
PUBLIC
.
PRIVATE
${GFXSTREAM_REPO_ROOT}/include
- ${GFXSTREAM_REPO_ROOT}/third-party/angle/include
${GFXSTREAM_REPO_ROOT}/third-party/glm/include)
if (LINUX)
diff --git a/stream-servers/vulkan/CMakeLists.txt b/stream-servers/vulkan/CMakeLists.txt
index e60c2bf..c5f8d00 100644
--- a/stream-servers/vulkan/CMakeLists.txt
+++ b/stream-servers/vulkan/CMakeLists.txt
@@ -29,7 +29,9 @@
aemu-base.headers
gfxstream-snapshot.headers
gfxstream_utils.headers
- gfxstream_vulkan_headers)
+ gfxstream_vulkan_headers
+ PRIVATE
+ gfxstream_egl_headers)
if (WIN32)
target_compile_definitions(gfxstream-vulkan-server PRIVATE -DVK_USE_PLATFORM_WIN32_KHR)
@@ -52,5 +54,4 @@
${GFXSTREAM_REPO_ROOT}/stream-servers
${GFXSTREAM_REPO_ROOT}/stream-servers/vulkan
${GFXSTREAM_REPO_ROOT}/stream-servers/apigen-codec-common
- ${GFXSTREAM_REPO_ROOT}/third-party/angle/include
${GFXSTREAM_REPO_ROOT}/third-party/glm/include)
diff --git a/third-party/CMakeLists.txt b/third-party/CMakeLists.txt
index b3e2c68..f4fb8e0 100644
--- a/third-party/CMakeLists.txt
+++ b/third-party/CMakeLists.txt
@@ -1,7 +1,3 @@
-if(DEPENDENCY_RESOLUTION STREQUAL "AOSP")
- add_subdirectory(angle)
-endif ()
-
# Configure and add `astc-encoder`, if needed
if (ASTC_CPU_DECODING)
set(DECOMPRESSOR ON) # Disable compression code
@@ -173,6 +169,33 @@
endif()
endif()
+if(NOT TARGET gfxstream_egl_headers)
+ if(DEPENDENCY_RESOLUTION STREQUAL "AOSP")
+ # ANGLE provides the EGL headers for us.
+ set(ANGLE_PATH ${PROJECT_SOURCE_DIR}/../../../external/angle)
+ if(NOT EXISTS ${ANGLE_PATH})
+ message(FATAL_ERROR "ANGLE is not found.")
+ endif()
+ add_library(gfxstream_egl_headers INTERFACE)
+ target_include_directories(gfxstream_egl_headers INTERFACE ${ANGLE_PATH}/include)
+ elseif(DEPENDENCY_RESOLUTION STREQUAL "SYSTEM")
+ find_package(PkgConfig REQUIRED)
+ pkg_search_module(egl REQUIRED IMPORTED_TARGET GLOBAL egl>=1.5)
+ add_library(gfxstream_egl_headers ALIAS PkgConfig::egl)
+ elseif(DEPENDENCY_RESOLUTION STREQUAL "DOWNLOAD")
+ FetchContent_Declare(
+ egl
+ GIT_REPOSITORY https://github.com/KhronosGroup/EGL-Registry.git
+ GIT_TAG main
+ GIT_REMOTE_UPDATE_STRATEGY CHECKOUT
+ GIT_PROGRESS TRUE
+ )
+ list(APPEND PROJECT_TO_FETCH egl)
+ add_library(gfxstream_egl_headers INTERFACE)
+ target_include_directories(gfxstream_egl_headers INTERFACE ${egl_SOURCE_DIR}/api)
+ endif()
+endif()
+
if(PROJECT_TO_FETCH)
FetchContent_MakeAvailable(${PROJECT_TO_FETCH})
endif()
@@ -186,3 +209,6 @@
if(NOT TARGET flatbuffers)
message(FATAL_ERROR "The dependency flatbuffers not found.")
endif()
+if(USE_ANGLE_SHADER_PARSER AND NOT TARGET angle_shader_translator)
+ message(FATAL_ERROR "The dependency angle_shader_translator not found.")
+endif()
\ No newline at end of file