aboutsummaryrefslogtreecommitdiff
path: root/ports/angle
diff options
context:
space:
mode:
authorAlexander Saprykin <xelfium@gmail.com>2018-05-26 13:27:14 +0200
committerGitHub <noreply@github.com>2018-05-26 13:27:14 +0200
commit4ce5f064282c3a8d8d710aa82af7aa346b0c6dd5 (patch)
treed95c9490352eb73f078d34a33bc4bb44ac9fa48b /ports/angle
parentfb689bd13dd6ba563a885d71fff1dd2b32a615db (diff)
parent2ac7527b40b1dbeb7856b9f763362c1e139e2ca9 (diff)
downloadvcpkg-4ce5f064282c3a8d8d710aa82af7aa346b0c6dd5.tar.gz
vcpkg-4ce5f064282c3a8d8d710aa82af7aa346b0c6dd5.zip
Merge pull request #1 from Microsoft/master
Update vcpkg from upstream
Diffstat (limited to 'ports/angle')
-rw-r--r--ports/angle/001-fix-uwp.patch113
-rw-r--r--ports/angle/CMakeLists.txt210
-rw-r--r--ports/angle/CONTROL4
-rw-r--r--ports/angle/commit.h3
-rw-r--r--ports/angle/portfile.cmake40
5 files changed, 370 insertions, 0 deletions
diff --git a/ports/angle/001-fix-uwp.patch b/ports/angle/001-fix-uwp.patch
new file mode 100644
index 000000000..bae1c8724
--- /dev/null
+++ b/ports/angle/001-fix-uwp.patch
@@ -0,0 +1,113 @@
+diff --git "a//src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.cpp" "b/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.cpp"
+index dd37ace8..9116b9e6 100644
+--- "a/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.cpp"
++++ "b/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.cpp"
+@@ -141,6 +141,7 @@ HRESULT CoreWindowNativeWindow::createSwapChain(ID3D11Device *device,
+ unsigned int width,
+ unsigned int height,
+ bool containsAlpha,
++ unsigned int samples,
+ IDXGISwapChain1 **swapChain)
+ {
+ if (device == nullptr || factory == nullptr || swapChain == nullptr || width == 0 ||
+@@ -154,7 +155,7 @@ HRESULT CoreWindowNativeWindow::createSwapChain(ID3D11Device *device,
+ swapChainDesc.Height = height;
+ swapChainDesc.Format = format;
+ swapChainDesc.Stereo = FALSE;
+- swapChainDesc.SampleDesc.Count = 1;
++ swapChainDesc.SampleDesc.Count = samples;
+ swapChainDesc.SampleDesc.Quality = 0;
+ swapChainDesc.BufferUsage =
+ DXGI_USAGE_SHADER_INPUT | DXGI_USAGE_RENDER_TARGET_OUTPUT | DXGI_USAGE_BACK_BUFFER;
+diff --git "a/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.h" "b/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.h"
+index d43bf0ba..77b4ae95 100644
+--- "a/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.h"
++++ "b/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.h"
+@@ -32,7 +32,8 @@ class CoreWindowNativeWindow : public InspectableNativeWindow, public std::enabl
+ DXGI_FORMAT format,
+ unsigned int width,
+ unsigned int height,
+- bool containsAlpha,
++ bool containsAlpha,
++ unsigned int samples,
+ IDXGISwapChain1 **swapChain) override;
+
+ protected:
+diff --git "a/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.h" "b/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.h"
+index 3e67269f..a66935ce 100644
+--- "a/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.h"
++++ "b/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.h"
+@@ -53,6 +53,7 @@ class InspectableNativeWindow
+ unsigned int width,
+ unsigned int height,
+ bool containsAlpha,
++ unsigned int samples,
+ IDXGISwapChain1 **swapChain) = 0;
+
+ bool getClientRect(RECT *rect)
+diff --git "a/src/libANGLE/renderer/d3d/d3d11/winrt/NativeWindow11WinRT.cpp" "b/src/libANGLE/renderer/d3d/d3d11/winrt/NativeWindow11WinRT.cpp"
+index 2ef2235c..284fccbb 100644
+--- "a/src/libANGLE/renderer/d3d/d3d11/winrt/NativeWindow11WinRT.cpp"
++++ "b/src/libANGLE/renderer/d3d/d3d11/winrt/NativeWindow11WinRT.cpp"
+@@ -89,6 +89,7 @@ HRESULT NativeWindow11WinRT::createSwapChain(ID3D11Device *device,
+ DXGI_FORMAT format,
+ UINT width,
+ UINT height,
++ UINT samples,
+ IDXGISwapChain **swapChain)
+ {
+ if (mImpl)
+@@ -96,7 +97,7 @@ HRESULT NativeWindow11WinRT::createSwapChain(ID3D11Device *device,
+ IDXGIFactory2 *factory2 = d3d11::DynamicCastComObject<IDXGIFactory2>(factory);
+ IDXGISwapChain1 *swapChain1 = nullptr;
+ HRESULT result =
+- mImpl->createSwapChain(device, factory2, format, width, height, mHasAlpha, &swapChain1);
++ mImpl->createSwapChain(device, factory2, format, width, height, mHasAlpha, samples, &swapChain1);
+ SafeRelease(factory2);
+ *swapChain = static_cast<IDXGISwapChain *>(swapChain1);
+ return result;
+diff --git "a/src/libANGLE/renderer/d3d/d3d11/winrt/NativeWindow11WinRT.h" "b/src/libANGLE/renderer/d3d/d3d11/winrt/NativeWindow11WinRT.h"
+index 996fd3a1..97a2c2c4 100644
+--- "a/src/libANGLE/renderer/d3d/d3d11/winrt/NativeWindow11WinRT.h"
++++ "b/src/libANGLE/renderer/d3d/d3d11/winrt/NativeWindow11WinRT.h"
+@@ -34,6 +34,7 @@ class NativeWindow11WinRT : public NativeWindow11
+ DXGI_FORMAT format,
+ UINT width,
+ UINT height,
++ UINT samples,
+ IDXGISwapChain **swapChain) override;
+
+ void commitChange() override;
+diff --git "a/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.cpp" "b/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.cpp"
+index c6d07fc8..89d9f870 100644
+--- "a/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.cpp"
++++ "b/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.cpp"
+@@ -246,6 +246,7 @@ HRESULT SwapChainPanelNativeWindow::createSwapChain(ID3D11Device *device,
+ unsigned int width,
+ unsigned int height,
+ bool containsAlpha,
++ unsigned int samples,
+ IDXGISwapChain1 **swapChain)
+ {
+ if (device == nullptr || factory == nullptr || swapChain == nullptr || width == 0 ||
+@@ -259,7 +260,7 @@ HRESULT SwapChainPanelNativeWindow::createSwapChain(ID3D11Device *device,
+ swapChainDesc.Height = height;
+ swapChainDesc.Format = format;
+ swapChainDesc.Stereo = FALSE;
+- swapChainDesc.SampleDesc.Count = 1;
++ swapChainDesc.SampleDesc.Count = samples;
+ swapChainDesc.SampleDesc.Quality = 0;
+ swapChainDesc.BufferUsage =
+ DXGI_USAGE_SHADER_INPUT | DXGI_USAGE_RENDER_TARGET_OUTPUT | DXGI_USAGE_BACK_BUFFER;
+diff --git "a/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.h" "b/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.h"
+index f9a2fc0e..dc5c804e 100644
+--- "a/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.h"
++++ "b/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.h"
+@@ -27,6 +27,7 @@ class SwapChainPanelNativeWindow : public InspectableNativeWindow, public std::e
+ unsigned int width,
+ unsigned int height,
+ bool containsAlpha,
++ unsigned int samples,
+ IDXGISwapChain1 **swapChain) override;
+
+ protected:
diff --git a/ports/angle/CMakeLists.txt b/ports/angle/CMakeLists.txt
new file mode 100644
index 000000000..53fff2223
--- /dev/null
+++ b/ports/angle/CMakeLists.txt
@@ -0,0 +1,210 @@
+cmake_minimum_required(VERSION 3.8)
+project(angle CXX)
+
+if(WIN32 AND NOT WINDOWS_STORE)
+ set(WINDOWS_DESKTOP 1)
+else()
+ set(WINDOWS_DESKTOP 0)
+endif()
+
+add_compile_options(/d2guard4 /Wv:18)
+set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /guard:cf")
+
+add_definitions(
+ -D_CRT_SECURE_NO_DEPRECATE
+ -D_SCL_SECURE_NO_WARNINGS
+ -D_HAS_EXCEPTIONS=0
+ -DNOMINMAX
+ -DANGLE_STANDALONE_BUILD
+ -DANGLE_ENABLE_DEBUG_ANNOTATIONS
+)
+
+configure_file(commit.h include/id/commit.h COPYONLY)
+include_directories(include src ${CMAKE_CURRENT_BINARY_DIR}/include)
+
+##########
+# angle::common
+file(GLOB ANGLE_COMMON_SOURCES "src/common/*.h" "src/common/*.inl" "src/common/*.cpp" "src/common/third_party/base/*.h")
+list(FILTER ANGLE_COMMON_SOURCES EXCLUDE REGEX "_unittest|event_tracer|_linux|_mac")
+add_library(angle_common STATIC ${ANGLE_COMMON_SOURCES})
+target_include_directories(angle_common PUBLIC 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})
+target_link_libraries(angle_image_util PRIVATE angle::common)
+add_library(angle::image_util ALIAS angle_image_util)
+
+##########
+# angle::translator
+file(GLOB TRANSLATOR_SOURCES
+ "src/compiler/translator/glslang.l"
+ "src/compiler/translator/glslang.y"
+ "src/compiler/translator/*.h"
+ "src/compiler/translator/*.cpp"
+ "src/third_party/compiler/ArrayBoundsClamper.cpp"
+)
+add_library(angle_translator STATIC ${TRANSLATOR_SOURCES})
+target_compile_definitions(angle_translator PUBLIC
+ -DANGLE_ENABLE_ESSL
+ -DANGLE_ENABLE_GLSL
+ -DANGLE_ENABLE_HLSL
+)
+target_link_libraries(angle_translator PRIVATE angle::common)
+add_library(angle::translator ALIAS angle_translator)
+
+##########
+# angle::preprocessor
+file(GLOB PREPROCESSOR_SOURCES
+ "src/compiler/preprocessor/*.h"
+ "src/compiler/preprocessor/*.cpp"
+)
+add_library(angle_preprocessor STATIC ${PREPROCESSOR_SOURCES})
+target_link_libraries(angle_preprocessor PRIVATE angle::common)
+add_library(angle::preprocessor ALIAS angle_preprocessor)
+
+##########
+# libANGLE
+
+## OpenGL Renderer
+if(WINDOWS_DESKTOP)
+ file(GLOB LIBANGLE_GL_SOURCES
+ "src/libANGLE/renderer/gl/*.cpp"
+ "src/libANGLE/renderer/gl/*.inl"
+ "src/libANGLE/renderer/gl/*.h"
+
+ "src/libANGLE/renderer/gl/wgl/*.cpp"
+ "src/libANGLE/renderer/gl/wgl/*.inl"
+ "src/libANGLE/renderer/gl/wgl/*.h"
+ )
+ list(FILTER LIBANGLE_GL_SOURCES EXCLUDE REGEX "_unittest")
+ add_library(angle_renderer_opengl INTERFACE)
+ target_sources(angle_renderer_opengl INTERFACE ${LIBANGLE_GL_SOURCES})
+ target_compile_definitions(angle_renderer_opengl INTERFACE -DANGLE_ENABLE_OPENGL)
+ add_library(angle::renderer::opengl ALIAS angle_renderer_opengl)
+endif()
+
+## All D3D Sources
+file(GLOB_RECURSE LIBANGLE_D3D_SOURCES
+ "src/libANGLE/renderer/d3d/*.cpp"
+ "src/libANGLE/renderer/d3d/*.inl"
+ "src/libANGLE/renderer/d3d/*.h"
+)
+list(FILTER LIBANGLE_D3D_SOURCES EXCLUDE REGEX "_unittest")
+
+## WinRT D3D Renderer
+if(WINDOWS_STORE)
+ 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})
+ add_library(angle::renderer::winrt ALIAS angle_renderer_winrt)
+endif()
+
+## Win32/d3d9 D3D Renderer
+if(WINDOWS_DESKTOP)
+ set(LIBANGLE_D3D_DESKTOP_SOURCES ${LIBANGLE_D3D_SOURCES})
+ list(FILTER LIBANGLE_D3D_DESKTOP_SOURCES INCLUDE REGEX "d3d9|win32")
+ find_library(D3D9_LIB NAMES d3d9)
+ add_library(angle_renderer_win32 INTERFACE)
+ target_sources(angle_renderer_win32 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)
+endif()
+
+## D3D11 Base renderer
+list(FILTER LIBANGLE_D3D_SOURCES EXCLUDE REGEX "winrt|d3d9|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_compile_definitions(angle_renderer_d3d INTERFACE
+ -DANGLE_ENABLE_D3D11
+ "-DANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES={ \"d3dcompiler_47.dll\", \"d3dcompiler_46.dll\", \"d3dcompiler_43.dll\" }"
+)
+target_link_libraries(angle_renderer_d3d INTERFACE ${D3D11_LIB} ${DXGUID_LIB})
+add_library(angle::renderer::d3d ALIAS angle_renderer_d3d)
+
+## Core libANGLE library
+file(GLOB LIBANGLE_SOURCES
+ "src/third_party/systeminfo/SystemInfo.cpp"
+ "src/common/third_party/murmurhash/MurmurHash3.cpp"
+ "src/common/event_tracer.cpp"
+
+ "src/libANGLE/*.cpp"
+ "src/libANGLE/*.inl"
+ "src/libANGLE/*.h"
+
+ "src/libANGLE/renderer/*.cpp"
+ "src/libANGLE/renderer/*.inl"
+ "src/libANGLE/renderer/*.h"
+
+ "src/libANGLE/renderer/null/*.cpp"
+ "src/libANGLE/renderer/null/*.inl"
+ "src/libANGLE/renderer/null/*.h"
+)
+list(FILTER LIBANGLE_SOURCES EXCLUDE REGEX "_unittest")
+
+add_library(libANGLE STATIC ${LIBANGLE_SOURCES})
+target_link_libraries(libANGLE PRIVATE
+ angle::common
+ angle::image_util
+ angle::translator
+ angle::preprocessor
+ angle::renderer::d3d
+ $<$<BOOL:${WINDOWS_STORE}>:angle::renderer::winrt>
+ $<$<BOOL:${WINDOWS_DESKTOP}>:angle::renderer::win32>
+ $<$<BOOL:${WINDOWS_DESKTOP}>:angle::renderer::opengl>
+)
+target_include_directories(libANGLE PRIVATE "src/third_party/khronos")
+target_compile_definitions(libANGLE
+ PRIVATE -DANGLE_ENABLE_NULL
+ PUBLIC -DLIBANGLE_IMPLEMENTATION
+)
+add_library(angle::libANGLE ALIAS libANGLE)
+
+##########
+# libGLESv2
+file(GLOB LIBGLESV2_SOURCES "src/libGLESv2/*.h" "src/libGLESv2/*.cpp" "src/libGLESv2/libGLESv2.def")
+add_library(libGLESv2 ${LIBGLESV2_SOURCES})
+target_link_libraries(libGLESv2 PRIVATE angle::common angle::libANGLE)
+target_compile_definitions(libGLESv2
+ PRIVATE -DLIBGLESV2_IMPLEMENTATION
+ PUBLIC
+ -DGL_GLEXT_PROTOTYPES
+ -DGL_APICALL=
+ -DEGLAPI=
+)
+target_include_directories(libGLESv2 PUBLIC "$<INSTALL_INTERFACE:include>")
+
+##########
+# libEGL
+add_library(libEGL
+ "src/libEGL/libEGL.def"
+ "src/libEGL/libEGL.cpp"
+ "src/libEGL/libEGL.rc"
+ "src/libEGL/resource.h"
+)
+target_link_libraries(libEGL PRIVATE angle::common angle::libANGLE libGLESv2)
+target_include_directories(libEGL PUBLIC "$<INSTALL_INTERFACE:include>")
+
+install(TARGETS libEGL libGLESv2 EXPORT ANGLEExport
+ RUNTIME DESTINATION bin
+ LIBRARY DESTINATION lib
+ ARCHIVE DESTINATION lib
+)
+
+install(EXPORT ANGLEExport FILE unofficial-angle-config.cmake NAMESPACE unofficial::angle:: DESTINATION share/unofficial-angle)
+
+if(NOT DISABLE_INSTALL_HEADERS)
+ install(
+ DIRECTORY include/
+ DESTINATION include
+ FILES_MATCHING PATTERN "*.h"
+ PATTERN "GLSLANG" EXCLUDE
+ PATTERN "export.h" EXCLUDE
+ )
+endif()
diff --git a/ports/angle/CONTROL b/ports/angle/CONTROL
new file mode 100644
index 000000000..12f912ac8
--- /dev/null
+++ b/ports/angle/CONTROL
@@ -0,0 +1,4 @@
+Source: angle
+Version: 2017-06-14-8d471f-4
+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.
diff --git a/ports/angle/commit.h b/ports/angle/commit.h
new file mode 100644
index 000000000..57a20e3b7
--- /dev/null
+++ b/ports/angle/commit.h
@@ -0,0 +1,3 @@
+#define ANGLE_COMMIT_HASH "invalid-hash"
+#define ANGLE_COMMIT_HASH_SIZE 12
+#define ANGLE_COMMIT_DATE "invalid-date"
diff --git a/ports/angle/portfile.cmake b/ports/angle/portfile.cmake
new file mode 100644
index 000000000..e21aa83bc
--- /dev/null
+++ b/ports/angle/portfile.cmake
@@ -0,0 +1,40 @@
+include(vcpkg_common_functions)
+
+if(VCPKG_LIBRARY_LINKAGE STREQUAL static)
+ message(STATUS "ANGLE currently only supports being built as a dynamic library")
+ set(VCPKG_LIBRARY_LINKAGE dynamic)
+endif()
+
+if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
+ message(FATAL_ERROR "ANGLE currently only supports being built for desktop")
+endif()
+
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO google/angle
+ REF 8d471f907d8d4ec1d46bc9366493bd76c11c1870
+ SHA512 b4670caeeaa5d662bc82702eb5f620123812ea6b5d82f57a65df54ae25cdaa5c9ff0fdb592448b07569d9c09af3d3c51b0b2f135c5800d1845b425009656bf18
+ HEAD_REF master
+)
+vcpkg_apply_patches(
+ SOURCE_PATH ${SOURCE_PATH}
+ PATCHES ${CMAKE_CURRENT_LIST_DIR}/001-fix-uwp.patch
+)
+
+file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH})
+file(COPY ${CMAKE_CURRENT_LIST_DIR}/commit.h DESTINATION ${SOURCE_PATH})
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+ PREFER_NINJA
+ OPTIONS_DEBUG -DDISABLE_INSTALL_HEADERS=1
+)
+
+vcpkg_install_cmake()
+
+vcpkg_fixup_cmake_targets(CONFIG_PATH share/unofficial-angle)
+file(RENAME ${CURRENT_PACKAGES_DIR}/share/angle ${CURRENT_PACKAGES_DIR}/share/unofficial-angle)
+
+vcpkg_copy_pdbs()
+
+file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/angle RENAME copyright)