diff options
author | Brian Paul <brianp@vmware.com> | 2009-02-10 16:34:51 -0700 |
---|---|---|
committer | Brian Paul <brianp@vmware.com> | 2009-02-10 16:34:51 -0700 |
commit | ee4c921b65fb76998711f3c40330505cbc49a0e0 (patch) | |
tree | b4c702af3d93a76e204a3aad012541d4fbcb2101 /scons | |
parent | 767b1acbb757186bde30973394f256ab7498a075 (diff) | |
parent | 14d808f8fdc41a26cea5264e47a24c903e54ce93 (diff) |
Merge commit 'origin/gallium-0.2' into gallium-master-merge
Diffstat (limited to 'scons')
-rw-r--r-- | scons/gallium.py | 23 | ||||
-rw-r--r-- | scons/generic.py | 24 |
2 files changed, 47 insertions, 0 deletions
diff --git a/scons/gallium.py b/scons/gallium.py index 065c53c54b..fc1ed08e47 100644 --- a/scons/gallium.py +++ b/scons/gallium.py @@ -163,6 +163,25 @@ def createInstallMethods(env): env.AddMethod(install_shared_library, 'InstallSharedLibrary') +def num_jobs(): + try: + return int(os.environ['NUMBER_OF_PROCESSORS']) + except (ValueError, KeyError): + pass + + try: + return os.sysconf('SC_NPROCESSORS_ONLN') + except (ValueError, OSError, AttributeError): + pass + + try: + return int(os.popen2("sysctl -n hw.ncpu")[1].read()) + except ValueError: + pass + + return 1 + + def generate(env): """Common environment generation code""" @@ -207,6 +226,10 @@ def generate(env): env.SConsignFile(os.path.join(build_dir, '.sconsign')) env.CacheDir('build/cache') + # Parallel build + if env.GetOption('num_jobs') <= 1: + env.SetOption('num_jobs', num_jobs()) + # C preprocessor options cppdefines = [] if debug: diff --git a/scons/generic.py b/scons/generic.py index 05f7356b76..2323196673 100644 --- a/scons/generic.py +++ b/scons/generic.py @@ -206,6 +206,25 @@ _bool_map = { } +def num_jobs(): + try: + return int(os.environ['NUMBER_OF_PROCESSORS']) + except (ValueError, KeyError): + pass + + try: + return os.sysconf('SC_NPROCESSORS_ONLN') + except (ValueError, OSError, AttributeError): + pass + + try: + return int(os.popen2("sysctl -n hw.ncpu")[1].read()) + except ValueError: + pass + + return 1 + + def generate(env): """Common environment generation code""" @@ -266,6 +285,10 @@ def generate(env): # different scons versions building the same source file env.SConsignFile(os.path.join(env['build'], '.sconsign')) + # Parallel build + if env.GetOption('num_jobs') <= 1: + env.SetOption('num_jobs', num_jobs()) + # Summary print print ' platform=%s' % env['platform'] @@ -274,6 +297,7 @@ def generate(env): print ' debug=%s' % ['no', 'yes'][env['debug']] print ' profile=%s' % ['no', 'yes'][env['profile']] print ' build=%s' % env['build'] + print ' %s jobs' % env.GetOption('num_jobs') print # Load tool chain |