@@ -6,6 +6,9 @@ set(CMAKE_TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/cmake/toolchain.cmake"
6
6
CACHE FILEPATH
7
7
"Toolchain to use for building this package and dependencies" )
8
8
9
+ set (HUNTER_CONFIGURATION_TYPES "Release;Debug" CACHE STRING
10
+ "Configuration types used when building Hunter dependencies" )
11
+
9
12
include (CMakeDependentOption)
10
13
include (HunterGate)
11
14
HunterGate(
@@ -25,7 +28,7 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
25
28
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-private-field" )
26
29
endif ()
27
30
28
- set (CMAKE_EXPORT_COMPILE_COMMANDS true )
31
+ set (CMAKE_EXPORT_COMPILE_COMMANDS ON )
29
32
30
33
if (HUNTER_ENABLED)
31
34
set (hunter_config "CONFIG" )
@@ -70,9 +73,12 @@ list(APPEND package_deps nlohmann_json)
70
73
71
74
option (JAEGERTRACING_COVERAGE "Build with coverage" $ENV{COVERAGE} )
72
75
option (JAEGERTRACING_BUILD_CROSSDOCK "Build crossdock" $ENV{CROSSDOCK} )
76
+ if (NOT JAEGERTRACING_BUILD_CROSSDOCK)
77
+ set (no_crossdock ON )
78
+ endif ()
73
79
cmake_dependent_option(
74
80
JAEGERTRACING_WITH_YAML_CPP "Use yaml-cpp to parse config files" ON
75
- "NOT JAEGERTRACING_BUILD_CROSSDOCK " ON )
81
+ "no_crossdock " ON )
76
82
77
83
if (JAEGERTRACING_WITH_YAML_CPP)
78
84
hunter_add_package(yaml-cpp)
@@ -104,18 +110,18 @@ if(JAEGERTRACING_BUILD_CROSSDOCK)
104
110
set (CROSSDOCK_SRC crossdock/Server.cpp)
105
111
add_executable (crossdock ${CROSSDOCK_SRC} )
106
112
target_include_directories (crossdock PUBLIC
107
- $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR } /crossdock>)
108
- target_link_libraries (crossdock PUBLIC jaegertracing- static )
113
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR } /crossdock>)
114
+ target_link_libraries (crossdock PUBLIC ${JAEGERTRACING_LIB} )
109
115
110
116
set (JAEGER_CROSSDOCK_URL
111
117
"https://raw.githubusercontent.com/jaegertracing/jaeger/master/docker-compose/\
112
118
jaeger-docker-compose.yml" )
113
119
file (DOWNLOAD ${JAEGER_CROSSDOCK_URL}
114
- "${PROJECT_SOURCE_DIR } /crossdock/jaeger-docker-compose.yml" )
120
+ "${CMAKE_CURRENT_SOURCE_DIR } /crossdock/jaeger-docker-compose.yml" )
115
121
find_program (DOCKER_COMPOSE_EXE docker-compose REQUIRED)
116
122
set (DOCKER_COMPOSE_CMD ${DOCKER_COMPOSE_EXE}
117
- -f ${PROJECT_SOURCE_DIR } /crossdock/docker-compose.yml
118
- -f ${PROJECT_SOURCE_DIR } /crossdock/jaeger-docker-compose.yml)
123
+ -f ${CMAKE_CURRENT_SOURCE_DIR } /crossdock/docker-compose.yml
124
+ -f ${CMAKE_CURRENT_SOURCE_DIR } /crossdock/jaeger-docker-compose.yml)
119
125
add_custom_target (crossdock-kill
120
126
COMMAND ${DOCKER_COMPOSE_CMD} kill
121
127
COMMAND ${DOCKER_COMPOSE_CMD} rm --force)
@@ -134,6 +140,7 @@ endif()
134
140
135
141
set (SRC
136
142
src/jaegertracing/Config.cpp
143
+ src/jaegertracing/DynamicLoad.cpp
137
144
src/jaegertracing/LogRecord.cpp
138
145
src/jaegertracing/Logging.cpp
139
146
src/jaegertracing/Reference.cpp
@@ -143,7 +150,6 @@ set(SRC
143
150
src/jaegertracing/TraceID.cpp
144
151
src/jaegertracing/Tracer.cpp
145
152
src/jaegertracing/TracerFactory.cpp
146
- src/jaegertracing/DynamicLoad.cpp
147
153
src/jaegertracing/Transport.cpp
148
154
src/jaegertracing/UDPTransport.cpp
149
155
src/jaegertracing/baggage/BaggageSetter.cpp
@@ -228,28 +234,54 @@ set(SRC
228
234
src/jaegertracing/utils/UDPClient.cpp
229
235
src/jaegertracing/utils/YAML.cpp)
230
236
231
- add_library (jaegertracing SHARED ${SRC} )
232
- target_include_directories (jaegertracing PUBLIC
233
- $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR} /src>
234
- $<BUILD_INTERFACE:${PROJECT_BINARY_DIR} /src>)
235
- target_link_libraries (jaegertracing ${LIBS} )
236
- set_target_properties (jaegertracing PROPERTIES
237
- VERSION ${PROJECT_VERSION}
238
- SOVERSION ${PROJECT_VERSION_MAJOR} )
237
+ function (add_lib_deps lib)
238
+ target_include_directories (${lib} PUBLIC
239
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /src>
240
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR} /src>)
241
+ target_link_libraries (${lib} PUBLIC ${LIBS} )
242
+ endfunction ()
243
+
244
+ option (JAEGERTRACING_PLUGIN "Build dynamic plugin" OFF )
245
+ if (NOT JAEGERTRACING_PLUGIN)
246
+ set (no_plugin)
247
+ endif ()
248
+ cmake_dependent_option(BUILD_SHARED_LIBS "Build shared libraries" ON
249
+ "no_plugin" OFF )
250
+
251
+ if (BUILD_SHARED_LIBS )
252
+ add_library (jaegertracing SHARED ${SRC} )
253
+ add_lib_deps(jaegertracing)
254
+ set_target_properties (jaegertracing PROPERTIES
255
+ VERSION ${PROJECT_VERSION}
256
+ SOVERSION ${PROJECT_VERSION_MAJOR} )
257
+ set (JAEGERTRACING_LIB jaegertracing)
258
+ list (APPEND JAEGERTRACING_LIBS jaegertracing)
259
+ endif ()
260
+
261
+ if (JAEGERTRACING_PLUGIN)
262
+ file (WRITE ${CMAKE_CURRENT_BINARY_DIR} /export.map
263
+ "{ global: OpenTracingMakeTracerFactory; local: *; };" )
264
+ add_library (jaegertracing_plugin MODULE ${SRC} )
265
+ add_lib_deps(jaegertracing_plugin)
266
+ target_link_libraries (jaegertracing_plugin PUBLIC
267
+ -static -libgcc
268
+ -static -libstdc++
269
+ -Wl,--version -script=${CMAKE_CURRENT_BINARY_DIR} /export.map)
270
+ endif ()
239
271
240
272
add_library (jaegertracing-static STATIC ${SRC} )
241
- target_include_directories (jaegertracing-static PUBLIC
242
- $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR} /src>
243
- $<BUILD_INTERFACE:${PROJECT_BINARY_DIR} /src>)
244
- target_link_libraries (jaegertracing-static ${LIBS} )
245
273
set_target_properties (jaegertracing-static PROPERTIES
246
274
OUTPUT_NAME jaegertracing)
275
+ add_lib_deps(jaegertracing-static )
276
+ if (NOT JAEGERTRACING_LIB)
277
+ set (JAEGERTRACING_LIB jaegertracing-static )
278
+ endif ()
279
+ list (APPEND JAEGERTRACING_LIBS jaegertracing-static )
247
280
248
281
configure_file (
249
282
src/jaegertracing/Constants.h.in
250
283
src/jaegertracing/Constants.h
251
284
@ONLY)
252
- set (CMAKE_INCLUDE_CURRENT_DIR ON )
253
285
254
286
if (BUILD_TESTING)
255
287
add_subdirectory ("${CMAKE_CURRENT_SOURCE_DIR} /src/jaegertracing/testutils" )
@@ -262,7 +294,6 @@ if(BUILD_TESTING)
262
294
src/jaegertracing/TraceIDTest.cpp
263
295
src/jaegertracing/TracerTest.cpp
264
296
src/jaegertracing/TracerFactoryTest.cpp
265
- src/jaegertracing/DynamicLoadTest.cpp
266
297
src/jaegertracing/UDPTransportTest.cpp
267
298
src/jaegertracing/baggage/BaggageTest.cpp
268
299
src/jaegertracing/metrics/MetricsTest.cpp
@@ -287,7 +318,7 @@ if(BUILD_TESTING)
287
318
GTEST_HAS_TR1_TUPLE=0
288
319
GTEST_USE_OWN_TR1_TUPLE=0)
289
320
target_link_libraries (
290
- UnitTest testutils GTest::main jaegertracing ${LIBS} )
321
+ UnitTest testutils GTest::main ${JAEGERTRACING_LIB} ${LIBS} )
291
322
add_test (NAME UnitTest COMMAND UnitTest)
292
323
293
324
add_executable (DynamicallyLoadTracerTest src/jaegertracing/DynamicallyLoadTracerTest.cpp)
@@ -347,7 +378,7 @@ configure_package_config_file(
347
378
# * header location after install: <prefix>/include/jaegertracing/Tracer.h
348
379
# * headers can be included by C++ code `#include <jaegertracing/Tracer.h>`
349
380
install (
350
- TARGETS jaegertracing jaegertracing- static
381
+ TARGETS ${JAEGERTRACING_LIBS}
351
382
EXPORT "${TARGETS_EXPORT_NAME} "
352
383
LIBRARY DESTINATION "lib"
353
384
ARCHIVE DESTINATION "lib"
0 commit comments