Unverified Commit c04166ca authored by Fabrice Fontaine's avatar Fabrice Fontaine Committed by GitHub

CMakeLists.txt: respect BUILD_SHARED_LIBS (#828)

Don't build and install pistache_shared if the standard cmake
BUILD_SHARED_LIBS is set to OFF
Signed-off-by: default avatarFabrice Fontaine <fontaine.fabrice@gmail.com>
parent a54a4fab
...@@ -22,6 +22,7 @@ if(CMAKE_BUILD_TYPE MATCHES "Debug") ...@@ -22,6 +22,7 @@ if(CMAKE_BUILD_TYPE MATCHES "Debug")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0 -fprofile-arcs -ftest-coverage -fstack-protector-all --param=ssp-buffer-size=4") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0 -fprofile-arcs -ftest-coverage -fstack-protector-all --param=ssp-buffer-size=4")
endif() endif()
option(BUILD_SHARED_LIBS "build shared library" ON)
option(PISTACHE_BUILD_TESTS "build tests alongside the project" OFF) option(PISTACHE_BUILD_TESTS "build tests alongside the project" OFF)
option(PISTACHE_ENABLE_NETWORK_TESTS "if tests are built, run ones needing network access" ON) option(PISTACHE_ENABLE_NETWORK_TESTS "if tests are built, run ones needing network access" ON)
option(PISTACHE_BUILD_EXAMPLES "build examples alongside the project" OFF) option(PISTACHE_BUILD_EXAMPLES "build examples alongside the project" OFF)
......
...@@ -26,30 +26,35 @@ set(include_install_dir ${CMAKE_INSTALL_INCLUDEDIR}) ...@@ -26,30 +26,35 @@ set(include_install_dir ${CMAKE_INSTALL_INCLUDEDIR})
set(lib_install_dir ${CMAKE_INSTALL_LIBDIR}) set(lib_install_dir ${CMAKE_INSTALL_LIBDIR})
set(bin_install_dir ${CMAKE_INSTALL_BINDIR}) set(bin_install_dir ${CMAKE_INSTALL_BINDIR})
add_library(pistache_shared SHARED $<TARGET_OBJECTS:pistache>) if (BUILD_SHARED_LIBS)
add_library(pistache_static STATIC $<TARGET_OBJECTS:pistache>) add_library(pistache_shared SHARED $<TARGET_OBJECTS:pistache>)
target_link_libraries(pistache_shared PRIVATE Threads::Threads ${CMAKE_REQUIRED_LIBRARIES})
target_include_directories(pistache_shared INTERFACE ${PISTACHE_INCLUDE})
endif ()
target_link_libraries(pistache_shared PRIVATE Threads::Threads ${CMAKE_REQUIRED_LIBRARIES}) add_library(pistache_static STATIC $<TARGET_OBJECTS:pistache>)
target_link_libraries(pistache_static PRIVATE Threads::Threads ${CMAKE_REQUIRED_LIBRARIES}) target_link_libraries(pistache_static PRIVATE Threads::Threads ${CMAKE_REQUIRED_LIBRARIES})
target_include_directories(pistache_shared INTERFACE ${PISTACHE_INCLUDE})
target_include_directories(pistache_static INTERFACE ${PISTACHE_INCLUDE}) target_include_directories(pistache_static INTERFACE ${PISTACHE_INCLUDE})
if (PISTACHE_USE_SSL) if (PISTACHE_USE_SSL)
target_compile_definitions(pistache PUBLIC PISTACHE_USE_SSL) target_compile_definitions(pistache PUBLIC PISTACHE_USE_SSL)
target_compile_definitions(pistache_shared PUBLIC PISTACHE_USE_SSL)
target_compile_definitions(pistache_static PUBLIC PISTACHE_USE_SSL) target_compile_definitions(pistache_static PUBLIC PISTACHE_USE_SSL)
target_include_directories(pistache PRIVATE ${OPENSSL_INCLUDE_DIR}) target_include_directories(pistache PRIVATE ${OPENSSL_INCLUDE_DIR})
target_link_libraries(pistache_shared PUBLIC OpenSSL::SSL OpenSSL::Crypto)
target_link_libraries(pistache_static PUBLIC OpenSSL::SSL OpenSSL::Crypto) target_link_libraries(pistache_static PUBLIC OpenSSL::SSL OpenSSL::Crypto)
if (BUILD_SHARED_LIBS)
target_compile_definitions(pistache_shared PUBLIC PISTACHE_USE_SSL)
target_link_libraries(pistache_shared PUBLIC OpenSSL::SSL OpenSSL::Crypto)
endif ()
endif () endif ()
set(Pistache_OUTPUT_NAME "pistache") set(Pistache_OUTPUT_NAME "pistache")
set_target_properties(pistache_shared PROPERTIES if (BUILD_SHARED_LIBS)
OUTPUT_NAME ${Pistache_OUTPUT_NAME}-${version} set_target_properties(pistache_shared PROPERTIES
SOVERSION ${SONAME_VERSION_MAJOR}.${SONAME_VERSION_MINOR} OUTPUT_NAME ${Pistache_OUTPUT_NAME}-${version}
) SOVERSION ${SONAME_VERSION_MAJOR}.${SONAME_VERSION_MINOR}
)
endif ()
set_target_properties(pistache_static PROPERTIES set_target_properties(pistache_static PROPERTIES
OUTPUT_NAME ${Pistache_OUTPUT_NAME} OUTPUT_NAME ${Pistache_OUTPUT_NAME}
...@@ -60,13 +65,15 @@ if (PISTACHE_INSTALL) ...@@ -60,13 +65,15 @@ if (PISTACHE_INSTALL)
set(Pistache_CONFIG_FILE "PistacheConfig.cmake") set(Pistache_CONFIG_FILE "PistacheConfig.cmake")
set(Pistache_CONFIG_VERSION_FILE "PistacheConfigVersion.cmake") set(Pistache_CONFIG_VERSION_FILE "PistacheConfigVersion.cmake")
install( if (BUILD_SHARED_LIBS)
TARGETS pistache_shared install(
EXPORT PistacheTargets TARGETS pistache_shared
ARCHIVE DESTINATION ${lib_install_dir} EXPORT PistacheTargets
LIBRARY DESTINATION ${lib_install_dir} ARCHIVE DESTINATION ${lib_install_dir}
RUNTIME DESTINATION ${bin_install_dir} LIBRARY DESTINATION ${lib_install_dir}
INCLUDES DESTINATION ${include_install_dir}) RUNTIME DESTINATION ${bin_install_dir}
INCLUDES DESTINATION ${include_install_dir})
endif ()
install( install(
DIRECTORY "${PROJECT_SOURCE_DIR}/include/pistache" DIRECTORY "${PROJECT_SOURCE_DIR}/include/pistache"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment