| import filecmp |
| import os |
| import subprocess |
| |
| Import('*') |
| |
| if env['platform'] == 'windows': |
| SConscript('getopt/SConscript') |
| |
| SConscript('util/SConscript') |
| SConscript('compiler/SConscript') |
| |
| if env['hostonly']: |
| # We are just compiling the things necessary on the host for cross |
| # compilation |
| Return() |
| |
| |
| def write_git_sha1_h_file(filename): |
| """Mesa looks for a git_sha1.h file at compile time in order to display |
| the current git hash id in the GL_VERSION string. This function tries |
| to retrieve the git hashid and write the header file. An empty file |
| will be created if anything goes wrong.""" |
| |
| args = [ 'git', 'rev-parse', '--short=10', 'HEAD' ] |
| try: |
| (commit, foo) = subprocess.Popen(args, stdout=subprocess.PIPE).communicate() |
| except: |
| print "Warning: exception in write_git_sha1_h_file()" |
| # git log command didn't work |
| if not os.path.exists(filename): |
| dirname = os.path.dirname(filename) |
| if dirname and not os.path.exists(dirname): |
| os.makedirs(dirname) |
| # create an empty file if none already exists |
| f = open(filename, "w") |
| f.close() |
| return |
| |
| # note that commit[:-1] removes the trailing newline character |
| commit = '#define MESA_GIT_SHA1 "git-%s"\n' % commit[:-1] |
| tempfile = "git_sha1.h.tmp" |
| f = open(tempfile, "w") |
| f.write(commit) |
| f.close() |
| if not os.path.exists(filename) or not filecmp.cmp(tempfile, filename): |
| # The filename does not exist or it's different from the new file, |
| # so replace old file with new. |
| if os.path.exists(filename): |
| os.remove(filename) |
| os.rename(tempfile, filename) |
| return |
| |
| |
| # Create the git_sha1.h header file |
| write_git_sha1_h_file("git_sha1.h") |
| # and update CPPPATH so the git_sha1.h header can be found |
| env.Append(CPPPATH = ["#" + env['build_dir']]) |
| |
| |
| |
| if env['platform'] != 'windows': |
| SConscript('loader/SConscript') |
| |
| # When env['gles'] is set, the targets defined in mapi/glapi/SConscript are not |
| # used. libgl-xlib and libgl-gdi adapt themselves to use the targets defined |
| # in mapi/glapi-shared/SConscript. mesa/SConscript also adapts itself to |
| # enable OpenGL ES support. |
| SConscript('mapi/glapi/gen/SConscript') |
| SConscript('mapi/glapi/SConscript') |
| |
| # Haiku C++ libGL dispatch (renderers depend on libgl) |
| if env['platform'] in ['haiku']: |
| SConscript('hgl/SConscript') |
| |
| SConscript('mesa/SConscript') |
| |
| if not env['embedded']: |
| if env['platform'] not in ('cygwin', 'darwin', 'freebsd', 'haiku', 'windows'): |
| SConscript('glx/SConscript') |
| if env['platform'] == 'haiku': |
| SConscript('egl/SConscript') |
| |
| if env['gles']: |
| SConscript('mapi/shared-glapi/SConscript') |
| |
| SConscript('gallium/SConscript') |
| |