mirror of
https://github.com/coturn/coturn.git
synced 2025-10-23 20:11:17 +02:00
98 lines
3.3 KiB
CMake
98 lines
3.3 KiB
CMake
# Author: Kang Lin (kl222@126.com)
|
|
|
|
# Try to find Libevent
|
|
# Once done, this will define
|
|
#
|
|
# Libevent_FOUND - system has Libevent
|
|
# Libevent_INCLUDE_DIRS - Libevent include directories
|
|
# Libevent_LIBRARIES - libraries needed to use Libevent
|
|
#
|
|
# and the following imported targets
|
|
#
|
|
# Libevent::core - the core functons of Libevent
|
|
# Libevent::extra - extra functions, contains http, dns and rpc
|
|
# Libevent::pthreads - multiple threads for Libevent, not exists on Windows
|
|
# Libevent::openssl - openssl support for Libevent
|
|
|
|
macro(no_component_msg _comp)
|
|
if(${CMAKE_FIND_PACKAGE_NAME}_FIND_REQUIRED_${_comp})
|
|
set(pthreadlib)
|
|
if(NOT WIN32)
|
|
set(pthreadlib ", pthreads")
|
|
endif()
|
|
message(FATAL_ERROR "Your libevent library does not contain a ${_comp} component!\n"
|
|
"The valid components are core, extra${pthreadlib} and openssl.")
|
|
else()
|
|
message_if_needed(WARNING "Your libevent library does not contain a ${_comp} component!")
|
|
endif()
|
|
endmacro()
|
|
|
|
set(_AVAILABLE_LIBS core extra openssl pthreads)
|
|
set(_EVENT_COMPONENTS)
|
|
if(${CMAKE_FIND_PACKAGE_NAME}_FIND_COMPONENTS)
|
|
foreach(_comp ${${CMAKE_FIND_PACKAGE_NAME}_FIND_COMPONENTS})
|
|
list(FIND _AVAILABLE_LIBS ${_comp} _INDEX)
|
|
if(_INDEX GREATER -1)
|
|
list(APPEND _EVENT_COMPONENTS ${_comp})
|
|
else()
|
|
no_component_msg(${_comp})
|
|
endif()
|
|
endforeach()
|
|
else()
|
|
set(_EVENT_COMPONENTS core extra openssl)
|
|
if(NOT WIN32)
|
|
list(APPEND _EVENT_COMPONENTS pthreads)
|
|
endif()
|
|
endif()
|
|
|
|
foreach(_libevent_comp ${_EVENT_COMPONENTS})
|
|
list(APPEND _libevent_comps libevent_${_libevent_comp})
|
|
endforeach()
|
|
|
|
find_package(PkgConfig)
|
|
pkg_check_modules(PC_Libevent QUIET ${_libevent_comps})
|
|
if(PC_Libevent_FOUND)
|
|
set(Libevent_VERSION ${PC_Libevent_VERSION})
|
|
else()
|
|
foreach(_libevent_comp ${_EVENT_COMPONENTS})
|
|
list(APPEND PC_Libevent_LIBRARIES event_${_libevent_comp})
|
|
endforeach()
|
|
endif()
|
|
|
|
find_path(Libevent_INCLUDE_DIR
|
|
NAMES event2/event.h
|
|
HINTS ${Libevent_ROOT} ${PC_Libevent_INCLUDEDIR} ${PC_Libevent_INCLUDE_DIRS} /usr
|
|
PATHS $ENV{Libevent_DIR} ${Libevent_DIR}
|
|
PATH_SUFFIXES include
|
|
)
|
|
|
|
foreach(Libevent_var ${PC_Libevent_LIBRARIES})
|
|
unset(Libevent_lib CACHE)
|
|
find_library(
|
|
Libevent_lib
|
|
NAMES
|
|
${Libevent_var}
|
|
HINTS ${Libevent_ROOT} ${PC_Libevent_LIBDIR} ${PC_Libevent_LIBRARY_DIRS}
|
|
PATHS $ENV{Libevent_DIR} ${Libevent_DIR}
|
|
PATH_SUFFIXES ${CMAKE_INSTALL_LIBDIR} lib)
|
|
if(Libevent_lib)
|
|
string(REPLACE event_ "" _name ${Libevent_var})
|
|
add_library(Libevent::${_name} UNKNOWN IMPORTED)
|
|
set_target_properties(Libevent::${_name} PROPERTIES
|
|
IMPORTED_LOCATION "${Libevent_lib}"
|
|
INTERFACE_INCLUDE_DIRECTORIES "${Libevent_INCLUDE_DIR}")
|
|
list(APPEND Libevent_LIBRARY ${Libevent_lib})
|
|
endif()
|
|
endforeach()
|
|
|
|
include(FindPackageHandleStandardArgs)
|
|
find_package_handle_standard_args(Libevent
|
|
REQUIRED_VARS Libevent_LIBRARY Libevent_INCLUDE_DIR)
|
|
|
|
mark_as_advanced(Libevent_FOUND Libevent_INCLUDE_DIR Libevent_LIBRARY Libevent_lib)
|
|
|
|
set(Libevent_INCLUDE_DIRS ${Libevent_INCLUDE_DIR})
|
|
set(Libevent_LIBRARIES ${Libevent_LIBRARY})
|
|
unset(Libevent_INCLUDE_DIR)
|
|
unset(Libevent_LIBRARY)
|