aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJack·Boos·Yu <47264268+JackBoosY@users.noreply.github.com>2019-12-24 04:18:50 +0800
committerRobert Schumacher <roschuma@microsoft.com>2019-12-23 12:18:50 -0800
commitf3c11016efb9acd4dd2f16f98519bb7b499f5a45 (patch)
treeb7b27a134e97b32f6b8afe3abf7158fc0ad43fa7
parentc0d22c88ea7638d1b74339f9e9adfd37b0f525ed (diff)
downloadvcpkg-f3c11016efb9acd4dd2f16f98519bb7b499f5a45.tar.gz
vcpkg-f3c11016efb9acd4dd2f16f98519bb7b499f5a45.zip
[hiredis] Support building static (#9388)
* [hiredis] Support building static * update baseline * update baseline
-rw-r--r--ports/hiredis/CONTROL5
-rw-r--r--ports/hiredis/fix-feature-example.patch76
-rw-r--r--ports/hiredis/portfile.cmake7
-rw-r--r--ports/hiredis/support-static-in-win.patch22
-rw-r--r--scripts/ci.baseline.txt8
5 files changed, 111 insertions, 7 deletions
diff --git a/ports/hiredis/CONTROL b/ports/hiredis/CONTROL
index 053a9015a..67534fac3 100644
--- a/ports/hiredis/CONTROL
+++ b/ports/hiredis/CONTROL
@@ -1,5 +1,5 @@
Source: hiredis
-Version: 2019-11-1
+Version: 2019-11-2
Homepage: https://github.com/redis/hiredis
Description: Hiredis is a minimalistic C client library for the Redis database.
@@ -8,4 +8,5 @@ Description: Build hiredis_ssl for SSL support
Build-Depends: openssl
Feature: example
-Description: Build example \ No newline at end of file
+Description: Build example
+Build-Depends: libevent, pthread \ No newline at end of file
diff --git a/ports/hiredis/fix-feature-example.patch b/ports/hiredis/fix-feature-example.patch
new file mode 100644
index 000000000..a61900185
--- /dev/null
+++ b/ports/hiredis/fix-feature-example.patch
@@ -0,0 +1,76 @@
+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/ports/hiredis/portfile.cmake b/ports/hiredis/portfile.cmake
index afadee6ef..bcd8ba1e6 100644
--- a/ports/hiredis/portfile.cmake
+++ b/ports/hiredis/portfile.cmake
@@ -1,4 +1,6 @@
-vcpkg_fail_port_install(ON_TARGET "Windows")
+if (VCPKG_TARGET_IS_WINDOWS)
+ vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
+endif()
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
@@ -6,6 +8,9 @@ vcpkg_from_github(
REF e777b0295eeeda89ee2ecef6ec5cb54889033d94
SHA512 9486ce3e40580ca6a1da8a31c3e139eb8b5e17ac1b94bd0987f2435aeb2465ad271784d5e8e83dc6cbaf362f95c9e175efa5fbe80a63c56070ceb212d3d68470
HEAD_REF master
+ PATCHES
+ fix-feature-example.patch
+ support-static-in-win.patch
)
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
diff --git a/ports/hiredis/support-static-in-win.patch b/ports/hiredis/support-static-in-win.patch
new file mode 100644
index 000000000..94e6ebe9d
--- /dev/null
+++ b/ports/hiredis/support-static-in-win.patch
@@ -0,0 +1,22 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 9e78894..87aba5b 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -22,7 +22,7 @@ PROJECT(hiredis VERSION "${VERSION}")
+
+ SET(ENABLE_EXAMPLES OFF CACHE BOOL "Enable building hiredis examples")
+
+-ADD_LIBRARY(hiredis SHARED
++ADD_LIBRARY(hiredis
+ async.c
+ dict.c
+ hiredis.c
+@@ -60,7 +60,7 @@ IF(ENABLE_SSL)
+ ENDIF()
+ ENDIF()
+ FIND_PACKAGE(OpenSSL REQUIRED)
+- ADD_LIBRARY(hiredis_ssl SHARED
++ ADD_LIBRARY(hiredis_ssl
+ ssl.c)
+ TARGET_INCLUDE_DIRECTORIES(hiredis_ssl PRIVATE "${OPENSSL_INCLUDE_DIR}")
+ TARGET_LINK_LIBRARIES(hiredis_ssl PRIVATE ${OPENSSL_LIBRARIES})
diff --git a/scripts/ci.baseline.txt b/scripts/ci.baseline.txt
index c53c3e314..a905cba96 100644
--- a/scripts/ci.baseline.txt
+++ b/scripts/ci.baseline.txt
@@ -579,12 +579,8 @@ hidapi:x64-linux=fail
hidapi:x64-osx=fail
hidapi:x64-uwp=fail
highfive:x64-osx=fail
-hiredis:arm64-windows=fail
hiredis:arm-uwp=fail
hiredis:x64-uwp=fail
-hiredis:x64-windows=fail
-hiredis:x64-windows-static=fail
-hiredis:x86-windows=fail
hpx:x64-windows-static=fail
hunspell:x64-linux=fail
hunspell:x64-osx=fail
@@ -1449,6 +1445,10 @@ realsense2:arm-uwp=fail
realsense2:x64-linux=fail
realsense2:x64-osx=fail
realsense2:x64-uwp=fail
+redis-plus-plus:x86-windows=fail
+redis-plus-plus:x64-windows=fail
+redis-plus-plus:x64-windows-static=fail
+redis-plus-plus:arm64-windows=fail
reproc:arm-uwp=fail
reproc:x64-uwp=fail
restbed:arm-uwp=fail