diff options
| author | Geoff Evans <geoff@flummoxed.org> | 2021-09-07 21:02:10 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-09-07 21:02:10 -0700 |
| commit | 4d8cf181f1172e32fb0494aebaa2a8a117c4cebc (patch) | |
| tree | 479e56d4d59b23053d76cecbfb5a76711d8eba17 /ports | |
| parent | 6a8dea1ace99554907a73f85dedc166db6d4be3b (diff) | |
| download | vcpkg-4d8cf181f1172e32fb0494aebaa2a8a117c4cebc.tar.gz vcpkg-4d8cf181f1172e32fb0494aebaa2a8a117c4cebc.zip | |
proj4 uwp improvments (#18323)
* Remove prior arm/uwp patch since host dependencies now allow for proj database generation, and add a new patch that repairs Win32 API calls to use UWP counterparts in UWP builds
* Update ci baseline for port changes
* Update port version
* Fix patch list for PR
* Bump port-version, disable some broken downstream libs
* Update port version commit
Diffstat (limited to 'ports')
| -rw-r--r-- | ports/proj4/disable-projdb-with-arm-uwp.patch | 15 | ||||
| -rw-r--r-- | ports/proj4/fix-filemanager-uwp.patch | 71 | ||||
| -rw-r--r-- | ports/proj4/portfile.cmake | 2 | ||||
| -rw-r--r-- | ports/proj4/vcpkg.json | 2 |
4 files changed, 73 insertions, 17 deletions
diff --git a/ports/proj4/disable-projdb-with-arm-uwp.patch b/ports/proj4/disable-projdb-with-arm-uwp.patch deleted file mode 100644 index 411a39860..000000000 --- a/ports/proj4/disable-projdb-with-arm-uwp.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 7d736d129..93d7801dd 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -269,7 +269,9 @@ endif() - ################################################################################ - include_directories(${PROJ_SOURCE_DIR}/src) - --add_subdirectory(data) -+if(BUILD_PROJ_DATABASE) -+ add_subdirectory(data) -+endif() - add_subdirectory(include) - add_subdirectory(src) - add_subdirectory(man) diff --git a/ports/proj4/fix-filemanager-uwp.patch b/ports/proj4/fix-filemanager-uwp.patch new file mode 100644 index 000000000..14dba72c2 --- /dev/null +++ b/ports/proj4/fix-filemanager-uwp.patch @@ -0,0 +1,71 @@ +diff --git a/src/filemanager.cpp b/src/filemanager.cpp
+index e6a9ed9..d85290b 100644
+--- a/src/filemanager.cpp
++++ b/src/filemanager.cpp
+@@ -48,6 +48,12 @@
+
+ #include "proj_config.h"
+
++#if defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_APP)
++#define UWP 1
++#else
++#define UWP 0
++#endif
++
+ #ifdef _WIN32
+ #include <shlobj.h>
+ #include <windows.h>
+@@ -692,10 +698,21 @@ std::unique_ptr<File> FileWin32::open(PJ_CONTEXT *ctx, const char *filename,
+ ? FILE_ATTRIBUTE_READONLY
+ : FILE_ATTRIBUTE_NORMAL;
+ try {
++#if UWP
++ CREATEFILE2_EXTENDED_PARAMETERS extendedParameters;
++ ZeroMemory(&extendedParameters, sizeof(extendedParameters));
++ extendedParameters.dwSize = sizeof(extendedParameters);
++ extendedParameters.dwFileAttributes = dwFlagsAndAttributes;
++ HANDLE hFile = CreateFile2(
++ UTF8ToWString(std::string(filename)).c_str(), dwDesiredAccess,
++ FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
++ dwCreationDisposition, &extendedParameters);
++#else // UWP
+ HANDLE hFile = CreateFileW(
+ UTF8ToWString(std::string(filename)).c_str(), dwDesiredAccess,
+ FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, nullptr,
+ dwCreationDisposition, dwFlagsAndAttributes, nullptr);
++#endif // UWP
+ return std::unique_ptr<File>(hFile != INVALID_HANDLE_VALUE
+ ? new FileWin32(filename, ctx, hFile)
+ : nullptr);
+@@ -1211,6 +1228,9 @@ const char *proj_context_get_user_writable_directory(PJ_CONTEXT *ctx,
+ wPath.resize(wcslen(wPath.data()));
+ path = NS_PROJ::WStringToUTF8(wPath);
+ #else
++#if UWP
++ if (false) {
++#else // UWP
+ wchar_t *wPath;
+ if (SHGetKnownFolderPath(FOLDERID_LocalAppData, 0, nullptr, &wPath) ==
+ S_OK) {
+@@ -1218,6 +1238,7 @@ const char *proj_context_get_user_writable_directory(PJ_CONTEXT *ctx,
+ std::string str = NS_PROJ::WStringToUTF8(ws);
+ path = str;
+ CoTaskMemFree(wPath);
++#endif // UWP
+ #endif
+ } else {
+ const char *local_app_data = getenv("LOCALAPPDATA");
+@@ -1311,11 +1332,13 @@ static std::string pj_get_relative_share_proj_internal_no_check() {
+ #if defined(_WIN32) || defined(HAVE_LIBDL)
+ #ifdef _WIN32
+ HMODULE hm = NULL;
++#if !UWP
+ if (GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS |
+ GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT,
+ (LPCSTR)&pj_get_relative_share_proj, &hm) == 0) {
+ return std::string();
+ }
++#endif // UWP
+
+ DWORD path_size = 1024;
+
diff --git a/ports/proj4/portfile.cmake b/ports/proj4/portfile.cmake index c19e07b07..34fb1fd02 100644 --- a/ports/proj4/portfile.cmake +++ b/ports/proj4/portfile.cmake @@ -5,8 +5,8 @@ vcpkg_from_github( SHA512 e6e77266dcd70c939c16667c916cccab8de161221d2ef600cfca43382f50da2dc8d790561556b4416adbb4ac6fba939004e0cc936c278e0e808dc3566e9a70d4 HEAD_REF master PATCHES + fix-filemanager-uwp.patch fix-sqlite3-bin.patch - disable-projdb-with-arm-uwp.patch fix-win-output-name.patch fix-proj4-targets-cmake.patch tools-cmake.patch diff --git a/ports/proj4/vcpkg.json b/ports/proj4/vcpkg.json index 770896f9c..b2d12fc00 100644 --- a/ports/proj4/vcpkg.json +++ b/ports/proj4/vcpkg.json @@ -1,7 +1,7 @@ { "name": "proj4", "version-semver": "7.2.1", - "port-version": 4, + "port-version": 5, "description": "PROJ.4 library for cartographic projections", "homepage": "https://github.com/OSGeo/PROJ", "dependencies": [ |
