12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- # Author: Kang Lin ([email protected])
- # 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)
|