Skip to content

Commit 4bd3830

Browse files
committed
CMake: Explicitly handle incompatible option overrides
Provide sensible defaults for the *ONLY* builds and explicitly verify incompatible configurations.
1 parent 8dd3248 commit 4bd3830

1 file changed

Lines changed: 35 additions & 37 deletions

File tree

CMakeLists.txt

Lines changed: 35 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -222,60 +222,52 @@ message(STATUS "Building GammaRay ${GAMMARAY_VERSION_STRING} in ${CMAKE_BUILD_TY
222222
#
223223
# Build options
224224
#
225-
set(GAMMARAY_BUILD_UI_DEFAULT ON)
226-
if(QNXNTO OR ANDROID)
227-
set(GAMMARAY_BUILD_UI_DEFAULT OFF)
228-
endif()
225+
gammaray_option(GAMMARAY_STATIC_PROBE "Build the probe as static library for compile-time injection." OFF)
226+
gammaray_option(GAMMARAY_INSTALL_QT_LAYOUT "Install into Qt directory layout." OFF)
227+
gammaray_option(GAMMARAY_MULTI_BUILD "Build multiple applicable probe configurations." ON)
228+
gammaray_option(GAMMARAY_ENFORCE_QT_ASSERTS "Force QT_ASSERT in all builds." OFF)
229229

230+
set(GAMMARAY_PROBE_ONLY_BUILD_DEFAULT OFF)
231+
if(GAMMARAY_STATIC_PROBE)
232+
set(GAMMARAY_PROBE_ONLY_BUILD_DEFAULT ON)
233+
endif()
230234
gammaray_option(
231-
GAMMARAY_PROBE_ONLY_BUILD "Build only an additional probe configuration for an already existing launcher." OFF
235+
GAMMARAY_PROBE_ONLY_BUILD "Build only an additional probe configuration for an already existing launcher."
236+
${GAMMARAY_PROBE_ONLY_BUILD_DEFAULT}
232237
)
233-
234-
gammaray_option(GAMMARAY_CLIENT_ONLY_BUILD "Build the client part only." OFF)
235-
236-
if(GAMMARAY_CLIENT_ONLY_BUILD)
237-
set(GAMMARAY_BUILD_UI_DEFAULT ON)
238-
endif()
239-
240-
if(GAMMARAY_PROBE_ONLY_BUILD)
241-
set(GAMMARAY_BUILD_UI_DEFAULT OFF)
238+
if(GAMMARAY_STATIC_PROBE AND NOT GAMMARAY_PROBE_ONLY_BUILD)
239+
message(FATAL_ERROR "Must use PROBE_ONLY_BUILD for STATIC_PROBE.")
240+
elseif(GAMMARAY_STATIC_PROBE)
241+
set(GAMMARAY_LIBRARY_TYPE STATIC)
242+
set(GAMMARAY_PLUGIN_TYPE STATIC)
243+
else()
244+
set(GAMMARAY_LIBRARY_TYPE SHARED)
245+
set(GAMMARAY_PLUGIN_TYPE MODULE)
242246
endif()
243247

244-
gammaray_option(GAMMARAY_BUILD_UI "Build the GammaRay client and in-process UI." ${GAMMARAY_BUILD_UI_DEFAULT})
245-
248+
gammaray_option(GAMMARAY_CLIENT_ONLY_BUILD "Build the client part only." OFF)
246249
if(GAMMARAY_PROBE_ONLY_BUILD AND GAMMARAY_CLIENT_ONLY_BUILD)
247-
message(FATAL_ERROR "You can only use one of the *ONLY* option.")
250+
message(FATAL_ERROR "Cannot use PROBE_ONLY_BUILD and CLIENT_ONLY_BUILD at the same time.")
248251
endif()
249252

250-
gammaray_option(GAMMARAY_INSTALL_QT_LAYOUT "Install into Qt directory layout." OFF)
251-
gammaray_option(GAMMARAY_MULTI_BUILD "Build multiple applicable probe configurations." ON)
252-
gammaray_option(GAMMARAY_BUILD_CLI_INJECTOR "Build command line injector on Windows." ON)
253-
254253
set(GAMMARAY_BUILD_DOCS_DEFAULT ON)
255254
set(GAMMARAY_DISABLE_FEEDBACK_DEFAULT OFF)
256255
if(GAMMARAY_PROBE_ONLY_BUILD OR CMAKE_CROSSCOMPILING)
257256
set(GAMMARAY_BUILD_DOCS_DEFAULT OFF)
258257
set(GAMMARAY_DISABLE_FEEDBACK_DEFAULT ON)
259258
endif()
260259
gammaray_option(GAMMARAY_BUILD_DOCS "Build GammaRay documentation." ${GAMMARAY_BUILD_DOCS_DEFAULT})
261-
gammaray_option(GAMMARAY_STATIC_PROBE "Build the probe as static library for compile-time injection." OFF)
262-
263-
gammaray_option(GAMMARAY_ENFORCE_QT_ASSERTS "Force QT_ASSERT in all builds." OFF)
264-
265260
gammaray_option(GAMMARAY_DISABLE_FEEDBACK "Disable user feedback support." ${GAMMARAY_DISABLE_FEEDBACK_DEFAULT})
266261

267-
#
268-
# Static probe setup
269-
#
270-
if(GAMMARAY_STATIC_PROBE)
271-
set(GAMMARAY_BUILD_UI OFF)
272-
set(GAMMARAY_PROBE_ONLY_BUILD ON)
273-
274-
set(GAMMARAY_LIBRARY_TYPE STATIC)
275-
set(GAMMARAY_PLUGIN_TYPE STATIC)
276-
else()
277-
set(GAMMARAY_LIBRARY_TYPE SHARED)
278-
set(GAMMARAY_PLUGIN_TYPE MODULE)
262+
set(GAMMARAY_BUILD_UI_DEFAULT ON)
263+
if(GAMMARAY_PROBE_ONLY_BUILD)
264+
set(GAMMARAY_BUILD_UI_DEFAULT OFF)
265+
elseif(QNXNTO OR ANDROID)
266+
set(GAMMARAY_BUILD_UI_DEFAULT OFF)
267+
endif()
268+
gammaray_option(GAMMARAY_BUILD_UI "Build the GammaRay client and in-process UI." ${GAMMARAY_BUILD_UI_DEFAULT})
269+
if(GAMMARAY_BUILD_UI AND GAMMARAY_PROBE_ONLY_BUILD)
270+
message(FATAL_ERROR "Cannot use BUILD_UI and PROBE_ONLY_BUILD at the same time.")
279271
endif()
280272

281273
gammaray_option(GAMMARAY_USE_PCH "Enable Precompiled Headers support" OFF)
@@ -297,6 +289,12 @@ if(GAMMARAY_USE_PCH)
297289
)
298290
endif()
299291

292+
if(WIN32)
293+
gammaray_option(GAMMARAY_BUILD_CLI_INJECTOR "Build command line injector on Windows." ON)
294+
else()
295+
set(GAMMARAY_BUILD_CLI_INJECTOR OFF)
296+
endif()
297+
300298
#
301299
# Compiler & linker settings
302300
#

0 commit comments

Comments
 (0)