diff --git a/ports/angle/001-fix-builder-error.patch b/ports/angle/001-fix-builder-error.patch new file mode 100644 index 00000000000000..e0844d7d4336b3 --- /dev/null +++ b/ports/angle/001-fix-builder-error.patch @@ -0,0 +1,28 @@ +diff --git a/src/gpu_info_util/SystemInfo_win.cpp b/src/gpu_info_util/SystemInfo_win.cpp +index f4bb137f2..86495013b 100644 +--- a/src/gpu_info_util/SystemInfo_win.cpp ++++ b/src/gpu_info_util/SystemInfo_win.cpp +@@ -6,11 +6,6 @@ + + // SystemInfo_win.cpp: implementation of the Windows-specific parts of SystemInfo.h + +-#include "gpu_info_util/SystemInfo_internal.h" +- +-#include "common/debug.h" +-#include "common/string_utils.h" +- + // Windows.h needs to be included first + #include + +@@ -19,6 +14,11 @@ + #include + #include + ++#include "gpu_info_util/SystemInfo_internal.h" ++ ++#include "common/debug.h" ++#include "common/string_utils.h" ++ + namespace angle + { + diff --git a/ports/angle/ANGLEShaderProgramVersion.h.in b/ports/angle/ANGLEShaderProgramVersion.h.in new file mode 100644 index 00000000000000..f288d0cb8f64a5 --- /dev/null +++ b/ports/angle/ANGLEShaderProgramVersion.h.in @@ -0,0 +1,2 @@ +#cmakedefine ANGLE_PROGRAM_VERSION "@ANGLE_PROGRAM_VERSION@" +#cmakedefine ANGLE_PROGRAM_VERSION_HASH_SIZE @ANGLE_PROGRAM_VERSION_HASH_SIZE@ diff --git a/ports/angle/angle_commit.h.in b/ports/angle/angle_commit.h.in index 60abdb851810af..e0dc7874155cc8 100644 --- a/ports/angle/angle_commit.h.in +++ b/ports/angle/angle_commit.h.in @@ -1,4 +1,4 @@ -#cmakedefine ANGLE_COMMIT_HASH "@ANGLE_COMMIT_HASH@" -#cmakedefine ANGLE_COMMIT_HASH_SIZE @ANGLE_COMMIT_HASH_SIZE@ -#cmakedefine ANGLE_COMMIT_DATE "@ANGLE_COMMIT_DATE@" -#cmakedefine ANGLE_REVISION @ANGLE_REVISION@ +#cmakedefine ANGLE_COMMIT_HASH "@ANGLE_COMMIT_HASH@" +#cmakedefine ANGLE_COMMIT_HASH_SIZE @ANGLE_COMMIT_HASH_SIZE@ +#cmakedefine ANGLE_COMMIT_DATE "@ANGLE_COMMIT_DATE@" +#cmakedefine ANGLE_REVISION @ANGLE_REVISION@ diff --git a/ports/angle/cmake-buildsystem/CMakeLists.txt b/ports/angle/cmake-buildsystem/CMakeLists.txt index 758f12504a45ef..e32bc25499f80c 100644 --- a/ports/angle/cmake-buildsystem/CMakeLists.txt +++ b/ports/angle/cmake-buildsystem/CMakeLists.txt @@ -1,13 +1,13 @@ cmake_minimum_required(VERSION 3.8) project(angle CXX C) -set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") include(WebKitCommon-minimal) set(ANGLE_FRAMEWORK_HEADERS_DIR "${CMAKE_BINARY_DIR}/ANGLE/headers") set(USE_ANGLE_EGL ON) -if (NOT WINDOWS_STORE) +if (NOT WINDOWS_STORE AND NOT USE_METAL) set(USE_OPENGL ON) endif() @@ -106,9 +106,6 @@ elseif (WIN32) set(angle_enable_d3d11 TRUE) elseif (UNIX) set(is_linux TRUE) - if(LINUX) - set(angle_use_x11 TRUE) - endif() endif () # VCPKG EDIT: end vcpkg modified block @@ -235,13 +232,6 @@ set(angle_gl_enum_utils # VCPKG EDIT: Update paths "src/common/gl_enum_utils_autogen.h" ) -set(angle_glslang_wrapper - "src/libANGLE/renderer/ShaderInterfaceVariableInfoMap.cpp" - "src/libANGLE/renderer/ShaderInterfaceVariableInfoMap.h" - "src/libANGLE/renderer/glslang_wrapper_utils.cpp" - "src/libANGLE/renderer/glslang_wrapper_utils.h" -) - WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS() add_subdirectory(include) @@ -271,6 +261,7 @@ if (USE_ANGLE_EGL OR ENABLE_WEBGL) target_compile_definitions(ANGLEFramework INTERFACE ${gl_prototypes}) add_library(GLESv2 ${GLESv2_LIBRARY_TYPE} + ${libglesv2_entry_point_sources} ${libglesv2_sources} ) target_include_directories(GLESv2 PRIVATE ${ANGLE_PRIVATE_INCLUDE_DIRECTORIES}) @@ -391,16 +382,6 @@ add_library(ANGLE::ANGLE ALIAS ANGLEFramework) #### VCPKG EDIT: #### various vcpkg additions and install commands -# X11 support -if (angle_use_x11) - find_package(X11 COMPONENTS Xext Xi REQUIRED) - target_include_directories(ANGLE PRIVATE ${X11_INCLUDE_DIR}) - target_sources(ANGLE PRIVATE ${libangle_gpu_info_util_x11_sources}) - target_sources(ANGLE PRIVATE "src/gpu_info_util/SystemInfo_x11.cpp") - target_compile_definitions(ANGLE PRIVATE ANGLE_USE_X11 GPU_INFO_USE_X11) - target_link_libraries(ANGLE PRIVATE ${X11_LIBRARIES} X11::X11 X11::Xi X11::Xext) -endif() - # set export names of some targets to match prior vcpkg port buildsystem if(TARGET EGL) set_target_properties(EGL PROPERTIES EXPORT_NAME libEGL) @@ -414,7 +395,6 @@ set(_possibleTargets EGL GLESv2 ANGLE) foreach(_target IN LISTS _possibleTargets) if(TARGET ${_target}) list(APPEND _installableTargets "${_target}") - target_include_directories(${_target} INTERFACE $) endif() endforeach() diff --git a/ports/angle/cmake-buildsystem/PlatformLinux.cmake b/ports/angle/cmake-buildsystem/PlatformLinux.cmake index 018bf7f85e3970..4a1f9ca3a2b0db 100644 --- a/ports/angle/cmake-buildsystem/PlatformLinux.cmake +++ b/ports/angle/cmake-buildsystem/PlatformLinux.cmake @@ -8,7 +8,7 @@ endif () if (USE_ANGLE_EGL OR ENABLE_WEBGL) list(APPEND ANGLE_SOURCES - ${_gl_backend_sources} + ${gl_backend_sources} ${angle_system_utils_sources_linux} ${angle_system_utils_sources_posix} diff --git a/ports/angle/cmake-buildsystem/PlatformMac.cmake b/ports/angle/cmake-buildsystem/PlatformMac.cmake index 4fda2ba46bb02d..e7fb528d086a4d 100644 --- a/ports/angle/cmake-buildsystem/PlatformMac.cmake +++ b/ports/angle/cmake-buildsystem/PlatformMac.cmake @@ -17,11 +17,11 @@ list(APPEND ANGLEGLESv2_LIBRARIES # Metal backend if(USE_METAL) list(APPEND ANGLE_SOURCES - ${_metal_backend_sources} + ${metal_backend_sources} - ${angle_translator_lib_metal_sources} - - ${angle_glslang_wrapper} + ${angle_translator_lib_msl_sources} + + ${angle_translator_glsl_apple_sources} ) list(APPEND ANGLE_DEFINITIONS @@ -38,15 +38,14 @@ if(USE_OPENGL) list(APPEND ANGLE_SOURCES ${angle_translator_glsl_base_sources} ${angle_translator_glsl_sources} - ${angle_translator_apple_sources} ) # Enable GLSL compiler output. - list(APPEND ANGLE_DEFINITIONS ANGLE_ENABLE_GLSL ANGLE_ENABLE_GL_DESKTOP_BACKEND ANGLE_ENABLE_APPLE_WORKAROUNDS) + list(APPEND ANGLE_DEFINITIONS ANGLE_ENABLE_GLSL ANGLE_ENABLE_GL_DESKTOP_BACKEND ANGLE_ENABLE_APPLE_WORKAROUNDS ANGLE_ENABLE_CGL) endif() -if(USE_ANGLE_EGL OR ENABLE_WEBGL) +if(USE_OPENGL OR ENABLE_WEBGL) list(APPEND ANGLE_SOURCES - ${_gl_backend_sources} + ${gl_backend_sources} ${libangle_gl_egl_dl_sources} ${libangle_gl_egl_sources} diff --git a/ports/angle/cmake-buildsystem/PlatformWin.cmake b/ports/angle/cmake-buildsystem/PlatformWin.cmake index 97ac61915f74c5..ca08a4f8c12ed5 100644 --- a/ports/angle/cmake-buildsystem/PlatformWin.cmake +++ b/ports/angle/cmake-buildsystem/PlatformWin.cmake @@ -9,8 +9,8 @@ list(APPEND ANGLE_DEFINITIONS # We're targeting Windows 10 which will have DirectX 11 list(APPEND ANGLE_SOURCES - ${_d3d11_backend_sources} - ${_d3d_shared_sources} + ${d3d11_backend_sources} + ${d3d_shared_sources} ${angle_translator_hlsl_sources} @@ -25,11 +25,12 @@ list(APPEND ANGLE_DEFINITIONS "-DANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES={ \"d3dcompiler_47.dll\", \"d3dcompiler_46.dll\", \"d3dcompiler_43.dll\" }" ) -list(APPEND ANGLEGLESv2_LIBRARIES dxguid dxgi) +# https://issues.angleproject.org/issues/345274916 +list(APPEND ANGLEGLESv2_LIBRARIES dxguid dxgi synchronization) if(NOT angle_is_winuwp) # vcpkg EDIT: Exclude DirectX 9 on UWP # DirectX 9 support should be optional but ANGLE will not compile without it - list(APPEND ANGLE_SOURCES ${_d3d9_backend_sources}) + list(APPEND ANGLE_SOURCES ${d3d9_backend_sources}) list(APPEND ANGLE_DEFINITIONS ANGLE_ENABLE_D3D9) list(APPEND ANGLEGLESv2_LIBRARIES d3d9) endif() @@ -52,7 +53,7 @@ if(USE_OPENGL) if(USE_ANGLE_EGL OR ENABLE_WEBGL) list(APPEND ANGLE_SOURCES - ${_gl_backend_sources} + ${gl_backend_sources} ${libangle_gl_egl_dl_sources} ${libangle_gl_egl_sources} diff --git a/ports/angle/cmake-buildsystem/cmake/DetectSSE2.cmake b/ports/angle/cmake-buildsystem/cmake/DetectSSE2.cmake new file mode 100644 index 00000000000000..cdd1ac57234da3 --- /dev/null +++ b/ports/angle/cmake-buildsystem/cmake/DetectSSE2.cmake @@ -0,0 +1,63 @@ +# https://github.com/WebKit/WebKit/blob/0742522b24152262b04913242cb0b3c48de92ba0/Source/cmake/DetectSSE2.cmake + +################################# +# Check for the presence of SSE2. +# +# Once done, this will define: +# - SSE2_SUPPORT_FOUND - the system supports (at least) SSE2. +# +# Copyright (c) 2014, Pablo Fernandez Alcantarilla, Jesus Nuevo +# Copyright (c) 2019, Igalia S.L. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# * Neither the name of the copyright holders nor the names of its contributors +# may be used to endorse or promote products derived from this software without +# specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT +# SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY +# WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +set(SSE2_SUPPORT_FOUND FALSE) + +macro(CHECK_FOR_SSE2) + include(CheckCXXSourceRuns) + + check_cxx_source_runs(" + #include + int main () + { + __m128d a, b; + double vals[2] = {0}; + a = _mm_loadu_pd (vals); + b = _mm_add_pd (a,a); + _mm_storeu_pd (vals,b); + return 0; + }" + HAVE_SSE2_EXTENSIONS) + + if (COMPILER_IS_GCC_OR_CLANG OR (MSVC AND NOT CMAKE_CL_64)) + if (HAVE_SSE2_EXTENSIONS) + set(SSE2_SUPPORT_FOUND TRUE) + message(STATUS "Found SSE2 extensions") + endif () + endif () + +endmacro(CHECK_FOR_SSE2) + +CHECK_FOR_SSE2() \ No newline at end of file diff --git a/ports/angle/cmake-buildsystem/cmake/WebKitCommon-minimal.cmake b/ports/angle/cmake-buildsystem/cmake/WebKitCommon-minimal.cmake index b0df91f9533ea9..894cf9c10ac59c 100644 --- a/ports/angle/cmake-buildsystem/cmake/WebKitCommon-minimal.cmake +++ b/ports/angle/cmake-buildsystem/cmake/WebKitCommon-minimal.cmake @@ -168,10 +168,10 @@ if (NOT HAS_RUN_WEBKIT_COMMON) include(ProcessorCount) # include(WebKitPackaging) - include(WebKitMacros) + include(WebKitMacros-minimal) # include(WebKitFS) # include(WebKitCCache) - include(WebKitCompilerFlags) + include(WebKitCompilerFlags-minimal) # include(WebKitStaticAnalysis) # include(WebKitFeatures) # include(WebKitFindPackage) diff --git a/ports/angle/cmake-buildsystem/cmake/WebKitCompilerFlags-minimal.cmake b/ports/angle/cmake-buildsystem/cmake/WebKitCompilerFlags-minimal.cmake new file mode 100644 index 00000000000000..d2592760489812 --- /dev/null +++ b/ports/angle/cmake-buildsystem/cmake/WebKitCompilerFlags-minimal.cmake @@ -0,0 +1,58 @@ +# VCPKG NOTE: A minimal version of WebKit's https://github.com/WebKit/WebKit/blob/0742522b24152262b04913242cb0b3c48de92ba0/Source/cmake/WebKitCompilerFlags.cmake +# To support the adapted ANGLE CMake buildsystem + +# Checks whether all the given compiler flags are supported by the compiler. +# The _compiler may be either "C" or "CXX", and the result from the check +# will be stored in the variable named by _result. +function(WEBKIT_CHECK_COMPILER_FLAGS _compiler _result) + string(TOUPPER "${_compiler}" _compiler) + set(${_result} FALSE PARENT_SCOPE) + foreach (_flag IN LISTS ARGN) + # If an equals (=) character is present in a variable name, it will + # not be cached correctly, and the check will be retried ad nauseam. + string(REPLACE "=" "__" _cachevar "${_compiler}_COMPILER_SUPPORTS_${_flag}") + if (${_compiler} STREQUAL CXX) + check_cxx_compiler_flag("${_flag}" "${_cachevar}") + elseif (${_compiler} STREQUAL C) + check_c_compiler_flag("${_flag}" "${_cachevar}") + else () + set(${_cachevar} FALSE CACHE INTERNAL "" FORCE) + message(WARNING "WEBKIT_CHECK_COMPILER_FLAGS: unknown compiler '${_compiler}'") + return() + endif () + if (NOT ${_cachevar}) + return() + endif () + endforeach () + set(${_result} TRUE PARENT_SCOPE) +endfunction() + + +# Appends flags to COMPILE_OPTIONS of _subject if supported by the C +# or CXX _compiler. The _subject argument depends on its _kind, it may be +# a target name (with TARGET as _kind), or a path (with SOURCE or DIRECTORY +# as _kind). +function(WEBKIT_ADD_COMPILER_FLAGS _compiler _kind _subject) + foreach (_flag IN LISTS ARGN) + WEBKIT_CHECK_COMPILER_FLAGS(${_compiler} flag_supported "${_flag}") + if (flag_supported) + set_property(${_kind} ${_subject} APPEND PROPERTY COMPILE_OPTIONS "${_flag}") + endif () + endforeach () +endfunction() + +# Appends flags to COMPILE_FLAGS of _target if supported by the C compiler. +# Note that it is simply not possible to pass different C and C++ flags, unless +# we drop support for the Visual Studio backend and use the COMPILE_LANGUAGE +# generator expression. This is a very serious limitation. +macro(WEBKIT_ADD_TARGET_C_FLAGS _target) + WEBKIT_ADD_COMPILER_FLAGS(C TARGET ${_target} ${ARGN}) +endmacro() + +# Appends flags to COMPILE_FLAGS of _target if supported by the C++ compiler. +# Note that it is simply not possible to pass different C and C++ flags, unless +# we drop support for the Visual Studio backend and use the COMPILE_LANGUAGE +# generator expression. This is a very serious limitation. +macro(WEBKIT_ADD_TARGET_CXX_FLAGS _target) + WEBKIT_ADD_COMPILER_FLAGS(CXX TARGET ${_target} ${ARGN}) +endmacro() diff --git a/ports/angle/cmake-buildsystem/cmake/WebKitMacros-minimal.cmake b/ports/angle/cmake-buildsystem/cmake/WebKitMacros-minimal.cmake new file mode 100644 index 00000000000000..f9d5b0d6db29e4 --- /dev/null +++ b/ports/angle/cmake-buildsystem/cmake/WebKitMacros-minimal.cmake @@ -0,0 +1,49 @@ +# VCPKG NOTE: A minimal version of WebKit's https://github.com/WebKit/WebKit/blob/0742522b24152262b04913242cb0b3c48de92ba0/Source/cmake/WebKitMacros.cmake +# To support the adapted ANGLE CMake buildsystem + +# This file is for macros that are used by multiple projects. If your macro is +# exclusively needed in only one subdirectory of Source (e.g. only needed by +# WebCore), then put it there instead. + +macro(WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS) + set(_file ${CMAKE_CURRENT_SOURCE_DIR}/Platform${PORT}.cmake) + if (EXISTS ${_file}) + message(STATUS "Using platform-specific CMakeLists: ${_file}") + include(${_file}) + else () + message(STATUS "Platform-specific CMakeLists not found: ${_file}") + endif () +endmacro() + +function(WEBKIT_COPY_FILES target_name) + set(options FLATTENED) + set(oneValueArgs DESTINATION) + set(multiValueArgs FILES) + cmake_parse_arguments(opt "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + set(files ${opt_FILES}) + set(dst_files) + foreach (file IN LISTS files) + if (IS_ABSOLUTE ${file}) + set(src_file ${file}) + else () + set(src_file ${CMAKE_CURRENT_SOURCE_DIR}/${file}) + endif () + if (opt_FLATTENED) + get_filename_component(filename ${file} NAME) + set(dst_file ${opt_DESTINATION}/${filename}) + else () + get_filename_component(file_dir ${file} DIRECTORY) + file(MAKE_DIRECTORY ${opt_DESTINATION}/${file_dir}) + set(dst_file ${opt_DESTINATION}/${file}) + endif () + add_custom_command(OUTPUT ${dst_file} + COMMAND ${CMAKE_COMMAND} -E copy ${src_file} ${dst_file} + MAIN_DEPENDENCY ${file} + VERBATIM + ) + list(APPEND dst_files ${dst_file}) + endforeach () + add_custom_target(${target_name} ALL DEPENDS ${dst_files}) +endfunction() + + diff --git a/ports/angle/portfile.cmake b/ports/angle/portfile.cmake index 01c1d7166b4225..8bc9dd49822171 100644 --- a/ports/angle/portfile.cmake +++ b/ports/angle/portfile.cmake @@ -1,6 +1,6 @@ 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 mesa-common-dev\n libxi-dev\n libxext-dev\n\nThese can be installed on Ubuntu systems via apt-get install libx11-dev mesa-common-dev libxi-dev libxext-dev.") + message(WARNING "${PORT} currently requires the following libraries from the system package manager:\n mesa-common-dev\n\nThese can be installed on Ubuntu systems via apt-get install mesa-common-dev.") endif() if (VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") @@ -30,11 +30,16 @@ else() set(ANGLE_BUILDSYSTEM_PORT "Linux") endif() -# chromium/5414 -set(ANGLE_COMMIT aa63ea230e0c507e7b4b164a30e502fb17168c17) -set(ANGLE_VERSION 5414) -set(ANGLE_SHA512 a3b55d4b484e1e9ece515d60af1d47a80a0576b198d9a2397e4e68b16efd83468dcdfadc98dae57ff17f01d02d74526f8b59fdf00661b70a45b6dd266e5ffe38) -set(ANGLE_THIRDPARTY_ZLIB_COMMIT 44d9b490c721abdb923d5c6c23ac211e45ffb1a5) +set(USE_METAL OFF) +if ("metal" IN_LIST FEATURES) + set(USE_METAL ON) +endif() + +# chromium/7258 +set(ANGLE_COMMIT 79ac1a8cd767a32cce6401203e20c4bd4ca4d539) +set(ANGLE_VERSION 7258) +set(ANGLE_SHA512 a3d5d09460f05f1f1c081411bf15f585bb8add5f3db7c4854dc2cf2ef1fd22dd5b2dd5d3de78bfb8bcdae8459dd9581f7dce331acd34053c87c84cfe6c3d134c) +set(ANGLE_THIRDPARTY_ZLIB_COMMIT 4028ebf8710ee39d2286cb0f847f9b95c59f84d8) vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH @@ -43,9 +48,7 @@ vcpkg_from_github( SHA512 ${ANGLE_SHA512} # On update check headers against opengl-registry PATCHES - 001-fix-uwp.patch - 002-fix-builder-error.patch - 003-fix-mingw.patch + 001-fix-builder-error.patch ) # Generate angle_commit.h @@ -55,19 +58,29 @@ set(ANGLE_COMMIT_DATE "invalid-date") set(ANGLE_REVISION "${ANGLE_VERSION}") configure_file("${CMAKE_CURRENT_LIST_DIR}/angle_commit.h.in" "${SOURCE_PATH}/angle_commit.h" @ONLY) configure_file("${CMAKE_CURRENT_LIST_DIR}/angle_commit.h.in" "${SOURCE_PATH}/src/common/angle_commit.h" @ONLY) + +# Generate ANGLEShaderProgramVersion.h.in +# FIXME: ANGLE's build system hashes the renderer files to determine the program version hash. +# For now, we'll just use the ANGLE commit hash. +# See: https://github.com/google/angle/commit/82826be01fcc4d02a637312f4df3ba97e74f7226#diff-81195814d06b98e6258a63901769078f42c522448b2847a33bd51e24ac9faef6 +set(ANGLE_PROGRAM_VERSION_HASH_SIZE 12) +string(SUBSTRING "${ANGLE_COMMIT}" 0 ${ANGLE_PROGRAM_VERSION_HASH_SIZE} ANGLE_PROGRAM_VERSION) +configure_file("${CMAKE_CURRENT_LIST_DIR}/ANGLEShaderProgramVersion.h.in" "${SOURCE_PATH}/ANGLEShaderProgramVersion.h" @ONLY) +configure_file("${CMAKE_CURRENT_LIST_DIR}/ANGLEShaderProgramVersion.h.in" "${SOURCE_PATH}/src/common/ANGLEShaderProgramVersion.h" @ONLY) + file(COPY "${CMAKE_CURRENT_LIST_DIR}/unofficial-angle-config.cmake" DESTINATION "${SOURCE_PATH}") -set(ANGLE_WEBKIT_BUILDSYSTEM_COMMIT "bb1da00b9ba878d228a5e9834a0767dbca2fee43") +set(ANGLE_WEBKIT_BUILDSYSTEM_COMMIT "0742522b24152262b04913242cb0b3c48de92ba0") # Download WebKit gni-to-cmake.py conversion script vcpkg_download_distfile(GNI_TO_CMAKE_PY URLS "https://github.com/WebKit/WebKit/raw/${ANGLE_WEBKIT_BUILDSYSTEM_COMMIT}/Source/ThirdParty/ANGLE/gni-to-cmake.py" FILENAME "gni-to-cmake.py" - SHA512 9da35caf2db2e849d6cc85721ba0b77eee06b6f65a7c5314fb80483db4949b0b6e9bf4b2d4fc63613665629b24e9b052e03fb1451b09313d881297771a4f2736 + SHA512 cf9dab1b59cd44b9ce05a2dc4636115e770dfe7d5cfbd90c3fef659628ac8155c57b866480f7cfe9a0afeb31ff5ce5eed74473f386120a7fc5910e8b032bd61d ) # Generate CMake files from GN / GNI files -vcpkg_find_acquire_program(PYTHON3) +x_vcpkg_get_python_packages(PYTHON_VERSION "3" OUT_PYTHON_VAR "PYTHON3" PACKAGES ply) set(_root_gni_files_to_convert "compiler.gni Compiler.cmake" @@ -110,27 +123,6 @@ vcpkg_download_distfile(WK_ANGLE_INCLUDE_CMAKELISTS ) configure_file("${WK_ANGLE_INCLUDE_CMAKELISTS}" "${SOURCE_PATH}/include/CMakeLists.txt" COPYONLY) -vcpkg_download_distfile(WK_ANGLE_CMAKE_WEBKITCOMPILERFLAGS - URLS "https://github.com/WebKit/WebKit/raw/${ANGLE_WEBKIT_BUILDSYSTEM_COMMIT}/Source/cmake/WebKitCompilerFlags.cmake" - FILENAME "WebKitCompilerFlags.cmake" - SHA512 63f981694ae37d4c4ca4c34e2bf62b4d4602b6a1a660851304fa7a6ee834fc58fa6730eeb41ef4e075550f3c8b675823d4d00bdcd72ca869c6d5ab11196b33bb -) -file(COPY "${WK_ANGLE_CMAKE_WEBKITCOMPILERFLAGS}" DESTINATION "${SOURCE_PATH}/cmake") - -vcpkg_download_distfile(WK_ANGLE_CMAKE_DETECTSSE2 - URLS "https://github.com/WebKit/WebKit/raw/${ANGLE_WEBKIT_BUILDSYSTEM_COMMIT}/Source/cmake/DetectSSE2.cmake" - FILENAME "DetectSSE2.cmake" - SHA512 219a4c8591ee31d11eb3d1e4803cc3c9d4573984bb25ecac6f2c76e6a3dab598c00b0157d0f94b18016de6786e49d8b29a161693a5ce23d761c8fe6a798c1bca -) -file(COPY "${WK_ANGLE_CMAKE_DETECTSSE2}" DESTINATION "${SOURCE_PATH}/cmake") - -vcpkg_download_distfile(WK_ANGLE_CMAKE_WEBKITMACROS - URLS "https://github.com/WebKit/WebKit/raw/${ANGLE_WEBKIT_BUILDSYSTEM_COMMIT}/Source/cmake/WebKitMacros.cmake" - FILENAME "WebKitMacros.cmake" - SHA512 0d126b1d1b0ca995c2ea6e51c73326db363f560f3f07912ce58c7c022d9257d27b963dac56aee0e9604ca7a3d74c5aa9f0451c243fec922fb485dd2253685ab6 -) -file(COPY "${WK_ANGLE_CMAKE_WEBKITMACROS}" DESTINATION "${SOURCE_PATH}/cmake") - # Copy additional custom CMake buildsystem into appropriate folders file(GLOB MAIN_BUILDSYSTEM "${CMAKE_CURRENT_LIST_DIR}/cmake-buildsystem/CMakeLists.txt" "${CMAKE_CURRENT_LIST_DIR}/cmake-buildsystem/*.cmake") file(COPY ${MAIN_BUILDSYSTEM} DESTINATION "${SOURCE_PATH}") @@ -138,16 +130,16 @@ file(GLOB MODULES "${CMAKE_CURRENT_LIST_DIR}/cmake-buildsystem/cmake/*.cmake") file(COPY ${MODULES} DESTINATION "${SOURCE_PATH}/cmake") function(checkout_in_path PATH URL REF) - if(EXISTS "${PATH}") - return() - endif() - vcpkg_from_git( OUT_SOURCE_PATH DEP_SOURCE_PATH URL "${URL}" REF "${REF}" ) - file(RENAME "${DEP_SOURCE_PATH}" "${PATH}") + if (CMAKE_HOST_WIN32) + file(COPY "${DEP_SOURCE_PATH}/" DESTINATION "${PATH}") + else() + file(RENAME "${DEP_SOURCE_PATH}" "${PATH}") + endif() file(REMOVE_RECURSE "${DEP_SOURCE_PATH}") endfunction() @@ -165,6 +157,7 @@ vcpkg_cmake_configure( "-DPORT=${ANGLE_BUILDSYSTEM_PORT}" "-DANGLE_USE_D3D11_COMPOSITOR_NATIVE_WINDOW=${ANGLE_USE_D3D11_COMPOSITOR_NATIVE_WINDOW}" "-DVCPKG_TARGET_IS_WINDOWS=${VCPKG_TARGET_IS_WINDOWS}" + "-DUSE_METAL=${USE_METAL}" ) vcpkg_cmake_install() diff --git a/ports/angle/unofficial-angle-config.cmake b/ports/angle/unofficial-angle-config.cmake index 79abf89d7849a0..f0b712b9904d73 100644 --- a/ports/angle/unofficial-angle-config.cmake +++ b/ports/angle/unofficial-angle-config.cmake @@ -1,7 +1,4 @@ include(CMakeFindDependencyMacro) find_dependency(ZLIB) -if(UNIX AND NOT APPLE) - find_dependency(X11 COMPONENTS Xext Xi) -endif() include("${CMAKE_CURRENT_LIST_DIR}/unofficial-angle-targets.cmake") diff --git a/ports/angle/vcpkg.json b/ports/angle/vcpkg.json index de293cd1af5442..2881c583f8a135 100644 --- a/ports/angle/vcpkg.json +++ b/ports/angle/vcpkg.json @@ -1,7 +1,6 @@ { "name": "angle", - "version-string": "chromium_5414", - "port-version": 10, + "version-string": "chromium_7258", "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." @@ -10,18 +9,6 @@ "license": "BSD-3-Clause", "dependencies": [ "egl-registry", - { - "name": "libx11", - "platform": "linux" - }, - { - "name": "libxext", - "platform": "linux" - }, - { - "name": "libxi", - "platform": "linux" - }, "opengl-registry", { "name": "vcpkg-cmake", @@ -31,6 +18,16 @@ "name": "vcpkg-cmake-config", "host": true }, + { + "name": "vcpkg-get-python-packages", + "host": true + }, "zlib" - ] + ], + "features": { + "metal": { + "description": "Metal support for angle", + "supports": "osx | ios" + } + } } diff --git a/versions/a-/angle.json b/versions/a-/angle.json index 1b24c0ed347870..932cc2794626f6 100644 --- a/versions/a-/angle.json +++ b/versions/a-/angle.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "d344a4b6599e8c2c79256b47ff499a9844ac6334", + "version-string": "chromium_7258", + "port-version": 0 + }, { "git-tree": "025eefba308651be2ae69502477d1201dfdf04ea", "version-string": "chromium_5414", diff --git a/versions/baseline.json b/versions/baseline.json index 28382bd97df375..63ecb14e2296e9 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -137,8 +137,8 @@ "port-version": 0 }, "angle": { - "baseline": "chromium_5414", - "port-version": 10 + "baseline": "chromium_7258", + "port-version": 0 }, "ankurvdev-embedresource": { "baseline": "0.0.12",