diff --git a/example/CMakeLists.txt b/example/CMakeLists.txt index ff068a2..a36e495 100644 --- a/example/CMakeLists.txt +++ b/example/CMakeLists.txt @@ -1,4 +1,8 @@ include_directories(${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/src/buffer ${CMAKE_BINARY_DIR}/src ${LIBEV_INCLUDE_DIR}) add_executable(example example.c) -target_link_libraries(example uwsc ${LIBEV_LIBRARY}) +if(BUILD_SHARED_LIBS) + target_link_libraries(example uwsc ${LIBEV_LIBRARY}) +else() + target_link_libraries(example uwsc_s ${LIBEV_LIBRARY}) +endif() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 5921583..993ca98 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -14,6 +14,13 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/buff set(EXTRA_LIBS ${LIBEV_LIBRARY} dl) set(SOURCE_FILES uwsc.c log.c utils.c buffer/buffer.c sha1.c ssl.c) +option(BUILD_SHARED_LIBS "Build shared library" ON) +option(BUILD_STATIC_LIBS "Build static library" ON) + +if(NOT BUILD_SHARED_LIBS AND NOT BUILD_STATIC_LIBS) + message(FATAL_ERROR "BUILD_SHARED_LIBS and BUILD_STATIC_LIBS can't be OFF at the same time, please select at least one of them") +endif() + set(UWSC_SSL_SUPPORT_CONFIG 1) option(UWSC_SSL_SUPPORT "SSL support" ON) @@ -89,13 +96,25 @@ else() endif() endif() -add_library(uwsc SHARED ${SOURCE_FILES}) -set_target_properties(uwsc PROPERTIES VERSION ${UWSC_VERSION_MAJOR}.${UWSC_VERSION_MINOR}.${UWSC_VERSION_PATCH}) -target_link_libraries(uwsc ${EXTRA_LIBS}) +if(BUILD_SHARED_LIBS) + add_library(uwsc SHARED ${SOURCE_FILES}) + set_target_properties(uwsc PROPERTIES VERSION ${UWSC_VERSION_MAJOR}.${UWSC_VERSION_MINOR}.${UWSC_VERSION_PATCH}) + target_link_libraries(uwsc ${EXTRA_LIBS}) + install( + TARGETS uwsc + LIBRARY DESTINATION lib + ) +endif() -add_library(uwsc_s STATIC ${SOURCE_FILES}) -set_target_properties(uwsc_s PROPERTIES OUTPUT_NAME uwsc) -target_link_libraries(uwsc_s ${EXTRA_LIBS}) +if(BUILD_STATIC_LIBS) + add_library(uwsc_s STATIC ${SOURCE_FILES}) + set_target_properties(uwsc_s PROPERTIES OUTPUT_NAME uwsc) + target_link_libraries(uwsc_s ${EXTRA_LIBS}) + install( + TARGETS uwsc_s + ARCHIVE DESTINATION lib + ) +endif() # configure a header file to pass some of the CMake settings to the source code configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h) @@ -114,11 +133,5 @@ install( include/uwsc ) -install( - TARGETS uwsc uwsc_s - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib -) - message(STATUS "UWSC_VERSION: ${UWSC_VERSION_MAJOR}.${UWSC_VERSION_MINOR}.${UWSC_VERSION_PATCH}") message(STATUS "UWSC_SSL_SUPPORT: ${SSL_NAME}")