mirror of
https://github.com/minetest/minetest.git
synced 2024-12-25 23:47:29 +01:00
Add SemiDebug (-O1 with debug symbols) build mode and do not optimize Debug at all
Add -Wall to Debug modes for all compilers and -Wabi for non-MSVC Use /Ox for MSVC Release mode (potentially higher optimization than /O2)
This commit is contained in:
parent
976d0b2caa
commit
e36681101e
@ -4,6 +4,24 @@ cmake_minimum_required( VERSION 2.6 )
|
|||||||
INCLUDE(CheckCSourceRuns)
|
INCLUDE(CheckCSourceRuns)
|
||||||
INCLUDE(CheckIncludeFiles)
|
INCLUDE(CheckIncludeFiles)
|
||||||
|
|
||||||
|
# Add custom SemiDebug build mode
|
||||||
|
set(CMAKE_CXX_FLAGS_SEMIDEBUG "-O1 -g -Wall -Wabi" CACHE STRING
|
||||||
|
"Flags used by the C++ compiler during semidebug builds."
|
||||||
|
FORCE
|
||||||
|
)
|
||||||
|
set(CMAKE_C_FLAGS_SEMIDEBUG "-O1 -g -Wall -pedantic" CACHE STRING
|
||||||
|
"Flags used by the C compiler during semidebug builds."
|
||||||
|
FORCE
|
||||||
|
)
|
||||||
|
mark_as_advanced(
|
||||||
|
CMAKE_CXX_FLAGS_SEMIDEBUG
|
||||||
|
CMAKE_C_FLAGS_SEMIDEBUG
|
||||||
|
)
|
||||||
|
set(CMAKE_BUILD_TYPE "${CMAKE_BUILD_TYPE}" CACHE STRING
|
||||||
|
"Choose the type of build. Options are: None Debug SemiDebug RelWithDebInfo MinSizeRel."
|
||||||
|
FORCE
|
||||||
|
)
|
||||||
|
|
||||||
# Set some random things default to not being visible in the GUI
|
# Set some random things default to not being visible in the GUI
|
||||||
mark_as_advanced(EXECUTABLE_OUTPUT_PATH LIBRARY_OUTPUT_PATH)
|
mark_as_advanced(EXECUTABLE_OUTPUT_PATH LIBRARY_OUTPUT_PATH)
|
||||||
|
|
||||||
@ -608,13 +626,15 @@ if(MSVC)
|
|||||||
# Visual Studio
|
# Visual Studio
|
||||||
|
|
||||||
# EHa enables SEH exceptions (used for catching segfaults)
|
# EHa enables SEH exceptions (used for catching segfaults)
|
||||||
set(CMAKE_CXX_FLAGS_RELEASE "/EHa /O2 /Ob2 /Oi /Ot /Oy /GL /FD /MT /GS- /arch:SSE /fp:fast /D NDEBUG /D _HAS_ITERATOR_DEBUGGING=0 /TP")
|
set(CMAKE_CXX_FLAGS_RELEASE "/EHa /Ox /Ob2 /Oi /Ot /Oy /GL /FD /MT /GS- /arch:SSE /fp:fast /D NDEBUG /D _HAS_ITERATOR_DEBUGGING=0 /TP")
|
||||||
#set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/LTCG /NODEFAULTLIB:\"libcmtd.lib\" /NODEFAULTLIB:\"libcmt.lib\"")
|
#set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/LTCG /NODEFAULTLIB:\"libcmtd.lib\" /NODEFAULTLIB:\"libcmt.lib\"")
|
||||||
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/LTCG")
|
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/LTCG")
|
||||||
|
|
||||||
|
set(CMAKE_CXX_FLAGS_SEMIDEBUG "/MDd /Zi /Ob0 /O1 /RTC1 /Wall")
|
||||||
|
|
||||||
# Debug build doesn't catch exceptions by itself
|
# Debug build doesn't catch exceptions by itself
|
||||||
# Add some optimizations because otherwise it's VERY slow
|
# Add some optimizations because otherwise it's VERY slow
|
||||||
set(CMAKE_CXX_FLAGS_DEBUG "/MDd /Zi /Ob0 /Od /RTC1")
|
set(CMAKE_CXX_FLAGS_DEBUG "/MDd /Zi /Ob0 /Od /RTC1 /Wall")
|
||||||
|
|
||||||
# Flags for C files (sqlite)
|
# Flags for C files (sqlite)
|
||||||
# /MT = Link statically with standard library stuff
|
# /MT = Link statically with standard library stuff
|
||||||
@ -658,7 +678,8 @@ else()
|
|||||||
else()
|
else()
|
||||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -fomit-frame-pointer")
|
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -fomit-frame-pointer")
|
||||||
endif(APPLE)
|
endif(APPLE)
|
||||||
set(CMAKE_CXX_FLAGS_DEBUG "-g -O1 -Wall ${WARNING_FLAGS} ${OTHER_FLAGS}")
|
set(CMAKE_CXX_FLAGS_SEMIDEBUG "-g -O1 -Wall -Wabi ${WARNING_FLAGS} ${OTHER_FLAGS}")
|
||||||
|
set(CMAKE_CXX_FLAGS_DEBUG "-g -O0 -Wall -Wabi ${WARNING_FLAGS} ${OTHER_FLAGS}")
|
||||||
|
|
||||||
if(USE_GPROF)
|
if(USE_GPROF)
|
||||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -pg")
|
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -pg")
|
||||||
|
Loading…
Reference in New Issue
Block a user