summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/man/scons.112
-rw-r--r--src/CHANGES.txt4
-rw-r--r--src/engine/SCons/Script/SConscript.py9
-rw-r--r--test/Alias.py11
4 files changed, 33 insertions, 3 deletions
diff --git a/doc/man/scons.1 b/doc/man/scons.1
index 9f5d7f8..27dd9a7 100644
--- a/doc/man/scons.1
+++ b/doc/man/scons.1
@@ -1445,7 +1445,9 @@ which exists outside of any file system.
This Node object, or the alias name,
may be used as a dependency of any other target,
including another alias. Alias can be called multiple times for the same
-alias to add additional targets to the alias.
+alias to add additional targets to the alias. There is also an Alias
+global function for creating or referencing an alias independently of
+any construction environment.
.ES
env.Alias('install', ['/usr/local/bin', '/usr/local/lib'])
@@ -3008,6 +3010,14 @@ can be converted into an Action object
(see below).
.TP
+.RI Alias ( name )
+Creates or references an alias independent of the construction environment.
+
+.ES
+Alias('install')
+.EE
+
+.TP
.RI BuildDir( build_dir ", " src_dir ", [" duplicate ])
This specifies a build directory
.I build_dir
diff --git a/src/CHANGES.txt b/src/CHANGES.txt
index eb385e3..2f3ffbd 100644
--- a/src/CHANGES.txt
+++ b/src/CHANGES.txt
@@ -65,6 +65,10 @@ RELEASE 0.14 - XXX
- Add support for using Ghostscript to convert Postscript to PDF files.
+ From Anthony Roach:
+
+ - Add a standalone "Alias" function (separate from an Environment).
+
From Greg Spencer:
- Support the C preprocessor #import statement.
diff --git a/src/engine/SCons/Script/SConscript.py b/src/engine/SCons/Script/SConscript.py
index 7c20732..1c9d2b2 100644
--- a/src/engine/SCons/Script/SConscript.py
+++ b/src/engine/SCons/Script/SConscript.py
@@ -43,6 +43,7 @@ import SCons.Tool
import SCons.Util
import SCons.Options
import SCons
+import SCons.Node.Alias
import os
import os.path
@@ -461,6 +462,13 @@ def AddPostAction(files, action):
def Exit(value=0):
sys.exit(value)
+
+def Alias(name):
+ alias = SCons.Node.Alias.default_ans.lookup(name)
+ if alias is None:
+ alias = SCons.Node.Alias.default_ans.Alias(name)
+ return alias
+
def BuildDefaultGlobals():
"""
Create a dictionary containing all the default globals for
@@ -519,4 +527,5 @@ def BuildDefaultGlobals():
globals['TargetSignatures'] = TargetSignatures
globals['Tool'] = SCons.Tool.Tool
globals['WhereIs'] = SCons.Util.WhereIs
+ globals['Alias'] = Alias
return globals
diff --git a/test/Alias.py b/test/Alias.py
index 6608d72..ea94652 100644
--- a/test/Alias.py
+++ b/test/Alias.py
@@ -50,11 +50,18 @@ env.B(target = 'f2.out', source = 'f2.in')
env.B(target = 'f3.out', source = 'f3.in')
SConscript('sub1/SConscript', "env")
SConscript('sub2/SConscript', "env")
-env.Alias('foo', ['f2.out', 'sub1'])
-env.Alias('bar', ['sub2', 'f3.out'])
+
+foo = Alias('foo')
+foo2 = env.Alias('foo', ['f2.out', 'sub1'])
+assert foo == foo2
+bar = env.Alias('bar', ['sub2', 'f3.out'])
env.Alias('blat', ['sub2', 'f3.out'])
env.Alias('blat', ['f2.out', 'sub1'])
env.Depends('f1.out', 'bar')
+
+assert Alias('foo') == foo
+assert Alias('bar') == bar
+
""" % python)
test.write(['sub1', 'SConscript'], """