|     82 	elif env['PLATFORM'] == 'win32': |     82 	elif env['PLATFORM'] == 'win32': | 
|     83 		platform = 'win32' |     83 		platform = 'win32' | 
|     84 	context.Result(platform) |     84 	context.Result(platform) | 
|     85 	return True |     85 	return True | 
|     86  |     86  | 
|         |     87 intelcversion = '' | 
|     87 def CheckIntelC(context): |     88 def CheckIntelC(context): | 
|     88 	global intelc, intelcversion |     89 	global intelc, intelcversion | 
|     89 	context.Message('Checking for IntelC compiler... ') |     90 	context.Message('Checking for IntelC compiler... ') | 
|     90 	intelc = Tool("intelc").exists(env) == True |     91 	intelc = Tool("intelc").exists(env) == True | 
|     91 	if intelc: |     92 	if intelc: | 
|     92 		testenv = Environment() |     93 		testenv = Environment() | 
|     93 		Tool("intelc").generate(testenv) |     94 		Tool("intelc").generate(testenv) | 
|     94 		intelcversion = str(testenv['INTEL_C_COMPILER_VERSION']/10.) |     95 		intelcversion = str(testenv['INTEL_C_COMPILER_VERSION']/10.) | 
|     95 		context.Result(intelcversion) |     96 		context.Result(intelcversion) | 
|     96 	else: |     97 	else: | 
|     97 		intelcversion = '' |         | 
|     98 		context.Result(intelc) |     98 		context.Result(intelc) | 
|     99 	return intelc |     99 	return intelc | 
|    100  |    100  | 
|    101 def CheckGCC(context): |    101 def CheckGCC(context): | 
|    102 	global gcc, gccversion |    102 	global gcc, gccversion | 
|    183 else: |    183 else: | 
|    184 	add_flags += conf.env['flags'] + ' ' |    184 	add_flags += conf.env['flags'] + ' ' | 
|    185  |    185  | 
|    186 if conf.env['precision'] == 'double': |    186 if conf.env['precision'] == 'double': | 
|    187 	conf.Define("PYRIT_DOUBLE") |    187 	conf.Define("PYRIT_DOUBLE") | 
|    188 elif cc == 'gcc': |         | 
|    189 	add_flags += '-fsingle-precision-constant ' |         | 
|    190  |    188  | 
|    191 if not conf.env['simd'] or conf.env['precision'] == 'double': |    189 if not conf.env['simd'] or conf.env['precision'] == 'double': | 
|    192 	conf.Define("NO_SIMD") |    190 	conf.Define("NO_SIMD") | 
|    193  |    191  | 
|    194 if cc == 'intelc': |    192 if cc == 'intelc': | 
|    195 	conf.env.Append(CCFLAGS="-O3 -w1 " + add_flags) |    193 	conf.env.Append(CCFLAGS="-O3 -w1 " + add_flags) | 
|    196 elif cc == 'gcc': |    194 elif cc == 'gcc': | 
|    197 	conf.env.Append(CCFLAGS="-O3 -Wall -pipe " + add_flags) |    195 	conf.env.Append(CCFLAGS="-O3 -Wall -pipe " + add_flags) | 
|         |    196 	# Other useful flags: | 
|         |    197 	# -Wunsafe-loop-optimizations -Wpointer-arith -Wcast-align -Wconversion | 
|         |    198 	# -Wmissing-noreturn -Winline -Wdisabled-optimization | 
|    198 elif cc == 'msvc': |    199 elif cc == 'msvc': | 
|    199 	conf.env.Append(CCFLAGS="/Ox /Ob2 /GS- /Gy /GF /GR- /Zp16 /MD /EHsc /vmb " + add_flags) |    200 	conf.env.Append(CCFLAGS="/Ox /Ob2 /GS- /Gy /GF /GR- /Zp16 /MD /EHsc /vmb " + add_flags) | 
|    200 else: |    201 else: | 
|    201 	print "No supported compiler found." |    202 	print "No supported compiler found." | 
|    202 	Exit(1) |    203 	Exit(1) | 
|    203  |    204  | 
|    204 print "Using compiler: " + cc |    205 print "Using compiler: " + cc | 
|    205 print "Additional flags: " + add_flags |    206 print "Additional flags: " + add_flags | 
|    206  |    207  | 
|         |    208 if conf.env['profile'] and cc == 'gcc': | 
|         |    209 	conf.env.Append(CCFLAGS="-pg", LINKFLAGS="-pg") | 
|         |    210  | 
|         |    211  | 
|         |    212 # configure pthread | 
|    207 pthread = True |    213 pthread = True | 
|    208 if conf.env['PLATFORM'] == 'win32': |    214 if platform == 'win32': | 
|    209 	if cc == 'msvc': |    215 	if cc == 'msvc': | 
|    210 		if not conf.CheckLib('pthreadVC2'): |    216 		if not conf.CheckLib('pthreadVC2'): | 
|    211 			pthread = False |    217 			pthread = False | 
|    212 		conf.env.Append(LIBS=["pthreadVC2"]) |         | 
|    213 	elif cc == 'gcc': |    218 	elif cc == 'gcc': | 
|    214 		if not conf.CheckLib('pthreadGC2'): |    219 		if not conf.CheckLib('pthreadGC2'): | 
|    215 			pthread = False |    220 			pthread = False | 
|    216 		conf.env.Append(LIBS=["pthreadGC2"]) |         | 
|    217 else: |    221 else: | 
|    218 	conf.env.Append(CCFLAGS="-pthread ") |    222 	conf.env.Append(CCFLAGS="-pthread ") | 
|    219  |    223  | 
|    220 if not pthread: |    224 if not pthread: | 
|    221 	print 'Error: Cannot build without pthread.' |    225 	print 'Error: Cannot build without pthread.' | 
|    222 	Exit(1) |    226 	Exit(1) | 
|    223  |    227  | 
|         |    228  | 
|         |    229 # configure libpng | 
|    224 if conf.CheckLibWithHeader('png', 'png.h', 'C'): |    230 if conf.CheckLibWithHeader('png', 'png.h', 'C'): | 
|    225 	conf.Define('HAVE_PNG') |    231 	conf.Define('HAVE_PNG') | 
|    226 	conf.env.Append(LIBS=['png']) |    232 elif conf.CheckLib('libpng'): | 
|    227 elif conf.CheckLib('libpng13'): |         | 
|    228 	conf.Define('HAVE_PNG') |    233 	conf.Define('HAVE_PNG') | 
|    229 	conf.env.Append(LIBS=['libpng13']) |         | 
|    230  |         | 
|    231 if conf.env['profile'] and cc == 'gcc': |         | 
|    232 	conf.env.Append(CCFLAGS="-pg", LINKFLAGS="-pg") |         | 
|    233  |    234  | 
|    234 env = conf.Finish() |    235 env = conf.Finish() | 
|         |    236  | 
|         |    237  | 
|         |    238 # configure Python | 
|         |    239 pyenv = env.Clone() | 
|         |    240 have_python = True | 
|         |    241 if platform == 'win32': | 
|         |    242 	pythonver = '%c%c' % (sys.version[0], sys.version[2]) | 
|         |    243 	pythonlib = 'python'+pythonver | 
|         |    244 	pythonpath = [env['pythonpath'], | 
|         |    245 		'C:\\Program Files\\Python'+pythonver] | 
|         |    246 	pyenv.Append(CPPPATH=[s+'\\include' for s in pythonpath]) | 
|         |    247 	pyenv.Append(LIBPATH=[s+'\\libs' for s in pythonpath]) | 
|         |    248 	pyenv.Replace(SHLIBSUFFIX='.pyd') | 
|         |    249 	conf = Configure(pyenv, conf_dir=conf_dir, log_file=log_file, config_h=config_h) | 
|         |    250 	if not conf.CheckLib(pythonlib): | 
|         |    251 		have_python = False | 
|         |    252 	pyenv = conf.Finish() | 
|         |    253 else: | 
|         |    254 	try: | 
|         |    255 		pyenv.ParseConfig('python-config --includes --libs') | 
|         |    256 	except: | 
|         |    257 		have_python = False | 
|         |    258  | 
|         |    259 if not have_python: | 
|         |    260 	print "Error: Python is required." | 
|         |    261 	Exit(1) | 
|    235  |    262  | 
|    236 # configure SDL |    263 # configure SDL | 
|    237 sdlenv = env.Clone() |    264 sdlenv = env.Clone() | 
|    238 if cc != 'msvc': |    265 if cc == 'msvc': | 
|         |    266 	sdlenv.Append(LIBS=['SDL', 'SDLmain']) | 
|         |    267 	sdlenv.Append(LINKFLAGS="/SUBSYSTEM:WINDOWS") | 
|         |    268 else: | 
|    239 	try: |    269 	try: | 
|    240 		sdlenv.ParseConfig('sh sdl-config --cflags') |    270 		sdlenv.ParseConfig('sh sdl-config --cflags') | 
|    241 		sdlenv.ParseConfig('sh sdl-config --libs') |    271 		sdlenv.ParseConfig('sh sdl-config --libs') | 
|    242 	except: |    272 	except: | 
|    243 		pass |    273 		pass | 
|    244 else: |    274  | 
|    245 	sdlenv.Append(LIBS=['SDL', 'SDLmain']) |    275 def CheckSDL(context): | 
|    246  |    276 	global have_sdl | 
|    247 conf = Configure(sdlenv, conf_dir=conf_dir, log_file=log_file, config_h=config_h) |    277 	context.Message('Checking for SDL... ') | 
|    248 have_sdl = False |    278 	if context.TryLink("#include <SDL.h>\n"+ | 
|    249 if conf.CheckLib('SDL'): |    279 		"int main(int argc,char **argv){return 0;}", '.cc'): | 
|    250 	have_sdl = True |    280 		context.Result(1) | 
|    251 else: |    281 		return True | 
|    252 	print "SDL not found, some demos will not built." |    282 	else: | 
|         |    283 		context.Result("no (some demos won't be built)") | 
|         |    284 	return False | 
|         |    285  | 
|         |    286 conf = Configure(sdlenv, conf_dir=conf_dir, log_file=log_file, config_h=config_h, | 
|         |    287 	custom_tests = {'CheckSDL' : CheckSDL} ) | 
|         |    288 have_sdl = conf.CheckSDL() | 
|    253 sdlenv = conf.Finish() |    289 sdlenv = conf.Finish() | 
|    254  |    290  | 
|    255 if cc == 'msvc': |         | 
|    256 	sdlenv.Append(LINKFLAGS="/SUBSYSTEM:WINDOWS") |         | 
|    257  |    291  | 
|    258 ### build targets |    292 ### build targets | 
|    259  |    293  | 
|    260 Export('env sdlenv cc') |    294 Export('env pyenv sdlenv cc') | 
|    261 lib = SConscript('src/SConscript', build_dir='build/lib', duplicate=0, |    295 lib = SConscript('src/SConscript', build_dir='build/lib', duplicate=0, | 
|    262 	exports={'buildmodule':False}) |    296 	exports={'buildmodule':False}) | 
|    263 pymodule = SConscript('src/SConscript', build_dir='build/pymodule', duplicate=0, |    297 pymodule = SConscript('src/SConscript', build_dir='build/pymodule', duplicate=0, | 
|    264 	exports={'buildmodule':True}) |    298 	exports={'buildmodule':True}) | 
|    265  |    299  |