scons: New profile build.
diff --git a/common.py b/common.py
index 36b190c..d3c0261 100644
--- a/common.py
+++ b/common.py
@@ -52,7 +52,8 @@
 		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 @@
 		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 @@
 		cppdefines += ['DEBUG']
 	else:
 		cppdefines += ['NDEBUG']
+	if env['profile']:
+		cppdefines += ['PROFILE']
 	if platform == 'windows':
 		cppdefines += [
 			'WIN32', 
@@ -204,6 +209,8 @@
 			cflags += ['-O0', '-g3']
 		else:
 			cflags += ['-O3', '-g3']
+		if env['profile']:
+			cflags += ['-pg']
 		cflags += [
 			'-Wall', 
 			'-Wmissing-prototypes',
@@ -228,6 +235,11 @@
 			  '/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
diff --git a/src/gallium/auxiliary/util/SConscript b/src/gallium/auxiliary/util/SConscript
index d55d2c7..0309de1 100644
--- a/src/gallium/auxiliary/util/SConscript
+++ b/src/gallium/auxiliary/util/SConscript
@@ -5,6 +5,7 @@
 	source = [
 		'p_debug.c',
 		'p_debug_mem.c',
+		'p_debug_prof.c',
 		'p_tile.c',
 		'p_util.c',
 		'u_blit.c',