diff options
| author | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
|---|---|---|
| committer | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
| commit | 54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch) | |
| tree | d915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/usockets/CMakeLists.txt | |
Diffstat (limited to 'vcpkg/ports/usockets/CMakeLists.txt')
| -rw-r--r-- | vcpkg/ports/usockets/CMakeLists.txt | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/vcpkg/ports/usockets/CMakeLists.txt b/vcpkg/ports/usockets/CMakeLists.txt new file mode 100644 index 0000000..0fe9d5d --- /dev/null +++ b/vcpkg/ports/usockets/CMakeLists.txt @@ -0,0 +1,60 @@ +cmake_minimum_required(VERSION 3.30) +project(uSockets C CXX) + +option(WITH_OPENSSL "Enables OpenSSL 1.1+ support") + +# Upstream compiles all sources at once +option(CMAKE_UNITY_BUILD "Combine source for compilation." ON) + +file(GLOB C_SOURCES src/*.c src/eventing/*.c) +add_library(uSockets ${C_SOURCES}) +set_target_properties(uSockets PROPERTIES EXPORT_NAME usockets) +target_include_directories(uSockets + PUBLIC + "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/src>" + "$<INSTALL_INTERFACE:include>" +) + +if(WITH_OPENSSL) + file(GLOB CRYPTO_SOURCES src/crypto/*.c*) + target_sources(uSockets PRIVATE ${CRYPTO_SOURCES}) + target_compile_features(uSockets PRIVATE cxx_std_17) + # https://github.com/uNetworking/uSockets/blob/0ebdde0601cc82349fc11a7c4bbb6dc5c9f28f42/Makefile#L55 + find_package(OpenSSL REQUIRED) + target_link_libraries(uSockets PRIVATE OpenSSL::SSL OpenSSL::Crypto) + target_compile_definitions(uSockets PRIVATE -DLIBUS_USE_OPENSSL) +else() + target_compile_definitions(uSockets PRIVATE -DLIBUS_NO_SSL) +endif() + +if(WIN32 OR ANDROID) + # https://github.com/uNetworking/uSockets/blob/8606de6414a102c55bef8e8ef3391932d7e8df6a/src/libusockets.h#L339-L348 + find_package(libuv CONFIG REQUIRED) + target_link_libraries(uSockets PRIVATE $<IF:$<TARGET_EXISTS:libuv::uv_a>,libuv::uv_a,libuv::uv>) + target_compile_definitions(uSockets PRIVATE -DLIBUS_USE_LIBUV) + + if(WIN32) + # https://github.com/uNetworking/uSockets/blob/8606de6414a102c55bef8e8ef3391932d7e8df6a/src/libusockets.h#L35 + target_link_libraries(uSockets PRIVATE ws2_32) + endif() +endif() + + +install(TARGETS uSockets + EXPORT unofficial-usockets-targets + RUNTIME DESTINATION bin + ARCHIVE DESTINATION lib + LIBRARY DESTINATION lib +) + +install(EXPORT unofficial-usockets-targets + NAMESPACE unofficial::usockets:: + DESTINATION share/unofficial-usockets +) + +configure_file("unofficial-usockets-config.cmake" "${CMAKE_CURRENT_BINARY_DIR}/unofficial-usockets-config.cmake" @ONLY) +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/unofficial-usockets-config.cmake" + DESTINATION share/unofficial-usockets +) + +install(FILES src/libusockets.h DESTINATION include) |