Edit

kc3-lang/libevent/cmake/AddEventLibrary.cmake

Branch :

  • Show log

    Commit

  • Author : Philip Herron
    Date : 2018-04-05 15:17:06
    Hash : 29590718
    Message : cmake: ensure windows dll's are installed as well as lib files Closes: #621 (cherry picked from commit 0fa43c99fbba6f3b1827ada98302f548206a358f)

  • cmake/AddEventLibrary.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()
    
    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
    #
    # 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"
           APPEND
        )
    
        install(TARGETS "${LIB_NAME}_static" "${LIB_NAME}_shared"
            EXPORT LibeventTargets
            LIBRARY DESTINATION "lib" COMPONENT lib
            ARCHIVE DESTINATION "lib" COMPONENT lib
            RUNTIME DESTINATION "lib" COMPONENT lib
            PUBLIC_HEADER DESTINATION "include/event2"
            COMPONENT dev
        )
    
        list(APPEND LIBEVENT_SHARED_LIBRARIES "${LIB_NAME}_shared")
        list(APPEND LIBEVENT_STATIC_LIBRARIES "${LIB_NAME}_static")
    
        generate_pkgconfig("${LIB_NAME}")
    endmacro()