diff options
| author | Ben Harris <bjh21@bjh21.me.uk> | 2023-02-19 23:20:29 +0000 |
|---|---|---|
| committer | Ben Harris <bjh21@bjh21.me.uk> | 2023-02-19 23:20:29 +0000 |
| commit | 1470c9530b1cff33d11170b9b891d94be62c4194 (patch) | |
| tree | 9ade57426919284d605811a8f3ee1925b91a9dc5 /cmake | |
| parent | bb16b5a70ddf77d03f1e985cb761ad5aa6c19b2c (diff) | |
| download | puzzles-1470c9530b1cff33d11170b9b891d94be62c4194.zip puzzles-1470c9530b1cff33d11170b9b891d94be62c4194.tar.gz puzzles-1470c9530b1cff33d11170b9b891d94be62c4194.tar.bz2 puzzles-1470c9530b1cff33d11170b9b891d94be62c4194.tar.xz | |
Try to stop CMake disabling assertions in release builds
Assertion failures are ugly, but they're better than the alternative.
Defensive coding is a general principle throughout Puzzles and I don't
think it's sensible to selectively turn that off.
The mechanism by which we re-enable assertions is stolen from PuTTY
(with an enhancement to cover MinSizeRel builds as well) and is pretty
ugly because CMake doesn't seem to have a good way to do it.
Diffstat (limited to 'cmake')
| -rw-r--r-- | cmake/setup.cmake | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/cmake/setup.cmake b/cmake/setup.cmake index 8f879e4..ea8d1bf 100644 --- a/cmake/setup.cmake +++ b/cmake/setup.cmake @@ -8,6 +8,16 @@ set(build_gui_programs TRUE) set(build_icons FALSE) set(need_c_icons FALSE) +# Don't disable assertions, even in release mode. Our assertions +# generally aren't expensive and protect against more annoying crashes +# and memory corruption. +string(REPLACE "/DNDEBUG" "" CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL}") +string(REPLACE "-DNDEBUG" "" CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL}") +string(REPLACE "/DNDEBUG" "" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}") +string(REPLACE "-DNDEBUG" "" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}") +string(REPLACE "/DNDEBUG" "" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}") +string(REPLACE "-DNDEBUG" "" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}") + # Include one of platforms/*.cmake to define platform-specific stuff. # Each of these is expected to: # - define get_platform_puzzle_extra_source_files(), used below |