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 844555c12..b8abe511d 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 dc93b6e48..b4eeeeb5f 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