mirror of
https://github.com/shadowsocks/shadowsocks-libev.git
synced 2026-10-29 20:43:44 +00:00
70 lines
2.7 KiB
CMake
70 lines
2.7 KiB
CMake
set(SS_DEPENDENCY_MODE "bundled" CACHE STRING "Dependency source: bundled or system")
|
|
set_property(CACHE SS_DEPENDENCY_MODE PROPERTY STRINGS bundled system)
|
|
set(SS_MATH_LIBRARY "")
|
|
if(NOT WIN32)
|
|
set(SS_MATH_LIBRARY m)
|
|
endif()
|
|
find_package(Threads REQUIRED)
|
|
if(SS_DEPENDENCY_MODE STREQUAL "bundled")
|
|
if(NOT WITH_STATIC)
|
|
message(FATAL_ERROR "Bundled mode requires WITH_STATIC=ON; use system mode for shared dependencies")
|
|
endif()
|
|
add_subdirectory(third_party)
|
|
return()
|
|
elseif(NOT SS_DEPENDENCY_MODE STREQUAL "system")
|
|
message(FATAL_ERROR "SS_DEPENDENCY_MODE must be bundled or system")
|
|
endif()
|
|
if(WIN32)
|
|
message(FATAL_ERROR "Windows requires bundled dependencies: libev must use this project's Winsock handle adapter")
|
|
endif()
|
|
|
|
# Select one linkage mode consistently for programs, libraries, and tests.
|
|
# Never require shared copies in a static dependency build.
|
|
if(WITH_STATIC)
|
|
set(_ss_saved_suffixes ${CMAKE_FIND_LIBRARY_SUFFIXES})
|
|
set(CMAKE_FIND_LIBRARY_SUFFIXES .a)
|
|
endif()
|
|
if(SS_ENABLE_REGEX)
|
|
find_package(PCRE2 REQUIRED)
|
|
endif()
|
|
find_package(MbedTLS REQUIRED)
|
|
find_package(Sodium REQUIRED)
|
|
find_package(Cares REQUIRED)
|
|
find_path(LIBEV_INCLUDE_DIR ev.h)
|
|
find_library(LIBEV_LIBRARY NAMES ev)
|
|
include(FindPackageHandleStandardArgs)
|
|
find_package_handle_standard_args(Libev REQUIRED_VARS LIBEV_LIBRARY LIBEV_INCLUDE_DIR)
|
|
find_package(Threads REQUIRED)
|
|
if(WITH_STATIC)
|
|
set(CMAKE_FIND_LIBRARY_SUFFIXES ${_ss_saved_suffixes})
|
|
endif()
|
|
|
|
function(ss_import_dependency target location includes)
|
|
add_library(${target} UNKNOWN IMPORTED GLOBAL)
|
|
set_target_properties(${target} PROPERTIES
|
|
IMPORTED_LOCATION "${location}"
|
|
INTERFACE_INCLUDE_DIRECTORIES "${includes}")
|
|
endfunction()
|
|
ss_import_dependency(ss_sodium "${SODIUM_LIBRARY}" "${SODIUM_INCLUDE_DIRS}")
|
|
ss_import_dependency(ss_mbedcrypto "${MBEDTLS_CRYPTO_LIBRARY}" "${MBEDTLS_INCLUDE_DIRS}")
|
|
ss_import_dependency(ss_cares "${CARES_LIBRARY}" "${CARES_INCLUDE_DIRS}")
|
|
if(SS_ENABLE_REGEX)
|
|
ss_import_dependency(ss_pcre2 "${PCRE2_LIBRARY}" "${PCRE2_INCLUDE_DIRS}")
|
|
endif()
|
|
ss_import_dependency(ss_ev "${LIBEV_LIBRARY}" "${LIBEV_INCLUDE_DIR}")
|
|
if(WIN32)
|
|
set_property(TARGET ss_cares APPEND PROPERTY INTERFACE_LINK_LIBRARIES ws2_32 iphlpapi)
|
|
set_property(TARGET ss_ev APPEND PROPERTY INTERFACE_LINK_LIBRARIES ws2_32)
|
|
if(WITH_STATIC)
|
|
set_property(TARGET ss_cares APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS CARES_STATICLIB)
|
|
if(SS_ENABLE_REGEX)
|
|
set_property(TARGET ss_pcre2 APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS PCRE2_STATIC)
|
|
endif()
|
|
set_property(TARGET ss_sodium APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS SODIUM_STATIC)
|
|
endif()
|
|
endif()
|
|
set(SS_MATH_LIBRARY "")
|
|
if(NOT WIN32)
|
|
set(SS_MATH_LIBRARY m)
|
|
endif()
|