summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/scons.mod1
-rw-r--r--doc/user/sconf.xml20
-rw-r--r--src/CHANGES.txt17
-rw-r--r--src/engine/SCons/Conftest.py16
-rw-r--r--src/engine/SCons/SConf.py9
-rw-r--r--src/engine/SCons/SConfTests.py18
6 files changed, 75 insertions, 6 deletions
diff --git a/doc/scons.mod b/doc/scons.mod
index 72dc7ff..8d64054 100644
--- a/doc/scons.mod
+++ b/doc/scons.mod
@@ -276,6 +276,7 @@
<!ENTITY CheckHeader "<function xmlns='http://www.scons.org/dbxsd/v1.0'>CheckHeader</function>">
<!ENTITY CheckLib "<function xmlns='http://www.scons.org/dbxsd/v1.0'>CheckLib</function>">
<!ENTITY CheckLibWithHeader "<function xmlns='http://www.scons.org/dbxsd/v1.0'>CheckLibWithHeader</function>">
+<!ENTITY CheckProg "<function xmlns='http://www.scons.org/dbxsd/v1.0'>CheckProg</function>">
<!ENTITY CheckType "<function xmlns='http://www.scons.org/dbxsd/v1.0'>CheckType</function>">
<!ENTITY CheckTypeSize "<function xmlns='http://www.scons.org/dbxsd/v1.0'>CheckTypeSize</function>">
<!ENTITY TryAction "<function xmlns='http://www.scons.org/dbxsd/v1.0'>TryAction</function>">
diff --git a/doc/user/sconf.xml b/doc/user/sconf.xml
index 569ab1a..fe933f1 100644
--- a/doc/user/sconf.xml
+++ b/doc/user/sconf.xml
@@ -304,6 +304,26 @@ scons: `.' is up to date.
</section>
<section>
+ <title>Checking for the Presence of a program</title>
+
+ <para>
+
+ Check for the presence of a program
+ by using the &CheckProg; method:
+
+ </para>
+
+ <sconstruct>
+env = Environment()
+conf = Configure(env)
+if not conf.CheckProg('foobar'):
+ print 'Unable to find the program foobar on the system'
+ Exit(1)
+env = conf.Finish()
+ </sconstruct>
+
+ </section>
+ <section>
<title>Adding Your Own Custom Checks</title>
<para>
diff --git a/src/CHANGES.txt b/src/CHANGES.txt
index bafd0d1..47a3f97 100644
--- a/src/CHANGES.txt
+++ b/src/CHANGES.txt
@@ -6,13 +6,21 @@
RELEASE VERSION/DATE TO BE FILLED IN LATER
- From Florian Miedniak:
- - Fixed tigris issue #3011: Glob() excludes didn't work when used with VariantDir(duplicate=0)
+ From Dirk Baechle:
+ - Fixed license of SVG titlepage files in the context of Debian
+ packaging, such that they allow for commercial use too (#2985).
From William Blevins:
- InstallVersionedLib now available in the DefaultEnvironment context.
- Improves orthogonality of use cases between different Install functions.
-
+
+ From Carnë Draug:
+ - Added new configure check, CheckProg, to check for
+ existence of a program.
+
+ From Florian Miedniak:
+ - Fixed tigris issue #3011: Glob() excludes didn't work when used with VariantDir(duplicate=0)
+
From William Roberts:
- Fix bug 2831 and allow Help() text to be appended to AddOption() help.
@@ -43,9 +51,6 @@ RELEASE VERSION/DATE TO BE FILLED IN LATER
- Library versioning is currently implemented for the following linker
tools: 'cyglink', 'gnulink', 'sunlink'.
- From Dirk Baechle:
- - Fixed license of SVG titlepage files in the context of Debian
- packaging, such that they allow for commercial use too (#2985).
RELEASE 2.4.0 - Mon, 21 Sep 2015 08:56:00 -0700
diff --git a/src/engine/SCons/Conftest.py b/src/engine/SCons/Conftest.py
index e9702ff..87a3022 100644
--- a/src/engine/SCons/Conftest.py
+++ b/src/engine/SCons/Conftest.py
@@ -684,6 +684,22 @@ return 0;
return ret
+def CheckProg(context, prog_name):
+ """
+ Configure check for a specific program.
+
+ Check whether program prog_name exists in path. If it is found,
+ returns the path for it, otherwise returns None.
+ """
+ context.Display("Checking whether %s program exists..." % prog_name)
+ path = context.env.WhereIs(prog_name)
+ if path:
+ context.Display(path + "\n")
+ else:
+ context.Display("no\n")
+ return path
+
+
#
# END OF PUBLIC FUNCTIONS
#
diff --git a/src/engine/SCons/SConf.py b/src/engine/SCons/SConf.py
index 8bce8ce..987b8ea 100644
--- a/src/engine/SCons/SConf.py
+++ b/src/engine/SCons/SConf.py
@@ -444,6 +444,7 @@ class SConfBase(object):
'CheckCXXHeader' : CheckCXXHeader,
'CheckLib' : CheckLib,
'CheckLibWithHeader' : CheckLibWithHeader,
+ 'CheckProg' : CheckProg,
}
self.AddTests(default_tests)
self.AddTests(custom_tests)
@@ -1047,6 +1048,14 @@ def CheckLibWithHeader(context, libs, header, language,
context.did_show_result = 1
return not res
+def CheckProg(context, prog_name):
+ """Simple check if a program exists in the path. Returns the path
+ for the application, or None if not found.
+ """
+ res = SCons.Conftest.CheckProg(context, prog_name)
+ context.did_show_result = 1
+ return res
+
# Local Variables:
# tab-width:4
# indent-tabs-mode:nil
diff --git a/src/engine/SCons/SConfTests.py b/src/engine/SCons/SConfTests.py
index 233ee78..57a9d04 100644
--- a/src/engine/SCons/SConfTests.py
+++ b/src/engine/SCons/SConfTests.py
@@ -611,6 +611,24 @@ int main() {
finally:
sconf.Finish()
+ def test_CheckProg(self):
+ """Test SConf.CheckProg()
+ """
+ self._resetSConfState()
+ sconf = self.SConf.SConf(self.scons_env,
+ conf_dir=self.test.workpath('config.tests'),
+ log_file=self.test.workpath('config.log'))
+
+ try:
+ r = sconf.CheckProg('sh')
+ assert r, "/bin/sh"
+ r = sconf.CheckProg('hopefully-not-a-program')
+ assert r is None
+
+ finally:
+ sconf.Finish()
+
+
def test_Define(self):
"""Test SConf.Define()
"""