| include(CMakeParseArguments) |
| |
| set(LIBEVENT_SHARED_LIBRARIES "") |
| set(LIBEVENT_STATIC_LIBRARIES "") |
| |
| 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() |
| |
| macro(generate_pkgconfig LIB_NAME) |
| set(prefix ${CMAKE_INSTALL_PREFIX}) |
| set(exec_prefix ${CMAKE_INSTALL_PREFIX}) |
| set(libdir ${CMAKE_INSTALL_PREFIX}/lib) |
| set(includedir ${CMAKE_INSTALL_PREFIX}/include) |
| |
| set(VERSION ${EVENT_ABI_LIBVERSION}) |
| |
| set(LIBS "") |
| foreach (LIB ${LIB_PLATFORM}) |
| set(LIBS "${LIBS} -L${LIB}") |
| endforeach() |
| |
| set(OPENSSL_LIBS "") |
| foreach(LIB ${OPENSSL_LIBRARIES}) |
| set(OPENSSL_LIBS "${OPENSSL_LIBS} -L${LIB}") |
| endforeach() |
| |
| configure_file("lib${LIB_NAME}.pc.in" "lib${LIB_NAME}.pc" @ONLY) |
| install( |
| FILES "${CMAKE_CURRENT_BINARY_DIR}/lib${LIB_NAME}.pc" |
| DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig" |
| ) |
| endmacro() |
| |
| |
| # Global variables that it uses: |
| # - EVENT_ABI_LIBVERSION |
| # - CMAKE_THREAD_LIBS_INIT LIB_PLATFORM |
| # - OPENSSL_LIBRARIES |
| # - HDR_PUBLIC |
| # - EVENT_INSTALL_INCLUDE_DIR |
| # - EVENT_SHARED_FLAGS |
| # - EVENT_LIBRARY_STATIC |
| # - EVENT_LIBRARY_SHARED |
| # |
| # 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} |
| ) |
| |
| set(ADD_EVENT_LIBRARY_TARGETS) |
| set(ADD_EVENT_LIBRARY_INTERFACE) |
| |
| if (${EVENT_LIBRARY_STATIC}) |
| add_library("${LIB_NAME}_static" STATIC ${LIB_SOURCES}) |
| set_target_properties("${LIB_NAME}_static" PROPERTIES |
| OUTPUT_NAME "${LIB_NAME}" |
| CLEAN_DIRECT_OUTPUT 1) |
| set_target_properties( |
| "${LIB_NAME}_static" PROPERTIES |
| PUBLIC_HEADER "${HDR_PUBLIC}") |
| |
| list(APPEND LIBEVENT_STATIC_LIBRARIES "${LIB_NAME}_static") |
| list(APPEND ADD_EVENT_LIBRARY_TARGETS "${LIB_NAME}_static") |
| |
| set(ADD_EVENT_LIBRARY_INTERFACE "${LIB_NAME}_static") |
| endif() |
| |
| if (${EVENT_LIBRARY_SHARED}) |
| 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_target_properties("${LIB_NAME}_shared" PROPERTIES |
| OUTPUT_NAME "${LIB_NAME}" |
| CLEAN_DIRECT_OUTPUT 1) |
| set_target_properties( |
| "${LIB_NAME}_shared" PROPERTIES |
| PUBLIC_HEADER "${HDR_PUBLIC}") |
| set_target_properties( |
| "${LIB_NAME}_shared" PROPERTIES |
| SOVERSION ${EVENT_ABI_LIBVERSION} |
| ) |
| |
| list(APPEND LIBEVENT_SHARED_LIBRARIES "${LIB_NAME}_shared") |
| list(APPEND ADD_EVENT_LIBRARY_TARGETS "${LIB_NAME}_shared") |
| |
| set(ADD_EVENT_LIBRARY_INTERFACE "${LIB_NAME}_shared") |
| endif() |
| |
| export(TARGETS ${ADD_EVENT_LIBRARY_TARGETS} |
| FILE "${PROJECT_BINARY_DIR}/LibeventTargets.cmake" |
| APPEND |
| ) |
| |
| install(TARGETS ${ADD_EVENT_LIBRARY_TARGETS} |
| EXPORT LibeventTargets |
| LIBRARY DESTINATION "lib" COMPONENT lib |
| ARCHIVE DESTINATION "lib" COMPONENT lib |
| RUNTIME DESTINATION "lib" COMPONENT lib |
| PUBLIC_HEADER DESTINATION "include/event2" |
| COMPONENT dev |
| ) |
| |
| add_library(${LIB_NAME} INTERFACE) |
| target_link_libraries(${LIB_NAME} INTERFACE ${ADD_EVENT_LIBRARY_INTERFACE}) |
| |
| generate_pkgconfig("${LIB_NAME}") |
| endmacro() |