From b5d2ac3f05a45f425122adc2cdc1c70cfd550010 Mon Sep 17 00:00:00 2001 From: Russell Greene Date: Thu, 9 May 2024 09:02:56 -0600 Subject: [PATCH 1/2] [cpprestsdk] fix clang build on new zlib definint dllimport is *bad* and breaks clang, and since this is in maintaince mode they aren't going to fix it. Refs: https://github.com/microsoft/cpprestsdk/issues/1710 https://github.com/llvm/llvm-project/issues/53269 --- ports/cpprestsdk/fix-clang-dllimport.patch | 52 ++++++++++++++++++++++ ports/cpprestsdk/portfile.cmake | 1 + ports/cpprestsdk/vcpkg.json | 1 + 3 files changed, 54 insertions(+) create mode 100644 ports/cpprestsdk/fix-clang-dllimport.patch diff --git a/ports/cpprestsdk/fix-clang-dllimport.patch b/ports/cpprestsdk/fix-clang-dllimport.patch new file mode 100644 index 00000000000000..52552a57663095 --- /dev/null +++ b/ports/cpprestsdk/fix-clang-dllimport.patch @@ -0,0 +1,52 @@ +diff --git a/Release/include/cpprest/details/cpprest_compat.h b/Release/include/cpprest/details/cpprest_compat.h +index bf107479..00581371 100644 +--- a/Release/include/cpprest/details/cpprest_compat.h ++++ b/Release/include/cpprest/details/cpprest_compat.h +@@ -29,7 +29,6 @@ + #else // ^^^ _WIN32 ^^^ // vvv !_WIN32 vvv + + #define __declspec(x) __attribute__((x)) +-#define dllimport + #define novtable /* no novtable equivalent */ + #define __assume(x) \ + do \ +@@ -74,9 +73,17 @@ + #define _ASYNCRTIMP_TYPEINFO + #else // ^^^ _NO_ASYNCRTIMP ^^^ // vvv !_NO_ASYNCRTIMP vvv + #ifdef _ASYNCRT_EXPORT ++#ifdef _WIN32 + #define _ASYNCRTIMP __declspec(dllexport) ++#else ++#define _ASYNCRTIMP __attribute__((visibility("default"))) ++#endif + #else // ^^^ _ASYNCRT_EXPORT ^^^ // vvv !_ASYNCRT_EXPORT vvv ++#ifdef _WIN32 + #define _ASYNCRTIMP __declspec(dllimport) ++#else ++#define _ASYNCRTIMP ++#endif + #endif // _ASYNCRT_EXPORT + + #if defined(_WIN32) +diff --git a/Release/include/pplx/pplx.h b/Release/include/pplx/pplx.h +index d9ba9c61..8d36252c 100644 +--- a/Release/include/pplx/pplx.h ++++ b/Release/include/pplx/pplx.h +@@ -30,9 +30,17 @@ + #define _PPLXIMP + #else + #ifdef _PPLX_EXPORT ++#ifdef _WIN32 + #define _PPLXIMP __declspec(dllexport) + #else ++#define _PPLXIMP __attribute__((visibility("default"))) ++#endif ++#else ++#ifdef _WIN32 + #define _PPLXIMP __declspec(dllimport) ++#else ++#define _PPLXIMP ++#endif + #endif + #endif + diff --git a/ports/cpprestsdk/portfile.cmake b/ports/cpprestsdk/portfile.cmake index 371d92a5cf4b65..82552b28f76c69 100644 --- a/ports/cpprestsdk/portfile.cmake +++ b/ports/cpprestsdk/portfile.cmake @@ -8,6 +8,7 @@ vcpkg_from_github( fix-find-openssl.patch fix_narrowing.patch fix-uwp.patch + fix-clang-dllimport.patch # workaround for https://github.com/microsoft/cpprestsdk/issues/1710 ) set(OPTIONS) diff --git a/ports/cpprestsdk/vcpkg.json b/ports/cpprestsdk/vcpkg.json index e8a0e467a145a3..c322d6b6fc743a 100644 --- a/ports/cpprestsdk/vcpkg.json +++ b/ports/cpprestsdk/vcpkg.json @@ -1,6 +1,7 @@ { "name": "cpprestsdk", "version": "2.10.19", + "port-version": 1, "description": [ "C++11 JSON, REST, and OAuth library", "The C++ REST SDK is a Microsoft project for cloud-based client-server communication in native code using a modern asynchronous C++ API design. This project aims to help C++ developers connect to and interact with services." From 4db20c1b46885791ef1bc9fafaf024f9403e87a2 Mon Sep 17 00:00:00 2001 From: Russell Greene Date: Thu, 9 May 2024 09:03:26 -0600 Subject: [PATCH 2/2] ./vcpkg x-add-version --all --- versions/baseline.json | 2 +- versions/c-/cpprestsdk.json | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/versions/baseline.json b/versions/baseline.json index 092ff284e1fcf1..205644105172d0 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -1934,7 +1934,7 @@ }, "cpprestsdk": { "baseline": "2.10.19", - "port-version": 0 + "port-version": 1 }, "cppslippi": { "baseline": "1.4.3.16", diff --git a/versions/c-/cpprestsdk.json b/versions/c-/cpprestsdk.json index 43cb0fcacde12d..9a28e7df4b2b58 100644 --- a/versions/c-/cpprestsdk.json +++ b/versions/c-/cpprestsdk.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "a10a640d968ca2ac8f1d0df0836e3d23a7fb2199", + "version": "2.10.19", + "port-version": 1 + }, { "git-tree": "110c2c2a08e520877aa3fa9231ab69e0a76f388d", "version": "2.10.19",