From 3c1250527d43864c309cbf0dd2f9356042124d21 Mon Sep 17 00:00:00 2001 From: Dirk Baechle Date: Sat, 4 May 2013 00:18:52 +0200 Subject: - switched all docs to SCons XSD --- bin/SConsDoc.py | 199 ++++++++++--------- bin/docs-update-generated.py | 4 +- bin/docs-validate.py | 10 +- bin/scons-proc.py | 2 +- doc/design/MANIFEST | 2 +- doc/design/acks.xml | 16 +- doc/design/bground.xml | 16 +- doc/design/copyright.xml | 14 +- doc/design/engine.xml | 20 +- doc/design/goals.xml | 16 +- doc/design/install.xml | 20 +- doc/design/intro.xml | 16 +- doc/design/issues.xml | 16 +- doc/design/main.xml | 110 ++--------- doc/design/native.xml | 16 +- doc/design/overview.xml | 16 +- doc/design/scons.mod | 429 ---------------------------------------- doc/design/summary.xml | 53 +++++ doc/developer/architecture.xml | 14 ++ doc/developer/branches.xml | 14 ++ doc/developer/copyright.xml | 12 ++ doc/developer/cycle.xml | 14 ++ doc/developer/main.xml | 68 ++----- doc/developer/packaging.xml | 14 ++ doc/developer/preface.xml | 14 ++ doc/developer/sourcetree.xml | 14 ++ doc/developer/testing.xml | 14 ++ doc/man/scons.xml | 318 ++++++++++++++--------------- doc/python10/MANIFEST | 3 +- doc/python10/abstract.xml | 37 ++++ doc/python10/acks.xml | 39 ++++ doc/python10/arch.eps | 134 ------------- doc/python10/arch.svg | 124 ++++++++++++ doc/python10/builder.eps | 325 ------------------------------ doc/python10/copyright.xml | 14 +- doc/python10/design.xml | 99 +++++----- doc/python10/future.xml | 39 ++++ doc/python10/install.xml | 39 ++++ doc/python10/intro.xml | 39 ++++ doc/python10/job-task.eps | 238 ---------------------- doc/python10/job-task.svg | 244 +++++++++++++++++++++++ doc/python10/main.xml | 85 ++------ doc/python10/node.eps | 351 -------------------------------- doc/python10/node.svg | 414 ++++++++++++++++++++++++++++++++++++++ doc/python10/process.xml | 39 ++++ doc/python10/scanner.eps | 168 ---------------- doc/python10/scanner.svg | 160 +++++++++++++++ doc/python10/scons.mod | 428 --------------------------------------- doc/python10/sig.eps | 147 -------------- doc/python10/sig.svg | 124 ++++++++++++ doc/python10/summary.xml | 52 +++++ doc/reference/Alias.xml | 16 +- doc/reference/CFile.xml | 16 +- doc/reference/CXXFile.xml | 16 +- doc/reference/Command.xml | 16 +- doc/reference/Install.xml | 16 +- doc/reference/InstallAs.xml | 16 +- doc/reference/Library.xml | 16 +- doc/reference/Object.xml | 16 +- doc/reference/PCH.xml | 16 +- doc/reference/PDF.xml | 16 +- doc/reference/PostScript.xml | 16 +- doc/reference/Program.xml | 16 +- doc/reference/RES.xml | 16 +- doc/reference/SharedLibrary.xml | 16 +- doc/reference/SharedObject.xml | 16 +- doc/reference/StaticLibrary.xml | 16 +- doc/reference/StaticObject.xml | 16 +- doc/reference/copyright.xml | 14 +- doc/reference/errors.xml | 16 +- doc/reference/main.xml | 189 +++++------------- doc/reference/preface.xml | 16 +- doc/scons.mod | 1 + doc/user/builders-built-in.xml | 2 +- 74 files changed, 2418 insertions(+), 2905 deletions(-) delete mode 100644 doc/design/scons.mod create mode 100644 doc/design/summary.xml delete mode 100644 doc/python10/arch.eps create mode 100644 doc/python10/arch.svg delete mode 100644 doc/python10/builder.eps delete mode 100644 doc/python10/job-task.eps create mode 100644 doc/python10/job-task.svg delete mode 100644 doc/python10/node.eps create mode 100644 doc/python10/node.svg delete mode 100644 doc/python10/scanner.eps create mode 100644 doc/python10/scanner.svg delete mode 100644 doc/python10/scons.mod delete mode 100644 doc/python10/sig.eps create mode 100644 doc/python10/sig.svg create mode 100644 doc/python10/summary.xml diff --git a/bin/SConsDoc.py b/bin/SConsDoc.py index c6d4785..7cd06f8 100644 --- a/bin/SConsDoc.py +++ b/bin/SConsDoc.py @@ -115,38 +115,43 @@ import sys # Do we have libxml2/libxslt/lxml? has_libxml2 = True -has_lxml = True try: import libxml2 import libxslt except: has_libxml2 = False -try: - import lxml -except: - has_lxml = False + try: + import lxml + except: + print("Failed to import either libxml2/libxslt or lxml") + sys.exit(1) -try: - from lxml import etree -except ImportError: - try: - # Python 2.5 - import xml.etree.cElementTree as etree - except ImportError: +has_etree = False +if not has_libxml2: try: - # Python 2.5 - import xml.etree.ElementTree as etree + from lxml import etree + has_etree = True + except ImportError: + pass +if not has_etree: + try: + # Python 2.5 + import xml.etree.cElementTree as etree except ImportError: - try: - # normal cElementTree install - import cElementTree as etree - except ImportError: try: - # normal ElementTree install - import elementtree.ElementTree as etree + # Python 2.5 + import xml.etree.ElementTree as etree except ImportError: - print("Failed to import ElementTree from any known place") - sys.exit(1) + try: + # normal cElementTree install + import cElementTree as etree + except ImportError: + try: + # normal ElementTree install + import elementtree.ElementTree as etree + except ImportError: + print("Failed to import ElementTree from any known place") + sys.exit(1) re_entity = re.compile("\&([^;]+);") re_entity_header = re.compile("") @@ -168,6 +173,21 @@ generated_comment = """ THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT. """ +def isSConsXml(fpath): + """ Check whether the given file is a SCons XML file, i.e. it + contains the default target namespace definition. + """ + try: + f = open(fpath,'r') + content = f.read() + f.close() + if content.find(dbxsd) >= 0: + return True + except: + pass + + return False + def xml_tree(root, comment=generated_comment): """ Return a XML file tree with the correct namespaces set, the element root as top entry and the given header comment. @@ -182,8 +202,6 @@ def xml_tree(root, comment=generated_comment): c = etree.Comment(comment) t.append(c) - # print etree.tostring(t, xml_declaration=True, encoding="UTF-8", pretty_print=True) - return t def remove_entities(content): @@ -196,75 +214,73 @@ def remove_entities(content): default_xsd = os.path.join('doc','xsd','scons.xsd') +ARG = "dbscons" + +class Libxml2ValidityHandler: + + def __init__(self): + self.errors = [] + self.warnings = [] + + def error(self, msg, data): + if data != ARG: + raise Exception, "Error handler did not receive correct argument" + self.errors.append(msg) + + def warning(self, msg, data): + if data != ARG: + raise Exception, "Warning handler did not receive correct argument" + self.warnings.append(msg) + def validate_xml(fpath, xmlschema_context): if not has_libxml2: - # At the moment we prefer libxml2 over lxml, the latter can lead - # to conflicts when installed together with libxml2. - if has_lxml: - # Use lxml - xmlschema = etree.XMLSchema(xmlschema_context) - doc = etree.parse(fpath) - try: - xmlschema.assertValid(doc) - except: - return False - return True - else: - # Try xmllint as a last fallback - try: - import subprocess - p = subprocess.Popen(['xmllint','--noout','--noent','--schema',default_xsd,fpath], - stdout=subprocess.PIPE, stderr=subprocess.PIPE) - sout, serr = p.communicate() - if serr and not 'validates' in serr: - print serr - return False - - return True - - except: - print "Can't validate %s! Neither lxml/libxml2, nor xmllint found." % fpath - return False - + # Use lxml + xmlschema = etree.XMLSchema(xmlschema_context) + doc = etree.parse(fpath) + doc.xinclude() + try: + xmlschema.assertValid(doc) + except Exception, e: + print e + print "%s fails to validate" % fpath + return False + return True + + # Create validation context + validation_context = xmlschema_context.schemaNewValidCtxt() + # Set error/warning handlers + eh = Libxml2ValidityHandler() + validation_context.setValidityErrorHandler(eh.error, eh.warning, ARG) # Read file and resolve entities doc = libxml2.readFile(fpath, None, libxml2.XML_PARSE_NOENT) - err = xmlschema_context.schemaValidateDoc(doc) + doc.xincludeProcessFlags(libxml2.XML_PARSE_NOENT) + err = validation_context.schemaValidateDoc(doc) # Cleanup doc.freeDoc() - - if err: - # TODO: print error message "Haha",err + del validation_context + + if err or eh.errors: + for e in eh.errors: + print e.rstrip("\n") + print "%s fails to validate" % fpath return False return True def prettyprint_xml(fpath): if not has_libxml2: - # At the moment we prefer libxml2 over lxml, the latter can lead - # to conflicts when installed together with libxml2. - if has_lxml: - # Use lxml - fin = open(fpath,'r') - tree = etree.parse(fin) - pretty_content = etree.tostring(tree, pretty_print=True) - fin.close() - - fout = open(fpath,'w') - fout.write(pretty_content) - fout.close() - else: - # Use xmllint as a last fallback - try: - import subprocess - p = subprocess.Popen(['xmllint', '-o', fpath, '--format', fpath], - stdout=subprocess.PIPE, stderr=subprocess.PIPE) - sout, serr = p.communicate() - except: - print "Can't prettyprint %s! Neither lxml/libxml2, nor xmllint found." % fpath - return False + # Use lxml + fin = open(fpath,'r') + tree = etree.parse(fin) + pretty_content = etree.tostring(tree, pretty_print=True) + fin.close() + + fout = open(fpath,'w') + fout.write(pretty_content) + fout.close() # Read file and resolve entities - doc = libxml2.readFile(fpath, None, libxml2.XML_PARSE_NOENT) + doc = libxml2.readFile(fpath, None, libxml2d.XML_PARSE_NOENT) err = xmlschema_context.schemaValidateDoc(doc) # Cleanup doc.freeDoc() @@ -272,27 +288,25 @@ def prettyprint_xml(fpath): perc="%" -def validate_all_xml(dpath='src', xsdfile=default_xsd): +def validate_all_xml(dpaths, xsdfile=default_xsd): xmlschema_context = None if not has_libxml2: - # At the moment we prefer libxml2 over lxml, the latter can lead - # to conflicts when installed together with libxml2. - if has_lxml: - # Use lxml - xmlschema_context = etree.parse(xsdfile) + # Use lxml + xmlschema_context = etree.parse(xsdfile) else: # Use libxml2 and prepare the schema validation context ctxt = libxml2.schemaNewParserCtxt(xsdfile) - schema = ctxt.schemaParse() + xmlschema_context = ctxt.schemaParse() del ctxt - xmlschema_context = schema.schemaNewValidCtxt() fpaths = [] - for path, dirs, files in os.walk(dpath): - for f in files: - if f.endswith('.xml'): - fp = os.path.join(path, f) - fpaths.append(fp) + for dp in dpaths: + for path, dirs, files in os.walk(dp): + for f in files: + if f.endswith('.xml'): + fp = os.path.join(path, f) + if isSConsXml(fp): + fpaths.append(fp) fails = [] for idx, fp in enumerate(fpaths): @@ -307,7 +321,6 @@ def validate_all_xml(dpath='src', xsdfile=default_xsd): if has_libxml2: # Cleanup del xmlschema_context - del schema if fails: return False diff --git a/bin/docs-update-generated.py b/bin/docs-update-generated.py index 2a78b9f..e689903 100644 --- a/bin/docs-update-generated.py +++ b/bin/docs-update-generated.py @@ -8,6 +8,7 @@ # import os +import SConsDoc # Directory where all generated files are stored gen_folder = 'doc/generated' @@ -28,7 +29,8 @@ def generate_all(): for f in files: if f.endswith('.xml'): fpath = os.path.join(path, f) - flist.append(fpath) + if SConsDoc.isSConsXml(fpath): + flist.append(fpath) if flist: # Does the destination folder exist diff --git a/bin/docs-validate.py b/bin/docs-validate.py index 2bc70a9..fc90ee7 100644 --- a/bin/docs-validate.py +++ b/bin/docs-validate.py @@ -8,10 +8,18 @@ # use different XML editors... # +import os import SConsDoc if __name__ == "__main__": - if SConsDoc.validate_all_xml(): + if SConsDoc.validate_all_xml(['src', + os.path.join('doc','design'), + os.path.join('doc','developer'), + os.path.join('doc','man'), + os.path.join('doc','python10'), + os.path.join('doc','reference'), + os.path.join('doc','user') + ]): print "OK" else: print "Validation failed! Please correct the errors above and try again." diff --git a/bin/scons-proc.py b/bin/scons-proc.py index e17a339..d6bc1a2 100644 --- a/bin/scons-proc.py +++ b/bin/scons-proc.py @@ -360,7 +360,7 @@ os.system('python bin/docs-correct-mod-paths.py') # Step 3: Validating all input files print "Validating files against SCons XSD..." -if SConsDoc.validate_all_xml(): +if SConsDoc.validate_all_xml(['src']): print "OK" else: print "Validation failed! Please correct the errors above and try again." diff --git a/doc/design/MANIFEST b/doc/design/MANIFEST index 33ab8f0..c477ad9 100644 --- a/doc/design/MANIFEST +++ b/doc/design/MANIFEST @@ -11,4 +11,4 @@ issues.xml main.xml native.xml overview.xml -scons.mod +summary.xml diff --git a/doc/design/acks.xml b/doc/design/acks.xml index b1a8a58..b613c7c 100644 --- a/doc/design/acks.xml +++ b/doc/design/acks.xml @@ -1,6 +1,18 @@ + + + %scons; +]> + + +Acknowledgements + + + + + + + diff --git a/doc/design/intro.xml b/doc/design/intro.xml index 561baa4..296cc67 100644 --- a/doc/design/intro.xml +++ b/doc/design/intro.xml @@ -1,6 +1,18 @@ + + + %scons; +]> + + +Introduction + + + diff --git a/doc/design/issues.xml b/doc/design/issues.xml index 1f9a78c..a65a853 100644 --- a/doc/design/issues.xml +++ b/doc/design/issues.xml @@ -1,6 +1,18 @@ + + + %scons; +]> + + +Other Issues + - %version; - --> - - - - - - %scons; - - - - - - - - - - - ]> - + SCons Design version &buildversion; @@ -80,79 +55,34 @@ Steven Knight - - ©right; - + version &buildversion; - - Introduction - &intro; - + - - Goals - &goals; - + - - Overview - &overview; - + - - Build Engine API - &engine; - + - - Native Python Interface - &native; - + - - Other Issues - &issues; - - - - Background - &bground; - - - - Summary - - - &SCons; offers a robust and feature-rich design for an SC-build - tool. With a Build Engine based on the proven design of - the &Cons; utility, it offers increased simplification of the - user interface for unsophisticated users with the addition - of the "do-the-right-thing" env.Make - method, increased flexibility for sophisticated users with the - addition of &Builder; and &Scanner; objects, a mechanism to - allow tool-masters (and users) to share working construction - environments, and embeddability to provide reliable dependency - management in a variety of environments and interfaces. - - - - - - Acknowledgements - &acks; - + + + + + + + diff --git a/doc/design/native.xml b/doc/design/native.xml index c665e0c..60be9dd 100644 --- a/doc/design/native.xml +++ b/doc/design/native.xml @@ -1,6 +1,18 @@ + + + %scons; +]> + + +Native Python Interface + + + diff --git a/doc/design/overview.xml b/doc/design/overview.xml index 266c9e8..72bf583 100644 --- a/doc/design/overview.xml +++ b/doc/design/overview.xml @@ -1,6 +1,18 @@ + + + %scons; +]> + + +Overview + - - - - - -Aegis"> -Ant"> -Autoconf"> -Automake"> -cc"> -Cons"> -cp"> -csh"> -gcc"> -Jam"> -jar"> -javac"> -javah"> -Make"> -Make++"> -Python"> -ranlib"> -rmic"> -SCons"> -scons"> -ScCons"> -tar"> -touch"> -zip"> - - - - -Action"> -ActionBase"> -CommandAction"> -FunctionAction"> -ListAction"> -Builder"> -BuilderBase"> -CompositeBuilder"> -MultiStepBuilder"> -Job"> -Jobs"> -Serial"> -Parallel"> -Node"> -Node.FS"> -Scanner"> -Sig"> -Signature"> -Taskmaster"> -TimeStamp"> -Walker"> -Wrapper"> - - - - - ---debug=explain"> ---implicit-cache"> ---implicit-deps-changed"> ---implicit-deps-unchanged"> --Q"> - - - -implicit_cache"> -implicit_deps_changed"> -implicit_deps_unchanged"> - - - - - -build"> -Makefile"> -Makefiles"> -SConscript"> -SConstruct"> -Sconstruct"> -sconstruct"> -.sconsign"> -src"> - - - - - -Add"> -AddOptions"> -Alias"> -Aliases"> -Append"> -BoolOption"> -Build"> -CacheDir"> -Clean"> -Clone"> -Command"> -Configure"> -Copy"> -Default"> -DefaultRules"> -Depends"> -Dir"> -Entry"> -EnumOption"> -Environment"> -Export"> -File"> -Finish"> -GenerateHelpText"> -Help"> -Ignore"> -Import"> -Install"> -InstallAs"> -Link"> -ListOption"> -Local"> -Module"> -NoClean"> -Objects"> -Options"> -PackageOption"> -PathOption"> -Precious"> -Prepend"> -Replace"> -Repository"> -Return"> -RuleSet"> -Salt"> -SetBuildSignatureType"> -SetContentSignatureType"> -SourceSignature"> -SourceSignatures"> -Split"> -TargetSignatures"> -Task"> - - -subst"> - - -Message"> -Result"> -CheckCHeader"> -CheckCXXHeader"> -CheckFunc"> -CheckHeader"> -CheckLib"> -CheckLibWithHeader"> -CheckType"> -TryAction"> -TryBuild"> -TryCompile"> -TryLink"> -TryRun"> - - -str"> -zipfile"> - - -Cache"> - - - - - -ARGUMENTS"> -BUILD_TARGETS"> -COMMAND_LINE_TARGETS"> -DEFAULT_TARGETS"> - - - - - -BUILDERMAP"> -BUILDERS"> -CC"> -CCFLAGS"> -CCCOM"> -COLOR"> -COLORS"> -CONFIG"> -CPPDEFINES"> -ENV"> -JAVACLASSDIR"> -LIBDIRPREFIX"> -LIBDIRSUFFIX"> -LIBLINKPREFIX"> -LIBLINKSUFFIX"> -LIBPATH"> -LIBS"> -LINK"> -LINKCOM"> -LINKFLAGS"> -RELEASE"> -RELEASE_BUILD"> -SCANNERMAP"> -SCANNERS"> -TARFLAGS"> -TARSUFFIX"> - - - - - -PATH"> -PYTHONPATH"> -SCONSFLAGS"> - - - - - -allowed_values"> -build_dir"> -map"> -ignorecase"> -options"> -exports"> -source"> -target"> - - - - - -all"> -none"> - - - - - -BuildDir"> -CFile"> -CXXFile"> -DVI"> -Jar"> -Java"> -JavaH"> -Library"> -Object"> -PCH"> -PDF"> -PostScript"> -Program"> -RES"> -RMIC"> -SharedLibrary"> -SharedObject"> -StaticLibrary"> -StaticObject"> -Tar"> -Zip"> - - -Make"> - - - - - -builder function"> -builder method"> - -Configure Contexts"> -configure context"> - -Construction Environment"> -Construction Environments"> -Construction environment"> -Construction environments"> -construction environment"> -construction environments"> - -Construction Variable"> -Construction Variables"> -Construction variable"> -Construction variables"> -construction variable"> -construction variables"> - -CPPPATH"> - -Dictionary"> - -Emitter"> -emitter"> -Generator"> -generator"> - -Nodes"> - -signature"> -build signature"> - -true"> -false"> - -typedef"> - - - -bar"> -common1.c"> -common2.c"> -custom.py"> -goodbye"> -goodbye.o"> -goodbye.obj"> -file.dll"> -file.in"> -file.lib"> -file.o"> -file.obj"> -file.out"> -foo"> -foo.o"> -foo.obj"> -hello"> -hello.c"> -hello.exe"> -hello.h"> -hello.o"> -hello.obj"> -libfile_a"> -libfile_so"> -new_hello"> -new_hello.exe"> -prog"> -prog1"> -prog2"> -prog.c"> -prog.exe"> -stdio.h"> - - - -+"> -#"> - - - -announce@scons.tigris.org"> -dev@scons.tigris.org"> -users@scons.tigris.org"> diff --git a/doc/design/summary.xml b/doc/design/summary.xml new file mode 100644 index 0000000..36e1a90 --- /dev/null +++ b/doc/design/summary.xml @@ -0,0 +1,53 @@ + + + %scons; +]> + + +Summary + + + + + + &SCons; offers a robust and feature-rich design for an SC-build + tool. With a Build Engine based on the proven design of + the &Cons; utility, it offers increased simplification of the + user interface for unsophisticated users with the addition + of the "do-the-right-thing" env.Make + method, increased flexibility for sophisticated users with the + addition of &Builder; and &Scanner; objects, a mechanism to + allow tool-masters (and users) to share working construction + environments, and embeddability to provide reliable dependency + management in a variety of environments and interfaces. + + + + diff --git a/doc/developer/architecture.xml b/doc/developer/architecture.xml index 0fc357f..22caadf 100644 --- a/doc/developer/architecture.xml +++ b/doc/developer/architecture.xml @@ -1,3 +1,15 @@ + + + %scons; +]> + + +Architecture + - %version; @@ -35,18 +33,11 @@ %scons; - - - - - - - - - ]> - + SCons Developer's Guide &buildversion; @@ -64,47 +55,24 @@ Steven Knight - - ©right; - + version &buildversion; - - Preface - &preface; - - - - Development Cycle - &cycle; - - - - Source Tree - &sourcetree; - - - - Testing - &testing; - - - - Branches - &branches; - - - - Packaging - &packaging; - - - - Architecture - &architecture; - + + + + + + + + + + + + + diff --git a/doc/developer/packaging.xml b/doc/developer/packaging.xml index 3860ee7..cfea6dc 100644 --- a/doc/developer/packaging.xml +++ b/doc/developer/packaging.xml @@ -1,3 +1,15 @@ + + + %scons; +]> + + +Packaging + + The status messages (everything except the line that reads "cp foo.in foo.out") @@ -184,7 +184,7 @@ from your external environment as follows: import os env = Environment(ENV = {'PATH' : os.environ['PATH']}) - + Similarly, if the commands use external environment variables like $PATH, $HOME, $JAVA_HOME, $LANG, $SHELL, $TERM, etc., @@ -194,7 +194,7 @@ these variables can also be explicitly propagated: import os env = Environment(ENV = {'PATH' : os.environ['PATH'], 'HOME' : os.environ['HOME']}) - + Or you may explicitly propagate the invoking user's complete external environment: @@ -202,7 +202,7 @@ complete external environment: import os env = Environment(ENV = os.environ) - + This comes at the expense of making your build dependent on the user's environment being set correctly, @@ -233,7 +233,7 @@ the target file or files to be built. scons - + will build all target files in or below the current directory. Explicit default targets @@ -253,7 +253,7 @@ as a command-line target: scons . - + Building all target files, including any files outside of the current directory, @@ -262,21 +262,21 @@ of the root directory (on POSIX systems): scons / - + or the path name(s) of the volume(s) in which all the targets should be built (on Windows systems): scons C:\ D:\ - + To build only specific targets, supply them as command-line arguments: scons foo bar - + in which case only the specified targets will be built (along with any derived files on which they depend). @@ -289,13 +289,13 @@ necessary to build the specified target: scons -c . - + to remove all target files, or: scons -c build export - + to remove target files under build and export. Additional files or directories to remove can be specified using the @@ -316,7 +316,7 @@ built: scons src/subdir - + or by changing directory and invoking scons with the @@ -329,7 +329,7 @@ targets relatively to the current subdirectory: cd src/subdir scons -u . - + scons supports building multiple targets in parallel via a @@ -339,7 +339,7 @@ of simultaneous tasks that may be spawned: scons -j 4 - + builds four targets in parallel, for example. @@ -366,7 +366,7 @@ may be specified on the command line: scons debug=1 . - + These variables are available in SConscript files through the ARGUMENTS dictionary, @@ -378,7 +378,7 @@ if ARGUMENTS.get('debug', 0): env = Environment(CCFLAGS = '-g') else: env = Environment() - + The command-line variable arguments are also available in the ARGLIST list, @@ -709,7 +709,7 @@ of a given derived file: $ scons --debug=includes foo.o - + @@ -783,7 +783,7 @@ $ scons --debug=presub Building myprog.o with action(s): $SHCC $SHCFLAGS $SHCCFLAGS $CPPFLAGS $_CPPINCFLAGS -c -o $TARGET $SOURCES ... - + @@ -1077,7 +1077,7 @@ command: -s, --silent, --quiet --taskmastertrace=FILE --tree=OPTIONS - + @@ -1180,7 +1180,7 @@ scons: Reading SConscript files ... scons: done reading SConscript files. scons>>> build -n prog scons>>> exit - + @@ -1436,7 +1436,7 @@ the last dir examined comes first in the resulting path. %APPDATA%/scons/site_scons %HOME%/.scons/site_scons ./site_scons - + @@ -1449,7 +1449,7 @@ the last dir examined comes first in the resulting path. $HOME/Library/Application Support/SCons/site_scons $HOME/.scons/site_scons ./site_scons - + @@ -1460,7 +1460,7 @@ the last dir examined comes first in the resulting path. /usr/share/scons/site_scons $HOME/.scons/site_scons ./site_scons - + @@ -1470,7 +1470,7 @@ the last dir examined comes first in the resulting path. /usr/share/scons/site_scons $HOME/.scons/site_scons ./site_scons - + @@ -1587,7 +1587,7 @@ scons --tree=derived,status # Prints all dependencies of target, with status information # and pruning dependencies of already-visited Nodes: scons --tree=all,prune,status target - + @@ -1940,7 +1940,7 @@ function: env = Environment() - + Variables, called construction @@ -1952,7 +1952,7 @@ or by assigning them a value after the object is created: env = Environment(FOO = 'foo') env['BAR'] = 'bar' - + As a convenience, construction variables may also be set or modified by the @@ -1967,7 +1967,7 @@ or if the flags are distributed to a number of construction variables. env = Environment(parse_flags = '-Iinclude -DEBUG -lm') - + This example adds 'include' to CPPPATH, @@ -1989,7 +1989,7 @@ env = Environment(platform = 'cygwin') env = Environment(platform = 'os2') env = Environment(platform = 'posix') env = Environment(platform = 'win32') - + Specifying a platform initializes the appropriate construction variables in the environment @@ -2023,7 +2023,7 @@ def my_platform(env): env['VAR'] = 'xyzzy' env = Environment(platform = my_platform) - + Additionally, a specific set of tools with which to initialize the environment @@ -2031,13 +2031,13 @@ may be specified as an optional keyword argument: env = Environment(tools = ['msvc', 'lex']) - + Non-built-in tools may be specified using the toolpath argument: env = Environment(tools = ['default', 'foo'], toolpath = ['tools']) - + This looks for a tool specification in tools/foo.py (as well as using the ordinary default tools for the platform). foo.py should @@ -2070,7 +2070,7 @@ methods: base = Environment(toolpath=['custom_path']) derived = base.Clone(tools=['custom_tool']) derived.CustomBuilder() - + The elements of the tools list may also be functions or callable objects, @@ -2083,7 +2083,7 @@ def my_tool(env): env['XYZZY'] = 'xyzzy' env = Environment(tools = [my_tool]) - + The individual elements of the tools list may also themselves be two-element lists of the form @@ -2113,7 +2113,7 @@ def exists(env): # in SConstruct: env = Environment(tools = ['default', ('my_tool', {'arg1': 'abc'})], toolpath=['tools']) - + The tool definition (i.e. my_tool()) can use the PLATFORM variable from the environment it receives to customize the tool for different platforms. @@ -2212,7 +2212,7 @@ env.Program(source = ['bar.c', 'foo.c'], target = 'bar') env.Program(target = 'bar', Split('bar.c foo.c')) env.Program(target = 'bar', env.Split('bar.c foo.c')) env.Program('bar', source = 'bar.c foo.c'.split()) - + Target and source file names that are not absolute path names @@ -2264,7 +2264,7 @@ env.Program('#/bar', 'bar.c') # Builds the program "other/foo" (relative to the top-level # SConstruct directory) from "subdir/foo.c": env.Program('#other/foo', 'foo.c') - + When the target shares the same base name as the source and only the suffix varies, @@ -2288,7 +2288,7 @@ env.Program(target = 'bar', source = 'bar.c') env.Program('bar', source = 'bar.c') env.Program(source = 'bar.c') env.Program('bar.c') - + As a convenience, a srcdir @@ -2310,7 +2310,7 @@ and env.Program('build/prog', ['f1.c', 'f2.c'], srcdir='src') - + It is possible to override or add construction variables when calling a builder method by passing additional keyword arguments. @@ -2321,7 +2321,7 @@ libraries for just one program: env.Program('hello', 'hello.c', LIBS=['gl', 'glut']) - + or generate a shared library with a non-standard suffix: @@ -2329,7 +2329,7 @@ env.Program('hello', 'hello.c', LIBS=['gl', 'glut']) env.SharedLibrary('word', 'word.cpp', SHLIBSUFFIX='.ocx', LIBSUFFIXES=['.ocx']) - + (Note that both the $SHLIBSUFFIX and $LIBSUFFIXES variables must be set if you want SCons to search automatically @@ -2342,7 +2342,7 @@ keyword argument in an override: env = Program('hello', 'hello.c', parse_flags = '-Iinclude -DEBUG -lm') - + This example adds 'include' to CPPPATH, @@ -2360,7 +2360,7 @@ they may also be called without an explicit environment: Program('hello', 'hello.c') SharedLibrary('word', 'word.cpp') - + In this case, the methods are called internally using a default construction @@ -2375,7 +2375,7 @@ to the Python module: from SCons.Script import * - + All builder methods return a list-like object containing Nodes that @@ -2398,7 +2398,7 @@ flag when compiling one specific object file: bar_obj_list = env.StaticObject('bar.c', CPPDEFINES='-DBAR') env.Program(source = ['foo.c', bar_obj_list, 'main.c']) - + Using a Node in this way makes for a more portable build @@ -2421,7 +2421,7 @@ bar = Object('bar.c') objects = ['begin.o'] + foo + ['middle.o'] + bar + ['end.o'] for object in objects: print str(object) - + Or you can use the Flatten() @@ -2435,7 +2435,7 @@ bar = Object('bar.c') objects = Flatten(['begin.o', foo, 'middle.o', bar, 'end.o']) for object in objects: print str(object) - + Note also that because Builder calls return a list-like object, not an actual Python list, @@ -2469,7 +2469,7 @@ object_files = [] # Instead, use the .extend() method: object_files.extend(Object('bar.c')) - + The path name for a Node's file may be used by passing the Node to the Python-builtin @@ -2479,7 +2479,7 @@ function: bar_obj_list = env.StaticObject('bar.c', CPPDEFINES='-DBAR') print "The path to bar_obj is:", str(bar_obj_list[0]) - + Note again that because the Builder call returns a list, we have to access the first element in the list @@ -2518,7 +2518,7 @@ env.Command('sub/dir/foo.out', 'sub/dir/foo.in', env.Command('sub/dir/foo.out', 'sub/dir/foo.in', "cp foo.in foo.out", chdir=1) - + Note that scons will not @@ -2649,12 +2649,12 @@ if you call something as a global function it looks like: Function(arguments) - + and if you call something through a construction environment it looks like: env.Function(arguments) - + If you can call the functionality in both ways, then both forms are listed. @@ -2664,7 +2664,7 @@ to the Python module: from SCons.Script import * - + Except where otherwise noted, the same-named @@ -2682,7 +2682,7 @@ For example: env = Environment(FOO = 'foo') Default('$FOO') env.Default('$FOO') - + In the above example, the first call to the global @@ -2750,7 +2750,7 @@ to the Python module: from SCons.Script import * - + @@ -2785,7 +2785,7 @@ third_tuple = ARGLIST[2] print "third keyword, value =", third_tuple[0], third_tuple[1] for key, value in ARGLIST: # process key and value - + @@ -2812,7 +2812,7 @@ if ARGUMENTS.get('debug', 0): env = Environment(CCFLAGS = '-g') else: env = Environment() - + @@ -2853,7 +2853,7 @@ if 'foo' in BUILD_TARGETS: print "Don't forget to test the `foo' program!" if 'special/program' in BUILD_TARGETS: SConscript('special') - + @@ -2891,7 +2891,7 @@ if 'foo' in COMMAND_LINE_TARGETS: print "Don't forget to test the `foo' program!" if 'special/program' in COMMAND_LINE_TARGETS: SConscript('special') - + @@ -2915,7 +2915,7 @@ function to get at the path name for each Node. print str(DEFAULT_TARGETS[0]) if 'foo' in map(str, DEFAULT_TARGETS): print "Don't forget to test the `foo' program!" - + @@ -2934,7 +2934,7 @@ Default('bar') print map(str, DEFAULT_TARGETS) # now a node ['foo', 'bar'] Default(None) print map(str, DEFAULT_TARGETS) # back to [] - + Consequently, be sure to use DEFAULT_TARGETS @@ -3016,20 +3016,20 @@ method of the construction environment: dict = env.Dictionary() dict["CC"] = "cc" - + or using the [] operator: env["CC"] = "cc" - + Construction variables can also be passed to the construction environment constructor: env = Environment(CC="cc") - + or when copying a construction environment using the Clone @@ -3037,7 +3037,7 @@ method: env2 = env.Clone(CC="cl.exe") - + @@ -3275,7 +3275,7 @@ the default is: extern "C" #endif char function_name(); - + The optional language argument should be @@ -3395,7 +3395,7 @@ the default is "C". Example: sconf.CheckType('foo_type', '#include "my_types.h"', 'C++') - + @@ -3469,7 +3469,7 @@ if conf.CheckLibWithHeader( 'qt', 'qapp.h', 'c++', # do stuff for qt - usage, e.g. conf.env.Append( CPPFLAGS = '-DWITH_QT' ) env = conf.Finish() - + @@ -3508,7 +3508,7 @@ For example, will return success only if short is two bytes. - + @@ -3566,7 +3566,7 @@ conf.Define('A_SYMBOL') # Puts the following line in the config header file: # #define A_SYMBOL 1 conf.Define('A_SYMBOL', 1) - + Be careful about quoting string values, though: @@ -3582,7 +3582,7 @@ conf.Define('A_SYMBOL', "YA") # Puts the following line in the config header file: # #define A_SYMBOL "YA" conf.Define('A_SYMBOL', '"YA"') - + For comment: @@ -3595,7 +3595,7 @@ conf = Configure( env ) # /* Set to 1 if you have a symbol */ # #define A_SYMBOL 1 conf.Define('A_SYMBOL', 1, 'Set to 1 if you have a symbol') - + You can define your own custom checks. in addition to the predefined checks. @@ -3755,7 +3755,7 @@ if not conf.CheckQt('/usr/lib/qt'): print 'We really need qt!' Exit(1) env = conf.Finish() - + @@ -3773,7 +3773,7 @@ object to support overriding construction variables on the command line: $ scons VARIABLE=foo - + The variable values can also be specified in a text-based SConscript file. To create a Variables object, call the Variables() function: @@ -3804,7 +3804,7 @@ Example: vars = Variables('custom.py') vars = Variables('overrides.py', ARGUMENTS) vars = Variables(None, {FOO:'expansion', BAR:7}) - + Variables objects have the following methods: @@ -3852,7 +3852,7 @@ def validate_color(key, val, env): if not val in ['red', 'blue', 'yellow']: raise Exception("Invalid color value '%s'" % val) vars.Add('COLOR', validator=valid_color) - + @@ -3876,7 +3876,7 @@ opt.AddVariables( ('VALIDATE', 'An option for testing validation', 'notset', validator, None), ) - + @@ -3900,7 +3900,7 @@ the Environment() function: env = Environment(variables=vars) - + @@ -3916,7 +3916,7 @@ are added to the construction environment. CC = 'my_cc' - + @@ -3933,7 +3933,7 @@ not configured. env = Environment(variables=vars) for key, value in vars.UnknownVariables(): print "unknown variable: %s=%s" % (key, value) - + @@ -3952,7 +3952,7 @@ vars = Variables(['variables.cache', 'custom.py']) vars.Add(...) vars.Update(env) vars.Save('variables.cache', env) - + @@ -3982,7 +3982,7 @@ function). Help(vars.GenerateHelpText(env)) Help(vars.GenerateHelpText(env, sort=cmp)) - + @@ -4011,7 +4011,7 @@ def my_format(env, opt, help, default, actual): fmt = "\n%s: default=%s actual=%s (%s)\n" return fmt % (opt, default. actual, help) vars.FormatVariableHelpText = my_format - + To make it more convenient to work with customizable Variables, scons @@ -4265,7 +4265,7 @@ vars.AddVariables( PathVariable.PathIsDir), ) - + @@ -4338,7 +4338,7 @@ File('foo.c').srcnode().path # source path of the given source file. # Builders also return File objects: foo = env.Program('foo.c') print "foo will be built in %s"%foo.path - + A Dir @@ -4449,7 +4449,7 @@ docs = Dir('docs') html = docs.Dir('html') index = html.File('index.html') css = index.File('app.css') - + @@ -4558,7 +4558,7 @@ b = Builder("build_it < $SOURCE > $TARGET", b = Builder("build_it < $SOURCE > $TARGET", suffix = { None: "file-", "$SRC_SFX_A": gen_prefix }) - + @@ -4585,7 +4585,7 @@ b = Builder("build_it < $SOURCE > $TARGET", b = Builder("build_it < $SOURCE > $TARGET", suffix = { None: ".sfx1", "$SRC_SFX_A": gen_suffix }) - + @@ -4616,7 +4616,7 @@ env.B1('foo.txt', 'foo.in') # Builds "bar.txt.out" because ensure_suffix is set. env.B2('bar.txt', 'bar.in') - + @@ -4696,7 +4696,7 @@ MakeDirectoryBuilder = Builder(action=my_mkdir, target_factory=Dir) env = Environment() env.Append(BUILDERS = {'MakeDirectory':MakeDirectoryBuilder}) env.MakeDirectory('new_directory', []) - + Note that the call to the MakeDirectory Builder @@ -4733,7 +4733,7 @@ CollectBuilder = Builder(action=my_mkdir, source_factory=Entry) env = Environment() env.Append(BUILDERS = {'Collect':CollectBuilder}) env.Collect('archive', ['directory_name', 'file_name']) - + @@ -4800,7 +4800,7 @@ def e_suf2(target, source, env): b = Builder("my_build < $TARGET > $SOURCE", emitter = {'.suf1' : e_suf1, '.suf2' : e_suf2}) - + @@ -4860,7 +4860,7 @@ def g(source, target, env, for_signature): return [["gcc", "-c", "-o"] + target + source] b = Builder(generator=g) - + The @@ -4941,7 +4941,7 @@ b = Builder(action={'.in' : 'build $SOURCES > $TARGET'}, env = Environment(BUILDERS = {'MyBuild':b}) env.MyBuild('foo.out', ['foo.in', 'foo.extra']) - + @@ -4960,7 +4960,7 @@ used to call the Builder for the target file.) b = Builder(action="build < $SOURCE > $TARGET") env = Environment(BUILDERS = {'MyBuild' : b}) env.MyBuild('foo.out', 'foo.in', my_arg = 'xyzzy') - + @@ -5012,7 +5012,7 @@ b = Builder(action="build < ${SOURCE.file} > ${TARGET.file}", chdir=1) env = Environment(BUILDERS = {'MyBuild' : b}) env.MyBuild('sub/dir/foo.out', 'sub/dir/foo.in') - + WARNING: Python only keeps one current directory @@ -5119,7 +5119,7 @@ Action('@build $TARGET $SOURCES') # Ignores return value Action('-build $TARGET $SOURCES') - + @@ -5150,7 +5150,7 @@ a command in a list within a list: Action([['cc', '-c', '-DWHITE SPACE', '-o', '$TARGET', '$SOURCES']]) - + @@ -5181,7 +5181,7 @@ via the built-in Python str() function: target_file_name = str(target) source_file_names = map(lambda x: str(x), source) - + The function should return 0 @@ -5198,7 +5198,7 @@ def build_it(target = None, source = None, env = None): return 0 a = Action(build_it) - + If the action argument is not one of the above, None is returned. @@ -5266,7 +5266,7 @@ s = Action(build_it, cmdstr="building '$TARGET' from '$SOURCE'") # You can provide a configurable variable. l = Action(build_it, '$STRINGIT') - + The third and succeeding arguments, if present, may either be a construction variable or a list of construction variables @@ -5294,7 +5294,7 @@ a = Action(build_it, '$STRINGIT', ['XXX']) # Alternatively, use a keyword argument. a = Action(build_it, varlist=['XXX']) - + The Action() @@ -5350,7 +5350,7 @@ targets and source. a = Action("build < ${SOURCE.file} > ${TARGET.file}", chdir=1) - + exitstatfunc @@ -5379,7 +5379,7 @@ def always_succeed(s): return 0 a = Action("build < ${SOURCE.file} > ${TARGET.file}", exitstatfunc=always_succeed) - + batch_key @@ -5415,7 +5415,7 @@ have actually changed since their targets were built. a = Action('build $CHANGED_SOURCES', batch_key=True) - + The batch_key @@ -5499,7 +5499,7 @@ def batch_key(action, env, target, source): return None return (id(action), id(env), tdir) a = Action('build $CHANGED_SOURCES', batch_key=batch_key) - + @@ -5545,7 +5545,7 @@ you can use the global function to do so: Execute(Touch('file')) - + Second, you can use these functions @@ -5567,7 +5567,7 @@ env.Command('foo.out', 'foo.in', Copy('$TMPBUILD', '${SOURCE.dir}'), "cd $TMPBUILD && make", Delete('$TMPBUILD')]) - + @@ -5586,7 +5586,7 @@ Execute(Chmod('file', 0755)) env.Command('foo.out', 'foo.in', [Copy('$TARGET', '$SOURCE'), Chmod('$TARGET', 0755)]) - + @@ -5606,7 +5606,7 @@ Execute(Copy('foo.output', 'foo.input')) env.Command('bar.out', 'bar.in', Copy('$TARGET', '$SOURCE')) - + @@ -5639,7 +5639,7 @@ env.Command('foo.out', 'foo.in', MyBuildAction]) Execute(Delete('file_that_must_exist', must_exist=1)) - + @@ -5660,7 +5660,7 @@ env.Command('foo.out', 'foo.in', Copy('/tmp/builddir/foo.in', '$SOURCE'), "cd /tmp/builddir && make", Copy('$TARGET', '/tmp/builddir/foo.out')]) - + @@ -5682,7 +5682,7 @@ Execute(Move('file.destination', 'file.source')) env.Command('output_file', 'input_file', [MyBuildAction, Move('$TARGET', 'file_created_by_MyBuildAction')]) - + @@ -5701,7 +5701,7 @@ Execute(Touch('file_to_be_touched')) env.Command('marker', 'input_file', [MyBuildAction, Touch('$TARGET')]) - + @@ -5799,13 +5799,13 @@ sources=['foo.c', 'bar.c']: action='$CC -c -o $TARGET $SOURCES' - + would produce the command line: cc -c -o foo foo.c bar.c - + Variable names may be surrounded by curly braces ({}) to separate the name from the trailing characters. @@ -5816,13 +5816,13 @@ In the previous example, the string: ${SOURCES[1]} - + would produce: bar.c - + Additionally, a variable name may have the following special @@ -5955,7 +5955,7 @@ Repository('/usr/repository') $SOURCE => sub/dir/file.x ${SOURCE.rsrcpath} => /usr/repository/src/file.x ${SOURCE.rsrcdir} => /usr/repository/src - + Note that curly braces braces may also be used to enclose arbitrary Python code to be evaluated. @@ -5992,7 +5992,7 @@ def foo(target, source, env, for_signature): # Will expand $BAR to "bar baz" env=Environment(FOO=foo, BAR="$FOO baz") - + You can use this feature to pass arguments to a Python function by creating a callable class @@ -6017,7 +6017,7 @@ class foo(object): # Will expand $BAR to "my argument bar baz" env=Environment(FOO=foo, BAR="${FOO('my argument')} baz") - + The special pseudo-variables @@ -6045,21 +6045,21 @@ For example, the command line: echo Last build occurred $( $TODAY $). > $TARGET - + would execute the command: echo Last build occurred $TODAY. > $TARGET - + but the command signature added to any target files would be: echo Last build occurred . > $TARGET - + @@ -6074,15 +6074,15 @@ So in the following case: env['COND'] = 0 env.Command('foo.out', 'foo.in', - + the command executed will be either echo FOO > foo.out - + or echo BAR > foo.out - + according to the current value of env['COND'] when the command is executed. The evaluation occurs when the target is being built, not when the SConscript is being read. So if env['COND'] is changed @@ -6103,7 +6103,7 @@ env.Command('foo.out', 'foo.in', # Will execute this: # echo foo1 foo2 > foo.out - + SCons uses the following rules when converting construction variables into command lines: @@ -6377,7 +6377,7 @@ XYZScanner = Scanner(xyz_scan) SourceFileScanner.add_scanner('.xyz', XYZScanner) env.Program('my_prog', ['file1.c', 'file2.f', 'file3.xyz']) - + @@ -6480,7 +6480,7 @@ around the assignments: scons "FOO=BAR" "BAZ=BLEH" - + Second, the Cygwin shell does not recognize this file as being the same @@ -6510,7 +6510,7 @@ then you must explictly tell SCons to use MinGW by passing tools=['mingw'] - + to the Environment() function, because SCons will prefer the MSVC tools over the MinGW tools. @@ -6528,7 +6528,7 @@ this section contains a brief overview of some common tasks. env = Environment() env.Program(target = 'foo', source = 'foo.c') - + Note: Build the file by specifying the target as an argument @@ -6542,7 +6542,7 @@ or by specifying a dot ("scons ."). env = Environment() env.Program(target = 'foo', source = Split('f1.c f2.c f3.c')) - + @@ -6551,7 +6551,7 @@ env.Program(target = 'foo', source = Split('f1.c f2.c f3.c')) env = Environment(CCFLAGS = '-g') env.Program(target = 'foo', source = 'foo.c') - + @@ -6565,7 +6565,7 @@ SCons will construct the right -I options from CPPPATH. env = Environment(CPPPATH = ['.']) env.Program(target = 'foo', source = 'foo.c') - + @@ -6574,7 +6574,7 @@ env.Program(target = 'foo', source = 'foo.c') env = Environment(CPPPATH = ['include1', 'include2']) env.Program(target = 'foo', source = 'foo.c') - + @@ -6584,7 +6584,7 @@ env.Program(target = 'foo', source = 'foo.c') env = Environment() env.StaticLibrary(target = 'foo', source = Split('l1.c l2.c')) env.StaticLibrary(target = 'bar', source = ['l3.c', 'l4.c']) - + @@ -6594,7 +6594,7 @@ env.StaticLibrary(target = 'bar', source = ['l3.c', 'l4.c']) env = Environment() env.SharedLibrary(target = 'foo', source = ['l5.c', 'l6.c']) env.SharedLibrary(target = 'bar', source = Split('l7.c l8.c')) - + @@ -6604,7 +6604,7 @@ env.SharedLibrary(target = 'bar', source = Split('l7.c l8.c')) env = Environment(LIBS = 'mylib', LIBPATH = ['.']) env.Library(target = 'mylib', source = Split('l1.c l2.c')) env.Program(target = 'prog', source = ['p1.c', 'p2.c']) - + @@ -6623,7 +6623,7 @@ env.PDFBuilder(target = 'foo.pdf', source = 'foo.tex') # The following creates "bar.pdf" from "bar.tex" env.PDFBuilder(target = 'bar', source = 'bar') - + Note also that the above initialization overwrites the default Builder objects, @@ -6643,7 +6643,7 @@ env = Environment() env.Append(BUILDERS = {'PDFBuilder' : bld}) env.PDFBuilder(target = 'foo.pdf', source = 'foo.tex') env.Program(target = 'bar', source = 'bar.c') - + You also can use other Pythonic techniques to add to the BUILDERS construction variable, such as: @@ -6651,7 +6651,7 @@ to the BUILDERS construction variable, such as: env = Environment() env['BUILDERS]['PDFBuilder'] = bld - + @@ -6690,7 +6690,7 @@ env.Command('foo', 'foo.k', 'kprocess < $SOURCES > $TARGET') bar_in = File('bar.in') env.Command('bar', bar_in, 'kprocess $SOURCES > $TARGET') bar_in.target_scanner = kscan - + It is important to note that you have to return a list of File nodes from the scan function, simple @@ -6737,7 +6737,7 @@ env = Environment(SCANNERS = scanners + [scanner], MYPATH = ['incs']) env.Command('foo', 'foo.x', 'xprocess < $SOURCES > $TARGET') - + The FindPathDirs() @@ -6775,7 +6775,7 @@ scanner = Scanner(name = 'myscanner', skeys = ['.x'], path_function = pf ) - + @@ -6806,7 +6806,7 @@ sub/dir/SConscript: env = Environment() # Builds sub/dir/foo from sub/dir/foo.c env.Program(target = 'foo', source = 'foo.c') - + @@ -6828,7 +6828,7 @@ subdirectory/SConscript: Import("env") env.Program(target = 'foo', source = 'foo.c') - + @@ -6855,7 +6855,7 @@ src/SConscript: Import("cppdefines") env = Environment(CPPDEFINES = cppdefines) env.Program(target = 'src', source = 'src.c') - + Note the use of the Export() method to set the "cppdefines" variable to a different @@ -6889,7 +6889,7 @@ Main/SConscript: Import('env') e = env.Copy(LIBS = ['a', 'b']) e.Program('foo', Split('m1.c m2.c m3.c')) - + The '#' in the LIBPATH directories specify that they're relative to the top-level directory, so they don't turn into "Main/libA" when they're @@ -6913,19 +6913,19 @@ vars = Variables('custom.py') vars.Add('CC', 'The C compiler.') env = Environment(variables=vars) Help(vars.GenerateHelpText(env)) - + The user could specify the C compiler on the command line: scons "CC=my_cc" - + or in the custom.py file: CC = 'my_cc' - + or get documentation on the options: @@ -6936,7 +6936,7 @@ CC: The C compiler. default: None actual: cc - + @@ -6956,26 +6956,26 @@ compiling to object files. For example: #include <windows.h> #include <my_big_header.h> - + StdAfx.cpp: #include <StdAfx.h> - + Foo.cpp: #include <StdAfx.h> /* do some stuff */ - + Bar.cpp: #include <StdAfx.h> /* do some other stuff */ - + SConstruct: @@ -6983,7 +6983,7 @@ env=Environment() env['PCHSTOP'] = 'StdAfx.h' env['PCH'] = env.PCH('StdAfx.cpp')[0] env.Program('MyApp', ['Foo.cpp', 'Bar.cpp']) - + For more information see the document for the PCH builder, and the PCH and PCHSTOP construction variables. To learn about the details of precompiled @@ -7004,7 +7004,7 @@ variable. env=Environment() env['PDB'] = 'MyApp.pdb' env.Program('MyApp', ['Foo.cpp', 'Bar.cpp']) - + For more information see the document for the PDB construction variable. diff --git a/doc/python10/MANIFEST b/doc/python10/MANIFEST index c9484d8..1be563b 100644 --- a/doc/python10/MANIFEST +++ b/doc/python10/MANIFEST @@ -12,5 +12,4 @@ main.xml node.fig process.xml scanner.fig -scons.mod -sig.fig +summary.xml diff --git a/doc/python10/abstract.xml b/doc/python10/abstract.xml index 45b4918..337aa69 100644 --- a/doc/python10/abstract.xml +++ b/doc/python10/abstract.xml @@ -1,3 +1,38 @@ + + + %scons; +]> + + + + + &SCons; is a software construction tool (build tool, or make tool) @@ -30,3 +65,5 @@ and discusses future plans and directions for the tool. + + diff --git a/doc/python10/acks.xml b/doc/python10/acks.xml index 895bad7..d3f3c42 100644 --- a/doc/python10/acks.xml +++ b/doc/python10/acks.xml @@ -1,3 +1,40 @@ + + + %scons; +]> + +
+Acknowledgements + + + First, many thanks to the great group of developers who dove in right @@ -25,3 +62,5 @@ to experiment with &Cons; in the first place. + +
diff --git a/doc/python10/arch.eps b/doc/python10/arch.eps deleted file mode 100644 index 1fdd51f..0000000 --- a/doc/python10/arch.eps +++ /dev/null @@ -1,134 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: build/doc/python10/arch.fig -%%Creator: /usr/bin/fig2dev Version 3.2 Patchlevel 3d -%%CreationDate: Sun Jan 2 01:21:05 2005 -%%For: knight@casablanca.home.baldmt.com (Steven Knight) -%%BoundingBox: 0 0 218 182 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 182 moveto 0 0 lineto 218 0 lineto 218 182 lineto closepath clip newpath --215.3 324.7 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -10 setmiterlimit - 0.06000 0.06000 sc -% -% Fig objects follow -% -/Courier-Bold ff 300.00 scf sf -3825 2925 m -gs 1 -1 sc (scons) col0 sh gr -/Times-Roman ff 300.00 scf sf -3825 3225 m -gs 1 -1 sc (Script) col0 sh gr -/Times-Roman ff 300.00 scf sf -5100 4875 m -gs 1 -1 sc (Build Engine) col0 sh gr -/Courier-Bold ff 300.00 scf sf -4200 4875 m -gs 1 -1 sc (SCons) col0 sh gr -% Polyline -7.500 slw -n 3600 4200 m 7200 4200 l 7200 5400 l 3600 5400 l - cp gs col0 s gr -/Courier-Bold ff 300.00 scf sf -4725 4050 m -gs 1 -1 sc (SCons) col0 sh gr -/Times-Roman ff 300.00 scf sf -5625 4050 m -gs 1 -1 sc (API) col0 sh gr -% Polyline -n 3600 2400 m 3600 2400 l 3600 2400 l 3600 2400 l - cp gs col0 s gr -% Polyline -n 3600 2400 m 4800 2400 l 4800 3600 l 3600 3600 l - cp gs col0 s gr -% Polyline -n 3600 3600 m 7200 3600 l 7200 4200 l 3600 4200 l - cp gs col0 s gr -% Polyline - [60] 0 sd -n 6000 3600 m 7200 3600 l 7200 2400 l 6000 2400 l - cp gs col0 s gr [] 0 sd -/Times-Italic ff 300.00 scf sf -6300 2925 m -gs 1 -1 sc (other) col0 sh gr -/Times-Italic ff 300.00 scf sf -6150 3225 m -gs 1 -1 sc (interface) col0 sh gr -$F2psEnd -rs diff --git a/doc/python10/arch.svg b/doc/python10/arch.svg new file mode 100644 index 0000000..df3a8c0 --- /dev/null +++ b/doc/python10/arch.svg @@ -0,0 +1,124 @@ + + + + + + + + + image/svg+xml + + + + + + + + + + + + + scons + Script + Build Engine + SCons + SCons + API + other + interface + + + diff --git a/doc/python10/builder.eps b/doc/python10/builder.eps deleted file mode 100644 index db87afc..0000000 --- a/doc/python10/builder.eps +++ /dev/null @@ -1,325 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: build/doc/python10/builder.fig -%%Creator: /usr/bin/fig2dev Version 3.2 Patchlevel 3d -%%CreationDate: Sun Jan 2 01:21:05 2005 -%%For: knight@casablanca.home.baldmt.com (Steven Knight) -%%BoundingBox: 0 0 668 290 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 290 moveto 0 0 lineto 668 0 lineto 668 290 lineto closepath clip newpath --53.3 342.7 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/reencdict 12 dict def /ReEncode { reencdict begin -/newcodesandnames exch def /newfontname exch def /basefontname exch def -/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def -basefontdict { exch dup /FID ne { dup /Encoding eq -{ exch dup length array copy newfont 3 1 roll put } -{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall -newfont /FontName newfontname put newcodesandnames aload pop -128 1 255 { newfont /Encoding get exch /.notdef put } for -newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat -newfontname newfont definefont pop end } def -/isovec [ -8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde -8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis -8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron -8#220 /dotlessi 8#230 /oe 8#231 /OE -8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling -8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis -8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot -8#255 /hyphen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus -8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph -8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine -8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf -8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute -8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring -8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute -8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute -8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve -8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply -8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex -8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave -8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring -8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute -8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute -8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve -8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide -8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex -8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def -/Times-Roman /Times-Roman-iso isovec ReEncode -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -10 setmiterlimit - 0.06000 0.06000 sc -% -% Fig objects follow -% -% Polyline -7.500 slw -n 2700 1200 m 4500 1200 l 4500 1800 l 2700 1800 l - cp gs col0 s gr -/Times-Roman-iso ff 240.00 scf sf -2925 1575 m -gs 1 -1 sc (Environment) col0 sh gr -% Polyline -n 2700 2400 m 4500 2400 l 4500 3000 l 2700 3000 l - cp gs col0 s gr -/Times-Roman-iso ff 240.00 scf sf -3600 2775 m -gs 1 -1 sc (BuilderWrapper) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 2700 3600 m 4500 3600 l 4500 4200 l 2700 4200 l - cp gs col0 s gr -/Times-Roman-iso ff 240.00 scf sf -3600 3975 m -gs 1 -1 sc (BuilderBase) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 8400 3600 m 9900 3600 l 9900 4200 l 8400 4200 l - cp gs col0 s gr -/Times-Roman-iso ff 240.00 scf sf -9150 3975 m -gs 1 -1 sc (ActionBase) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman-iso ff 240.00 scf sf -4650 5175 m -gs 1 -1 sc (MultiStep-) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman-iso ff 240.00 scf sf -4650 5460 m -gs 1 -1 sc (Builder) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 3900 4800 m 5400 4800 l 5400 5700 l 3900 5700 l - cp gs col0 s gr -/Times-Roman-iso ff 240.00 scf sf -2550 5175 m -gs 1 -1 sc (Composite-) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman-iso ff 240.00 scf sf -2550 5460 m -gs 1 -1 sc (Builder) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 1800 4800 m 3300 4800 l 3300 5700 l 1800 5700 l - cp gs col0 s gr -/Times-Roman-iso ff 240.00 scf sf -7050 5175 m -gs 1 -1 sc (Command) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman-iso ff 240.00 scf sf -7050 5460 m -gs 1 -1 sc (Action) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 6300 4800 m 7800 4800 l 7800 5700 l 6300 5700 l - cp gs col0 s gr -/Times-Roman-iso ff 240.00 scf sf -9150 5460 m -gs 1 -1 sc (Action) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman-iso ff 240.00 scf sf -9150 5175 m -gs 1 -1 sc (Function) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 8400 4800 m 9900 4800 l 9900 5700 l 8400 5700 l - cp gs col0 s gr -/Times-Roman-iso ff 240.00 scf sf -11250 5175 m -gs 1 -1 sc (List) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman-iso ff 240.00 scf sf -11250 5460 m -gs 1 -1 sc (Action) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 10500 4800 m 12000 4800 l 12000 5700 l 10500 5700 l - cp gs col0 s gr -% Polyline -n 900 2400 m 2100 2400 l 2100 3000 l 900 3000 l - cp gs col0 s gr -/Times-Roman-iso ff 240.00 scf sf -1500 2775 m -gs 1 -1 sc (Node) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 3600 4200 m 3525 4350 l 3675 4350 l - cp gs col0 s gr -% Polyline -n 3150 4800 m 3150 4500 l 4050 4500 l - 4050 4800 l gs col0 s gr -% Polyline -n 3600 4350 m - 3600 4500 l gs col0 s gr -% Polyline -n 9150 4200 m 9075 4350 l 9225 4350 l - cp gs col0 s gr -% Polyline -n 7050 4800 m 7050 4500 l 10950 4500 l - 10950 4800 l gs col0 s gr -% Polyline -n 9150 4350 m - 9150 4800 l gs col0 s gr -% Polyline -gs clippath -9885 3870 m 9885 3930 l 10036 3930 l 9916 3900 l 10036 3870 l cp -eoclip -n 11550 4650 m 11550 3900 l - 9900 3900 l gs col0 s gr gr - -% arrowhead -n 10036 3870 m 9916 3900 l 10036 3930 l 10036 3870 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -8415 3930 m 8415 3870 l 8264 3870 l 8384 3900 l 8264 3930 l cp -eoclip -n 4650 3900 m - 8400 3900 l gs col0 s gr gr - -% arrowhead -n 8264 3930 m 8384 3900 l 8264 3870 l 8264 3930 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -3930 1785 m 3870 1785 l 3870 1936 l 3900 1816 l 3930 1936 l cp -eoclip -n 3900 2250 m - 3900 1800 l gs col0 s gr gr - -% arrowhead -n 3930 1936 m 3900 1816 l 3870 1936 l 3930 1936 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -3270 2415 m 3330 2415 l 3330 2264 l 3300 2384 l 3270 2264 l cp -eoclip -n 3300 1950 m - 3300 2400 l gs col0 s gr gr - -% arrowhead -n 3270 2264 m 3300 2384 l 3330 2264 l 3270 2264 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -3570 3615 m 3630 3615 l 3630 3464 l 3600 3584 l 3570 3464 l cp -eoclip -n 3600 3150 m - 3600 3600 l gs col0 s gr gr - -% arrowhead -n 3570 3464 m 3600 3584 l 3630 3464 l 3570 3464 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -4380 4185 m 4320 4185 l 4320 4336 l 4350 4216 l 4380 4336 l cp -eoclip -n 4350 4650 m - 4350 4200 l gs col0 s gr gr - -% arrowhead -n 4380 4336 m 4350 4216 l 4320 4336 l 4380 4336 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -2880 4185 m 2820 4185 l 2820 4336 l 2850 4216 l 2880 4336 l cp -eoclip -n 2850 4650 m - 2850 4200 l gs col0 s gr gr - -% arrowhead -n 2880 4336 m 2850 4216 l 2820 4336 l 2880 4336 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -2715 3930 m 2715 3870 l 2564 3870 l 2684 3900 l 2564 3930 l cp -eoclip -n 1500 3150 m 1500 3900 l - 2700 3900 l gs col0 s gr gr - -% arrowhead -n 2564 3930 m 2684 3900 l 2564 3870 l 2564 3930 l cp gs 0.00 setgray ef gr col0 s -% Polyline -n 4650 3900 m 4575 3860 l 4500 3900 l 4575 3940 l - cp gs col0 s gr -% Polyline -n 1500 3000 m 1460 3075 l 1500 3150 l 1540 3075 l - cp gs col0 s gr -% Polyline -n 3600 3000 m 3560 3075 l 3600 3150 l 3640 3075 l - cp gs col0 s gr -% Polyline -n 3300 1800 m 3260 1875 l 3300 1950 l 3340 1875 l - cp gs col0 s gr -% Polyline -n 3900 2250 m 3860 2325 l 3900 2400 l 3940 2325 l - cp gs col0 s gr -% Polyline -n 4350 4650 m 4310 4725 l 4350 4800 l 4390 4725 l - cp gs col0 s gr -% Polyline -n 2850 4650 m 2810 4725 l 2850 4800 l 2890 4725 l - cp gs col0 s gr -% Polyline -n 11550 4650 m 11510 4725 l 11550 4800 l 11590 4725 l - cp gs col0 s gr -% Polyline - [60] 0 sd -n 3600 1200 m - 3600 900 l gs col0 s gr [] 0 sd -$F2psEnd -rs diff --git a/doc/python10/copyright.xml b/doc/python10/copyright.xml index d141fc6..6af924f 100644 --- a/doc/python10/copyright.xml +++ b/doc/python10/copyright.xml @@ -1,6 +1,16 @@ + + + %scons; +]> + + + + The &SCons; architecture consists of three layers: @@ -6,16 +43,11 @@ - - - - + - @@ -166,16 +198,11 @@ - - - - + - @@ -230,16 +257,11 @@ - - - - + - @@ -272,16 +294,11 @@ - + - + - @@ -328,16 +345,11 @@ - - - - + - @@ -391,16 +403,11 @@ - + - + - @@ -547,7 +554,7 @@ file, a library, etc. A &Builder; object is associated with a file through an associated &consenv; method and later invoked to actually build the file. The &Builder; object will typically use - construction variables (such as &CCFLAGS;, &LIBPATH;) to influence + construction variables (such as CCFLAGS, LIBPATH) to influence the specific build execution. @@ -629,7 +636,7 @@ &Builder; objects are associated with a &consenv; through a - &consvar; named &BUILDERS;, a list of the &Builder; objects that + &consvar; named BUILDERS, a list of the &Builder; objects that will be available for execution through the &consenv;: @@ -678,7 +685,7 @@ &Scanner; objects are associated with a &consenv; through a - &consvar; named &SCANNERS;, a list of the &Scanner; objects that + &consvar; named SCANNERS, a list of the &Scanner; objects that will be available through the &consenv;: @@ -896,3 +903,5 @@ + + diff --git a/doc/python10/future.xml b/doc/python10/future.xml index 272d508..b883fe4 100644 --- a/doc/python10/future.xml +++ b/doc/python10/future.xml @@ -1,3 +1,40 @@ + + + %scons; +]> + +
+Future Directions + + + There are a number of things we would like to do to continue to @@ -168,3 +205,5 @@
+ + diff --git a/doc/python10/install.xml b/doc/python10/install.xml index d150beb..0e5544e 100644 --- a/doc/python10/install.xml +++ b/doc/python10/install.xml @@ -1,3 +1,40 @@ + + + %scons; +]> + +
+Installation + + + Initial installation of a new utility provides the first, lasting @@ -177,3 +214,5 @@
+ + diff --git a/doc/python10/intro.xml b/doc/python10/intro.xml index d3057be..7878342 100644 --- a/doc/python10/intro.xml +++ b/doc/python10/intro.xml @@ -1,3 +1,40 @@ + + + %scons; +]> + +
+Introduction + + + More than twenty years after its creation, the classic UNIX &Make; @@ -210,3 +247,5 @@
+ + diff --git a/doc/python10/job-task.eps b/doc/python10/job-task.eps deleted file mode 100644 index b3eeaff..0000000 --- a/doc/python10/job-task.eps +++ /dev/null @@ -1,238 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: build/doc/python10/job-task.fig -%%Creator: /usr/bin/fig2dev Version 3.2 Patchlevel 3d -%%CreationDate: Sun Jan 2 01:21:05 2005 -%%For: knight@casablanca.home.baldmt.com (Steven Knight) -%%BoundingBox: 0 0 416 236 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 236 moveto 0 0 lineto 416 0 lineto 416 236 lineto closepath clip newpath --35.3 342.7 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -10 setmiterlimit - 0.06000 0.06000 sc -% -% Fig objects follow -% -% Polyline -7.500 slw -n 4200 3900 m 5100 3900 l 5100 4500 l 4200 4500 l - cp gs col0 s gr -/Times-Roman ff 240.00 scf sf -4650 4275 m -gs 1 -1 sc (Task) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 4200 5100 m 5100 5100 l 5100 5700 l 4200 5700 l - cp gs col0 s gr -/Times-Roman ff 240.00 scf sf -4650 5475 m -gs 1 -1 sc (Node) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 6300 2100 m 7200 2100 l 7200 2700 l 6300 2700 l - cp gs col0 s gr -/Times-Roman ff 240.00 scf sf -6750 2475 m -gs 1 -1 sc (Sig) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 6300 3300 m 7500 3300 l 7500 3900 l 6300 3900 l - cp gs col0 s gr -/Times-Roman ff 240.00 scf sf -6900 3675 m -gs 1 -1 sc (Walker) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 4200 2100 m 5700 2100 l 5700 2700 l 4200 2700 l - cp gs col0 s gr -/Times-Roman ff 240.00 scf sf -4950 2475 m -gs 1 -1 sc (TaskMaster) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 2400 3300 m 3600 3300 l 3600 3900 l 2400 3900 l - cp gs col0 s gr -/Times-Roman ff 240.00 scf sf -3000 3675 m -gs 1 -1 sc (Parallel) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 600 3300 m 1800 3300 l 1800 3900 l 600 3900 l - cp gs col0 s gr -/Times-Roman ff 240.00 scf sf -1200 3675 m -gs 1 -1 sc (Serial) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 1200 2100 m 3000 2100 l 3000 2700 l 1200 2700 l - cp gs col0 s gr -/Times-Roman ff 255.00 scf sf -2099 2475 m -gs 1 -1 sc (Jobs) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 2700 2700 m 2660 2775 l 2700 2850 l 2740 2775 l - cp gs col0 s gr -% Polyline -n 5700 2400 m 5775 2440 l 5850 2400 l 5775 2360 l - cp gs col0 s gr -% Polyline -n 5400 2700 m 5360 2775 l 5400 2850 l 5440 2775 l - cp gs col0 s gr -% Polyline -n 4650 2700 m 4610 2775 l 4650 2850 l 4690 2775 l - cp gs col0 s gr -% Polyline -n 1500 2700 m 1460 2775 l 1500 2850 l 1540 2775 l - cp gs col0 s gr -% Polyline -n 4650 4500 m 4610 4575 l 4650 4650 l 4690 4575 l - cp gs col0 s gr -% Polyline -gs clippath -1470 3315 m 1530 3315 l 1530 3164 l 1500 3284 l 1470 3164 l cp -eoclip -n 1500 2850 m - 1500 3300 l gs col0 s gr gr - -% arrowhead -n 1470 3164 m 1500 3284 l 1530 3164 l 1470 3164 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -2670 3315 m 2730 3315 l 2730 3164 l 2700 3284 l 2670 3164 l cp -eoclip -n 2700 2850 m - 2700 3300 l gs col0 s gr gr - -% arrowhead -n 2670 3164 m 2700 3284 l 2730 3164 l 2670 3164 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -4620 3915 m 4680 3915 l 4680 3764 l 4650 3884 l 4620 3764 l cp -eoclip -n 4650 2850 m - 4650 3900 l gs col0 s gr gr - -% arrowhead -n 4620 3764 m 4650 3884 l 4680 3764 l 4620 3764 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -4620 5115 m 4680 5115 l 4680 4964 l 4650 5084 l 4620 4964 l cp -eoclip -n 4650 4650 m - 4650 5100 l gs col0 s gr gr - -% arrowhead -n 4620 4964 m 4650 5084 l 4680 4964 l 4620 4964 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -6315 3630 m 6315 3570 l 6164 3570 l 6284 3600 l 6164 3630 l cp -eoclip -n 5400 2850 m 5400 3600 l - 6300 3600 l gs col0 s gr gr - -% arrowhead -n 6164 3630 m 6284 3600 l 6164 3570 l 6164 3630 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -6315 2430 m 6315 2370 l 6164 2370 l 6284 2400 l 6164 2430 l cp -eoclip -n 5850 2400 m - 6300 2400 l gs col0 s gr gr - -% arrowhead -n 6164 2430 m 6284 2400 l 6164 2370 l 6164 2430 l cp gs 0.00 setgray ef gr col0 s -% Polyline -n 3000 2400 m 3075 2440 l 3150 2400 l 3075 2360 l - cp gs col0 s gr -% Polyline -gs clippath -4215 2430 m 4215 2370 l 4064 2370 l 4184 2400 l 4064 2430 l cp -eoclip -n 3150 2400 m - 4200 2400 l gs col0 s gr gr - -% arrowhead -n 4064 2430 m 4184 2400 l 4064 2370 l 4064 2430 l cp gs 0.00 setgray ef gr col0 s -% Polyline - [60] 0 sd -n 2100 2100 m - 2100 1800 l gs col0 s gr [] 0 sd -% Polyline - [60] 0 sd -n 4950 2100 m - 4950 1800 l gs col0 s gr [] 0 sd -% Polyline - [60] 0 sd -n 6750 2100 m - 6750 1800 l gs col0 s gr [] 0 sd -$F2psEnd -rs diff --git a/doc/python10/job-task.svg b/doc/python10/job-task.svg new file mode 100644 index 0000000..dc5fc20 --- /dev/null +++ b/doc/python10/job-task.svg @@ -0,0 +1,244 @@ + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Task + Node + Sig + Walker + TaskMaster + Parallel + Serial + Jobs + + + diff --git a/doc/python10/main.xml b/doc/python10/main.xml index e061b90..c525bf1 100644 --- a/doc/python10/main.xml +++ b/doc/python10/main.xml @@ -1,8 +1,19 @@ + + %scons; + +]> + +
+ - - - %scons; - - - - - - - - - - -]> - -
+ SCons Design and Implementation @@ -81,56 +73,21 @@ - - &abstract; - + -
- Introduction - &intro; -
+ -
- Architecture - &design; -
+ -
- Installation - &install; -
+ -
- Development Process - &process; -
+ -
- Future Directions - &future; -
+ -
- Summary - + - This paper has introduced &SCons;, a next-generation build tool - with a modular, embeddable architecture and a direct Python - interface. &SCons; has a global view of the dependencies in a source - tree, uses MD5 signatures to decide if derived files are out of date, - and automatically scans files for dependencies, all of which make &SCons; - builds exceptionally reliable. The &SCons; development methodology has - been described, notable for its emphasis on automated regression - testing to ensure a robust and reliable tool from day one. Several - future directions for &SCons; have also been discussed. - - -
- -
- Acknowledgements - &acks; -
+ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Environment + Node + Walker + Builder + Scanner + Dir + Entry + File + Node.FS + Record + Field + Node.DB + Table + Wrapper + FS + + + diff --git a/doc/python10/process.xml b/doc/python10/process.xml index 4ff0ab1..a754bbd 100644 --- a/doc/python10/process.xml +++ b/doc/python10/process.xml @@ -1,3 +1,40 @@ + + + %scons; +]> + +
+Development Process + + + The &SCons; project has paid particular attention from day one to the @@ -351,3 +388,5 @@
+ + diff --git a/doc/python10/scanner.eps b/doc/python10/scanner.eps deleted file mode 100644 index 35614f8..0000000 --- a/doc/python10/scanner.eps +++ /dev/null @@ -1,168 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: build/doc/python10/scanner.fig -%%Creator: /usr/bin/fig2dev Version 3.2 Patchlevel 3d -%%CreationDate: Sun Jan 2 01:21:05 2005 -%%For: knight@casablanca.home.baldmt.com (Steven Knight) -%%BoundingBox: 0 0 398 200 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 200 moveto 0 0 lineto 398 0 lineto 398 200 lineto closepath clip newpath --17.3 360.7 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -10 setmiterlimit - 0.06000 0.06000 sc -% -% Fig objects follow -% -% Polyline -7.500 slw -n 2700 5400 m 4500 5400 l 4500 6000 l 2700 6000 l - cp gs col0 s gr -/Times-Roman ff 240.00 scf sf -3000 5775 m -gs 1 -1 sc (ProgScanner) col0 sh gr -% Polyline -n 2700 4200 m 4500 4200 l 4500 4800 l 2700 4800 l - cp gs col0 s gr -/Times-Roman ff 240.00 scf sf -3225 4575 m -gs 1 -1 sc (Scanner) col0 sh gr -% Polyline -n 2700 3000 m 4500 3000 l 4500 3600 l 2700 3600 l - cp gs col0 s gr -/Times-Roman ff 240.00 scf sf -2925 3375 m -gs 1 -1 sc (Environment) col0 sh gr -% Polyline - [60] 0 sd -n 5100 5400 m 6900 5400 l 6900 6000 l 5100 6000 l - cp gs col0 s gr [] 0 sd -/Times-Roman ff 240.00 scf sf -5400 5775 m -gs 1 -1 sc (JavaScanner) col0 sh gr -% Polyline -n 300 5400 m 2100 5400 l 2100 6000 l 300 6000 l - cp gs col0 s gr -/Times-Roman ff 240.00 scf sf -750 5775 m -gs 1 -1 sc (CScanner) col0 sh gr -% Polyline -n 600 3300 m 1500 3300 l 1500 3900 l 600 3900 l - cp gs col0 s gr -/Times-Roman ff 240.00 scf sf -825 3675 m -gs 1 -1 sc (Node) col0 sh gr -% Polyline -n 1200 5400 m 1200 5100 l 6000 5100 l - 6000 5400 l gs col0 s gr -% Polyline -n 3600 4950 m - 3600 5400 l gs col0 s gr -% Polyline -n 3600 4800 m 3525 4950 l 3675 4950 l - cp gs col0 s gr -% Polyline -n 3600 3600 m 3560 3675 l 3600 3750 l 3640 3675 l - cp gs col0 s gr -% Polyline -n 1050 3900 m 1010 3975 l 1050 4050 l 1090 3975 l - cp gs col0 s gr -% Polyline -gs clippath -2715 4530 m 2715 4470 l 2564 4470 l 2684 4500 l 2564 4530 l cp -eoclip -n 1050 4050 m 1050 4500 l - 2700 4500 l gs col0 s gr gr - -% arrowhead -n 2564 4530 m 2684 4500 l 2564 4470 l 2564 4530 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -3570 4215 m 3630 4215 l 3630 4064 l 3600 4184 l 3570 4064 l cp -eoclip -n 3600 3750 m - 3600 4200 l gs col0 s gr gr - -% arrowhead -n 3570 4064 m 3600 4184 l 3630 4064 l 3570 4064 l cp gs 0.00 setgray ef gr col0 s -% Polyline - [60] 0 sd -n 3600 3000 m - 3600 2700 l gs col0 s gr [] 0 sd -$F2psEnd -rs diff --git a/doc/python10/scanner.svg b/doc/python10/scanner.svg new file mode 100644 index 0000000..6fcb0e3 --- /dev/null +++ b/doc/python10/scanner.svg @@ -0,0 +1,160 @@ + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + ProgScanner + Scanner + Environment + JavaScanner + CScanner + Node + + + diff --git a/doc/python10/scons.mod b/doc/python10/scons.mod deleted file mode 100644 index 58a6576..0000000 --- a/doc/python10/scons.mod +++ /dev/null @@ -1,428 +0,0 @@ - - - - - - -Aegis"> -Ant"> -Autoconf"> -Automake"> -cc"> -Cons"> -cp"> -csh"> -gcc"> -Jam"> -jar"> -javac"> -javah"> -Make"> -Make++"> -Python"> -ranlib"> -rmic"> -SCons"> -scons"> -ScCons"> -tar"> -touch"> -zip"> - - - - -Action"> -ActionBase"> -CommandAction"> -FunctionAction"> -ListAction"> -Builder"> -BuilderBase"> -CompositeBuilder"> -MultiStepBuilder"> -Job"> -Jobs"> -Serial"> -Parallel"> -Node"> -Node.FS"> -Scanner"> -Sig"> -Signature"> -Taskmaster"> -TimeStamp"> -Walker"> -Wrapper"> - - - - - ---debug=explain"> ---implicit-cache"> ---implicit-deps-changed"> ---implicit-deps-unchanged"> --Q"> - - - -implicit_cache"> -implicit_deps_changed"> -implicit_deps_unchanged"> - - - - - -build"> -Makefile"> -Makefiles"> -SConscript"> -SConstruct"> -Sconstruct"> -sconstruct"> -.sconsign"> -src"> - - - - - -Add"> -AddOptions"> -Alias"> -Aliases"> -Append"> -BoolOption"> -Build"> -CacheDir"> -Clean"> -Clone"> -Command"> -Configure"> -Copy"> -Default"> -DefaultRules"> -Depends"> -Dir"> -Entry"> -EnumOption"> -Environment"> -Export"> -File"> -Finish"> -GenerateHelpText"> -Help"> -Ignore"> -Import"> -Install"> -InstallAs"> -Link"> -ListOption"> -Local"> -Module"> -Objects"> -Options"> -PackageOption"> -PathOption"> -Precious"> -Prepend"> -Replace"> -Repository"> -Return"> -RuleSet"> -Salt"> -SetBuildSignatureType"> -SetContentSignatureType"> -SourceSignature"> -SourceSignatures"> -Split"> -TargetSignatures"> -Task"> - - -subst"> - - -Message"> -Result"> -CheckCHeader"> -CheckCXXHeader"> -CheckFunc"> -CheckHeader"> -CheckLib"> -CheckLibWithHeader"> -CheckType"> -TryAction"> -TryBuild"> -TryCompile"> -TryLink"> -TryRun"> - - -str"> -zipfile"> - - -Cache"> - - - - - -ARGUMENTS"> -BUILD_TARGETS"> -COMMAND_LINE_TARGETS"> -DEFAULT_TARGETS"> - - - - - -BUILDERMAP"> -BUILDERS"> -CC"> -CCFLAGS"> -CCCOM"> -COLOR"> -COLORS"> -CONFIG"> -CPPDEFINES"> -ENV"> -JAVACLASSDIR"> -LIBDIRPREFIX"> -LIBDIRSUFFIX"> -LIBLINKPREFIX"> -LIBLINKSUFFIX"> -LIBPATH"> -LIBS"> -LINK"> -LINKCOM"> -LINKFLAGS"> -RELEASE"> -RELEASE_BUILD"> -SCANNERMAP"> -SCANNERS"> -TARFLAGS"> -TARSUFFIX"> - - - - - -PATH"> -PYTHONPATH"> -SCONSFLAGS"> - - - - - -allowed_values"> -build_dir"> -map"> -ignorecase"> -options"> -exports"> -source"> -target"> - - - - - -all"> -none"> - - - - - -BuildDir"> -CFile"> -CXXFile"> -DVI"> -Jar"> -Java"> -JavaH"> -Library"> -Object"> -PCH"> -PDF"> -PostScript"> -Program"> -RES"> -RMIC"> -SharedLibrary"> -SharedObject"> -StaticLibrary"> -StaticObject"> -Tar"> -Zip"> - - -Make"> - - - - - -builder function"> -builder method"> - -Configure Contexts"> -configure context"> - -Construction Environment"> -Construction Environments"> -Construction environment"> -Construction environments"> -construction environment"> -construction environments"> - -Construction Variable"> -Construction Variables"> -Construction variable"> -Construction variables"> -construction variable"> -construction variables"> - -CPPPATH"> - -Dictionary"> - -Emitter"> -emitter"> -Generator"> -generator"> - -Nodes"> - -signature"> -build signature"> - -true"> -false"> - -typedef"> - - - -bar"> -common1.c"> -common2.c"> -custom.py"> -goodbye"> -goodbye.o"> -goodbye.obj"> -file.dll"> -file.in"> -file.lib"> -file.o"> -file.obj"> -file.out"> -foo"> -foo.o"> -foo.obj"> -hello"> -hello.c"> -hello.exe"> -hello.h"> -hello.o"> -hello.obj"> -libfile_a"> -libfile_so"> -new_hello"> -new_hello.exe"> -prog"> -prog1"> -prog2"> -prog.c"> -prog.exe"> -stdio.h"> - - - -+"> -#"> - - - -announce@scons.tigris.org"> -dev@scons.tigris.org"> -users@scons.tigris.org"> diff --git a/doc/python10/sig.eps b/doc/python10/sig.eps deleted file mode 100644 index 26aabaa..0000000 --- a/doc/python10/sig.eps +++ /dev/null @@ -1,147 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: build/doc/python10/sig.fig -%%Creator: /usr/bin/fig2dev Version 3.2 Patchlevel 3d -%%CreationDate: Sun Jan 2 01:21:05 2005 -%%For: knight@casablanca.home.baldmt.com (Steven Knight) -%%BoundingBox: 0 0 308 128 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 128 moveto 0 0 lineto 308 0 lineto 308 128 lineto closepath clip newpath --71.3 288.7 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -10 setmiterlimit - 0.06000 0.06000 sc -% -% Fig objects follow -% -% Polyline -7.500 slw -n 1200 3000 m 2700 3000 l 2700 3600 l 1200 3600 l - cp gs col0 s gr -/Times-Roman ff 240.00 scf sf -1950 3375 m -gs 1 -1 sc (Taskmaster) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 3300 4200 m 4500 4200 l 4500 4800 l 3300 4800 l - cp gs col0 s gr -/Times-Roman ff 240.00 scf sf -3900 4575 m -gs 1 -1 sc (MD5) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 5100 4200 m 6300 4200 l 6300 4800 l 5100 4800 l - cp gs col0 s gr -/Times-Roman ff 240.00 scf sf -5700 4575 m -gs 1 -1 sc (TStamp) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 4200 3000 m 5400 3000 l 5400 3600 l 4200 3600 l - cp gs col0 s gr -/Times-Roman ff 240.00 scf sf -4800 3375 m -gs 1 -1 sc (Sig) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 2700 3300 m 2775 3340 l 2850 3300 l 2775 3260 l - cp gs col0 s gr -% Polyline -n 4800 3600 m 4725 3750 l 4875 3750 l - cp gs col0 s gr -% Polyline -n 3900 4200 m 3900 3900 l 5700 3900 l - 5700 4200 l gs col0 s gr -% Polyline -n 4800 3750 m - 4800 3900 l gs col0 s gr -% Polyline -gs clippath -4215 3330 m 4215 3270 l 4064 3270 l 4184 3300 l 4064 3330 l cp -eoclip -n 2850 3300 m - 4200 3300 l gs col0 s gr gr - -% arrowhead -n 4064 3330 m 4184 3300 l 4064 3270 l 4064 3330 l cp gs 0.00 setgray ef gr col0 s -% Polyline - [60] 0 sd -n 1950 3000 m - 1950 2700 l gs col0 s gr [] 0 sd -% Polyline - [60] 0 sd -n 4800 3000 m - 4800 2700 l gs col0 s gr [] 0 sd -$F2psEnd -rs diff --git a/doc/python10/sig.svg b/doc/python10/sig.svg new file mode 100644 index 0000000..09e2719 --- /dev/null +++ b/doc/python10/sig.svg @@ -0,0 +1,124 @@ + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + Taskmaster + MD5 + TStamp + Sig + + + diff --git a/doc/python10/summary.xml b/doc/python10/summary.xml new file mode 100644 index 0000000..80c3ef4 --- /dev/null +++ b/doc/python10/summary.xml @@ -0,0 +1,52 @@ + + + %scons; +]> + +
+Summary + + + + + + This paper has introduced &SCons;, a next-generation build tool + with a modular, embeddable architecture and a direct Python + interface. &SCons; has a global view of the dependencies in a source + tree, uses MD5 signatures to decide if derived files are out of date, + and automatically scans files for dependencies, all of which make &SCons; + builds exceptionally reliable. The &SCons; development methodology has + been described, notable for its emphasis on automated regression + testing to ensure a robust and reliable tool from day one. Several + future directions for &SCons; have also been discussed. + + + +
diff --git a/doc/reference/Alias.xml b/doc/reference/Alias.xml index b87967d..3f80385 100644 --- a/doc/reference/Alias.xml +++ b/doc/reference/Alias.xml @@ -1,6 +1,18 @@ + + + %scons; +]> + +
+The Alias Builder + - - - %version; - - - %scons; - - - - - - - - - - - - - - - - - - - - - - - - - - -]> - - + SCons Reference Manual &buildversion; @@ -80,128 +56,53 @@ Steven Knight - - ©right; - + version &buildversion; - - Preface - &preface; - + Builder Reference -
- The Alias Builder - &Alias_file; -
- -
- The CFile Builder - &CFile_file; -
- -
- The Command Builder - &Command_file; -
- -
- The CXXFile Builder - &CXXFile_file; -
- -
- The Install Builder - &Install_file; -
- -
- The InstallAs Builder - &InstallAs_file; -
- -
- The Library Builder - &Library_file; -
- -
- The Object Builder - &Object_file; -
- -
- The PCH Builder - &PCH_file; -
- -
- The PDF Builder - &PDF_file; -
- -
- The PDF Builder - &PostScript_file; -
- -
- The Program Builder - &Program_file; -
- -
- The RES Builder - &RES_file; -
- -
- The SharedLibrary Builder - &SharedLibrary_file; -
- -
- The SharedObject Builder - &SharedObject_file; -
- -
- The StaticLibrary Builder - &StaticLibrary_file; -
- -
- The StaticObject Builder - &StaticObject_file; -
+ -
+ + + + + + + + + + + + + + + + + + + - - &ConsVar; Reference + -
- AR + - + - X + - + -
+
- - Errors Generated by &SCons; - &errors; - +
diff --git a/doc/reference/preface.xml b/doc/reference/preface.xml index 82ea44a..39994a4 100644 --- a/doc/reference/preface.xml +++ b/doc/reference/preface.xml @@ -1,6 +1,18 @@ + + + %scons; +]> + + +Preface + + diff --git a/doc/user/builders-built-in.xml b/doc/user/builders-built-in.xml index 1cc5b65..ec4012d 100644 --- a/doc/user/builders-built-in.xml +++ b/doc/user/builders-built-in.xml @@ -211,7 +211,7 @@ Other relevant construction variables include those used by the &b-link-Object; builders to affect how the - source files specified as input to the &t-Program; + source files specified as input to the Program builders are turned into object files; see the next section. -- cgit v0.12