SCons 2.4.1

Design

Steven Knight

Steven Knight

version 2.4.1

Copyright (c) 2001 Steven Knight Portions of this document, by the same author, were previously published Copyright 2000 by CodeSourcery LLC, under the Software Carpentry Open Publication License, the terms of which are available at http://www.software-carpentry.com/openpub-license.html .

2001


Table of Contents

1. Introduction
1.1. About This Document
2. Goals
2.1. Fixing Make's problems
2.2. Fixing Cons's problems
3. Overview
3.1. Architecture
3.2. Build Engine
3.2.1. Python API
3.2.2. Single-image execution
3.2.3. Dependency analysis
3.2.4. Customized output
3.2.5. Build failures
3.3. Interfaces
3.3.1. Native Python interface
3.3.2. Makefile interface
3.3.3. Graphical interfaces
4. Build Engine API
4.1. General Principles
4.1.1. Keyword arguments
4.1.2. Internal object representation
4.2. Construction Environments
4.2.1. Construction variables
4.2.2. Fetching construction variables
4.2.3. Copying a construction environment
4.2.4. Multiple construction environments
4.2.5. Variable substitution
4.3. Builder Objects
4.3.1. Specifying multiple inputs
4.3.2. Specifying multiple targets
4.3.3. File prefixes and suffixes
4.3.4. Builder object exceptions
4.3.5. User-defined Builder objects
4.3.6. Copying Builder Objects
4.3.7. Special-purpose build rules
4.3.8. The Make Builder
4.3.9. Builder maps
4.4. Dependencies
4.4.1. Automatic dependencies
4.4.2. Implicit dependencies
4.4.3. Ignoring dependencies
4.4.4. Explicit dependencies
4.5. Scanner Objects
4.5.1. User-defined Scanner objects
4.5.2. Copying Scanner Objects
4.5.3. Scanner maps
4.6. Targets
4.6.1. Building targets
4.6.2. Removing targets
4.6.3. Suppressing cleanup removal of build-targets
4.6.4. Suppressing build-target removal
4.6.5. Default targets
4.6.6. File installation
4.6.7. Target aliases
4.7. Customizing output
4.8. Separate source and build trees
4.9. Variant builds
4.10. Code repositories
4.11. Derived-file caching
4.12. Job management
5. Native Python Interface
5.1. Configuration files
5.2. Python syntax
5.3. Subsidiary configuration Files
5.4. Variable scoping in subsidiary files
5.5. Hierarchical builds
5.6. Sharing construction environments
5.7. Help
5.8. Debug
6. Other Issues
6.1. Interaction with SC-config
6.2. Interaction with test infrastructures
6.3. Java dependencies
6.4. Limitations of digital signature calculation
6.5. Remote execution
6.6. Conditional builds
7. Background
8. Summary
9. Acknowledgements

List of Figures

3.1. SCons Architecture