mirror of
				https://github.com/edubart/otclient.git
				synced 2025-11-04 04:36:23 +01:00 
			
		
		
		
	rework windows crash handler
* use -Ofast -fomit-frame-pointer for release * new windows crash handler that can generate backtraces reports * fix crash after fatal errors
This commit is contained in:
		@@ -7,7 +7,7 @@ ENDIF(${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 6)
 | 
			
		||||
SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake;${CMAKE_MODULE_PATH}")
 | 
			
		||||
 | 
			
		||||
# framework options
 | 
			
		||||
OPTION(NO_CONSOLE "Disables console window on Windows platform" OFF)
 | 
			
		||||
OPTION(WINDOWS_CONSOLE "Enables console window on Windows platform" OFF)
 | 
			
		||||
OPTION(CRASH_HANDLER "Generate crash reports" OFF)
 | 
			
		||||
OPTION(USE_OPENGL_ES2 "Use OpenGL ES 2.0 (for mobiles devices)" OFF)
 | 
			
		||||
 | 
			
		||||
@@ -35,27 +35,23 @@ FIND_PACKAGE(GMP REQUIRED)
 | 
			
		||||
FIND_PACKAGE(ZLIB REQUIRED)
 | 
			
		||||
 | 
			
		||||
# setup compiler options
 | 
			
		||||
IF(CMAKE_COMPILER_IS_GNUCXX)
 | 
			
		||||
    SET(CXX_WARNS "-Wall -Wextra -Werror -Wno-unused-parameter -Wno-unused-but-set-variable")
 | 
			
		||||
    SET(CMAKE_CXX_FLAGS                "${CMAKE_CXX_FLAGS} ${CXX_WARNS} -std=gnu++0x -pipe")
 | 
			
		||||
    SET(CMAKE_C_FLAGS                  "${CMAKE_C_FLAGS} ${CXX_WARNS} -pipe")
 | 
			
		||||
    SET(CMAKE_CXX_FLAGS_DEBUG          "-O0 -g -ggdb")
 | 
			
		||||
    SET(CMAKE_C_FLAGS_DEBUG            "-O0 -g -ggdb")
 | 
			
		||||
    SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O1 -g -ggdb")
 | 
			
		||||
    SET(CMAKE_C_FLAGS_RELWITHDEBINFO   "-O1 -g -ggdb")
 | 
			
		||||
    SET(CMAKE_CXX_FLAGS_RELEASE        "-O2")
 | 
			
		||||
    SET(CMAKE_C_FLAGS_RELEASE          "-O2")
 | 
			
		||||
    #SET(CMAKE_CXX_FLAGS_PERFORMANCE    "-Ofast -fomit-frame-pointer")
 | 
			
		||||
    #SET(CMAKE_C_FLAGS_PERFORMANCE      "-Ofast -fomit-frame-pointer")
 | 
			
		||||
    SET(CMAKE_CXX_LINK_FLAGS           "${CMAKE_CXX_LINK_FLAGS} -static-libgcc -static-libstdc++ -Wl,--as-needed")
 | 
			
		||||
ENDIF(CMAKE_COMPILER_IS_GNUCXX)
 | 
			
		||||
SET(CXX_WARNS "-Wall -Wextra -Werror -Wno-unused-parameter -Wno-unused-but-set-variable")
 | 
			
		||||
SET(CMAKE_CXX_FLAGS                "${CMAKE_CXX_FLAGS} ${CXX_WARNS} -std=gnu++0x -pipe")
 | 
			
		||||
SET(CMAKE_C_FLAGS                  "${CMAKE_C_FLAGS} ${CXX_WARNS} -pipe")
 | 
			
		||||
SET(CMAKE_CXX_FLAGS_DEBUG          "-O0 -ggdb")
 | 
			
		||||
SET(CMAKE_C_FLAGS_DEBUG            "-O0 -ggdb")
 | 
			
		||||
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O1 -ggdb")
 | 
			
		||||
SET(CMAKE_C_FLAGS_RELWITHDEBINFO   "-O1 -ggdb")
 | 
			
		||||
SET(CMAKE_CXX_FLAGS_RELEASE        "-Ofast -fomit-frame-pointer")
 | 
			
		||||
SET(CMAKE_C_FLAGS_RELEASE          "-Ofast -fomit-frame-pointer")
 | 
			
		||||
SET(CMAKE_CXX_LINK_FLAGS           "${CMAKE_CXX_LINK_FLAGS} -static-libgcc -static-libstdc++ -Wl,--as-needed")
 | 
			
		||||
 | 
			
		||||
MESSAGE(STATUS "Build type: " ${CMAKE_BUILD_TYPE})
 | 
			
		||||
IF(USE_OPENGL_ES2)
 | 
			
		||||
    MESSAGE(STATUS "Renderer: OpenGL ES 2.0")
 | 
			
		||||
ELSE(USE_OPENGL_ES2)
 | 
			
		||||
ELSE()
 | 
			
		||||
    MESSAGE(STATUS "Renderer: OpenGL")
 | 
			
		||||
ENDIF(USE_OPENGL_ES2)
 | 
			
		||||
ENDIF()
 | 
			
		||||
 | 
			
		||||
IF(CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
 | 
			
		||||
    ADD_DEFINITIONS(-DDEBUG)
 | 
			
		||||
@@ -67,35 +63,43 @@ ENDIF()
 | 
			
		||||
IF(CMAKE_BUILD_TYPE STREQUAL "Release")
 | 
			
		||||
    # NDEBUG disable asserts
 | 
			
		||||
    ADD_DEFINITIONS(-DNDEBUG)
 | 
			
		||||
ENDIF(CMAKE_BUILD_TYPE STREQUAL "Release")
 | 
			
		||||
    # strip all debug information
 | 
			
		||||
    SET(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} -s")
 | 
			
		||||
    IF(CRASH_HANDLER)
 | 
			
		||||
        MESSAGE(SEND_ERROR "Crash handler cannot be enabled in release mode.")
 | 
			
		||||
    ENDIF()
 | 
			
		||||
ENDIF()
 | 
			
		||||
 | 
			
		||||
IF(CRASH_HANDLER)
 | 
			
		||||
    ADD_DEFINITIONS(-DCRASH_HANDLER)
 | 
			
		||||
    MESSAGE(STATUS "Crash handler: ON")
 | 
			
		||||
ELSE(CRASH_HANDLER)
 | 
			
		||||
ELSE()
 | 
			
		||||
    MESSAGE(STATUS "Crash handler: OFF")
 | 
			
		||||
ENDIF(CRASH_HANDLER)
 | 
			
		||||
ENDIF()
 | 
			
		||||
 | 
			
		||||
IF(WIN32)
 | 
			
		||||
    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mthreads")
 | 
			
		||||
    ADD_DEFINITIONS(-D_WIN32_WINNT=0x0501)
 | 
			
		||||
    SET(ADDITIONAL_LIBRARIES ws2_32 mswsock imagehlp)
 | 
			
		||||
 | 
			
		||||
    SET(framework_SOURCES ${framework_SOURCES}
 | 
			
		||||
        ${CMAKE_CURRENT_LIST_DIR}/platform/win32window.cpp
 | 
			
		||||
        ${CMAKE_CURRENT_LIST_DIR}/platform/win32crashhandler.cpp)
 | 
			
		||||
    SET(ADDITIONAL_LIBRARIES ws2_32 mswsock)
 | 
			
		||||
 | 
			
		||||
    ADD_DEFINITIONS(-D_WIN32_WINNT=0x0501)
 | 
			
		||||
    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mthreads")
 | 
			
		||||
    IF(CRASH_HANDLER)
 | 
			
		||||
        SET(ADDITIONAL_LIBRARIES ${ADDITIONAL_LIBRARIES} imagehlp)
 | 
			
		||||
    ENDIF()
 | 
			
		||||
 | 
			
		||||
    IF(NO_CONSOLE)
 | 
			
		||||
        IF(CMAKE_COMPILER_IS_GNUCXX)
 | 
			
		||||
            SET(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} -mwindows")
 | 
			
		||||
        ENDIF(CMAKE_COMPILER_IS_GNUCXX)
 | 
			
		||||
        MESSAGE(STATUS "Disable windows console: ON")
 | 
			
		||||
    ELSE(NO_CONSOLE)
 | 
			
		||||
        MESSAGE(STATUS "Disable windows console: OFF")
 | 
			
		||||
    ENDIF(NO_CONSOLE)
 | 
			
		||||
    IF(WINDOWS_CONSOLE)
 | 
			
		||||
        MESSAGE(STATUS "Windows console: ON")
 | 
			
		||||
    ELSE()
 | 
			
		||||
        SET(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} -mwindows")
 | 
			
		||||
        MESSAGE(STATUS "Windows console: OFF")
 | 
			
		||||
    ENDIF()
 | 
			
		||||
ELSE(WIN32)
 | 
			
		||||
    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
 | 
			
		||||
    SET(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} -rdynamic")
 | 
			
		||||
 | 
			
		||||
    SET(ADDITIONAL_LIBRARIES X11 dl)
 | 
			
		||||
    SET(framework_SOURCES ${framework_SOURCES}
 | 
			
		||||
        ${CMAKE_CURRENT_LIST_DIR}/platform/x11window.cpp
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user