xref: /aosp_15_r20/external/libevent/cmake/LibeventConfig.cmake.in (revision 663afb9b963571284e0f0a60f257164ab54f64bf)
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