@@ -33,6 +33,7 @@ message(STATUS "Pulsar Client version macro: ${PULSAR_CLIENT_VERSION_MACRO}")
33
33
set (PVM_COMMENT "This is generated from Version.h.in by CMAKE. DO NOT EDIT DIRECTLY" )
34
34
configure_file (templates/Version.h.in include /pulsar/Version.h @ONLY )
35
35
36
+ option (LINK_STATIC "Link against static libraries" OFF )
36
37
if (VCPKG_TRIPLET )
37
38
message (STATUS "Use vcpkg, triplet is ${VCPKG_TRIPLET} " )
38
39
set (CMAKE_PREFIX_PATH "${CMAKE_SOURCE_DIR} /vcpkg_installed/${VCPKG_TRIPLET} " )
@@ -44,7 +45,13 @@ if (VCPKG_TRIPLET)
44
45
set (ZLIB_ROOT ${VCPKG_DEBUG_ROOT} )
45
46
set (OPENSSL_ROOT_DIR ${VCPKG_DEBUG_ROOT} )
46
47
endif ()
48
+ if (VCPKG_TRIPLET MATCHES ".*-static" )
49
+ set (LINK_STATIC ON )
50
+ else ()
51
+ set (LINK_STATIC OFF )
52
+ endif ()
47
53
endif ()
54
+ MESSAGE (STATUS "LINK_STATIC: " ${LINK_STATIC} )
48
55
49
56
find_program (CCACHE_PROGRAM ccache )
50
57
if (CCACHE_PROGRAM )
@@ -69,9 +76,6 @@ MESSAGE(STATUS "BUILD_WIRESHARK: " ${BUILD_WIRESHARK})
69
76
option (BUILD_PERF_TOOLS "Build Pulsar CLI perf producer/consumer" OFF )
70
77
MESSAGE (STATUS "BUILD_PERF_TOOLS: " ${BUILD_PERF_TOOLS} )
71
78
72
- option (LINK_STATIC "Link against static libraries" OFF )
73
- MESSAGE (STATUS "LINK_STATIC: " ${LINK_STATIC} )
74
-
75
79
option (USE_LOG4CXX "Build with Log4cxx support" OFF )
76
80
MESSAGE (STATUS "USE_LOG4CXX: " ${USE_LOG4CXX} )
77
81
@@ -93,7 +97,7 @@ set(CMAKE_C_STANDARD 11)
93
97
# https://stackoverflow.com/questions/10046114/in-cmake-how-can-i-test-if-the-compiler-is-clang
94
98
if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" )
95
99
add_definitions (-DWIN32_LEAN_AND_MEAN -DNOGDI -D_WIN32_WINNT=0x0501 -D_CRT_SECURE_NO_WARNINGS )
96
- add_compile_options (/wd4244 /wd4267 /wd4018 /wd4715 /wd4251 /wd4275 )
100
+ add_compile_options (/wd4244 /wd4267 /wd4018 /wd4715 /wd4251 /wd4275 /wd4819 )
97
101
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Intel" )
98
102
# ?? Don't have this to test with
99
103
else () # GCC or Clang are mostly compatible:
@@ -168,7 +172,7 @@ if (NOT ZLIB_INCLUDE_DIRS OR NOT ZLIB_LIBRARIES)
168
172
message (FATAL_ERROR "Could not find zlib" )
169
173
endif ()
170
174
171
- if (LINK_STATIC )
175
+ if (LINK_STATIC AND NOT VCPKG_TRIPLET )
172
176
find_library (LIB_ZSTD NAMES libzstd.a )
173
177
message (STATUS "ZStd: ${LIB_ZSTD} " )
174
178
find_library (LIB_SNAPPY NAMES libsnappy.a )
@@ -195,6 +199,29 @@ if (LINK_STATIC)
195
199
if (MSVC )
196
200
add_definitions (-DCURL_STATICLIB )
197
201
endif ()
202
+ elseif (LINK_STATIC AND VCPKG_TRIPLET )
203
+ find_package (protobuf REQUIRED )
204
+ message (STATUS "Found protobuf static library: " ${Protobuf_LIBRARIES} )
205
+ find_library (ZLIB_LIBRARIES NAMES zlib z )
206
+ if (ZLIB_LIBRARIES )
207
+ message (STATUS "Found zlib static library: " ${ZLIB_LIBRARIES} )
208
+ else ()
209
+ message (FATAL_ERROR "Failed to find zlib static library" )
210
+ endif ()
211
+ find_library (CURL_LIBRARIES NAMES libcurl )
212
+ if (CURL_LIBRARIES )
213
+ message (STATUS "Found libcurl: ${CURL_LIBRARIES} " )
214
+ else ()
215
+ message (FATAL_ERROR "Cannot find libcurl" )
216
+ endif ()
217
+ find_library (LIB_ZSTD zstd )
218
+ if (LIB_ZSTD )
219
+ message (STATUS "Found ZSTD library: ${LIB_ZSTD} " )
220
+ endif ()
221
+ find_library (LIB_SNAPPY NAMES snappy )
222
+ if (LIB_SNAPPY )
223
+ message (STATUS "Found Snappy library: ${LIB_SNAPPY} " )
224
+ endif ()
198
225
else ()
199
226
if (MSVC AND (${CMAKE_BUILD_TYPE} STREQUAL Debug ))
200
227
find_library (LIB_ZSTD zstdd HINTS "${VCPKG_DEBUG_ROOT} /lib" )
@@ -211,7 +238,7 @@ else()
211
238
find_library (LOG4CXX_LIBRARY_PATH log4cxx )
212
239
find_path (LOG4CXX_INCLUDE_PATH log4cxx/logger.h )
213
240
endif (USE_LOG4CXX )
214
- endif (LINK_STATIC )
241
+ endif ()
215
242
216
243
if (Boost_MAJOR_VERSION EQUAL 1 AND Boost_MINOR_VERSION LESS 69 )
217
244
# Boost System does not require linking since 1.69
@@ -220,15 +247,15 @@ if (Boost_MAJOR_VERSION EQUAL 1 AND Boost_MINOR_VERSION LESS 69)
220
247
endif ()
221
248
222
249
if (MSVC )
223
- set (BOOST_COMPONENTS ${BOOST_COMPONENTS} date_time )
250
+ set (BOOST_COMPONENTS ${BOOST_COMPONENTS} date_time )
224
251
endif ()
225
252
226
253
if (CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.9 )
227
254
# GCC 4.8.2 implementation of std::regex is buggy
228
255
set (BOOST_COMPONENTS ${BOOST_COMPONENTS} regex )
229
256
set (CMAKE_CXX_FLAGS " -DPULSAR_USE_BOOST_REGEX" )
230
257
MESSAGE (STATUS "Using Boost::Regex" )
231
- else ( )
258
+ elseif ( CMAKE_COMPILER_IS_GNUCC )
232
259
MESSAGE (STATUS "Using std::regex" )
233
260
# Turn on color error messages and show additional help with errors (only available in GCC v4.9+):
234
261
add_compile_options (-fdiagnostics-show-option -fdiagnostics-color )
@@ -295,7 +322,7 @@ include_directories(
295
322
296
323
set (COMMON_LIBS
297
324
${COMMON_LIBS}
298
- Threads::Threads
325
+ ${CMAKE_THREAD_LIBS_INIT}
299
326
${Boost_REGEX_LIBRARY}
300
327
${Boost_SYSTEM_LIBRARY}
301
328
${Boost_DATE_TIME_LIBRARY}
@@ -307,13 +334,25 @@ set(COMMON_LIBS
307
334
${CMAKE_DL_LIBS}
308
335
)
309
336
310
- if (NOT MSVC )
311
- set (COMMON_LIBS ${COMMON_LIBS} m )
312
- else ()
337
+ if (MSVC )
313
338
set (COMMON_LIBS
314
- ${COMMON_LIBS}
315
- wldap32.lib
316
- Normaliz.lib )
339
+ ${COMMON_LIBS}
340
+ ${Boost_DATE_TIME_LIBRARY}
341
+ wldap32.lib
342
+ Normaliz.lib )
343
+ if (LINK_STATIC )
344
+ # add external dependencies of libcurl
345
+ set (COMMON_LIBS ${COMMON_LIBS} ws2_32.lib crypt32.lib )
346
+ # the default compile options have /MD, which cannot be used to build DLLs that link static libraries
347
+ string (REGEX REPLACE "/MD" "/MT" CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG} )
348
+ string (REGEX REPLACE "/MD" "/MT" CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE} )
349
+ string (REGEX REPLACE "/MD" "/MT" CMAKE_CXX_FLAGS_RELWITHDEBINFO ${CMAKE_CXX_FLAGS_RELWITHDEBINFO} )
350
+ message (STATUS "CMAKE_CXX_FLAGS_DEBUG: " ${CMAKE_CXX_FLAGS_DEBUG} )
351
+ message (STATUS "CMAKE_CXX_FLAGS_RELEASE: " ${CMAKE_CXX_FLAGS_RELEASE} )
352
+ message (STATUS "CMAKE_CXX_FLAGS_RELWITHDEBINFO: " ${CMAKE_CXX_FLAGS_RELWITHDEBINFO} )
353
+ endif ()
354
+ else ()
355
+ set (COMMON_LIBS ${COMMON_LIBS} m )
317
356
endif ()
318
357
319
358
if (USE_LOG4CXX )
0 commit comments