From e08bd452279dbeedbf876fec465ea51a137455a8 Mon Sep 17 00:00:00 2001 From: Ronald Kinard <furyhunter600@gmail.com> Date: Sun, 1 Feb 2015 22:14:52 -0600 Subject: [PATCH] cmake: Separate debug symbols on gcc Only when actually making the debug target though! --- CMakeLists.txt | 4 ++++ src/sdl/CMakeLists.txt | 12 ++++++++++++ 2 files changed, 16 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 844555c124..b8abe511d4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -67,6 +67,10 @@ if (UNIX) add_definitions(-DUNIXCOMMON) endif() +if(CMAKE_COMPILER_IS_GNUCC) + find_program(OBJCOPY objcopy) +endif() + if(${CMAKE_SYSTEM} MATCHES "Linux") add_definitions(-DLINUX) if(${SRB2_SYSTEM_BITS} EQUAL 64) diff --git a/src/sdl/CMakeLists.txt b/src/sdl/CMakeLists.txt index dc93b6e480..b4eeeeb5fb 100644 --- a/src/sdl/CMakeLists.txt +++ b/src/sdl/CMakeLists.txt @@ -208,6 +208,18 @@ if(${SDL2_FOUND}) -DHAVE_SDL ) + ## strip debug symbols into separate file when using gcc + if(CMAKE_COMPILER_IS_GNUCC) + if(${CMAKE_BUILD_TYPE} MATCHES Debug) + message(STATUS "Will make separate debug symbols in *.debug") + add_custom_command(TARGET ${SRB2_SDL2_EXE_NAME} POST_BUILD + COMMAND ${OBJCOPY} --only-keep-debug $<TARGET_FILE:${SRB2_SDL2_EXE_NAME}> $<TARGET_FILE:${SRB2_SDL2_EXE_NAME}>.debug + COMMAND ${OBJCOPY} --strip-debug $<TARGET_FILE:${SRB2_SDL2_EXE_NAME}> + COMMAND ${OBJCOPY} --add-gnu-debuglink=$<TARGET_FILE_NAME:${SRB2_SDL2_EXE_NAME}>.debug $<TARGET_FILE:${SRB2_SDL2_EXE_NAME}> + ) + endif() + endif() + #### Installation #### if (CLANG) install(TARGETS ${SRB2_SDL2_EXE_NAME} -- GitLab