aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornicole mazzuca <mazzucan@outlook.com>2020-03-04 10:38:47 -0800
committerGitHub <noreply@github.com>2020-03-04 10:38:47 -0800
commit9eb82bf53b3d98ec6e7f2e01547976647cabf64b (patch)
treecdee836b890b2e033d6f5344ffc81d4aca74be69
parent39d22e2c999ff9ae0154a4681bb0ffbb344a3ac6 (diff)
downloadvcpkg-9eb82bf53b3d98ec6e7f2e01547976647cabf64b.tar.gz
vcpkg-9eb82bf53b3d98ec6e7f2e01547976647cabf64b.zip
[usockets] Add features (#10303)
-rw-r--r--ports/usockets/CMakeLists.txt25
-rw-r--r--ports/usockets/CONTROL15
-rw-r--r--ports/usockets/portfile.cmake13
3 files changed, 46 insertions, 7 deletions
diff --git a/ports/usockets/CMakeLists.txt b/ports/usockets/CMakeLists.txt
index 21f6294e8..0a5fd0dae 100644
--- a/ports/usockets/CMakeLists.txt
+++ b/ports/usockets/CMakeLists.txt
@@ -20,6 +20,27 @@ include_directories(APPEND "${CMAKE_CURRENT_LIST_DIR}/src")
file(GLOB SOURCES src/*.c src/eventing/*.c)
+set(USOCKETS_EXT_INCLUDE_DIR )
+set(USOCKETS_EXT_LIBS )
+
+if (CMAKE_USE_OPENSSL)
+ find_package(OpenSSL REQUIRED)
+ file(GLOB SSL_SOURCES src/crypto/*.c)
+ list(APPEND SOURCES ${SSL_SOURCES})
+ list(APPEND USOCKETS_EXT_LIBS OpenSSL::SSL OpenSSL::Crypto)
+endif()
+
+if (CMAKE_USE_EVENT)
+ file(GLOB SSL_SOURCES src/eventing/*.c)
+ list(APPEND SOURCES ${SSL_SOURCES})
+ list(APPEND USOCKETS_EXT_INCLUDE_DIR src/internal/eventing)
+endif()
+
+if (CMAKE_USE_NETWORK)
+ list(APPEND USOCKETS_EXT_INCLUDE_DIR src/internal/networking)
+ list(APPEND USOCKETS_EXT_LIBS Ws2_32)
+endif()
+
add_library(uSockets ${SOURCES})
if (${LIBUS_USE_LIBUV})
@@ -27,8 +48,8 @@ if (${LIBUS_USE_LIBUV})
endif()
target_compile_definitions(uSockets PRIVATE ${NOT_USE_OPENSSL} ${USE_OPENSSL})
-target_include_directories(uSockets PUBLIC ${OPENSSL_INCLUDE_DIR} ${LIBUV_INCLUDE_DIR} )
-target_link_libraries(uSockets PUBLIC ${OPENSSL_LIBRARIES} ${LIBUV_LIBRARY})
+target_include_directories(uSockets PUBLIC ${OPENSSL_INCLUDE_DIR} ${LIBUV_INCLUDE_DIR} ${USOCKETS_EXT_INCLUDE_DIR})
+target_link_libraries(uSockets PUBLIC ${OPENSSL_LIBRARIES} ${LIBUV_LIBRARY} ${USOCKETS_EXT_LIBS})
install(TARGETS uSockets
RUNTIME DESTINATION bin
diff --git a/ports/usockets/CONTROL b/ports/usockets/CONTROL
index 6078aa0ec..9c8143f40 100644
--- a/ports/usockets/CONTROL
+++ b/ports/usockets/CONTROL
@@ -1,4 +1,15 @@
Source: usockets
-Version: 0.3.5
+Version: 0.3.5-1
Build-Depends:libuv
-Description: Miniscule cross-platform eventing, networking & crypto for async applications \ No newline at end of file
+Description: Miniscule cross-platform eventing, networking & crypto for async applications
+
+Feature: ssl
+Build-Depends: openssl
+Description: Build usockets with openssl support
+
+Feature: event
+Description: Build usockets with epoll support
+
+Feature: network
+Build-Depends: winsock2
+Description: Build usockets with winsock support \ No newline at end of file
diff --git a/ports/usockets/portfile.cmake b/ports/usockets/portfile.cmake
index b9b4a62ab..9fdd15b49 100644
--- a/ports/usockets/portfile.cmake
+++ b/ports/usockets/portfile.cmake
@@ -12,13 +12,20 @@ vcpkg_from_github(
file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH})
-set(USE_OPENSSL OFF)
+if ("network" IN_LIST FEATURES AND NOT VCPKG_TARGET_IS_WINDOWS)
+ message(FATAL_ERROR "Feature network only support Windows")
+endif()
+
+vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
+ ssl CMAKE_USE_OPENSSL
+ event CMAKE_USE_EVENT
+ network CMAKE_USE_NETWORK
+)
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
PREFER_NINJA
- OPTIONS
- -DCMAKE_USE_OPENSSL=${USE_OPENSSL}
+ OPTIONS ${FEATURE_OPTIONS}
-DLIBUS_USE_LIBUV=${USE_LIBUV}
OPTIONS_DEBUG
-DINSTALL_HEADERS=OFF