Selaa lähdekoodia

Merge pull request #11243 from hpvb/add-debug-info-on-release

Create separate debug info files by default
Rémi Verschelde 8 vuotta sitten
vanhempi
commit
e8a0c5da77

+ 2 - 0
.gitignore

@@ -80,6 +80,8 @@ build/
 bld/
 [Bb]in/
 [Oo]bj/
+*.debug
+*.dSYM
 
 # MSTest test Results
 [Tt]est[Rr]esult*/

+ 10 - 5
platform/haiku/detect.py

@@ -21,7 +21,7 @@ def can_build():
 def get_opts():
 
     return [
-        ('debug_release', 'Add debug symbols to release version', 'no')
+        ('debug_symbols', 'Add debug symbols to release version (yes/no/full)', 'yes')
     ]
 
 
@@ -36,16 +36,21 @@ def configure(env):
     ## Build type
 
     if (env["target"] == "release"):
-        if (env["debug_release"] == "yes"):
+        env.Prepend(CCFLAGS=['-O3', '-ffast-math'])
+        if (env["debug_symbols"] == "yes"):
+            env.Prepend(CCFLAGS=['-g1'])
+        if (env["debug_symbols"] == "full"):
             env.Prepend(CCFLAGS=['-g2'])
-        else:
-            env.Prepend(CCFLAGS=['-O3', '-ffast-math'])
 
     elif (env["target"] == "release_debug"):
         env.Prepend(CCFLAGS=['-O2', '-ffast-math', '-DDEBUG_ENABLED'])
+        if (env["debug_symbols"] == "yes"):
+            env.Prepend(CCFLAGS=['-g1'])
+        if (env["debug_symbols"] == "full"):
+            env.Prepend(CCFLAGS=['-g2'])
 
     elif (env["target"] == "debug"):
-        env.Prepend(CCFLAGS=['-g2', '-DDEBUG_ENABLED', '-DDEBUG_MEMORY_ENABLED'])
+        env.Prepend(CCFLAGS=['-g3', '-DDEBUG_ENABLED', '-DDEBUG_MEMORY_ENABLED'])
 
     ## Architecture
 

+ 8 - 5
platform/osx/SCsub

@@ -1,7 +1,11 @@
 #!/usr/bin/env python
 
+import os
 Import('env')
 
+def make_debug(target, source, env):
+    os.system('dsymutil %s -o %s.dSYM' % (target[0], target[0]))
+
 files = [
     'crash_handler_osx.mm',
     'os_osx.mm',
@@ -13,8 +17,7 @@ files = [
     'power_osx.cpp',
 ]
 
-prog = env.Program('#bin/godot', files)
-if (env['target'] == "debug" or env['target'] == "release_debug"):
-    # Build the .dSYM file for atos
-    action = "dsymutil " + File(prog)[0].path + " -o " + File(prog)[0].path + ".dSYM"
-    env.AddPostAction(prog, action)
+binary = env.Program('#bin/godot', files)
+if env["debug_symbols"] == "full" or env["debug_symbols"] == "yes":
+    env.AddPostAction(binary, make_debug)
+

+ 10 - 1
platform/osx/detect.py

@@ -22,6 +22,7 @@ def get_opts():
 
     return [
         ('osxcross_sdk', 'OSXCross SDK version', 'darwin14'),
+        ('debug_symbols', 'Add debug symbols to release version (yes/no/full)', 'yes'),
     ]
 
 
@@ -36,10 +37,18 @@ def configure(env):
 	## Build type
 
     if (env["target"] == "release"):
-        env.Prepend(CCFLAGS=['-O2', '-ffast-math', '-fomit-frame-pointer', '-ftree-vectorize', '-msse2'])
+        env.Prepend(CCFLAGS=['-O3', '-ffast-math', '-fomit-frame-pointer', '-ftree-vectorize', '-msse2'])
+        if (env["debug_symbols"] == "yes"):
+            env.Prepend(CCFLAGS=['-g1'])
+        if (env["debug_symbols"] == "full"):
+            env.Prepend(CCFLAGS=['-g2'])
 
     elif (env["target"] == "release_debug"):
         env.Prepend(CCFLAGS=['-O2', '-DDEBUG_ENABLED'])
+        if (env["debug_symbols"] == "yes"):
+            env.Prepend(CCFLAGS=['-g1'])
+        if (env["debug_symbols"] == "full"):
+            env.Prepend(CCFLAGS=['-g2'])
 
     elif (env["target"] == "debug"):
         env.Prepend(CCFLAGS=['-g3', '-DDEBUG_ENABLED', '-DDEBUG_MEMORY_ENABLED'])

+ 10 - 1
platform/windows/SCsub

@@ -1,7 +1,12 @@
 #!/usr/bin/env python
 
+import os
 Import('env')
 
+def make_debug_mingw(target, source, env):
+    os.system('objcopy --only-keep-debug %s %s.debug' % (target[0], target[0]))
+    os.system('strip --strip-debug --strip-unneeded %s' % (target[0]))
+    os.system('objcopy --add-gnu-debuglink=%s.debug %s' % (target[0], target[0]))
 
 common_win = [
     "context_gl_win.cpp",
@@ -22,10 +27,14 @@ obj = env.RES(restarget, 'godot_res.rc')
 
 common_win.append(obj)
 
-env.Program('#bin/godot', ['godot_win.cpp'] + common_win, PROGSUFFIX=env["PROGSUFFIX"])
+binary = env.Program('#bin/godot', ['godot_win.cpp'] + common_win, PROGSUFFIX=env["PROGSUFFIX"])
 
 # Microsoft Visual Studio Project Generation
 if (env['vsproj']) == "yes":
     env.vs_srcs = env.vs_srcs + ["platform/windows/godot_win.cpp"]
     for x in common_win:
         env.vs_srcs = env.vs_srcs + ["platform/windows/" + str(x)]
+
+if not os.getenv("VCINSTALLDIR"):
+    if env["debug_symbols"] == "full" or env["debug_symbols"] == "yes":
+        env.AddPostAction(binary, make_debug_mingw)

+ 11 - 1
platform/windows/detect.py

@@ -64,6 +64,7 @@ def get_opts():
     return [
         ('mingw_prefix_32', 'MinGW prefix (Win32)', mingw32),
         ('mingw_prefix_64', 'MinGW prefix (Win64)', mingw64),
+        ('debug_symbols', 'Add debug symbols to release version (yes/no/full)', 'yes')
     ]
 
 
@@ -213,11 +214,20 @@ def configure(env):
 
             env.Append(LINKFLAGS=['-Wl,--subsystem,windows'])
 
+            if (env["debug_symbols"] == "yes"):
+               env.Prepend(CCFLAGS=['-g1'])
+            if (env["debug_symbols"] == "full"):
+               env.Prepend(CCFLAGS=['-g2'])
+
         elif (env["target"] == "release_debug"):
             env.Append(CCFLAGS=['-O2', '-DDEBUG_ENABLED'])
+            if (env["debug_symbols"] == "yes"):
+               env.Prepend(CCFLAGS=['-g1'])
+            if (env["debug_symbols"] == "full"):
+               env.Prepend(CCFLAGS=['-g2'])
 
         elif (env["target"] == "debug"):
-            env.Append(CCFLAGS=['-g', '-DDEBUG_ENABLED', '-DDEBUG_MEMORY_ENABLED'])
+            env.Append(CCFLAGS=['-g3', '-DDEBUG_ENABLED', '-DDEBUG_MEMORY_ENABLED'])
 
         ## Compiler configuration
 

+ 8 - 1
platform/x11/SCsub

@@ -1,7 +1,12 @@
 #!/usr/bin/env python
 
+import os
 Import('env')
 
+def make_debug(target, source, env):
+    os.system('objcopy --only-keep-debug %s %s.debug' % (target[0], target[0]))
+    os.system('strip --strip-debug --strip-unneeded %s' % (target[0]))
+    os.system('objcopy --add-gnu-debuglink=%s.debug %s' % (target[0], target[0]))
 
 common_x11 = [
     "context_gl_x11.cpp",
@@ -12,4 +17,6 @@ common_x11 = [
     "power_x11.cpp",
 ]
 
-env.Program('#bin/godot', ['godot_x11.cpp'] + common_x11)
+binary = env.Program('#bin/godot', ['godot_x11.cpp'] + common_x11)
+if env["debug_symbols"] == "full" or env["debug_symbols"] == "yes":
+    env.AddPostAction(binary, make_debug)

+ 8 - 5
platform/x11/detect.py

@@ -44,7 +44,6 @@ def can_build():
 
     return True
 
-
 def get_opts():
 
     return [
@@ -55,7 +54,7 @@ def get_opts():
         ('use_lto', 'Use link time optimization', 'no'),
         ('pulseaudio', 'Detect & use pulseaudio', 'yes'),
         ('udev', 'Use udev for gamepad connection callbacks', 'no'),
-        ('debug_release', 'Add debug symbols to release version', 'no'),
+        ('debug_symbols', 'Add debug symbols to release version (yes/no/full)', 'yes')
     ]
 
 
@@ -77,16 +76,20 @@ def configure(env):
         # -O3 -ffast-math is identical to -Ofast. We need to split it out so we can selectively disable
         # -ffast-math in code for which it generates wrong results.
         env.Prepend(CCFLAGS=['-O3', '-ffast-math'])
-        if (env["debug_release"] == "yes"):
+        if (env["debug_symbols"] == "yes"):
+            env.Prepend(CCFLAGS=['-g1'])
+        if (env["debug_symbols"] == "full"):
             env.Prepend(CCFLAGS=['-g2'])
 
     elif (env["target"] == "release_debug"):
         env.Prepend(CCFLAGS=['-O2', '-ffast-math', '-DDEBUG_ENABLED'])
-        if (env["debug_release"] == "yes"):
+        if (env["debug_symbols"] == "yes"):
+            env.Prepend(CCFLAGS=['-g1'])
+        if (env["debug_symbols"] == "full"):
             env.Prepend(CCFLAGS=['-g2'])
 
     elif (env["target"] == "debug"):
-        env.Prepend(CCFLAGS=['-g2', '-DDEBUG_ENABLED', '-DDEBUG_MEMORY_ENABLED'])
+        env.Prepend(CCFLAGS=['-g3', '-DDEBUG_ENABLED', '-DDEBUG_MEMORY_ENABLED'])
         env.Append(LINKFLAGS=['-rdynamic'])
 
     ## Architecture