diff --git a/cmake/modules/AddCompilerFlags.cmake b/cmake/modules/AddCompilerFlags.cmake --- a/cmake/modules/AddCompilerFlags.cmake +++ b/cmake/modules/AddCompilerFlags.cmake @@ -28,9 +28,19 @@ endmacro() macro(remove_compiler_flags) + if(NOT "${CMAKE_BUILD_TYPE}" STREQUAL "") + string(TOUPPER ${CMAKE_BUILD_TYPE} BUILD_TYPE) + set(BUILD_TYPE_CXX_FLAGS "CMAKE_CXX_FLAGS_${BUILD_TYPE}") + set(BUILD_TYPE_C_FLAGS "CMAKE_C_FLAGS_${BUILD_TYPE}") + endif() + foreach(f ${ARGN}) - string(REGEX REPLACE "${f}( |^)" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) - string(REGEX REPLACE "${f}( |^)" "" CMAKE_C_FLAGS ${CMAKE_C_FLAGS}) + string(REGEX REPLACE "${f}( |$)" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") + string(REGEX REPLACE "${f}( |$)" "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") + if(NOT "${CMAKE_BUILD_TYPE}" STREQUAL "") + string(REGEX REPLACE "${f}( |$)" "" ${BUILD_TYPE_CXX_FLAGS} "${${BUILD_TYPE_CXX_FLAGS}}") + string(REGEX REPLACE "${f}( |$)" "" ${BUILD_TYPE_C_FLAGS} "${${BUILD_TYPE_C_FLAGS}}") + endif() endforeach() endmacro() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -16,14 +16,19 @@ option(BUILD_BITCOIN_TX "Build bitcoin-tx" ON) option(BUILD_BITCOIN_QT "Build bitcoin-qt" ON) +# Cmake uses the CMAKE_BUILD_TYPE variable to select the build configuration. +# By default it supports more configurations that needed for Bitcoin ABC, and +# all the releases types set NDEBUG which is unwanted as it disables the assert +# completely. +# Remove the -DNDEBUG flag from the CFLAGS/CXXFLAGS in all the configurations +include(AddCompilerFlags) +remove_compiler_flags(-DNDEBUG) + # Ensure that WINDRES_PREPROC is enabled when using windres. if(${CMAKE_SYSTEM_NAME} MATCHES "Windows") list(APPEND CMAKE_RC_FLAGS "-DWINDRES_PREPROC") endif() -# Enable warning -include(AddCompilerFlags) - # CMake provides the POSITION_INDEPENDENT_CODE property to set PIC/PIE. # Unfortunately setting the -pie linker flag this way required CMake >= 3.14, # which is not widely distributed at the time of writing. @@ -33,6 +38,7 @@ add_linker_flag(-pie) endif() +# Enable warning add_c_compiler_flag(-Wnested-externs -Wstrict-prototypes) add_compiler_flag( -Wall