diff --git a/cmake/flags.cmake b/cmake/flags.cmake index 6080b984..deba93d0 100644 --- a/cmake/flags.cmake +++ b/cmake/flags.cmake @@ -28,7 +28,13 @@ if (CMAKE_CXX_COMPILER_ID MATCHES GNU) endif() if (DEV_WITH_TSAN OR DEV_WITH_UBSAN OR DEV_WITH_ASAN OR DEV_DEBUG OR (CMAKE_BUILD_TYPE STREQUAL "Debug") OR (CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")) - set(OPTIMIZATION_FLAGS "-Og -g -ftrapv") + add_definitions(-DDEBUG_BUILD) + if (CMAKE_BUILD_TYPE STREQUAL "Debug") + set(OPTIMIZATION_FLAGS "-O0") + else() + set(OPTIMIZATION_FLAGS "-Og") + endif() + set(OPTIMIZATION_FLAGS "${OPTIMIZATION_FLAGS} -g3 -ftrapv -Wno-unused-function") else() set(OPTIMIZATION_FLAGS "-O3 -ffast-math -s") endif() @@ -41,11 +47,15 @@ if (CMAKE_CXX_COMPILER_ID MATCHES GNU) set(OPTIMIZATION_FLAGS "${OPTIMIZATION_FLAGS} -fno-associative-math") endif() - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${GENERAL_FLAGS} ${WARNING_FLAGS} ${OPTIMIZATION_FLAGS}") - set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${GENERAL_FLAGS} ${WARNING_FLAGS} ${OPTIMIZATION_FLAGS}") + set(CMAKE_C_FLAGS "${GENERAL_FLAGS} ${WARNING_FLAGS}") + set(CMAKE_C_FLAGS_DEBUG "${OPTIMIZATION_FLAGS}") + set(CMAKE_C_FLAGS_RELEASE "${OPTIMIZATION_FLAGS}") + set(CMAKE_C_FLAGS_RELWITHDEBINFO "${OPTIMIZATION_FLAGS}") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GENERAL_FLAGS} ${WARNING_FLAGS} ${OPTIMIZATION_FLAGS}") - set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${GENERAL_FLAGS} ${WARNING_FLAGS} ${OPTIMIZATION_FLAGS}") + set(CMAKE_CXX_FLAGS "${GENERAL_FLAGS} ${WARNING_FLAGS}") + set(CMAKE_CXX_FLAGS_DEBUG "${OPTIMIZATION_FLAGS}") + set(CMAKE_CXX_FLAGS_RELEASE "${OPTIMIZATION_FLAGS}") + set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${OPTIMIZATION_FLAGS}") if (WIN32) set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static") @@ -66,6 +76,10 @@ elseif (CMAKE_CXX_COMPILER_ID MATCHES MSVC) set(WARNING_FLAGS "/W0") endif() + if (DEV_DEBUG OR (CMAKE_BUILD_TYPE STREQUAL "Debug") OR (CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")) + add_definitions(-DDEBUG_BUILD) + endif() + set(CMAKE_C_FLAGS_DEBUG "${GENERAL_FLAGS} ${WARNING_FLAGS} ${SECURITY_FLAGS} /Od /Ob0 /Zi /MTd") set(CMAKE_CXX_FLAGS_DEBUG "${GENERAL_FLAGS} ${WARNING_FLAGS} ${SECURITY_FLAGS} /Od /Ob0 /Zi /MTd") @@ -99,8 +113,14 @@ elseif (CMAKE_CXX_COMPILER_ID MATCHES Clang) set(WARNING_FLAGS "-w") endif() - if (DEV_WITH_MSAN OR DEV_DEBUG) - set(OPTIMIZATION_FLAGS "-Og -g -ftrapv") + if (DEV_WITH_MSAN OR DEV_DEBUG OR (CMAKE_BUILD_TYPE STREQUAL "Debug") OR (CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")) + add_definitions(-DDEBUG_BUILD) + if (CMAKE_BUILD_TYPE STREQUAL "Debug") + set(OPTIMIZATION_FLAGS "-O0") + else() + set(OPTIMIZATION_FLAGS "-Og") + endif() + set(OPTIMIZATION_FLAGS "${OPTIMIZATION_FLAGS} -g3 -ftrapv -Wno-unused-function") else() set(OPTIMIZATION_FLAGS "-O3 -ffast-math -funroll-loops -fmerge-all-constants") endif() @@ -109,9 +129,13 @@ elseif (CMAKE_CXX_COMPILER_ID MATCHES Clang) set(OPTIMIZATION_FLAGS "${OPTIMIZATION_FLAGS} -flto") endif() - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${GENERAL_FLAGS} ${WARNING_FLAGS} ${OPTIMIZATION_FLAGS}") - set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${GENERAL_FLAGS} ${WARNING_FLAGS} ${OPTIMIZATION_FLAGS}") + set(CMAKE_C_FLAGS "${GENERAL_FLAGS} ${WARNING_FLAGS}") + set(CMAKE_C_FLAGS_DEBUG "${OPTIMIZATION_FLAGS}") + set(CMAKE_C_FLAGS_RELEASE "${OPTIMIZATION_FLAGS}") + set(CMAKE_C_FLAGS_RELWITHDEBINFO "${OPTIMIZATION_FLAGS}") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GENERAL_FLAGS} ${WARNING_FLAGS} ${OPTIMIZATION_FLAGS}") - set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${GENERAL_FLAGS} ${WARNING_FLAGS} ${OPTIMIZATION_FLAGS}") + set(CMAKE_CXX_FLAGS "${GENERAL_FLAGS} ${WARNING_FLAGS}") + set(CMAKE_CXX_FLAGS_DEBUG "${OPTIMIZATION_FLAGS}") + set(CMAKE_CXX_FLAGS_RELEASE "${OPTIMIZATION_FLAGS}") + set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${OPTIMIZATION_FLAGS}") endif() diff --git a/src/common.h b/src/common.h index 51103985..3f2c74f1 100644 --- a/src/common.h +++ b/src/common.h @@ -501,4 +501,10 @@ extern const char* BLOCK_FOUND; } // namespace p2pool #include "util.h" + +#ifdef DEBUG_BUILD +#undef FORCEINLINE +#define FORCEINLINE NOINLINE +#endif + #include "log.h"