1From 45824f58b10575d8d88d4bce934aedee821a6df0 Mon Sep 17 00:00:00 2001
2From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
3Date: Thu, 15 Oct 2020 22:26:55 +0200
4Subject: [PATCH] CMakeLists.txt: respect BUILD_SHARED_LIBS
5
6Don't build and install pistache_shared if the standard cmake
7BUILD_SHARED_LIBS is set to OFF
8
9Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
10[Backport from upstream:
11  https://github.com/oktal/pistache/commit/c04166ca9e6420a8fbc93fef4055ee2eccdcebe4
12]
13---
14 src/CMakeLists.txt | 43 +++++++++++++++++++++++++------------------
15 1 file changed, 25 insertions(+), 18 deletions(-)
16
17diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
18index 6521b20..c5b049f 100644
19--- a/src/CMakeLists.txt
20+++ b/src/CMakeLists.txt
21@@ -26,31 +26,36 @@ set(include_install_dir ${CMAKE_INSTALL_INCLUDEDIR})
22 set(lib_install_dir ${CMAKE_INSTALL_LIBDIR})
23 set(bin_install_dir ${CMAKE_INSTALL_BINDIR})
24
25-add_library(pistache_shared SHARED $<TARGET_OBJECTS:pistache>)
26-add_library(pistache_static STATIC $<TARGET_OBJECTS:pistache>)
27+if (BUILD_SHARED_LIBS)
28+    add_library(pistache_shared SHARED $<TARGET_OBJECTS:pistache>)
29+    target_link_libraries(pistache_shared PRIVATE Threads::Threads ${CMAKE_REQUIRED_LIBRARIES})
30+    target_include_directories(pistache_shared INTERFACE ${PISTACHE_INCLUDE})
31+endif ()
32
33-target_link_libraries(pistache_shared PRIVATE Threads::Threads ${CMAKE_REQUIRED_LIBRARIES})
34+add_library(pistache_static STATIC $<TARGET_OBJECTS:pistache>)
35 target_link_libraries(pistache_static PRIVATE Threads::Threads ${CMAKE_REQUIRED_LIBRARIES})
36-
37-target_include_directories(pistache_shared INTERFACE ${PISTACHE_INCLUDE})
38 target_include_directories(pistache_static INTERFACE ${PISTACHE_INCLUDE})
39
40 if (PISTACHE_USE_SSL)
41     target_compile_definitions(pistache PUBLIC PISTACHE_USE_SSL)
42-    target_compile_definitions(pistache_shared PUBLIC PISTACHE_USE_SSL)
43     target_compile_definitions(pistache_static PUBLIC PISTACHE_USE_SSL)
44
45     target_include_directories(pistache PRIVATE ${OPENSSL_INCLUDE_DIR})
46-    target_link_libraries(pistache_shared PUBLIC OpenSSL::SSL OpenSSL::Crypto)
47     target_link_libraries(pistache_static PUBLIC OpenSSL::SSL OpenSSL::Crypto)
48+    if (BUILD_SHARED_LIBS)
49+        target_compile_definitions(pistache_shared PUBLIC PISTACHE_USE_SSL)
50+        target_link_libraries(pistache_shared PUBLIC OpenSSL::SSL OpenSSL::Crypto)
51+    endif ()
52 endif ()
53
54 set(Pistache_OUTPUT_NAME "pistache")
55-set_target_properties(pistache_shared PROPERTIES
56-    OUTPUT_NAME ${Pistache_OUTPUT_NAME}
57-    VERSION ${version}
58-    SOVERSION ${VERSION_MAJOR}
59-)
60+if (BUILD_SHARED_LIBS)
61+    set_target_properties(pistache_shared PROPERTIES
62+        OUTPUT_NAME ${Pistache_OUTPUT_NAME}
63+        VERSION ${version}
64+        SOVERSION ${VERSION_MAJOR}
65+    )
66+endif ()
67
68 set_target_properties(pistache_static PROPERTIES
69     OUTPUT_NAME ${Pistache_OUTPUT_NAME}
70@@ -60,13 +65,15 @@ if (PISTACHE_INSTALL)
71     set(Pistache_CONFIG_FILE "PistacheConfig.cmake")
72     set(Pistache_CONFIG_VERSION_FILE "PistacheConfigVersion.cmake")
73
74-    install(
75-      TARGETS pistache_shared
76-      EXPORT PistacheTargets
77-      ARCHIVE DESTINATION ${lib_install_dir}
78-      LIBRARY DESTINATION ${lib_install_dir}
79-      RUNTIME DESTINATION ${bin_install_dir}
80-      INCLUDES DESTINATION ${include_install_dir})
81+    if (BUILD_SHARED_LIBS)
82+        install(
83+          TARGETS pistache_shared
84+          EXPORT PistacheTargets
85+          ARCHIVE DESTINATION ${lib_install_dir}
86+          LIBRARY DESTINATION ${lib_install_dir}
87+          RUNTIME DESTINATION ${bin_install_dir}
88+          INCLUDES DESTINATION ${include_install_dir})
89+    endif()
90
91     install(
92       DIRECTORY "${PROJECT_SOURCE_DIR}/include/pistache"
93--
942.28.0
95
96