--- SConstruct.orig	2009-12-10 14:58:55 UTC
+++ SConstruct
@@ -16,7 +16,7 @@ env['BUILDERS']['Library'] = picLibBuilder
 env['BUILDERS']['StaticLibrary'] = picLibBuilder
 env['BUILDERS']['Library'] = picLibBuilder
 
-opts = Options(['options.cache'])
+opts = Variables(['options.cache'])
 #opts.Add('CC', 'C compiler')
 #opts.Add('CXX', 'C++ compiler')
 opts.Add('CCFLAGS', 'General options that are passed to the C compiler')
@@ -30,12 +30,13 @@ if sys.platform != "win32":
 
 if sys.platform != "win32":
 	opts.Add('prefix', 'prefix for **nix packaging', '')
+	opts.Add('DESTDIR', 'staging dir (also for packaging)', '')
 	opts.Add('lib_dir', 'resources directory (default: prefix/lib)', '')
 	opts.Add('plugins_dir', 'plugins directory (default: prefix/lib/btanks)', '')
 	opts.Add('resources_dir', 'resources directory (default: prefix/share/btanks)', '')
-	opts.Add(BoolOption('gcc_visibility', 'gcc visibility', 'true'))
+	opts.Add(BoolVariable('gcc_visibility', 'gcc visibility', 'true'))
 
-opts.Add(EnumOption('mode', 'build mode', 'release', allowed_values=('debug','release')))
+opts.Add(EnumVariable('mode', 'build mode', 'release', allowed_values=('debug','release')))
 
 opts.Update(env)
 opts.Save('options.cache', env.Clone())
@@ -47,16 +48,18 @@ import SCons.Util
 Export('debug')
 
 import SCons.Util
-if os.environ.has_key('CC'):
+if 'CC' in os.environ:
 	env['CC'] = os.environ['CC']
-if os.environ.has_key('CFLAGS'):
+if 'CFLAGS' in os.environ:
 	env['CCFLAGS'] += SCons.Util.CLVar(os.environ['CFLAGS'])
-if os.environ.has_key('CXX'):
+if 'CXX' in os.environ:
 	env['CXX'] = os.environ['CXX']
-if os.environ.has_key('CXXFLAGS'):
+if 'CXXFLAGS' in os.environ:
 	env['CXXFLAGS'] += SCons.Util.CLVar(os.environ['CXXFLAGS'])
-if os.environ.has_key('LDFLAGS'):
+if 'LDFLAGS' in os.environ:
 	env['LINKFLAGS'] += SCons.Util.CLVar(os.environ['LDFLAGS'])
+if 'CPPPATH' in os.environ:
+	env['CPPPATH'] = os.environ['CPPPATH'].split()
 
 if (sys.platform != "win32" and env['gcc_visibility']): 
 	env.Append(CCFLAGS=['-fvisibility=hidden', '-DGCC_HASCLASSVISIBILITY'])
@@ -98,9 +101,6 @@ else:
 	if debug:
 		env.Append(CCFLAGS=['-ggdb', '-D_FORTIFY_SOURCE=2'])
 		env.Append(CPPFLAGS=['-ggdb', '-D_FORTIFY_SOURCE=2'])
-	else: 
-		env.Append(CCFLAGS=['-O3'])
-		env.Append(CPPFLAGS=['-O3'])
 		
 	env.Append(CPPFLAGS=['-Wall', '-Wno-deprecated', '-pedantic', '-Wno-long-long', '-pipe', '-pthread'])
 	env.Append(CCFLAGS=['-Wall', '-Wno-deprecated', '-pedantic', '-Wno-long-long', '-pipe', '-pthread'])
@@ -119,17 +119,17 @@ else: 
 
 #print conf.env['CCFLAGS']
 
-if not conf.CheckLibWithHeader('expat', 'expat.h', 'c', "XML_ParserCreate(NULL);", False):
+if not conf.CheckLibWithHeader('expat', 'expat.h', 'c', None, "XML_ParserCreate(NULL);", False):
 	Exit(1)
 
-if not conf.CheckLibWithHeader('z', 'zlib.h', 'c', "zlibVersion();", False):
+if not conf.CheckLibWithHeader('z', 'zlib.h', 'c', None, "zlibVersion();", False):
 	Exit(1)
 
 if sys.platform == "win32":
 	conf.env.Append(LINKFLAGS = ['/SUBSYSTEM:WINDOWS', '/FORCE'])
 	conf.env.Append(LIBS=['SDLmain'])
 
-if not conf.CheckLibWithHeader('SDL', 'SDL.h', 'c++', "SDL_Init(0);", False):
+if not conf.CheckLibWithHeader('SDL', 'SDL.h', 'c++', None, "SDL_Init(0);", False):
 	Exit(1)
 	
 
@@ -140,23 +140,23 @@ Export('smpeg_lib')
 	smpeg_lib = 'smpeg_d'
 Export('smpeg_lib')
 
-if not conf.CheckLibWithHeader(smpeg_lib, 'smpeg/smpeg.h', 'c++', "SMPEG_new_data(malloc(42), 42, NULL, 0);", False):
+if not conf.CheckLibWithHeader(smpeg_lib, 'smpeg/smpeg.h', 'c++', None, "SMPEG_new_data(malloc(42), 42, NULL, 0);", False):
 	Exit(1)
 
-if not conf.CheckLibWithHeader('SDL_image', 'SDL_image.h', 'c++', "IMG_Load(0);", False):
+if not conf.CheckLibWithHeader('SDL_image', 'SDL_image.h', 'c++', None, "IMG_Load(0);", False):
 	Exit(1)
 
-if not conf.CheckLibWithHeader('vorbisfile', 'vorbis/vorbisfile.h', 'c++', "ov_open(0, 0, 0, 0);", False):
+if not conf.CheckLibWithHeader('vorbisfile', 'vorbis/vorbisfile.h', 'c++', None, "ov_open(0, 0, 0, 0);", False):
 	Exit(1)
 
 if sys.platform == 'win32':
-	if not conf.CheckLibWithHeader('lua', 'lua.hpp', 'c++', "lua_newstate(NULL, NULL);", False):
+	if not conf.CheckLibWithHeader('lua', 'lua.hpp', 'c++', None, "lua_newstate(NULL, NULL);", False):
 		Exit(1)
 
 if sys.platform != 'win32':
-	have_sse = conf.CheckLibWithHeader('m', "xmmintrin.h", 'c', '_mm_set_ss(1.0f);', False)
+	have_sse = conf.CheckLibWithHeader('m', "xmmintrin.h", 'c', None, '_mm_set_ss(1.0f);', False)
 else: 
-	have_sse = conf.CheckLibWithHeader('kernel32', "xmmintrin.h", 'c', '_mm_set_ss(1.0f);', False) # hackish lib :(
+	have_sse = conf.CheckLibWithHeader('kernel32', "xmmintrin.h", 'c', None, '_mm_set_ss(1.0f);', False) # hackish lib :(
 
 conf.Finish()
 
@@ -205,7 +205,7 @@ try : 
 
 	except: 
 		info = sys.exc_info()
-		print "%s %s %s" %(info[0], info[1], info[2])
+		print("%s %s %s" %(info[0], info[1], info[2]))
 except : 
 	svnversion = os.popen('svnversion -n .', 'r')
 	version = svnversion.readline().strip()
@@ -238,7 +238,10 @@ version = version[version.rfind(':') + 1:]
 			env.Append(CPPDEFINES='PLUGINS_DIR="\\"' + plugins_dir + '\\""')
 
 version = version[version.rfind(':') + 1:]
-revision = int(version.replace('M', ''))
+try:
+    revision = int(version.replace('M', ''))
+except ValueError:
+    revision = 0
 
 Export('version')
 Export('revision')
@@ -246,31 +249,35 @@ version = '0.9.%s' %version
 Export('plugins_dir')
 
 version = '0.9.%s' %version
-print "version: %s" %version
+print("version: %s" %version)
 
 bt_sublibs = ['mrt', 'sdlx', 'objects', 'clunk']
 env.Append(CPPPATH=['#'])
 
 if (os.path.exists('private')):
 	dir = 'private'
-	BuildDir('#/build/' + buildmode + '/' + dir, dir, 0)
+	VariantDir('#/build/' + buildmode + '/' + dir, dir, 0)
 	SConscript('#/build/' + buildmode + '/' + dir + '/SConscript')	
 
 for dir in bt_sublibs:
-	BuildDir('#/build/' + buildmode + '/' + dir, dir, 0)
+	VariantDir('#/build/' + buildmode + '/' + dir, dir, 0)
 	SConscript('#/build/' + buildmode + '/' + dir + '/SConscript')
 
 for dir in bt_sublibs:
 	env.Append(LIBPATH=['#/build/' + buildmode + '/' + dir])
 
-env.BuildDir('#/build/' + buildmode + '/editor', 'editor', 0)
+env.VariantDir('#/build/' + buildmode + '/editor', 'editor', 0)
 SConscript('#/build/' + buildmode + '/editor/SConscript')
 
 env.Append(LIBPATH=['#/build/' + buildmode + '/engine'])
 
-env.BuildDir('#/build/' + buildmode + '/engine', 'engine', 0)
+env.VariantDir('#/build/' + buildmode + '/engine', 'engine', 0)
 SConscript('#/build/' + buildmode + '/engine/' + 'SConscript')
 
 if len(install_targets) > 0:
-	install_targets.append(env.Command(resources_dir + '/resources.dat', '#/data', 'zip -q -0 -r  $TARGET * -x \*.svn\* -x \*.wav', chdir='data'))
+	install_targets.append(
+	    env.Command(env['DESTDIR'] + resources_dir + '/resources.dat',
+		'#/data',
+		'zip -q -0 -r $TARGET * -x \*.svn\* -x \*.wav',
+		chdir='data'))
 	env.Alias('install', install_targets)
