Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[directxmesh, directxtex, directxtk(12), uvatlas] Updated for October 2024 releases #41878

Merged
merged 15 commits into from
Nov 4, 2024
8 changes: 4 additions & 4 deletions ports/directxmesh/portfile.cmake
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
set(DIRECTXMESH_TAG sep2024)
set(DIRECTXMESH_TAG oct2024)

vcpkg_check_linkage(ONLY_STATIC_LIBRARY)

vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO Microsoft/DirectXMesh
REF ${DIRECTXMESH_TAG}
SHA512 ea0f39c14613e60e967eaea2735f73730a1c79f9fdd9b3d799b6c765843804dd7c002dedac8f566989bac99dc41dfa9b1a9a14e141a0917f888d3e3c6ecf47cb
SHA512 a7d6eca75315a8f24fdc7753fd0e0b26b1b170ef0ffa1954065164f5da567ba09d1605c45cae91cf73dccc04f52162c3ad62f6a83eddf33c076e6ffb4723276d
HEAD_REF main
)

Expand Down Expand Up @@ -41,7 +41,7 @@ if("tools" IN_LIST FEATURES)
MESHCONVERT_EXE
URLS "https://github.com/Microsoft/DirectXMesh/releases/download/${DIRECTXMESH_TAG}/meshconvert.exe"
FILENAME "meshconvert-${DIRECTXMESH_TAG}.exe"
SHA512 f7cfd5d89d92bfe9e6b58691444b9b49e42b88b721f52abe40af4a090f3ff45476727116131fae2d4bbb74e81ff7d998ccbdb01bb037391d743e44823c490786
SHA512 6b437004ee3b8a44d475db51f01558d777bf3c65b1ea132606b9b682ab6310dbdf0c939ecdf7b621255b6130a424de6db368dd73b8d22393bd932342fd3f45e0
)

file(INSTALL
Expand All @@ -56,7 +56,7 @@ if("tools" IN_LIST FEATURES)
MESHCONVERT_EXE
URLS "https://github.com/Microsoft/DirectXMesh/releases/download/${DIRECTXMESH_TAG}/meshconvert_arm64.exe"
FILENAME "meshconvert-${DIRECTXMESH_TAG}-arm64.exe"
SHA512 71d677b95fa964dc3a6d3e3804fa86fb86ec0a5165045baeb42fa4e025c68806edf4cb737906f1f4287e877d5443eda9e5c38e51a9aa62c76ba84f68ba48c69e
SHA512 e4f9eb983ea6cfbf18c342d5f1a52210d933ca6bbe7fe5dbca4fee516106f02ac4936804ab222c337ac42eb809c16f06132d51ffa44fb67315c2f28f282afdf3
)

file(INSTALL
Expand Down
2 changes: 1 addition & 1 deletion ports/directxmesh/vcpkg.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "directxmesh",
"version-date": "2024-09-04",
"version-date": "2024-10-28",
"description": "DirectXMesh geometry processing library",
"homepage": "https://github.com/Microsoft/DirectXMesh",
"documentation": "https://github.com/microsoft/DirectXMesh/wiki",
Expand Down
284 changes: 284 additions & 0 deletions ports/directxtex/FixStdByteAndCMake.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,284 @@
diff --git a/Auxiliary/DirectXTexXbox.h b/Auxiliary/DirectXTexXbox.h
index 0829c8f..9f75866 100644
--- a/Auxiliary/DirectXTexXbox.h
+++ b/Auxiliary/DirectXTexXbox.h
@@ -132,6 +132,39 @@ namespace Xbox
HRESULT __cdecl SaveToDDSMemory(_In_ const XboxImage& xbox, _Out_ DirectX::Blob& blob);
HRESULT __cdecl SaveToDDSFile(_In_ const XboxImage& xbox, _In_z_ const wchar_t* szFile);

+#ifdef __cpp_lib_byte
+ inline HRESULT __cdecl GetMetadataFromDDSMemory(
+ _In_reads_bytes_(size) const std::byte* pSource, _In_ size_t size,
+ _Out_ DirectX::TexMetadata& metadata, _Out_ bool& isXbox)
+ {
+ return GetMetadataFromDDSMemory(reinterpret_cast<const uint8_t*>(pSource), size, metadata, isXbox);
+ }
+
+ inline HRESULT __cdecl GetMetadataFromDDSMemoryEx(
+ _In_reads_bytes_(size) const std::byte* pSource, _In_ size_t size,
+ _Out_ DirectX::TexMetadata& metadata, _Out_ bool& isXbox,
+ _Out_opt_ DirectX::DDSMetaData* ddPixelFormat)
+ {
+ return GetMetadataFromDDSMemoryEx(reinterpret_cast<const uint8_t*>(pSource), size, metadata, isXbox, ddPixelFormat);
+ }
+
+ inline HRESULT __cdecl LoadFromDDSMemory(
+ _In_reads_bytes_(size) const std::byte* pSource, _In_ size_t size,
+ _Out_opt_ DirectX::TexMetadata* metadata, _Out_ XboxImage& image)
+ {
+ return LoadFromDDSMemory(reinterpret_cast<const uint8_t*>(pSource), size, metadata, image);
+ }
+
+ inline HRESULT __cdecl LoadFromDDSMemoryEx(
+ _In_reads_bytes_(size) const std::byte* pSource, _In_ size_t size,
+ _Out_opt_ DirectX::TexMetadata* metadata,
+ _Out_opt_ DirectX::DDSMetaData* ddPixelFormat,
+ _Out_ XboxImage& image)
+ {
+ return LoadFromDDSMemoryEx(reinterpret_cast<const uint8_t*>(pSource), size, metadata, ddPixelFormat, image);
+ }
+#endif // __cpp_lib_byte
+
//---------------------------------------------------------------------------------
// Xbox Texture Tiling / Detiling (requires XG DLL to be present at runtime)

@@ -178,4 +211,20 @@ namespace Xbox
const XboxImage& xbox,
_Out_writes_bytes_(maxsize) uint8_t* pDestination, _In_ size_t maxsize) noexcept;

+#ifdef __cpp_lib_byte
+ inline HRESULT __cdecl EncodeDDSHeader(
+ const XboxImage& xbox,
+ _Out_writes_bytes_(maxsize) std::byte* pDestination, _In_ size_t maxsize) noexcept
+ {
+ return EncodeDDSHeader(xbox, reinterpret_cast<uint8_t*>(pDestination), maxsize);
+ }
+
+ inline HRESULT __cdecl EncodeDDSHeader(
+ const XboxImage& xbox,
+ _Reserved_ std::nullptr_t, _In_ size_t maxsize) noexcept
+ {
+ return EncodeDDSHeader(xbox, static_cast<uint8_t*>(nullptr), maxsize);
+ }
+#endif
+
} // namespace
diff --git a/CMakeLists.txt b/CMakeLists.txt
index cffe5ca..e26b5a1 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -311,7 +311,11 @@ endif()

if(MINGW OR (NOT WIN32))
find_package(directxmath CONFIG REQUIRED)
+ target_link_libraries(${PROJECT_NAME} PUBLIC Microsoft::DirectXMath)
+
find_package(directx-headers CONFIG REQUIRED)
+ target_link_libraries(${PROJECT_NAME} PUBLIC Microsoft::DirectX-Headers)
+ target_compile_definitions(${PROJECT_NAME} PUBLIC USING_DIRECTX_HEADERS)
else()
find_package(directxmath CONFIG QUIET)
find_package(directx-headers CONFIG QUIET)
@@ -319,13 +323,13 @@ endif()

if(directxmath_FOUND)
message(STATUS "Using DirectXMath package")
- target_link_libraries(${PROJECT_NAME} PUBLIC Microsoft::DirectXMath)
+ target_link_libraries(${PROJECT_NAME} PRIVATE Microsoft::DirectXMath)
endif()

if(directx-headers_FOUND)
message(STATUS "Using DirectX-Headers package")
- target_link_libraries(${PROJECT_NAME} PUBLIC Microsoft::DirectX-Headers)
- target_compile_definitions(${PROJECT_NAME} PUBLIC USING_DIRECTX_HEADERS)
+ target_link_libraries(${PROJECT_NAME} PRIVATE Microsoft::DirectX-Headers)
+ target_compile_definitions(${PROJECT_NAME} PRIVATE USING_DIRECTX_HEADERS)
target_compile_options(${PROJECT_NAME} PRIVATE $<$<CXX_COMPILER_ID:MSVC,Intel>:/wd4062> $<$<CXX_COMPILER_ID:Clang,IntelLLVM>:-Wno-switch-enum>)
endif()

diff --git a/DirectXTex/DirectXTex.h b/DirectXTex/DirectXTex.h
index e24142c..4dc36c8 100644
--- a/DirectXTex/DirectXTex.h
+++ b/DirectXTex/DirectXTex.h
@@ -382,6 +382,34 @@ namespace DirectX
_In_z_ const wchar_t* szFile,
_Out_ TexMetadata& metadata) noexcept;

+#ifdef __cpp_lib_byte
+ HRESULT __cdecl GetMetadataFromDDSMemory(
+ _In_reads_bytes_(size) const std::byte* pSource, _In_ size_t size,
+ _In_ DDS_FLAGS flags,
+ _Out_ TexMetadata& metadata) noexcept;
+ HRESULT __cdecl GetMetadataFromDDSMemoryEx(
+ _In_reads_bytes_(size) const std::byte* pSource, _In_ size_t size,
+ _In_ DDS_FLAGS flags,
+ _Out_ TexMetadata& metadata,
+ _Out_opt_ DDSMetaData* ddPixelFormat) noexcept;
+ HRESULT __cdecl GetMetadataFromHDRMemory(
+ _In_reads_bytes_(size) const std::byte* pSource, _In_ size_t size,
+ _Out_ TexMetadata& metadata) noexcept;
+ HRESULT __cdecl GetMetadataFromTGAMemory(
+ _In_reads_bytes_(size) const std::byte* pSource, _In_ size_t size,
+ _In_ TGA_FLAGS flags,
+ _Out_ TexMetadata& metadata) noexcept;
+
+#ifdef _WIN32
+ HRESULT __cdecl GetMetadataFromWICMemory(
+ _In_reads_bytes_(size) const std::byte* pSource, _In_ size_t size,
+ _In_ WIC_FLAGS flags,
+ _Out_ TexMetadata& metadata,
+ _In_ std::function<void __cdecl(IWICMetadataQueryReader*)> getMQR = nullptr);
+#endif
+#endif // __cpp_lib_byte
+
+
//---------------------------------------------------------------------------------
// Bitmap image container
struct Image
@@ -590,6 +618,34 @@ namespace DirectX
HRESULT __cdecl SaveToTGAMemory(_In_ const Image& image, _Out_ Blob& blob, _In_opt_ const TexMetadata* metadata = nullptr) noexcept;
HRESULT __cdecl SaveToTGAFile(_In_ const Image& image, _In_z_ const wchar_t* szFile, _In_opt_ const TexMetadata* metadata = nullptr) noexcept;

+#ifdef __cpp_lib_byte
+ HRESULT __cdecl LoadFromDDSMemory(
+ _In_reads_bytes_(size) const std::byte* pSource, _In_ size_t size,
+ _In_ DDS_FLAGS flags,
+ _Out_opt_ TexMetadata* metadata, _Out_ ScratchImage& image) noexcept;
+ HRESULT __cdecl LoadFromDDSMemoryEx(
+ _In_reads_bytes_(size) const std::byte* pSource, _In_ size_t size,
+ _In_ DDS_FLAGS flags,
+ _Out_opt_ TexMetadata* metadata,
+ _Out_opt_ DDSMetaData* ddPixelFormat,
+ _Out_ ScratchImage& image) noexcept;
+ HRESULT __cdecl LoadFromHDRMemory(
+ _In_reads_bytes_(size) const std::byte* pSource, _In_ size_t size,
+ _Out_opt_ TexMetadata* metadata, _Out_ ScratchImage& image) noexcept;
+ HRESULT __cdecl LoadFromTGAMemory(
+ _In_reads_bytes_(size) const std::byte* pSource, _In_ size_t size,
+ _In_ TGA_FLAGS flags,
+ _Out_opt_ TexMetadata* metadata, _Out_ ScratchImage& image) noexcept;
+
+#ifdef _WIN32
+ HRESULT __cdecl LoadFromWICMemory(
+ _In_reads_bytes_(size) const std::byte* pSource, _In_ size_t size,
+ _In_ WIC_FLAGS flags,
+ _Out_opt_ TexMetadata* metadata, _Out_ ScratchImage& image,
+ _In_ std::function<void __cdecl(IWICMetadataQueryReader*)> getMQR = nullptr);
+#endif
+#endif // __cpp_lib_byte
+
//---------------------------------------------------------------------------------
// Texture conversion, resizing, mipmap generation, and block compression

@@ -959,6 +1015,18 @@ namespace DirectX
_Out_writes_bytes_to_opt_(maxsize, required) uint8_t* pDestination, _In_ size_t maxsize,
_Out_ size_t& required) noexcept;

+#ifdef __cpp_lib_byte
+ HRESULT __cdecl EncodeDDSHeader(
+ _In_ const TexMetadata& metadata, DDS_FLAGS flags,
+ _Out_writes_bytes_to_opt_(maxsize, required) std::byte* pDestination, _In_ size_t maxsize,
+ _Out_ size_t& required) noexcept;
+
+ HRESULT __cdecl EncodeDDSHeader(
+ _In_ const TexMetadata& metadata, DDS_FLAGS flags,
+ _Reserved_ std::nullptr_t, _In_ size_t maxsize,
+ _Out_ size_t& required) noexcept;
+#endif
+
//---------------------------------------------------------------------------------
// Direct3D interop

diff --git a/DirectXTex/DirectXTex.inl b/DirectXTex/DirectXTex.inl
index 49745ae..d20f41e 100644
--- a/DirectXTex/DirectXTex.inl
+++ b/DirectXTex/DirectXTex.inl
@@ -190,3 +190,85 @@ inline HRESULT __cdecl SaveToTGAFile(const Image& image, const wchar_t* szFile,
{
return SaveToTGAFile(image, TGA_FLAGS_NONE, szFile, metadata);
}
+
+
+//=====================================================================================
+// C++17 helpers
+//=====================================================================================
+#ifdef __cpp_lib_byte
+
+_Use_decl_annotations_
+inline HRESULT __cdecl GetMetadataFromDDSMemory(const std::byte* pSource, size_t size, DDS_FLAGS flags, TexMetadata& metadata) noexcept
+{
+ return GetMetadataFromDDSMemory(reinterpret_cast<const uint8_t*>(pSource), size, flags, metadata);
+}
+
+_Use_decl_annotations_
+inline HRESULT __cdecl LoadFromDDSMemory(const std::byte* pSource, size_t size, DDS_FLAGS flags, TexMetadata* metadata, ScratchImage& image) noexcept
+{
+ return LoadFromDDSMemory(reinterpret_cast<const uint8_t*>(pSource), size, flags, metadata, image);
+}
+
+_Use_decl_annotations_
+inline HRESULT __cdecl GetMetadataFromDDSMemoryEx(const std::byte* pSource, size_t size, DDS_FLAGS flags, TexMetadata& metadata, DDSMetaData* ddPixelFormat) noexcept
+{
+ return GetMetadataFromDDSMemoryEx(reinterpret_cast<const uint8_t*>(pSource), size, flags, metadata, ddPixelFormat);
+}
+
+_Use_decl_annotations_
+inline HRESULT __cdecl LoadFromDDSMemoryEx(const std::byte* pSource, size_t size, DDS_FLAGS flags, TexMetadata* metadata, DDSMetaData* ddPixelFormat, ScratchImage& image) noexcept
+{
+ return LoadFromDDSMemoryEx(reinterpret_cast<const uint8_t*>(pSource), size, flags, metadata, ddPixelFormat, image);
+}
+
+_Use_decl_annotations_
+inline HRESULT __cdecl GetMetadataFromHDRMemory(const std::byte* pSource, size_t size, TexMetadata& metadata) noexcept
+{
+ return GetMetadataFromHDRMemory(reinterpret_cast<const uint8_t*>(pSource), size, metadata);
+}
+
+_Use_decl_annotations_
+inline HRESULT __cdecl LoadFromHDRMemory(const std::byte* pSource, size_t size, TexMetadata* metadata, ScratchImage& image) noexcept
+{
+ return LoadFromHDRMemory(reinterpret_cast<const uint8_t*>(pSource), size, metadata, image);
+}
+
+_Use_decl_annotations_
+inline HRESULT __cdecl GetMetadataFromTGAMemory(const std::byte* pSource, size_t size, TGA_FLAGS flags, TexMetadata& metadata) noexcept
+{
+ return GetMetadataFromTGAMemory(reinterpret_cast<const uint8_t*>(pSource), size, flags, metadata);
+}
+
+_Use_decl_annotations_
+inline HRESULT __cdecl LoadFromTGAMemory(const std::byte* pSource, size_t size, TGA_FLAGS flags, TexMetadata* metadata, ScratchImage& image) noexcept
+{
+ return LoadFromTGAMemory(reinterpret_cast<const uint8_t*>(pSource), size, flags, metadata, image);
+}
+
+_Use_decl_annotations_
+inline HRESULT __cdecl EncodeDDSHeader(const TexMetadata& metadata, DDS_FLAGS flags, std::byte* pDestination, size_t maxsize, size_t& required) noexcept
+{
+ return EncodeDDSHeader(metadata, flags, reinterpret_cast<uint8_t*>(pDestination), maxsize, required);
+}
+
+_Use_decl_annotations_
+inline HRESULT __cdecl EncodeDDSHeader(const TexMetadata& metadata, DDS_FLAGS flags, std::nullptr_t, size_t maxsize, size_t& required) noexcept
+{
+ return EncodeDDSHeader(metadata, flags, static_cast<uint8_t*>(nullptr), maxsize, required);
+}
+
+#ifdef _WIN32
+_Use_decl_annotations_
+inline HRESULT __cdecl GetMetadataFromWICMemory(const std::byte* pSource, size_t size, WIC_FLAGS flags, TexMetadata& metadata, std::function<void __cdecl(IWICMetadataQueryReader*)> getMQR)
+{
+ return GetMetadataFromWICMemory(reinterpret_cast<const uint8_t*>(pSource), size, flags, metadata, getMQR);
+}
+
+_Use_decl_annotations_
+inline HRESULT __cdecl LoadFromWICMemory(const std::byte* pSource, size_t size, WIC_FLAGS flags, TexMetadata* metadata, ScratchImage& image, std::function<void __cdecl(IWICMetadataQueryReader*)> getMQR)
+{
+ return LoadFromWICMemory(reinterpret_cast<const uint8_t*>(pSource), size, flags, metadata, image, getMQR);
+}
+#endif // _WIN32
+
+#endif // __cpp_lib_byte
--
2.47.0.vfs.0.3

18 changes: 10 additions & 8 deletions ports/directxtex/portfile.cmake
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
set(DIRECTXTEX_TAG sep2024)
set(DIRECTXTEX_TAG oct2024)

vcpkg_check_linkage(ONLY_STATIC_LIBRARY)

vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO Microsoft/DirectXTex
REF ${DIRECTXTEX_TAG}
SHA512 c76c6d33f6a06e28e27c36be0f56b2c880cdd221b12680cc390f6f05a2c80169266cce9f0ac1803e7160d098f02f25a358ea73a116fd4186f4e0de17aba81ab7
SHA512 4ac9307ab6e36aa727afa5bd5bb945fb431c89fa01c9c8283eebf512707acfb15a0d7cd84f72349d4271b0eef2e13bca38a38226c1afafd8f1e36b38c1c4b07f
HEAD_REF main
PATCHES
FixStdByteAndCMake.patch
)

vcpkg_check_features(
Expand Down Expand Up @@ -67,21 +69,21 @@ if("tools" IN_LIST FEATURES)
TEXASSEMBLE_EXE
URLS "https://github.com/Microsoft/DirectXTex/releases/download/${DIRECTXTEX_TAG}/texassemble.exe"
FILENAME "texassemble-${DIRECTXTEX_TAG}.exe"
SHA512 17ae3ce91135e6c442c6127b77a4407ee5e029f1239cdc9066f34ddae9a3982de67d5314b5f03fde77802525e770be49f719fb6ddeb4d5316f440fb4ab24113a
SHA512 bb3c45d35305a56b80035bd7c076cd0000461cb37a5cd9495ac8f8a1647967fb6ecb02245336356674829f179ef05330d5aa9e768637e93b9db587d7eb684dfe
)

vcpkg_download_distfile(
TEXCONV_EXE
URLS "https://github.com/Microsoft/DirectXTex/releases/download/${DIRECTXTEX_TAG}/texconv.exe"
FILENAME "texconv-${DIRECTXTEX_TAG}.exe"
SHA512 856648b04c9d9eab5a63b1abf226eac8509b400a2087dae32fddcc61ea6d7d8426b07d710f765a01ab1bacbd8a9731684c42a72e2bd4f7f3477f379cec39c409
SHA512 6376ee91dca0b53c043e1e86ec56f418029591885dd9fd49f8e932aa635e6668d430aeb30b497daa4e8c1f02ac42f7dc901ebec107d8bc1e611c9a0ec8747029
)

vcpkg_download_distfile(
TEXDIAG_EXE
URLS "https://github.com/Microsoft/DirectXTex/releases/download/${DIRECTXTEX_TAG}/texdiag.exe"
FILENAME "texdiag-${DIRECTXTEX_TAG}.exe"
SHA512 38f083bbcf80b30b7d36312e824e03e25396f8801d8c13f6d4029731226415a3596e61863c7f8fd54f71afd6770e6e08bfc4118d65b48a977613b81f221e08d8
SHA512 31261ceefc17ce30c7f21dff961bfe03b2dc65619f60c64891a5fc56847cd7468a6629c36b1fcbf4c6f967232ad88eb85cf5c2ea874084dfe0d8da4ffabc12c8
)

file(INSTALL
Expand All @@ -100,21 +102,21 @@ if("tools" IN_LIST FEATURES)
TEXASSEMBLE_EXE
URLS "https://github.com/Microsoft/DirectXTex/releases/download/${DIRECTXTEX_TAG}/texassemble_arm64.exe"
FILENAME "texassemble-${DIRECTXTEX_TAG}-arm64.exe"
SHA512 4026647c8e18fc54a28fdec31e9b5c26dba4d6141e2fee53dc94c84bc1bdfb446b40c31a0f4babbaf1eda2a25589486ae5898210f2a5644bc29959ddbe88a475
SHA512 48b629b7aead482c0dc96c2fcfb28d534076d62dc77ce94256ad52df48596c1993645900873bf0dfd3d888087b423c350ba3f420b1305ef2ed7a43eafecfb523
)

vcpkg_download_distfile(
TEXCONV_EXE
URLS "https://github.com/Microsoft/DirectXTex/releases/download/${DIRECTXTEX_TAG}/texconv_arm64.exe"
FILENAME "texconv-${DIRECTXTEX_TAG}-arm64.exe"
SHA512 2556604381e5c45aa137bf868db27013bee4bec1860df25f991f104a4c606bfde90e0eba8a347e5a5fc145c6a6a0b28529c6c7edd9cec0a5310dcec50d295b50
SHA512 53f319be7e739d9e3addc2e86648022ec802315a94c600eb6886a4474232aa25de0c9fb8d72868d2871d29eb36ee1dd6a186094edb6d9ab8f249b4eb4849a10c
)

vcpkg_download_distfile(
TEXDIAG_EXE
URLS "https://github.com/Microsoft/DirectXTex/releases/download/${DIRECTXTEX_TAG}/texdiag_arm64.exe"
FILENAME "texdiag-${DIRECTXTEX_TAG}-arm64.exe"
SHA512 dfa8d2046cc18541998b719ace66b6807e59ea480febf41852b5973eb60aea20cb66702cab578d6e4474ecd782c03c061f363deb8e1bcb6a4c8f5002a521fe88
SHA512 638b6b8443767ca390efdfdb8e4e8a655f0cc370a81b946678414481a6c3fc0c431a7082d08206fa86bc4ccf9c8b0027a427d483474a8c3d1ff0a030011779f7
)

file(INSTALL
Expand Down
Loading