1*663afb9bSAndroid Build Coastguard Worker# - Config file for the Libevent package 2*663afb9bSAndroid Build Coastguard Worker# It defines the following variables 3*663afb9bSAndroid Build Coastguard Worker# LIBEVENT_FOUND - true if libevent and all required components found on the system 4*663afb9bSAndroid Build Coastguard Worker# LIBEVENT_xxx_FOUND - true if component xxx(see available components) found on the system 5*663afb9bSAndroid Build Coastguard Worker# LIBEVENT_VERSION - libevent version in format Major.Minor.Patch 6*663afb9bSAndroid Build Coastguard Worker# LIBEVENT_INCLUDE_DIRS - directories where libevent header is located. 7*663afb9bSAndroid Build Coastguard Worker# LIBEVENT_INCLUDE_DIR - same as DIRS 8*663afb9bSAndroid Build Coastguard Worker# LIBEVENT_LIBRARIES - libevent library to link against. 9*663afb9bSAndroid Build Coastguard Worker# LIBEVENT_LIBRARY - same as LIBRARIES 10*663afb9bSAndroid Build Coastguard Worker# 11*663afb9bSAndroid Build Coastguard Worker# These variables are deprecated, don't use them. 12*663afb9bSAndroid Build Coastguard Worker# LIBEVENT_STATIC_LIBRARIES - libraries to link against (archive/static) 13*663afb9bSAndroid Build Coastguard Worker# LIBEVENT_SHARED_LIBRARIES - libraries to link against (shared) 14*663afb9bSAndroid Build Coastguard Worker# 15*663afb9bSAndroid Build Coastguard Worker# When you try to locate the libevent libraries, you should specify which components you want to use. 16*663afb9bSAndroid Build Coastguard Worker# The following table lists all available components. If none is given, all imported targets will used. 17*663afb9bSAndroid Build Coastguard Worker# core - the core functons of libevent 18*663afb9bSAndroid Build Coastguard Worker# extra - extra functions, contains http, dns and rpc 19*663afb9bSAndroid Build Coastguard Worker# pthreads - multiple threads for libevent, not exists on Windows 20*663afb9bSAndroid Build Coastguard Worker# openssl - openssl support for libevent 21*663afb9bSAndroid Build Coastguard Worker# 22*663afb9bSAndroid Build Coastguard Worker# By default, the shared libraries of libevent will be found. To find the static ones instead, 23*663afb9bSAndroid Build Coastguard Worker# you must set the LIBEVENT_STATIC_LINK variable to TRUE before calling find_package(Libevent ...). 24*663afb9bSAndroid Build Coastguard Worker# If no component provided, all components will be used. 25*663afb9bSAndroid Build Coastguard Worker# example: 26*663afb9bSAndroid Build Coastguard Worker# set(LIBEVENT_STATIC_LINK TRUE) 27*663afb9bSAndroid Build Coastguard Worker# find_package(Libevent 2.2 REQUIRED COMPONENTS core) 28*663afb9bSAndroid Build Coastguard Worker# include_directories(${LIBEVENT_INCLUDE_DIRS}) # Can be omitted 29*663afb9bSAndroid Build Coastguard Worker# target_link_libraries(myapp ${LIBEVENT_LIBRARIES}) 30*663afb9bSAndroid Build Coastguard Worker# or target_link_libraries(myapp libevent::core) 31*663afb9bSAndroid Build Coastguard Worker# 32*663afb9bSAndroid Build Coastguard Worker# find_package() can handle dependencies automatically. For example, given the 'openssl' component, 33*663afb9bSAndroid Build Coastguard Worker# all dependencies (libevent_core, libssl, libcrypto and openssl include directories) will be found. 34*663afb9bSAndroid Build Coastguard Worker 35*663afb9bSAndroid Build Coastguard Workerset(CONFIG_FOR_INSTALL_TREE @CONFIG_FOR_INSTALL_TREE@) 36*663afb9bSAndroid Build Coastguard Worker 37*663afb9bSAndroid Build Coastguard Workerset(LIBEVENT_VERSION @EVENT_PACKAGE_VERSION@) 38*663afb9bSAndroid Build Coastguard Worker 39*663afb9bSAndroid Build Coastguard Worker# IMPORTED targets from LibeventTargets.cmake 40*663afb9bSAndroid Build Coastguard Workerset(LIBEVENT_STATIC_LIBRARIES "@LIBEVENT_STATIC_LIBRARIES@") 41*663afb9bSAndroid Build Coastguard Workerset(LIBEVENT_SHARED_LIBRARIES "@LIBEVENT_SHARED_LIBRARIES@") 42*663afb9bSAndroid Build Coastguard Worker 43*663afb9bSAndroid Build Coastguard Worker# Default to the same type as libevent was built: 44*663afb9bSAndroid Build Coastguard Workerif(NOT DEFINED LIBEVENT_STATIC_LINK) 45*663afb9bSAndroid Build Coastguard Worker set(LIBEVENT_STATIC_LINK NOT @EVENT_LIBRARY_SHARED@) 46*663afb9bSAndroid Build Coastguard Workerendif() 47*663afb9bSAndroid Build Coastguard Worker 48*663afb9bSAndroid Build Coastguard Workerset(CMAKE_FIND_LIBRARY_SUFFIXES_SAVE "${CMAKE_FIND_LIBRARY_SUFFIXES}") 49*663afb9bSAndroid Build Coastguard Workerif(${LIBEVENT_STATIC_LINK}) 50*663afb9bSAndroid Build Coastguard Worker set(_LIB_TYPE static) 51*663afb9bSAndroid Build Coastguard Worker set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_STATIC_LIBRARY_SUFFIX}) 52*663afb9bSAndroid Build Coastguard Worker set(_AVAILABLE_LIBS "${LIBEVENT_STATIC_LIBRARIES}") 53*663afb9bSAndroid Build Coastguard Workerelse() 54*663afb9bSAndroid Build Coastguard Worker set(_LIB_TYPE shared) 55*663afb9bSAndroid Build Coastguard Worker set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_SHARED_LIBRARY_SUFFIX}) 56*663afb9bSAndroid Build Coastguard Worker set(_AVAILABLE_LIBS "${LIBEVENT_SHARED_LIBRARIES}") 57*663afb9bSAndroid Build Coastguard Workerendif() 58*663afb9bSAndroid Build Coastguard Worker 59*663afb9bSAndroid Build Coastguard Worker# Get the path of the current file. 60*663afb9bSAndroid Build Coastguard Workerget_filename_component(LIBEVENT_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) 61*663afb9bSAndroid Build Coastguard Workerget_filename_component(_INSTALL_PREFIX "${LIBEVENT_CMAKE_DIR}/../../.." ABSOLUTE) 62*663afb9bSAndroid Build Coastguard Worker 63*663afb9bSAndroid Build Coastguard Workermacro(message_if_needed _flag _msg) 64*663afb9bSAndroid Build Coastguard Worker if (NOT ${CMAKE_FIND_PACKAGE_NAME}_FIND_QUIETLY) 65*663afb9bSAndroid Build Coastguard Worker message(${_flag} "${_msg}") 66*663afb9bSAndroid Build Coastguard Worker endif() 67*663afb9bSAndroid Build Coastguard Workerendmacro() 68*663afb9bSAndroid Build Coastguard Worker 69*663afb9bSAndroid Build Coastguard Workermacro(no_component_msg _comp) 70*663afb9bSAndroid Build Coastguard Worker if(${CMAKE_FIND_PACKAGE_NAME}_FIND_REQUIRED_${_comp}) 71*663afb9bSAndroid Build Coastguard Worker set(pthreadlib) 72*663afb9bSAndroid Build Coastguard Worker if(NOT WIN32) 73*663afb9bSAndroid Build Coastguard Worker set(pthreadlib ", pthreads") 74*663afb9bSAndroid Build Coastguard Worker endif() 75*663afb9bSAndroid Build Coastguard Worker message(FATAL_ERROR "Your libevent library does not contain a ${_comp} component!\n" 76*663afb9bSAndroid Build Coastguard Worker "The valid components are core, extra${pthreadlib} and openssl.") 77*663afb9bSAndroid Build Coastguard Worker else() 78*663afb9bSAndroid Build Coastguard Worker message_if_needed(WARNING "Your libevent library does not contain a ${_comp} component!") 79*663afb9bSAndroid Build Coastguard Worker endif() 80*663afb9bSAndroid Build Coastguard Workerendmacro() 81*663afb9bSAndroid Build Coastguard Worker 82*663afb9bSAndroid Build Coastguard Workerset(_EVENT_COMPONENTS) 83*663afb9bSAndroid Build Coastguard Workerif(${CMAKE_FIND_PACKAGE_NAME}_FIND_COMPONENTS) 84*663afb9bSAndroid Build Coastguard Worker list(REMOVE_DUPLICATES ${CMAKE_FIND_PACKAGE_NAME}_FIND_COMPONENTS) 85*663afb9bSAndroid Build Coastguard Worker foreach(_comp ${${CMAKE_FIND_PACKAGE_NAME}_FIND_COMPONENTS}) 86*663afb9bSAndroid Build Coastguard Worker list(FIND _AVAILABLE_LIBS ${_comp} _INDEX) 87*663afb9bSAndroid Build Coastguard Worker if(_INDEX GREATER -1) 88*663afb9bSAndroid Build Coastguard Worker list(APPEND _EVENT_COMPONENTS ${_comp}) 89*663afb9bSAndroid Build Coastguard Worker else() 90*663afb9bSAndroid Build Coastguard Worker no_component_msg(${_comp}) 91*663afb9bSAndroid Build Coastguard Worker endif() 92*663afb9bSAndroid Build Coastguard Worker endforeach() 93*663afb9bSAndroid Build Coastguard Workerelse() 94*663afb9bSAndroid Build Coastguard Worker set(_EVENT_COMPONENTS ${_AVAILABLE_LIBS}) 95*663afb9bSAndroid Build Coastguard Workerendif() 96*663afb9bSAndroid Build Coastguard Worker 97*663afb9bSAndroid Build Coastguard Workerset(_POSSIBLE_PKG_NAMES) 98*663afb9bSAndroid Build Coastguard Workerlist(APPEND _POSSIBLE_PKG_NAMES ${CMAKE_FIND_PACKAGE_NAME} LIBEVENT Libevent libevent) 99*663afb9bSAndroid Build Coastguard Workerlist(REMOVE_DUPLICATES _POSSIBLE_PKG_NAMES) 100*663afb9bSAndroid Build Coastguard Worker 101*663afb9bSAndroid Build Coastguard Workermacro(set_case_insensitive_found _comp) 102*663afb9bSAndroid Build Coastguard Worker foreach(name ${_POSSIBLE_PKG_NAMES}) 103*663afb9bSAndroid Build Coastguard Worker if("${_comp}" STREQUAL "") 104*663afb9bSAndroid Build Coastguard Worker set(${name}_FOUND TRUE) 105*663afb9bSAndroid Build Coastguard Worker set(${name}_NOTFOUND FALSE) 106*663afb9bSAndroid Build Coastguard Worker else() 107*663afb9bSAndroid Build Coastguard Worker set(${name}_${_comp}_FOUND TRUE) 108*663afb9bSAndroid Build Coastguard Worker set(${name}_${_comp}_NOTFOUND FALSE) 109*663afb9bSAndroid Build Coastguard Worker endif() 110*663afb9bSAndroid Build Coastguard Worker endforeach() 111*663afb9bSAndroid Build Coastguard Workerendmacro() 112*663afb9bSAndroid Build Coastguard Worker 113*663afb9bSAndroid Build Coastguard Workerif(CONFIG_FOR_INSTALL_TREE) 114*663afb9bSAndroid Build Coastguard Worker ## Config for install tree ---------------------------------------- 115*663afb9bSAndroid Build Coastguard Worker # Find includes 116*663afb9bSAndroid Build Coastguard Worker unset(_event_h CACHE) 117*663afb9bSAndroid Build Coastguard Worker find_path(_event_h 118*663afb9bSAndroid Build Coastguard Worker NAMES event2/event.h 119*663afb9bSAndroid Build Coastguard Worker PATHS "${_INSTALL_PREFIX}/include" 120*663afb9bSAndroid Build Coastguard Worker NO_DEFAULT_PATH) 121*663afb9bSAndroid Build Coastguard Worker if(_event_h) 122*663afb9bSAndroid Build Coastguard Worker set(LIBEVENT_INCLUDE_DIRS "${_event_h}") 123*663afb9bSAndroid Build Coastguard Worker message_if_needed(STATUS "Found libevent include directory: ${_event_h}") 124*663afb9bSAndroid Build Coastguard Worker else() 125*663afb9bSAndroid Build Coastguard Worker message_if_needed(WARNING "Your libevent library does not contain header files!") 126*663afb9bSAndroid Build Coastguard Worker endif() 127*663afb9bSAndroid Build Coastguard Worker 128*663afb9bSAndroid Build Coastguard Worker # Find libraries 129*663afb9bSAndroid Build Coastguard Worker macro(find_event_lib _comp) 130*663afb9bSAndroid Build Coastguard Worker unset(_event_lib CACHE) 131*663afb9bSAndroid Build Coastguard Worker find_library(_event_lib 132*663afb9bSAndroid Build Coastguard Worker NAMES "event_${_comp}" 133*663afb9bSAndroid Build Coastguard Worker PATHS "${_INSTALL_PREFIX}/lib" 134*663afb9bSAndroid Build Coastguard Worker NO_DEFAULT_PATH) 135*663afb9bSAndroid Build Coastguard Worker if(_event_lib) 136*663afb9bSAndroid Build Coastguard Worker list(APPEND LIBEVENT_LIBRARIES "libevent::${_comp}") 137*663afb9bSAndroid Build Coastguard Worker set_case_insensitive_found(${_comp}) 138*663afb9bSAndroid Build Coastguard Worker message_if_needed(STATUS "Found libevent component: ${_event_lib}") 139*663afb9bSAndroid Build Coastguard Worker else() 140*663afb9bSAndroid Build Coastguard Worker no_component_msg(${_comp}) 141*663afb9bSAndroid Build Coastguard Worker endif() 142*663afb9bSAndroid Build Coastguard Worker endmacro() 143*663afb9bSAndroid Build Coastguard Worker 144*663afb9bSAndroid Build Coastguard Worker foreach(comp ${_EVENT_COMPONENTS}) 145*663afb9bSAndroid Build Coastguard Worker find_event_lib(${comp}) 146*663afb9bSAndroid Build Coastguard Worker endforeach() 147*663afb9bSAndroid Build Coastguard Workerelse() 148*663afb9bSAndroid Build Coastguard Worker ## Config for build tree ---------------------------------------- 149*663afb9bSAndroid Build Coastguard Worker set(LIBEVENT_INCLUDE_DIRS "@EVENT__INCLUDE_DIRS@") 150*663afb9bSAndroid Build Coastguard Worker foreach(_comp ${_EVENT_COMPONENTS}) 151*663afb9bSAndroid Build Coastguard Worker list(APPEND LIBEVENT_LIBRARIES "libevent::${_comp}") 152*663afb9bSAndroid Build Coastguard Worker set_case_insensitive_found(${_comp}) 153*663afb9bSAndroid Build Coastguard Worker endforeach() 154*663afb9bSAndroid Build Coastguard Workerendif() 155*663afb9bSAndroid Build Coastguard Worker 156*663afb9bSAndroid Build Coastguard Workerset(LIBEVENT_INCLUDE_DIR ${LIBEVENT_INCLUDE_DIRS}) 157*663afb9bSAndroid Build Coastguard Workerif(LIBEVENT_LIBRARIES) 158*663afb9bSAndroid Build Coastguard Worker set(LIBEVENT_LIBRARY ${LIBEVENT_LIBRARIES}) 159*663afb9bSAndroid Build Coastguard Worker if(CONFIG_FOR_INSTALL_TREE) 160*663afb9bSAndroid Build Coastguard Worker message_if_needed(STATUS "Found libevent ${LIBEVENT_VERSION} in ${_INSTALL_PREFIX}") 161*663afb9bSAndroid Build Coastguard Worker else() 162*663afb9bSAndroid Build Coastguard Worker message_if_needed(STATUS "Found libevent ${LIBEVENT_VERSION} in ${LIBEVENT_CMAKE_DIR}") 163*663afb9bSAndroid Build Coastguard Worker endif() 164*663afb9bSAndroid Build Coastguard Worker 165*663afb9bSAndroid Build Coastguard Worker # Avoid including targets more than one times 166*663afb9bSAndroid Build Coastguard Worker if(NOT TARGET event_core_${_LIB_TYPE}) 167*663afb9bSAndroid Build Coastguard Worker # Include the project Targets file, this contains definitions for IMPORTED targets. 168*663afb9bSAndroid Build Coastguard Worker include(${LIBEVENT_CMAKE_DIR}/LibeventTargets-${_LIB_TYPE}.cmake) 169*663afb9bSAndroid Build Coastguard Worker endif() 170*663afb9bSAndroid Build Coastguard Workerelse() 171*663afb9bSAndroid Build Coastguard Worker if(${CMAKE_FIND_PACKAGE_NAME}_FIND_REQUIRED) 172*663afb9bSAndroid Build Coastguard Worker message(FATAL_ERROR "Can not find any libraries for libevent.") 173*663afb9bSAndroid Build Coastguard Worker else() 174*663afb9bSAndroid Build Coastguard Worker message_if_needed(WARNING "Can not find any libraries for libevent.") 175*663afb9bSAndroid Build Coastguard Worker endif() 176*663afb9bSAndroid Build Coastguard Workerendif() 177*663afb9bSAndroid Build Coastguard Worker 178*663afb9bSAndroid Build Coastguard Workerset(CMAKE_FIND_LIBRARY_SUFFIXES "${CMAKE_FIND_LIBRARY_SUFFIXES_SAVE}") 179*663afb9bSAndroid Build Coastguard Workerunset(_LIB_TYPE) 180*663afb9bSAndroid Build Coastguard Workerunset(_AVAILABLE_LIBS) 181*663afb9bSAndroid Build Coastguard Workerunset(_EVENT_COMPONENTS) 182*663afb9bSAndroid Build Coastguard Workerunset(_POSSIBLE_PKG_NAMES) 183*663afb9bSAndroid Build Coastguard Workerunset(_INSTALL_PREFIX) 184