aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNancyLi1013 <46708020+NancyLi1013@users.noreply.github.com>2020-07-16 06:55:31 +0800
committerGitHub <noreply@github.com>2020-07-15 15:55:31 -0700
commitfc761ebb72a40574200b6b99e81458ead68da12a (patch)
tree28ac291ee3bdff223e391873c316a792d211b282
parent85a5acfd3c345a968e5156e383967d7cef19c933 (diff)
downloadvcpkg-fc761ebb72a40574200b6b99e81458ead68da12a.tar.gz
vcpkg-fc761ebb72a40574200b6b99e81458ead68da12a.zip
[hiredis] Fix feature ssl build error on windows (#12354)
* [hiredis] Fix feature ssl build error on windows * Fix feature example build error on windows
-rw-r--r--ports/hiredis/CONTROL5
-rw-r--r--ports/hiredis/fix-feature-example.patch183
-rw-r--r--ports/hiredis/fix-pthread.h-not-found-on-windows.patch16
-rw-r--r--ports/hiredis/portfile.cmake3
4 files changed, 128 insertions, 79 deletions
diff --git a/ports/hiredis/CONTROL b/ports/hiredis/CONTROL
index 0bb9cb9d9..b16d54e57 100644
--- a/ports/hiredis/CONTROL
+++ b/ports/hiredis/CONTROL
@@ -1,5 +1,6 @@
Source: hiredis
-Version: 2019-11-2-1
+Version: 2019-11-2
+Port-Version: 2
Homepage: https://github.com/redis/hiredis
Description: Hiredis is a minimalistic C client library for the Redis database.
@@ -9,4 +10,4 @@ Build-Depends: openssl
Feature: example
Description: Build example
-Build-Depends: libevent, pthread \ No newline at end of file
+Build-Depends: libevent, pthread, libuv \ No newline at end of file
diff --git a/ports/hiredis/fix-feature-example.patch b/ports/hiredis/fix-feature-example.patch
index a61900185..4f36087c6 100644
--- a/ports/hiredis/fix-feature-example.patch
+++ b/ports/hiredis/fix-feature-example.patch
@@ -1,76 +1,107 @@
-diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
-index dd3a313..0df75d5 100644
---- a/examples/CMakeLists.txt
-+++ b/examples/CMakeLists.txt
-@@ -19,10 +19,17 @@ if (LIBEV)
- TARGET_LINK_LIBRARIES(example-libev hiredis ev)
- ENDIF()
-
--FIND_PATH(LIBEVENT event.h)
--if (LIBEVENT)
-+FIND_PACKAGE(Libevent CONFIG REQUIRED)
-+FIND_PATH(LIBEVENT_INCLUDES evutil.h)
-+if (BUILD_SHARED_LIBS)
-+ set(LIBEVENT_LIBS ${LIBEVENT_SHARED_LIBRARIES})
-+else()
-+ set(LIBEVENT_LIBS ${LIBEVENT_STATIC_LIBRARIES})
-+endif()
-+if (UNIX)
- ADD_EXECUTABLE(example-libevent example-libevent)
-- TARGET_LINK_LIBRARIES(example-libevent hiredis event)
-+ TARGET_LINK_LIBRARIES(example-libevent hiredis ${LIBEVENT_LIBS})
-+ TARGET_INCLUDE_DIRECTORIES(example-libevent PRIVATE ${LIBEVENT_INCLUDES})
- ENDIF()
-
- FIND_PATH(LIBUV uv.h)
-@@ -38,9 +45,17 @@ IF (APPLE)
- ENDIF()
-
- IF (ENABLE_SSL)
-+ FIND_PACKAGE(OpenSSL REQUIRED)
-+ IF (WIN32)
-+ FIND_PACKAGE(pthreads REQUIRED)
-+ SET(THREADS_LIBS PThreads4W::PThreads4W)
-+ ELSE()
-+ FIND_PACKAGE(Threads)
-+ SET(THREADS_LIBS ${CMAKE_THREAD_LIBS_INIT})
-+ ENDIF()
- ADD_EXECUTABLE(example-ssl example-ssl.c)
-- TARGET_LINK_LIBRARIES(example-ssl hiredis hiredis_ssl)
-+ TARGET_LINK_LIBRARIES(example-ssl hiredis hiredis_ssl OpenSSL::SSL OpenSSL::Crypto ${THREADS_LIBS})
- ENDIF()
-
- ADD_EXECUTABLE(example example.c)
--TARGET_LINK_LIBRARIES(example hiredis)
-+TARGET_LINK_LIBRARIES(example hiredis ${LIBEVENT_LIBS})
-\ No newline at end of file
-diff --git a/examples/example-ssl.c b/examples/example-ssl.c
-index 81f4648..9f42923 100644
---- a/examples/example-ssl.c
-+++ b/examples/example-ssl.c
-@@ -1,6 +1,10 @@
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-+#ifdef _WIN32
-+#include <Winsock2.h>
-+#include <Windows.h>
-+#endif
-
- #include <hiredis.h>
- #include <hiredis_ssl.h>
-diff --git a/examples/example.c b/examples/example.c
-index 0e93fc8..339e322 100644
---- a/examples/example.c
-+++ b/examples/example.c
-@@ -1,6 +1,10 @@
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-+#ifdef _WIN32
-+#include <Winsock2.h>
-+#include <Windows.h>
-+#endif
-
- #include <hiredis.h>
-
+diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
+index dd3a313..8c69d3a 100644
+--- a/examples/CMakeLists.txt
++++ b/examples/CMakeLists.txt
+@@ -19,16 +19,30 @@ if (LIBEV)
+ TARGET_LINK_LIBRARIES(example-libev hiredis ev)
+ ENDIF()
+
+-FIND_PATH(LIBEVENT event.h)
+-if (LIBEVENT)
++FIND_PACKAGE(Libevent CONFIG REQUIRED)
++FIND_PATH(LIBEVENT_INCLUDES evutil.h)
++if (BUILD_SHARED_LIBS)
++ set(LIBEVENT_LIBS ${LIBEVENT_SHARED_LIBRARIES})
++else()
++ set(LIBEVENT_LIBS ${LIBEVENT_STATIC_LIBRARIES})
++endif()
++if (UNIX)
+ ADD_EXECUTABLE(example-libevent example-libevent)
+- TARGET_LINK_LIBRARIES(example-libevent hiredis event)
++ TARGET_LINK_LIBRARIES(example-libevent hiredis ${LIBEVENT_LIBS})
++ TARGET_INCLUDE_DIRECTORIES(example-libevent PRIVATE ${LIBEVENT_INCLUDES})
+ ENDIF()
+
++FIND_LIBRARY(UV_LIBRARY libuv)
+ FIND_PATH(LIBUV uv.h)
+ IF (LIBUV)
+ ADD_EXECUTABLE(example-libuv example-libuv.c)
+- TARGET_LINK_LIBRARIES(example-libuv hiredis uv)
++ if(WIN32)
++ set(LIB_LISTS Iphlpapi.lib Psapi.lib Userenv.lib)
++ else()
++ set(LIB_LISTS)
++ endif()
++ TARGET_LINK_LIBRARIES(example-libuv hiredis ${UV_LIBRARY} ${LIB_LISTS})
++ TARGET_INCLUDE_DIRECTORIES(example-libuv PRIVATE ${LIBUV})
+ ENDIF()
+
+ IF (APPLE)
+@@ -38,9 +52,21 @@ IF (APPLE)
+ ENDIF()
+
+ IF (ENABLE_SSL)
++ FIND_PACKAGE(OpenSSL REQUIRED)
++ IF (WIN32)
++ FIND_PACKAGE(pthreads REQUIRED)
++ SET(THREADS_LIBS PThreads4W::PThreads4W)
++ ELSE()
++ FIND_PACKAGE(Threads)
++ SET(THREADS_LIBS ${CMAKE_THREAD_LIBS_INIT})
++ ENDIF()
+ ADD_EXECUTABLE(example-ssl example-ssl.c)
+- TARGET_LINK_LIBRARIES(example-ssl hiredis hiredis_ssl)
++ if(WIN32)
++ TARGET_LINK_LIBRARIES(example-ssl hiredis hiredis_ssl OpenSSL::SSL OpenSSL::Crypto ${THREADS_LIBS} crypt32.lib)
++ else()
++ TARGET_LINK_LIBRARIES(example-ssl hiredis hiredis_ssl OpenSSL::SSL OpenSSL::Crypto ${THREADS_LIBS})
++ endif()
+ ENDIF()
+
+ ADD_EXECUTABLE(example example.c)
+-TARGET_LINK_LIBRARIES(example hiredis)
++TARGET_LINK_LIBRARIES(example hiredis ${LIBEVENT_LIBS})
+diff --git a/examples/example-libuv.c b/examples/example-libuv.c
+index a5462d4..9b7ca3e 100644
+--- a/examples/example-libuv.c
++++ b/examples/example-libuv.c
+@@ -33,7 +33,9 @@ void disconnectCallback(const redisAsyncContext *c, int status) {
+ }
+
+ int main (int argc, char **argv) {
++#ifndef _WIN32
+ signal(SIGPIPE, SIG_IGN);
++#endif
+ uv_loop_t* loop = uv_default_loop();
+
+ redisAsyncContext *c = redisAsyncConnect("127.0.0.1", 6379);
+diff --git a/examples/example-ssl.c b/examples/example-ssl.c
+index 81f4648..9f42923 100644
+--- a/examples/example-ssl.c
++++ b/examples/example-ssl.c
+@@ -1,6 +1,10 @@
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
++#ifdef _WIN32
++#include <Winsock2.h>
++#include <Windows.h>
++#endif
+
+ #include <hiredis.h>
+ #include <hiredis_ssl.h>
+diff --git a/examples/example.c b/examples/example.c
+index 0e93fc8..339e322 100644
+--- a/examples/example.c
++++ b/examples/example.c
+@@ -1,6 +1,10 @@
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
++#ifdef _WIN32
++#include <Winsock2.h>
++#include <Windows.h>
++#endif
+
+ #include <hiredis.h>
+
diff --git a/ports/hiredis/fix-pthread.h-not-found-on-windows.patch b/ports/hiredis/fix-pthread.h-not-found-on-windows.patch
new file mode 100644
index 000000000..e927bc431
--- /dev/null
+++ b/ports/hiredis/fix-pthread.h-not-found-on-windows.patch
@@ -0,0 +1,16 @@
+diff --git a/ssl.c b/ssl.c
+index 78ab9e4..768f304 100644
+--- a/ssl.c
++++ b/ssl.c
+@@ -34,7 +34,11 @@
+ #include "async.h"
+
+ #include <assert.h>
++#ifdef _WIN32
++#include <windows.h>
++#else
+ #include <pthread.h>
++#endif
+ #include <errno.h>
+ #include <string.h>
+
diff --git a/ports/hiredis/portfile.cmake b/ports/hiredis/portfile.cmake
index 833d428ee..4d3a97c7e 100644
--- a/ports/hiredis/portfile.cmake
+++ b/ports/hiredis/portfile.cmake
@@ -12,6 +12,7 @@ vcpkg_from_github(
fix-feature-example.patch
support-static-in-win.patch
fix-timeval.patch
+ fix-pthread.h-not-found-on-windows.patch
)
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
@@ -32,4 +33,4 @@ vcpkg_copy_pdbs()
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
# Handle copyright
-file(INSTALL ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
+file(INSTALL ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) \ No newline at end of file