scons: New profile build.
authorJosé Fonseca <jrfonseca@tungstengraphics.com>
Sat, 24 May 2008 10:25:02 +0000 (19:25 +0900)
committerJosé Fonseca <jrfonseca@tungstengraphics.com>
Sat, 24 May 2008 10:25:02 +0000 (19:25 +0900)
common.py
src/gallium/auxiliary/util/SConscript

index 36b190ce89f23a0ab93ff6f1b1de5984e911da4c..d3c0261d71ea049e000a24ce536d3c7f44feb9a3 100644 (file)
--- a/common.py
+++ b/common.py
@@ -52,7 +52,8 @@ def AddOptions(opts):
                from SCons.Options.EnumOption import EnumOption
        except ImportError:
                from SCons.Variables.EnumVariable import EnumVariable as EnumOption
-       opts.Add(BoolOption('debug', 'build debug version', 'no'))
+       opts.Add(BoolOption('debug', 'debug build', 'no'))
+       opts.Add(BoolOption('profile', 'profile build', 'no'))
        #opts.Add(BoolOption('quiet', 'quiet command lines', 'no'))
        opts.Add(EnumOption('machine', 'use machine-specific assembly code', default_machine,
                                                                                         allowed_values=('generic', 'x86', 'x86_64')))
@@ -125,6 +126,8 @@ def make_build_dir(env):
                build_subdir += '-' + env['machine']
        if env['debug']:
                build_subdir += "-debug"
+       if env['profile']:
+               build_subdir += "-profile"
        build_dir = os.path.join(build_topdir, build_subdir)
        # Place the .sconsign file on the builddir too, to avoid issues with different scons
        # versions building the same source file
@@ -154,6 +157,8 @@ def generate(env):
                cppdefines += ['DEBUG']
        else:
                cppdefines += ['NDEBUG']
+       if env['profile']:
+               cppdefines += ['PROFILE']
        if platform == 'windows':
                cppdefines += [
                        'WIN32', 
@@ -204,6 +209,8 @@ def generate(env):
                        cflags += ['-O0', '-g3']
                else:
                        cflags += ['-O3', '-g3']
+               if env['profile']:
+                       cflags += ['-pg']
                cflags += [
                        '-Wall', 
                        '-Wmissing-prototypes',
@@ -228,6 +235,11 @@ def generate(env):
                          '/Oi', # enable intrinsic functions
                          '/Os', # favor code space
                        ]
+               if env['profile']:
+                       cflags += [
+                               '/Gh', # enable _penter hook function
+                               '/GH', # enable _pexit hook function
+                       ]
                if platform == 'windows':
                        cflags += [
                                # TODO
index d55d2c708187431e237d7aba93524f6d8ea4fff9..0309de1ac22eca29ba009e3c3e2ee56ca7d70d75 100644 (file)
@@ -5,6 +5,7 @@ util = env.ConvenienceLibrary(
        source = [
                'p_debug.c',
                'p_debug_mem.c',
+               'p_debug_prof.c',
                'p_tile.c',
                'p_util.c',
                'u_blit.c',