diff options
| author | NancyLi1013 <46708020+NancyLi1013@users.noreply.github.com> | 2020-07-16 06:55:31 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-07-15 15:55:31 -0700 |
| commit | fc761ebb72a40574200b6b99e81458ead68da12a (patch) | |
| tree | 28ac291ee3bdff223e391873c316a792d211b282 | |
| parent | 85a5acfd3c345a968e5156e383967d7cef19c933 (diff) | |
| download | vcpkg-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/CONTROL | 5 | ||||
| -rw-r--r-- | ports/hiredis/fix-feature-example.patch | 183 | ||||
| -rw-r--r-- | ports/hiredis/fix-pthread.h-not-found-on-windows.patch | 16 | ||||
| -rw-r--r-- | ports/hiredis/portfile.cmake | 3 |
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 |
