1 include(CMakeParseArguments)
3 set(LIBEVENT_SHARED_LIBRARIES "")
4 set(LIBEVENT_STATIC_LIBRARIES "")
6 macro(set_event_shared_lib_flags LIB_NAME)
7 set_target_properties("${LIB_NAME}_shared" PROPERTIES
9 set_target_properties("${LIB_NAME}_shared" PROPERTIES
13 macro(generate_pkgconfig LIB_NAME)
14 set(prefix ${CMAKE_INSTALL_PREFIX})
15 set(exec_prefix ${CMAKE_INSTALL_PREFIX})
16 set(libdir ${CMAKE_INSTALL_PREFIX}/lib)
17 set(includedir ${CMAKE_INSTALL_PREFIX}/include)
19 set(VERSION ${EVENT_ABI_LIBVERSION})
22 foreach (LIB ${LIB_PLATFORM})
23 set(LIBS "${LIBS} -L${LIB}")
27 foreach(LIB ${OPENSSL_LIBRARIES})
28 set(OPENSSL_LIBS "${OPENSSL_LIBS} -L${LIB}")
31 configure_file("lib${LIB_NAME}.pc.in" "lib${LIB_NAME}.pc" @ONLY)
33 FILES "${CMAKE_CURRENT_BINARY_DIR}/lib${LIB_NAME}.pc"
34 DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig"
39 # Global variables that it uses:
40 # - EVENT_ABI_LIBVERSION
41 # - CMAKE_THREAD_LIBS_INIT LIB_PLATFORM
44 # - EVENT_INSTALL_INCLUDE_DIR
45 # - EVENT_SHARED_FLAGS
46 # - EVENT_LIBRARY_STATIC
47 # - EVENT_LIBRARY_SHARED
50 # - LIBEVENT_SHARED_LIBRARIES
51 # - LIBEVENT_STATIC_LIBRARIES
52 macro(add_event_library LIB_NAME)
53 cmake_parse_arguments(LIB
56 "SOURCES;LIBRARIES" # Multi val
60 set(ADD_EVENT_LIBRARY_TARGETS)
61 set(ADD_EVENT_LIBRARY_INTERFACE)
63 if (${EVENT_LIBRARY_STATIC})
64 add_library("${LIB_NAME}_static" STATIC ${LIB_SOURCES})
65 set_target_properties("${LIB_NAME}_static" PROPERTIES
66 OUTPUT_NAME "${LIB_NAME}"
67 CLEAN_DIRECT_OUTPUT 1)
68 set_target_properties(
69 "${LIB_NAME}_static" PROPERTIES
70 PUBLIC_HEADER "${HDR_PUBLIC}")
72 list(APPEND LIBEVENT_STATIC_LIBRARIES "${LIB_NAME}_static")
73 list(APPEND ADD_EVENT_LIBRARY_TARGETS "${LIB_NAME}_static")
75 set(ADD_EVENT_LIBRARY_INTERFACE "${LIB_NAME}_static")
78 if (${EVENT_LIBRARY_SHARED})
79 add_library("${LIB_NAME}_shared" SHARED ${LIB_SOURCES})
81 target_link_libraries("${LIB_NAME}_shared"
82 ${CMAKE_THREAD_LIBS_INIT}
86 if (EVENT_SHARED_FLAGS)
87 set_event_shared_lib_flags("${LIB_NAME}" "${EVENT_SHARED_FLAGS}")
90 set_target_properties("${LIB_NAME}_shared" PROPERTIES
91 OUTPUT_NAME "${LIB_NAME}"
92 CLEAN_DIRECT_OUTPUT 1)
93 set_target_properties(
94 "${LIB_NAME}_shared" PROPERTIES
95 PUBLIC_HEADER "${HDR_PUBLIC}")
96 set_target_properties(
97 "${LIB_NAME}_shared" PROPERTIES
98 SOVERSION ${EVENT_ABI_LIBVERSION}
101 list(APPEND LIBEVENT_SHARED_LIBRARIES "${LIB_NAME}_shared")
102 list(APPEND ADD_EVENT_LIBRARY_TARGETS "${LIB_NAME}_shared")
104 set(ADD_EVENT_LIBRARY_INTERFACE "${LIB_NAME}_shared")
107 export(TARGETS ${ADD_EVENT_LIBRARY_TARGETS}
108 FILE "${PROJECT_BINARY_DIR}/LibeventTargets.cmake"
112 install(TARGETS ${ADD_EVENT_LIBRARY_TARGETS}
113 EXPORT LibeventTargets
114 LIBRARY DESTINATION "lib" COMPONENT lib
115 ARCHIVE DESTINATION "lib" COMPONENT lib
116 RUNTIME DESTINATION "lib" COMPONENT lib
117 PUBLIC_HEADER DESTINATION "include/event2"
121 add_library(${LIB_NAME} INTERFACE)
122 target_link_libraries(${LIB_NAME} INTERFACE ${ADD_EVENT_LIBRARY_INTERFACE})
124 generate_pkgconfig("${LIB_NAME}")