1#! /usr/bin/env python 2import os 3 4CFLAGS = [] 5ARCH = [] 6 7def dude_we_think_so_different(): 8 try: return 'Darwin' == os.popen ('uname -s').read().strip() 9 except: return 0 10OSX = dude_we_think_so_different() 11if OSX: 12 OSX_LDFLAGS = "-bundle -undefined suppress -flat_namespace" 13 ARCH += ("-arch","i386","-arch","x86_64") 14 import ctypes as C 15 libc = C.CDLL("libc.dylib") 16 def osx_query(k): 17 size = C.c_uint(0) 18 libc.sysctlbyname(k,None,C.byref(size),None,0) 19 buf = C.create_string_buffer(size.value) 20 libc.sysctlbyname(k,buf,C.byref(size),None,0) 21 return buf.value 22 23def we_have_sse(): 24 if OSX: return osx_query("hw.optional.sse2") 25 try: return 'sse' in open ('/proc/cpuinfo').read().split() 26 except: return 0 27def we_have_ssse3(): 28 if OSX: return osx_query("hw.optional.sse3") 29 try: return 'ssse3' in open ('/proc/cpuinfo').read().split() 30 except: return 0 31 32def store(): 33 f = open ('defines.make', 'w') 34 f.write ("_CFLAGS=" + ' '.join (CFLAGS) + "\n") 35 f.write ("ARCH=" + ' '.join (ARCH) + "\n") 36 if OSX: 37 f.write ("_LDFLAGS=" + OSX_LDFLAGS + "\n") 38 f.write ("STRIP = echo\n") 39 os.system ("make clean") 40 41if __name__ == '__main__': 42 if we_have_sse(): CFLAGS += ('-msse', '-mfpmath=sse') 43 if we_have_ssse3(): CFLAGS += ('-msse3',) 44 store() 45