Mesa (gallium-0.2): scons: Use parallel builds by default.
Jose Fonseca
jrfonseca at kemper.freedesktop.org
Tue Feb 10 18:13:11 UTC 2009
Module: Mesa
Branch: gallium-0.2
Commit: 1e8177ee178b131afa86d874b062a8ae3fae0cca
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=1e8177ee178b131afa86d874b062a8ae3fae0cca
Author: José Fonseca <jfonseca at vmware.com>
Date: Tue Feb 10 18:11:56 2009 +0000
scons: Use parallel builds by default.
---
scons/gallium.py | 23 +++++++++++++++++++++++
scons/generic.py | 24 ++++++++++++++++++++++++
2 files changed, 47 insertions(+), 0 deletions(-)
diff --git a/scons/gallium.py b/scons/gallium.py
index 065c53c..fc1ed08 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 05f7356..2323196 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
More information about the mesa-commit
mailing list