Table of Contents

1 Overview
1.1 Design Principles
1.1.1 Build Correctness
1.1.2 Build Flexibility
1.1.3 Build Efficiency
1.1.4 Build Directory
1.2 Getting Started
2 Installation
2.1 Version Control Setup
3 Command-Line Operation
3.1 Configure Operation
3.2 Build Operation
3.3 Clean Operation
3.4 Distclean Operation
3.5 Install Operation
3.6 Uninstall Operation
4 The Build Script
4.1 Configuration Operations
4.1.1 Checking for a Compiler
4.1.2 Checking for a Header File
4.1.2.1 Options
4.1.2.1.1 :check_cpppath
4.1.2.1.2 :fail
4.1.2.1.3 :set_define
4.1.3 Checking for a D Import
4.1.3.1 Options
4.1.3.1.1 :check_d_import_path
4.1.4 Checking for a Library
4.1.4.1 Options
4.1.4.1.1 :check_libpath
4.1.4.1.2 :fail
4.1.4.1.3 :set_define
4.1.4.1.4 :use
4.1.5 Checking for a Program
4.1.6 Checking for a Package Configuration
4.1.6.1 Options
4.1.6.1.1 :package
4.1.6.1.2 :program
4.1.6.1.3 :fail
4.1.6.1.4 :set_define
4.1.6.1.5 :use
4.1.7 Custom Configuration Checks
4.2 Build Operations
4.2.1 Environments
4.2.2 Specifying Source Files: The glob Method
4.2.3 Construction Variables
4.2.3.1 Construction Variable Naming
4.2.4 Builders
4.2.4.1 The Command Builder
4.2.4.2 The CFile Builder
4.2.4.3 The Copy Builder
4.2.4.4 The Directory Builder
4.2.4.5 The Disassemble Builder
4.2.4.6 The Install Builder
4.2.4.7 The InstallDirectory Builder
4.2.4.8 The Library Builder
4.2.4.9 The Object Builder
4.2.4.10 The Preprocess Builder
4.2.4.11 The Program Builder
4.2.4.11.1 Direct Mode
4.2.4.12 The SharedLibrary Builder
4.2.4.12.1 Direct Mode
4.2.4.13 The SharedObject Builder
4.2.5 Explicit Dependencies
4.2.6 Build Hooks
4.2.7 Barriers
4.3 Extending Rscons
4.3.1 Adding New Languages
4.3.2 Adding Custom Builders
4.3.2.1 Adding a Custom Builder to an Environment
4.3.2.2 Builder Name
4.3.2.3 Custom Builder Constructor
4.3.2.4 Custom Builder Operation
4.3.2.4.1 Return Value
4.3.2.4.2 Printing Build Status
4.3.2.4.3 Custom Builder Cache Usage - Only Rebuild When Necessary
4.3.2.4.4 Custom Builder Parallelization
4.3.2.4.4.1 Using a Ruby Thread to Parallelize a Build Operation
4.3.2.4.4.2 Executing a Subcommand from a Custom Builder
4.3.2.5 Simple custom builders added with add_builder
5 Appendix
5.1 Default Construction Variables
5.2 Example Build Scripts
5.2.1 Example: Building a C Program
5.2.2 Example: Building a D Program
5.2.3 Example: Cloning an Environment
5.2.4 Example: Custom Builder
5.2.5 Example: Using different compilation flags for some sources
5.2.6 Example: Creating a static library
5.2.7 Example: Creating a C++ parser source from a Yacc/Bison input file
5.3 ./configure && make
5.4 YARD API Documentation
6 License
7 Contributing
8 Change Log