Brian Paul | ace3124 | 2016-06-15 10:42:34 -0600 | [diff] [blame] | 1 | import filecmp |
| 2 | import os |
| 3 | import subprocess |
José Fonseca | 33ceb67 | 2008-02-18 10:52:44 +0000 | [diff] [blame] | 4 | |
Brian Paul | ace3124 | 2016-06-15 10:42:34 -0600 | [diff] [blame] | 5 | Import('*') |
José Fonseca | 982609f | 2011-02-11 17:38:54 +0000 | [diff] [blame] | 6 | |
José Fonseca | 601498a | 2010-11-01 13:30:22 +0000 | [diff] [blame] | 7 | if env['platform'] == 'windows': |
José Fonseca | 6d670f6 | 2011-01-12 15:32:17 +0000 | [diff] [blame] | 8 | SConscript('getopt/SConscript') |
Chia-I Wu | 1e6c10f | 2010-05-31 11:47:58 +0800 | [diff] [blame] | 9 | |
Kenneth Graunke | 1e0da62 | 2014-02-24 23:39:14 -0800 | [diff] [blame] | 10 | SConscript('util/SConscript') |
Emil Velikov | 1a882fd | 2016-01-18 10:47:13 +0200 | [diff] [blame] | 11 | SConscript('compiler/SConscript') |
José Fonseca | 982609f | 2011-02-11 17:38:54 +0000 | [diff] [blame] | 12 | |
| 13 | if env['hostonly']: |
| 14 | # We are just compiling the things necessary on the host for cross |
| 15 | # compilation |
| 16 | Return() |
| 17 | |
Brian Paul | ace3124 | 2016-06-15 10:42:34 -0600 | [diff] [blame] | 18 | |
| 19 | def 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 |
| 56 | write_git_sha1_h_file("git_sha1.h") |
| 57 | # and update CPPPATH so the git_sha1.h header can be found |
| 58 | env.Append(CPPPATH = ["#" + env['build_dir']]) |
| 59 | |
| 60 | |
| 61 | |
Jose Fonseca | 47870d6 | 2015-03-24 20:26:21 +0000 | [diff] [blame] | 62 | if env['platform'] != 'windows': |
| 63 | SConscript('loader/SConscript') |
José Fonseca | 982609f | 2011-02-11 17:38:54 +0000 | [diff] [blame] | 64 | |
Chia-I Wu | bb770af | 2011-01-14 17:50:29 +0800 | [diff] [blame] | 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. |
Brian Paul | dff36e9 | 2012-05-30 10:08:11 -0600 | [diff] [blame] | 69 | SConscript('mapi/glapi/gen/SConscript') |
José Fonseca | 601498a | 2010-11-01 13:30:22 +0000 | [diff] [blame] | 70 | SConscript('mapi/glapi/SConscript') |
Alexander von Gluck IV | 61ef697 | 2013-12-31 15:39:49 -0600 | [diff] [blame] | 71 | |
| 72 | # Haiku C++ libGL dispatch (renderers depend on libgl) |
| 73 | if env['platform'] in ['haiku']: |
| 74 | SConscript('hgl/SConscript') |
| 75 | |
José Fonseca | 601498a | 2010-11-01 13:30:22 +0000 | [diff] [blame] | 76 | SConscript('mesa/SConscript') |
José Fonseca | 1ca2945 | 2010-08-13 13:53:04 +0100 | [diff] [blame] | 77 | |
Brian Paul | 88625e6 | 2011-09-16 10:11:52 -0600 | [diff] [blame] | 78 | if not env['embedded']: |
Vinson Lee | 5cf6932 | 2012-05-23 17:26:20 -0700 | [diff] [blame] | 79 | if env['platform'] not in ('cygwin', 'darwin', 'freebsd', 'haiku', 'windows'): |
José Fonseca | f8aeb1c | 2011-09-20 20:40:05 +0100 | [diff] [blame] | 80 | SConscript('glx/SConscript') |
Alexander von Gluck IV | 400b833 | 2014-12-22 10:10:13 -0500 | [diff] [blame] | 81 | if env['platform'] == 'haiku': |
Emil Velikov | e7e2918 | 2015-07-14 02:04:30 +0100 | [diff] [blame] | 82 | SConscript('egl/SConscript') |
Keith Whitwell | e3c6d41 | 2010-06-08 17:38:01 +0100 | [diff] [blame] | 83 | |
Chia-I Wu | bb770af | 2011-01-14 17:50:29 +0800 | [diff] [blame] | 84 | if env['gles']: |
| 85 | SConscript('mapi/shared-glapi/SConscript') |
| 86 | |
José Fonseca | 706eda3 | 2010-03-09 15:07:57 +0000 | [diff] [blame] | 87 | SConscript('gallium/SConscript') |
José Fonseca | 57d0001 | 2009-01-23 12:32:35 +0000 | [diff] [blame] | 88 | |