mirror of
https://github.com/libevent/libevent.git
synced 2025-01-31 09:12:55 +08:00
83 lines
2.4 KiB
CMake
83 lines
2.4 KiB
CMake
|
include(CMakeParseArguments)
|
||
|
|
||
|
set(LIBEVENT_SHARED_LIBRARIES "")
|
||
|
set(LIBEVENT_STATIC_LIBRARIES "")
|
||
|
|
||
|
macro(set_event_lib_properties LIB_NAME)
|
||
|
set_target_properties("${LIB_NAME}_static" PROPERTIES ${ARGN})
|
||
|
set_target_properties("${LIB_NAME}_shared" PROPERTIES ${ARGN})
|
||
|
endmacro()
|
||
|
|
||
|
macro(set_event_shared_lib_flags LIB_NAME)
|
||
|
set_target_properties("${LIB_NAME}_shared" PROPERTIES
|
||
|
COMPILE_FLAGS ${ARGN})
|
||
|
set_target_properties("${LIB_NAME}_shared" PROPERTIES
|
||
|
LINK_FLAGS ${ARGN})
|
||
|
endmacro()
|
||
|
|
||
|
# Global variables that it uses:
|
||
|
# - EVENT_ABI_LIBVERSION
|
||
|
# - CMAKE_THREAD_LIBS_INIT LIB_PLATFORM
|
||
|
# - HDR_PUBLIC
|
||
|
# - EVENT_INSTALL_BIN_DIR
|
||
|
# - EVENT_INSTALL_LIB_DIR
|
||
|
# - EVENT_INSTALL_INCLUDE_DIR
|
||
|
# - EVENT_SHARED_FLAGS
|
||
|
#
|
||
|
# Exported variables:
|
||
|
# - LIBEVENT_SHARED_LIBRARIES
|
||
|
# - LIBEVENT_STATIC_LIBRARIES
|
||
|
macro(add_event_library LIB_NAME)
|
||
|
cmake_parse_arguments(LIB
|
||
|
"" # Options
|
||
|
"VERSION" # One val
|
||
|
"SOURCES;LIBRARIES" # Multi val
|
||
|
${ARGN}
|
||
|
)
|
||
|
|
||
|
add_library("${LIB_NAME}_static" STATIC ${LIB_SOURCES})
|
||
|
add_library("${LIB_NAME}_shared" SHARED ${LIB_SOURCES})
|
||
|
|
||
|
target_link_libraries("${LIB_NAME}_shared"
|
||
|
${CMAKE_THREAD_LIBS_INIT}
|
||
|
${LIB_PLATFORM}
|
||
|
${LIB_LIBRARIES})
|
||
|
|
||
|
if (EVENT_SHARED_FLAGS)
|
||
|
set_event_shared_lib_flags("${LIB_NAME}" "${EVENT_SHARED_FLAGS}")
|
||
|
endif()
|
||
|
|
||
|
set_event_lib_properties("${LIB_NAME}"
|
||
|
OUTPUT_NAME "${LIB_NAME}"
|
||
|
CLEAN_DIRECT_OUTPUT 1
|
||
|
)
|
||
|
|
||
|
set_target_properties(
|
||
|
"${LIB_NAME}_shared" PROPERTIES
|
||
|
PUBLIC_HEADER "${HDR_PUBLIC}")
|
||
|
set_target_properties(
|
||
|
"${LIB_NAME}_static" PROPERTIES
|
||
|
PUBLIC_HEADER "${HDR_PUBLIC}")
|
||
|
|
||
|
set_target_properties(
|
||
|
"${LIB_NAME}_shared" PROPERTIES
|
||
|
SOVERSION ${EVENT_ABI_LIBVERSION}
|
||
|
)
|
||
|
|
||
|
export(TARGETS "${LIB_NAME}_static" "${LIB_NAME}_shared"
|
||
|
FILE "${PROJECT_BINARY_DIR}/LibeventTargets.cmake"
|
||
|
)
|
||
|
|
||
|
install(TARGETS "${LIB_NAME}_static" "${LIB_NAME}_shared"
|
||
|
EXPORT LibeventTargets
|
||
|
RUNTIME DESTINATION "${EVENT_INSTALL_BIN_DIR}" COMPONENT bin
|
||
|
LIBRARY DESTINATION "${EVENT_INSTALL_LIB_DIR}" COMPONENT lib
|
||
|
ARCHIVE DESTINATION "${EVENT_INSTALL_LIB_DIR}" COMPONENT lib
|
||
|
PUBLIC_HEADER DESTINATION "${EVENT_INSTALL_INCLUDE_DIR}/event2"
|
||
|
COMPONENT dev
|
||
|
)
|
||
|
|
||
|
list(APPEND LIBEVENT_SHARED_LIBRARIES "${LIB_NAME}_shared")
|
||
|
list(APPEND LIBEVENT_STATIC_LIBRARIES "${LIB_NAME}_static")
|
||
|
endmacro()
|