Skip to content
Snippets Groups Projects
CMakeLists.txt 36 KiB
Newer Older
  • Learn to ignore specific revisions
  • get_filename_component(LWS_ABSOLUTE_INSTALL_CMAKE_DIR ${LWS_INSTALL_CMAKE_DIR} ABSOLUTE)
    get_filename_component(LWS_ABSOLUTE_INSTALL_INCLUDE_DIR ${LWS_INSTALL_INCLUDE_DIR} ABSOLUTE)
    
    file(RELATIVE_PATH 
        REL_INCLUDE_DIR 
    
        "${LWS_ABSOLUTE_INSTALL_CMAKE_DIR}"
        "${LWS_ABSOLUTE_INSTALL_INCLUDE_DIR}") # Calculate the relative directory from the cmake dir.
    
    
    # Note the EVENT_CMAKE_DIR is defined in JanssonConfig.cmake.in, 
    # we escape it here so it's evaluated when it is included instead
    # so that the include dirs are given relative to where the 
    # config file is located.
    set(LWS__INCLUDE_DIRS 
        "\${LWS_CMAKE_DIR}/${REL_INCLUDE_DIR}") 
    configure_file(${PROJECT_SOURCE_DIR}/cmake/LibwebsocketsConfig.cmake.in
                    ${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/LibwebsocketsConfig.cmake 
                    @ONLY)
    
    # Generate version info for both build-tree and install-tree.
    configure_file(${PROJECT_SOURCE_DIR}/cmake/LibwebsocketsConfigVersion.cmake.in
                    ${PROJECT_BINARY_DIR}/LibwebsocketsConfigVersion.cmake 
                    @ONLY)
    
    
    			set_target_properties(${LWS_LIBRARIES}
    
    					PROPERTIES PUBLIC_HEADER "${HDR_PUBLIC}")
    
    #
    # Installation.
    #
    
    # Install libs and headers.
    
    install(TARGETS ${LWS_LIBRARIES}
    
    		EXPORT LibwebsocketsTargets
    		LIBRARY DESTINATION "${LWS_INSTALL_LIB_DIR}${LIB_SUFFIX}" COMPONENT libraries
    		ARCHIVE DESTINATION "${LWS_INSTALL_LIB_DIR}${LIB_SUFFIX}" COMPONENT libraries
    		RUNTIME DESTINATION "${LWS_INSTALL_BIN_DIR}" COMPONENT libraries # Windows DLLs
    		PUBLIC_HEADER DESTINATION "${LWS_INSTALL_INCLUDE_DIR}" COMPONENT dev)
    
    set(CPACK_COMPONENT_LIBRARIES_DISPLAY_NAME "Libraries")
    
    set(CPACK_COMPONENT_DEV_DISPLAY_NAME "Development files")
    
    if (NOT LWS_WITHOUT_TESTAPPS AND NOT LWS_WITHOUT_CLIENT)
    
    	install(TARGETS test-client ${TEST_APP_LIST}
    
    			RUNTIME DESTINATION ${LWS_INSTALL_EXAMPLES_DIR}
    
    			COMPONENT examples)
    
    	set(CPACK_COMPONENT_EXAMPLES_DISPLAY_NAME "Example files")
    
    # Programs shared files used by the test-server.
    
    if (NOT LWS_WITHOUT_TESTAPPS AND NOT LWS_WITHOUT_SERVER)
    
    	install(FILES ${TEST_SERVER_DATA}
    
    			DESTINATION share/libwebsockets-test-server
    			COMPONENT examples)
    
    # Install the LibwebsocketsConfig.cmake and LibwebsocketsConfigVersion.cmake
    install(FILES
                   "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/LibwebsocketsConfig.cmake"
                   "${PROJECT_BINARY_DIR}/LibwebsocketsConfigVersion.cmake"
                   DESTINATION "${LWS_INSTALL_CMAKE_DIR}" COMPONENT dev)
    
    
    # build subdir is not part of sources
    set(CPACK_SOURCE_IGNORE_FILES $(CPACK_SOURCE_IGNORE_FILES) ".git" "build" "tgz" "tar.gz")
    
    
    # Most people are more used to "make dist" compared to "make package_source"
    
    Markus Elfring's avatar
    Markus Elfring committed
    add_custom_target(dist COMMAND "${CMAKE_MAKE_PROGRAM}" package_source)
    
    include(UseRPMTools)
    if (RPMTools_FOUND)
    
    	RPMTools_ADD_RPM_TARGETS(libwebsockets libwebsockets.spec)
    
    endif()
    
    message("---------------------------------------------------------------------")
    
    message("  Settings:  (For more help do cmake -LH <srcpath>)")
    
    message("---------------------------------------------------------------------")
    
    message(" LWS_WITH_STATIC = ${LWS_WITH_STATIC}")
    message(" LWS_WITH_SHARED = ${LWS_WITH_SHARED}")
    message(" LWS_WITH_SSL = ${LWS_WITH_SSL} (SSL Support)")
    
    message(" LWS_SSL_CLIENT_USE_OS_CA_CERTS = ${LWS_SSL_CLIENT_USE_OS_CA_CERTS}")
    
    message(" LWS_USE_WOLFSSL = ${LWS_USE_WOLFSSL} (wolfSSL/CyaSSL replacement for OpenSSL)")
    
    if (LWS_USE_WOLFSSL)
    	message("   LWS_WOLFSSL_LIBRARIES = ${LWS_WOLFSSL_LIBRARIES}")
    	message("   LWS_WOLFSSL_INCLUDE_DIRS = ${LWS_WOLFSSL_INCLUDE_DIRS}")
    
    endif()
    
    Andy Green's avatar
    Andy Green committed
    message(" LWS_WITHOUT_BUILTIN_SHA1 = ${LWS_WITHOUT_BUILTIN_SHA1}")
    
    message(" LWS_WITHOUT_BUILTIN_GETIFADDRS = ${LWS_WITHOUT_BUILTIN_GETIFADDRS}")
    message(" LWS_WITHOUT_CLIENT = ${LWS_WITHOUT_CLIENT}")
    message(" LWS_WITHOUT_SERVER = ${LWS_WITHOUT_SERVER}")
    message(" LWS_LINK_TESTAPPS_DYNAMIC = ${LWS_LINK_TESTAPPS_DYNAMIC}")
    message(" LWS_WITHOUT_TESTAPPS = ${LWS_WITHOUT_TESTAPPS}")
    message(" LWS_WITHOUT_TEST_SERVER = ${LWS_WITHOUT_TEST_SERVER}")
    message(" LWS_WITHOUT_TEST_SERVER_EXTPOLL = ${LWS_WITHOUT_TEST_SERVER_EXTPOLL}")
    message(" LWS_WITHOUT_TEST_PING = ${LWS_WITHOUT_TEST_PING}")
    message(" LWS_WITHOUT_TEST_CLIENT = ${LWS_WITHOUT_TEST_CLIENT}")
    message(" LWS_WITHOUT_TEST_FRAGGLE = ${LWS_WITHOUT_TEST_FRAGGLE}")
    message(" LWS_WITHOUT_EXTENSIONS = ${LWS_WITHOUT_EXTENSIONS}")
    message(" LWS_WITH_LATENCY = ${LWS_WITH_LATENCY}")
    message(" LWS_WITHOUT_DAEMONIZE = ${LWS_WITHOUT_DAEMONIZE}")
    
    Andrew Canaday's avatar
    Andrew Canaday committed
    message(" LWS_USE_LIBEV = ${LWS_USE_LIBEV}")
    
    message(" LWS_IPV6 = ${LWS_IPV6}")
    message(" LWS_WITH_HTTP2 = ${LWS_WITH_HTTP2}")
    
    Andy Green's avatar
    Andy Green committed
    message(" LWS_MBED3 = ${LWS_MBED3}")
    
    message("---------------------------------------------------------------------")
    
    # These will be available to parent projects including libwebsockets using add_subdirectory()
    
    set(LIBWEBSOCKETS_LIBRARIES ${LWS_LIBRARIES} CACHE STRING "Libwebsocket libraries")
    if (LWS_WITH_STATIC)
    	set(LIBWEBSOCKETS_LIBRARIES_STATIC websocket CACHE STRING "Libwebsocket static library")
    endif()
    if (LWS_WITH_SHARED)
    	set(LIBWEBSOCKETS_LIBRARIES_SHARED websockets_shared CACHE STRING "Libwebsocket shared library")
    endif()
    
    # This must always be last!
    include(CPack)