aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHennadii Zabula <zabulus12@gmail.com>2017-06-23 16:40:16 +0300
committerHennadii Zabula <zabulus12@gmail.com>2017-06-29 09:33:10 +0300
commit348c60112235b74add06ff0d13d948898a309e44 (patch)
tree4f049e45fe3faa0efe3e7d14014e54bf443e484f
parent6aae6ca3c0384d23c901e80cfbd46ed32a29321d (diff)
downloadvcpkg-348c60112235b74add06ff0d13d948898a309e44.tar.gz
vcpkg-348c60112235b74add06ff0d13d948898a309e44.zip
Fix uwp build
-rw-r--r--ports/angle/001-fix-uwp.patch113
-rw-r--r--ports/angle/CMakeListsUwp.txt136
-rw-r--r--ports/angle/portfile.cmake11
3 files changed, 259 insertions, 1 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/CMakeListsUwp.txt b/ports/angle/CMakeListsUwp.txt
new file mode 100644
index 000000000..b339ca4e5
--- /dev/null
+++ b/ports/angle/CMakeListsUwp.txt
@@ -0,0 +1,136 @@
+cmake_minimum_required(VERSION 3.8)
+project(angle)
+
+add_compile_options(/d2guard4 /Wv:18 /WX)
+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)
+
+file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/include/id/commit.h" "#define ANGLE_COMMIT_HASH \"invalid-hash\"\n#define ANGLE_COMMIT_HASH_SIZE 12\n#define ANGLE_COMMIT_DATE \"invalid-date\"\n")
+
+include_directories(include src ${CMAKE_CURRENT_BINARY_DIR}/include)
+
+##########
+# anglebase
+add_library(anglebase INTERFACE)
+file(GLOB_RECURSE anglebase_SOURCES "src/common/third_party/base/*.h")
+target_sources(anglebase INTERFACE ${anglebase_SOURCES})
+target_include_directories(anglebase INTERFACE src/common/third_party/base)
+
+##########
+# angle_common
+file(GLOB ANGLE_COMMON_SOURCES "src/common/*.h" "src/common/*.inl" "src/common/*.cpp")
+list(FILTER ANGLE_COMMON_SOURCES EXCLUDE REGEX "_unittest|event_tracer|_linux|_mac")
+add_library(angle_common STATIC ${ANGLE_COMMON_SOURCES})
+target_link_libraries(angle_common PUBLIC anglebase)
+
+##########
+# 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)
+
+##########
+# 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(translator STATIC ${TRANSLATOR_SOURCES})
+target_compile_definitions(translator PUBLIC
+ -DANGLE_ENABLE_ESSL
+ -DANGLE_ENABLE_GLSL
+ -DANGLE_ENABLE_HLSL
+)
+target_link_libraries(translator PRIVATE angle_common)
+
+##########
+# preprocessor
+file(GLOB PREPROCESSOR_SOURCES
+ "src/compiler/preprocessor/*.h"
+ "src/compiler/preprocessor/*.cpp"
+)
+add_library(preprocessor STATIC ${PREPROCESSOR_SOURCES})
+target_link_libraries(preprocessor PRIVATE angle_common)
+
+##########
+# libANGLE
+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"
+)
+file(GLOB_RECURSE LIBANGLE_D3D_SOURCES "src/libANGLE/renderer/d3d/*.h" "src/libANGLE/renderer/d3d/*.cpp" "src/libANGLE/renderer/d3d/*.inl")
+list(FILTER LIBANGLE_SOURCES EXCLUDE REGEX "_unittest")
+list(FILTER LIBANGLE_D3D_SOURCES EXCLUDE REGEX "_unittest|d3d9|win32")
+add_library(libANGLE STATIC ${LIBANGLE_SOURCES} ${LIBANGLE_D3D_SOURCES})
+find_library(D3D11_LIB NAMES d3d11)
+find_library(DXGUID_LIB NAMES dxguid)
+target_link_libraries(libANGLE PRIVATE angle_common angle_image_util translator ${D3D9_LIB} ${DXGUID_LIB} preprocessor)
+target_include_directories(libANGLE PRIVATE "src/third_party/khronos")
+
+list(APPEND ANGLE_DEFINITIONS -DANGLE_ENABLE_D3D11)
+list(APPEND ANGLE_DEFINITIONS -DANGLE_ENABLE_NULL)
+
+target_compile_definitions(libANGLE PUBLIC
+ ${ANGLE_DEFINITIONS}
+)
+target_compile_definitions(libANGLE PRIVATE -DLIBANGLE_IMPLEMENTATION)
+
+##########
+# 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 libANGLE)
+target_compile_definitions(libGLESv2 PRIVATE
+ -DLIBGLESV2_IMPLEMENTATION
+ -DLIBANGLE_IMPLEMENTATION
+ -DGL_GLEXT_PROTOTYPES
+ "-DANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES={ \"d3dcompiler_47.dll\", \"d3dcompiler_46.dll\", \"d3dcompiler_43.dll\" }"
+ -DGL_APICALL=
+ -DEGLAPI=
+)
+
+##########
+# 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 libANGLE libGLESv2)
+target_compile_definitions(libEGL PRIVATE
+ -DLIBANGLE_IMPLEMENTATION
+ -DGL_GLEXT_PROTOTYPES
+ "-DANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES={ \"d3dcompiler_47.dll\", \"d3dcompiler_46.dll\", \"d3dcompiler_43.dll\" }"
+ -DGL_APICALL=
+ -DEGLAPI=
+)
+
+
+install(TARGETS libEGL libGLESv2
+ RUNTIME DESTINATION bin
+ LIBRARY DESTINATION lib
+ ARCHIVE DESTINATION lib
+)
+
+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/portfile.cmake b/ports/angle/portfile.cmake
index 4668b7dea..d2b61c9cf 100644
--- a/ports/angle/portfile.cmake
+++ b/ports/angle/portfile.cmake
@@ -13,7 +13,16 @@ vcpkg_from_github(
HEAD_REF master
)
-file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH})
+if(NOT TARGET_TRIPLET MATCHES "uwp")
+ file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH})
+else()
+ file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeListsUwp.txt DESTINATION ${SOURCE_PATH})
+ file(RENAME ${SOURCE_PATH}/CMakeListsUwp.txt ${SOURCE_PATH}/CMakeLists.txt)
+ vcpkg_apply_patches(
+ SOURCE_PATH ${SOURCE_PATH}
+ PATCHES ${CMAKE_CURRENT_LIST_DIR}/001-fix-uwp.patch
+ )
+endif()
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}