diff options
| author | Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> | 2020-04-06 23:49:51 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-04-06 14:49:51 -0700 |
| commit | 6028fd5e1afc8deb653d29cf93dfb7f11fe954b5 (patch) | |
| tree | 276473a8892516330d5a71dfea87dbd7bb3bebb3 /ports/angle | |
| parent | bd0c7106f95d7a72c247441e2fbec39e7716ecaa (diff) | |
| download | vcpkg-6028fd5e1afc8deb653d29cf93dfb7f11fe954b5.tar.gz vcpkg-6028fd5e1afc8deb653d29cf93dfb7f11fe954b5.zip | |
[angle] Improve port (#9965)
* update opengl and install all headers
* improve angle
* update egl-registry
* fix osx regression
* update baseline.
* fix uwp regressions
* fix osx and linux regression
* add encoding patch
* bump glad control
* rechdeck gl visibility from native build
* removed unnecessary commented code
* add GL_VISIBILITY to the exported targets
Co-authored-by: dan-shaw <51385773+dan-shaw@users.noreply.github.com>
Diffstat (limited to 'ports/angle')
| -rw-r--r-- | ports/angle/CMakeLists.txt | 125 | ||||
| -rw-r--r-- | ports/angle/CONTROL | 2 | ||||
| -rw-r--r-- | ports/angle/portfile.cmake | 32 |
3 files changed, 134 insertions, 25 deletions
diff --git a/ports/angle/CMakeLists.txt b/ports/angle/CMakeLists.txt index e64b9aaa3..a9b8f07b9 100644 --- a/ports/angle/CMakeLists.txt +++ b/ports/angle/CMakeLists.txt @@ -44,8 +44,8 @@ add_definitions( )
configure_file(commit.h include/id/commit.h COPYONLY)
-include_directories(include src ${CMAKE_CURRENT_BINARY_DIR}/include)
-
+#include_directories(include src ${CMAKE_CURRENT_BINARY_DIR}/include)
+include_directories("$<INSTALL_INTERFACE:include>" "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>" "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>" "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>")
##########
# angle::common
if(WINDOWS_DESKTOP)
@@ -71,14 +71,14 @@ file(GLOB ANGLE_COMMON_SOURCES "src/common/third_party/smhasher/src/*.h"
"src/common/third_party/smhasher/src/*.cpp")
list(FILTER ANGLE_COMMON_SOURCES EXCLUDE REGEX "_unittest|event_tracer|${ANGLE_COMMON_PLATFORM_FILTER}")
-add_library(angle_common STATIC ${ANGLE_COMMON_SOURCES})
-target_include_directories(angle_common PUBLIC src/common/third_party/base)
+add_library(angle_common OBJECT ${ANGLE_COMMON_SOURCES})
+target_include_directories(angle_common PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/common/third_party/base>")
add_library(angle::common ALIAS angle_common)
##########
# angle::image_util
file(GLOB ANGLE_IMAGE_UTIL_SOURCES "src/image_util/*.h" "src/image_util/*.inl" "src/image_util/*.cpp")
-add_library(angle_image_util STATIC ${ANGLE_IMAGE_UTIL_SOURCES})
+add_library(angle_image_util OBJECT ${ANGLE_IMAGE_UTIL_SOURCES})
target_link_libraries(angle_image_util PRIVATE angle::common)
add_library(angle::image_util ALIAS angle_image_util)
@@ -96,7 +96,7 @@ file(GLOB TRANSLATOR_SOURCES "src/third_party/compiler/ArrayBoundsClamper.cpp"
)
list(FILTER TRANSLATOR_SOURCES EXCLUDE REGEX "_unittest")
-add_library(angle_translator STATIC ${TRANSLATOR_SOURCES})
+add_library(angle_translator OBJECT ${TRANSLATOR_SOURCES})
target_compile_definitions(angle_translator PUBLIC
-DANGLE_ENABLE_ESSL
-DANGLE_ENABLE_GLSL
@@ -111,7 +111,7 @@ file(GLOB PREPROCESSOR_SOURCES "src/compiler/preprocessor/*.h"
"src/compiler/preprocessor/*.cpp"
)
-add_library(angle_preprocessor STATIC ${PREPROCESSOR_SOURCES})
+add_library(angle_preprocessor OBJECT ${PREPROCESSOR_SOURCES})
target_link_libraries(angle_preprocessor PRIVATE angle::common)
add_library(angle::preprocessor ALIAS angle_preprocessor)
@@ -151,7 +151,7 @@ if(WINDOWS_DESKTOP OR LINUX OR APPLE) )
list(FILTER LIBANGLE_GL_SOURCES EXCLUDE REGEX "_unittest")
add_library(angle_renderer_opengl INTERFACE)
- target_sources(angle_renderer_opengl INTERFACE ${LIBANGLE_GL_SOURCES})
+ target_sources(angle_renderer_opengl INTERFACE "$<BUILD_INTERFACE:${LIBANGLE_GL_SOURCES}>")
target_compile_definitions(angle_renderer_opengl INTERFACE -DANGLE_ENABLE_OPENGL)
add_library(angle::renderer::opengl ALIAS angle_renderer_opengl)
endif()
@@ -171,7 +171,7 @@ if(WIN32) set(LIBANGLE_D3D_WINRT_SOURCES ${LIBANGLE_D3D_SOURCES})
list(FILTER LIBANGLE_D3D_WINRT_SOURCES INCLUDE REGEX "winrt")
add_library(angle_renderer_winrt INTERFACE)
- target_sources(angle_renderer_winrt INTERFACE ${LIBANGLE_D3D_WINRT_SOURCES})
+ target_sources(angle_renderer_winrt INTERFACE "$<BUILD_INTERFACE:${LIBANGLE_D3D_WINRT_SOURCES}>")
add_library(angle::renderer::winrt ALIAS angle_renderer_winrt)
endif()
@@ -181,7 +181,7 @@ if(WIN32) list(FILTER LIBANGLE_D3D_DESKTOP_SOURCES INCLUDE REGEX "d3d9|win32|converged")
find_library(D3D9_LIB NAMES d3d9)
add_library(angle_renderer_win32 INTERFACE)
- target_sources(angle_renderer_win32 INTERFACE ${LIBANGLE_D3D_DESKTOP_SOURCES})
+ target_sources(angle_renderer_win32 INTERFACE "$<BUILD_INTERFACE:${LIBANGLE_D3D_DESKTOP_SOURCES}>")
target_compile_definitions(angle_renderer_win32 INTERFACE -DANGLE_ENABLE_D3D9)
target_link_libraries(angle_renderer_win32 INTERFACE ${D3D9_LIB})
add_library(angle::renderer::win32 ALIAS angle_renderer_win32)
@@ -192,7 +192,7 @@ if(WIN32) find_library(DXGUID_LIB NAMES dxguid)
find_library(D3D11_LIB NAMES d3d11)
add_library(angle_renderer_d3d INTERFACE)
- target_sources(angle_renderer_d3d INTERFACE ${LIBANGLE_D3D_SOURCES})
+ target_sources(angle_renderer_d3d INTERFACE "$<BUILD_INTERFACE:${LIBANGLE_D3D_SOURCES}>")
target_compile_definitions(angle_renderer_d3d INTERFACE
-DANGLE_ENABLE_D3D11
"-DANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES={ \"d3dcompiler_47.dll\", \"d3dcompiler_46.dll\", \"d3dcompiler_43.dll\" }"
@@ -207,7 +207,7 @@ file(GLOB ANGLE_GPU_INFO_UTIL_SOURCES "src/gpu_info_util/SystemInfo_internal.h"
"src/gpu_info_util/SystemInfo.cpp"
)
-add_library(angle_gpu_info_util STATIC ${ANGLE_GPU_INFO_UTIL_SOURCES})
+add_library(angle_gpu_info_util OBJECT ${ANGLE_GPU_INFO_UTIL_SOURCES})
if(WIN32)
target_sources(angle_gpu_info_util PRIVATE "src/gpu_info_util/SystemInfo_win.cpp")
target_link_libraries(angle_gpu_info_util PRIVATE setupapi.lib dxgi.lib)
@@ -281,6 +281,9 @@ else() endif()
if(LINUX)
+ find_package(X11)
+ include_directories(${X11_INCLUDE_DIR})
+ list(APPEND LIBANGLE_RENDERER_PLATFORM ${X11_LIBRARIES})
set(LIBANGLE_RENDERER_COMPILEDEF
-DANGLE_USE_X11
)
@@ -297,14 +300,24 @@ target_link_libraries(libANGLE PRIVATE angle::preprocessor
${LIBANGLE_RENDERER_PLATFORM}
)
-target_include_directories(libANGLE PRIVATE "src/third_party/khronos")
+target_include_directories(libANGLE PRIVATE "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/third_party/khronos>")
target_compile_definitions(libANGLE
PRIVATE -DANGLE_ENABLE_NULL
PUBLIC
-DLIBANGLE_IMPLEMENTATION
- ${LIBANGLE_RENDERER_COMPILEDEF}
+ ${LIBANGLE_RENDERER_COMPILEDEF}
+ -DANGLE_EXPORT=
+ -DANGLE_UTIL_EXPORT=
+ -DEGLAPI=
+ -DGL_APICALL=
+ -DGL_API=
)
add_library(angle::libANGLE ALIAS libANGLE)
+if(BUILD_SHARED_LIBS)
+ target_compile_definitions(libANGLE
+ PRIVATE -DLIBANGLE_UTIL_IMPLEMENTATION
+ )
+endif()
##########
# libGLESv2
@@ -344,12 +357,28 @@ target_link_libraries(libGLESv2 PRIVATE angle::common angle::libANGLE) target_compile_definitions(libGLESv2
PRIVATE -DLIBGLESV2_IMPLEMENTATION
PUBLIC
- -DGL_GLEXT_PROTOTYPES
- -DGL_API=
- -DGL_APICALL=
- -DEGLAPI=
- -DGL_API=
+ "-DGL_GLES_PROTOTYPES=1"
+ "-DGL_GLEXT_PROTOTYPES"
+ "-DEGL_EGL_PROTOTYPES=1"
+ "-DEGL_EGLEXT_PROTOTYPES"
)
+if(BUILD_SHARED_LIBS)
+else()
+ if(WIN32)
+ target_compile_definitions(libGLESv2 PRIVATE
+ "-DGL_API="
+ "-DGL_APICALL="
+ "-DEGLAPI="
+ )
+ else()
+ target_compile_definitions(libGLESv2 PRIVATE
+ "-DGL_API=__attribute__((visibility(\"default\")))"
+ "-DGL_APICALL=__attribute__((visibility(\"default\")))"
+ "-DEGLAPI=__attribute__((visibility(\"default\")))"
+ )
+ endif()
+endif()
+
target_include_directories(libGLESv2 PUBLIC "$<INSTALL_INTERFACE:include>")
##########
@@ -361,20 +390,72 @@ add_library(libEGL "src/libEGL/resource.h"
)
target_link_libraries(libEGL PRIVATE angle::common angle::libANGLE libGLESv2)
-target_include_directories(libEGL PUBLIC "$<INSTALL_INTERFACE:include>")
-target_include_directories(libEGL PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>")
+target_include_directories(libEGL PUBLIC "$<INSTALL_INTERFACE:include>" "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>")
+target_compile_definitions(libEGL
+ PRIVATE -DLIBGLESV2_IMPLEMENTATION
+ PUBLIC
+ "-DGL_GLES_PROTOTYPES=1"
+ "-DGL_GLEXT_PROTOTYPES"
+ "-DEGL_EGL_PROTOTYPES=1"
+ "-DEGL_EGLEXT_PROTOTYPES"
+)
+add_library(GL_VISIBILITY INTERFACE)
+if(WIN32)
+ target_compile_definitions(GL_VISIBILITY INTERFACE
+ "-DGL_API="
+ "-DGL_APICALL=")
+else()
+ target_compile_definitions(GL_VISIBILITY INTERFACE
+ "-DGL_API=__attribute__((visibility(\"default\")))"
+ "-DGL_APICALL=__attribute__((visibility(\"default\")))")
+endif()
+target_link_libraries(libEGL PRIVATE GL_VISIBILITY)
+target_link_libraries(libGLESv2 PRIVATE GL_VISIBILITY)
+
+if(WIN32)
+ target_compile_definitions(libEGL PRIVATE
+ "-DEGLAPI="
+ )
+else()
+ target_compile_definitions(libEGL PRIVATE
+ "-DEGLAPI=__attribute__((visibility(\"default\")))"
+ )
+endif()
+if(NOT BUILD_SHARED_LIBS)
+ add_definitions("-DANGLE_EXPORT=" "-DANGLE_UTIL_EXPORT=" "-DEGLAPI=" "-DGL_APICALL=" "-DGL_API=")
+endif()
SET_TARGET_PROPERTIES(libANGLE PROPERTIES PREFIX "")
SET_TARGET_PROPERTIES(libGLESv2 PROPERTIES PREFIX "")
SET_TARGET_PROPERTIES(libEGL PROPERTIES PREFIX "")
-install(TARGETS libEGL libGLESv2 EXPORT ANGLEExport
+install(TARGETS libEGL libGLESv2 libANGLE angle_common angle_image_util angle_gpu_info_util angle_translator angle_preprocessor GL_VISIBILITY EXPORT ANGLEExport
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
)
+if(WINDOWS_DESKTOP)
+ install(TARGETS angle_renderer_d3d angle_renderer_win32 angle_renderer_opengl EXPORT ANGLEExport
+ RUNTIME DESTINATION bin
+ LIBRARY DESTINATION lib
+ ARCHIVE DESTINATION lib
+ )
+elseif(WINDOWS_STORE)
+ install(TARGETS angle_renderer_d3d angle_renderer_winrt EXPORT ANGLEExport
+ RUNTIME DESTINATION bin
+ LIBRARY DESTINATION lib
+ ARCHIVE DESTINATION lib
+ )
+else()
+ install(TARGETS angle_renderer_opengl EXPORT ANGLEExport
+ RUNTIME DESTINATION bin
+ LIBRARY DESTINATION lib
+ ARCHIVE DESTINATION lib
+ )
+endif()
+
install(EXPORT ANGLEExport FILE unofficial-angle-config.cmake NAMESPACE unofficial::angle:: DESTINATION share/unofficial-angle)
if(NOT DISABLE_INSTALL_HEADERS)
diff --git a/ports/angle/CONTROL b/ports/angle/CONTROL index 0fb81989d..4229c6f07 100644 --- a/ports/angle/CONTROL +++ b/ports/angle/CONTROL @@ -3,4 +3,4 @@ Version: 2019-12-31-2 Homepage: https://github.com/google/angle Description: A conformant OpenGL ES implementation for Windows, Mac and Linux. The goal of ANGLE is to allow users of multiple operating systems to seamlessly run WebGL and other OpenGL ES content by translating OpenGL ES API calls to one of the hardware-supported APIs available for that platform. ANGLE currently provides translation from OpenGL ES 2.0 and 3.0 to desktop OpenGL, OpenGL ES, Direct3D 9, and Direct3D 11. Support for translation from OpenGL ES to Vulkan is underway, and future plans include compute shader support (ES 3.1) and MacOS support. -Build-Depends: egl-registry +Build-Depends: egl-registry, opengl-registry diff --git a/ports/angle/portfile.cmake b/ports/angle/portfile.cmake index 9a28591ad..08d70f608 100644 --- a/ports/angle/portfile.cmake +++ b/ports/angle/portfile.cmake @@ -1,5 +1,3 @@ -vcpkg_check_linkage(ONLY_DYNAMIC_LIBRARY) - if (VCPKG_TARGET_IS_LINUX) message(WARNING "Building with a gcc version less than 6.1 is not supported.") message(WARNING "${PORT} currently requires the following libraries from the system package manager:\n libx11-dev\n libmesa-dev\n libxi-dev\n libxext-dev\n\nThese can be installed on Ubuntu systems via apt-get install libx11-dev libmesa-dev libxi-dev libxext-dev.") @@ -22,6 +20,7 @@ vcpkg_from_github( REPO google/angle REF 1fdf6ca5141d8e349e875eab6e51d93d929a7f0e SHA512 2553307f3d10b5c32166b9ed610b4b15310dccba00c644cd35026de86d87ea2e221c2e528f33b02f01c1ded2f08150e429de1fa300b73d655f8944f6f5047a82 + # On update check headers against opengl-registry PATCHES 001-fix-uwp.patch 002-fix-builder-error.patch @@ -45,3 +44,32 @@ vcpkg_fixup_cmake_targets(CONFIG_PATH share/unofficial-angle TARGET_PATH share/u vcpkg_copy_pdbs() file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) + +# File conflict with opengl-registry! Make sure headers are similar on Update! +# angle defines some additional entrypoints. +# opengl-registry probably needs an upstream update to account for those +# Due to that all angle headers get moved to include/angle. +# If you want to use those instead of the onces provided by opengl-registry make sure +# VCPKG_INSTALLED_DIR/include/angle is before VCPKG_INSTALLED_DIR/include +file(GLOB_RECURSE angle_includes "${CURRENT_PACKAGES_DIR}/include") +file(COPY ${angle_includes} DESTINATION "${CURRENT_PACKAGES_DIR}/include/angle") + +set(_double_files + include/GLES/egl.h + include/GLES/gl.h + include/GLES/glext.h + include/GLES/glplatform.h + include/GLES2/gl2.h + include/GLES2/gl2ext.h + include/GLES2/gl2platform.h + include/GLES3/gl3.h + include/GLES3/gl31.h + include/GLES3/gl32.h + include/GLES3/gl3platform.h) +foreach(_file ${_double_files}) + if(EXISTS "${CURRENT_PACKAGES_DIR}/${_file}") + file(REMOVE "${CURRENT_PACKAGES_DIR}/${_file}") + endif() +endforeach() + + |
