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