1import filecmp 2import os 3import subprocess 4 5Import('*') 6 7if env['platform'] == 'windows': 8 SConscript('getopt/SConscript') 9 10SConscript('util/SConscript') 11SConscript('compiler/SConscript') 12 13if env['hostonly']: 14 # We are just compiling the things necessary on the host for cross 15 # compilation 16 Return() 17 18 19def write_git_sha1_h_file(filename): 20 """Mesa looks for a git_sha1.h file at compile time in order to display 21 the current git hash id in the GL_VERSION string. This function tries 22 to retrieve the git hashid and write the header file. An empty file 23 will be created if anything goes wrong.""" 24 25 args = [ 'git', 'rev-parse', '--short=10', 'HEAD' ] 26 try: 27 (commit, foo) = subprocess.Popen(args, stdout=subprocess.PIPE).communicate() 28 except: 29 print "Warning: exception in write_git_sha1_h_file()" 30 # git log command didn't work 31 if not os.path.exists(filename): 32 dirname = os.path.dirname(filename) 33 if dirname and not os.path.exists(dirname): 34 os.makedirs(dirname) 35 # create an empty file if none already exists 36 f = open(filename, "w") 37 f.close() 38 return 39 40 # note that commit[:-1] removes the trailing newline character 41 commit = '#define MESA_GIT_SHA1 "git-%s"\n' % commit[:-1] 42 tempfile = "git_sha1.h.tmp" 43 f = open(tempfile, "w") 44 f.write(commit) 45 f.close() 46 if not os.path.exists(filename) or not filecmp.cmp(tempfile, filename): 47 # The filename does not exist or it's different from the new file, 48 # so replace old file with new. 49 if os.path.exists(filename): 50 os.remove(filename) 51 os.rename(tempfile, filename) 52 return 53 54 55# Create the git_sha1.h header file 56write_git_sha1_h_file("git_sha1.h") 57# and update CPPPATH so the git_sha1.h header can be found 58env.Append(CPPPATH = ["#" + env['build_dir']]) 59 60 61 62if env['platform'] != 'windows': 63 SConscript('loader/SConscript') 64 65# When env['gles'] is set, the targets defined in mapi/glapi/SConscript are not 66# used. libgl-xlib and libgl-gdi adapt themselves to use the targets defined 67# in mapi/glapi-shared/SConscript. mesa/SConscript also adapts itself to 68# enable OpenGL ES support. 69SConscript('mapi/glapi/gen/SConscript') 70SConscript('mapi/glapi/SConscript') 71 72# Haiku C++ libGL dispatch (renderers depend on libgl) 73if env['platform'] in ['haiku']: 74 SConscript('hgl/SConscript') 75 76SConscript('mesa/SConscript') 77 78if not env['embedded']: 79 if env['platform'] not in ('cygwin', 'darwin', 'freebsd', 'haiku', 'windows'): 80 SConscript('glx/SConscript') 81 if env['platform'] == 'haiku': 82 SConscript('egl/SConscript') 83 84 if env['gles']: 85 SConscript('mapi/shared-glapi/SConscript') 86 87SConscript('gallium/SConscript') 88 89