Ninja Build System

  1. The `.ninja` File Format
    1. Syntax Fundamentals
      1. File Structure
        1. Line-Based Format
          1. Statement Types
          2. Comments
            1. Comment Syntax
              1. Documentation Best Practices
              2. Line Continuation
                1. Backslash Usage
                  1. Multi-line Statement Formatting
                  2. Character Encoding
                    1. UTF-8 Support
                      1. Special Character Handling
                      2. Variable Expansion
                        1. Expansion Syntax
                          1. Escaping Mechanisms
                            1. Nested Expansion
                          2. Variables
                            1. Variable Definition
                              1. Assignment Syntax
                                1. Value Types
                                  1. Naming Conventions
                                  2. Variable Scopes
                                    1. File Scope Variables
                                      1. Rule Scope Variables
                                        1. Build Edge Scope Variables
                                          1. Scope Resolution Rules
                                          2. Built-in Variables
                                            1. Input Variables
                                              1. `$in`
                                                1. `$in_newline`
                                                2. Output Variables
                                                  1. `$out`
                                                  2. Build Directory Variables
                                                    1. `$builddir`
                                                    2. Other System Variables
                                                    3. Variable Manipulation
                                                      1. String Operations
                                                        1. Path Manipulation
                                                          1. Conditional Usage
                                                        2. Rules
                                                          1. Rule Definition
                                                            1. Rule Declaration Syntax
                                                              1. Rule Naming Requirements
                                                                1. Rule Structure
                                                                2. Rule Variables
                                                                  1. The `command` Variable
                                                                    1. Command Line Construction
                                                                      1. Variable Substitution
                                                                        1. Shell Integration
                                                                        2. The `description` Variable
                                                                          1. Output Message Customization
                                                                            1. Progress Indication
                                                                            2. Dependency Variables
                                                                              1. `depfile`
                                                                                1. Dependency File Specification
                                                                                  1. Compiler Integration
                                                                                  2. `deps`
                                                                                    1. Dependency Types
                                                                                      1. GCC Mode
                                                                                        1. MSVC Mode
                                                                                      2. Response File Variables
                                                                                        1. `rspfile`
                                                                                          1. Response File Naming
                                                                                            1. Usage Conditions
                                                                                            2. `rspfile_content`
                                                                                              1. Content Specification
                                                                                                1. Variable Expansion
                                                                                              2. Pool Assignment
                                                                                                1. `pool` Variable
                                                                                                  1. Resource Management
                                                                                                2. Rule Best Practices
                                                                                                  1. Command Portability
                                                                                                    1. Error Handling
                                                                                                      1. Output Consistency
                                                                                                    2. Build Edges
                                                                                                      1. Build Statement Syntax
                                                                                                        1. Basic Build Statement Structure
                                                                                                          1. Multiple Outputs and Inputs
                                                                                                            1. Syntax Variations
                                                                                                            2. Output Specification
                                                                                                              1. Explicit Outputs
                                                                                                                1. Primary Output Files
                                                                                                                  1. Multiple Output Handling
                                                                                                                  2. Implicit Outputs
                                                                                                                    1. Secondary Output Files
                                                                                                                      1. Syntax and Usage
                                                                                                                    2. Input Specification
                                                                                                                      1. Explicit Inputs
                                                                                                                        1. Source Files
                                                                                                                          1. Generated Dependencies
                                                                                                                          2. Implicit Dependencies
                                                                                                                            1. Header Dependencies
                                                                                                                              1. Tool Dependencies
                                                                                                                                1. Syntax Usage
                                                                                                                                2. Order-Only Dependencies
                                                                                                                                  1. Build Ordering
                                                                                                                                    1. Non-Rebuild Dependencies
                                                                                                                                      1. Syntax and Applications
                                                                                                                                    2. Build Edge Variables
                                                                                                                                      1. Edge-Specific Variable Assignment
                                                                                                                                        1. Variable Override Mechanisms
                                                                                                                                          1. Scope and Precedence
                                                                                                                                        2. Special Constructs
                                                                                                                                          1. Default Targets
                                                                                                                                            1. Default Target Declaration
                                                                                                                                              1. Multiple Default Targets
                                                                                                                                                1. Target Selection Logic
                                                                                                                                                2. Phony Rules and Targets
                                                                                                                                                  1. Phony Rule Definition
                                                                                                                                                    1. Common Phony Targets
                                                                                                                                                      1. `all` Target
                                                                                                                                                        1. `clean` Target
                                                                                                                                                          1. `test` Target
                                                                                                                                                          2. Use Cases and Patterns
                                                                                                                                                          3. Subninja
                                                                                                                                                            1. File Inclusion Syntax
                                                                                                                                                              1. Path Resolution
                                                                                                                                                                1. Namespace Management
                                                                                                                                                                  1. Modular Build Organization
                                                                                                                                                                  2. Pools
                                                                                                                                                                    1. Pool Definition
                                                                                                                                                                      1. Pool Declaration Syntax
                                                                                                                                                                        1. Depth Configuration
                                                                                                                                                                        2. Pool Assignment
                                                                                                                                                                          1. Rule Pool Assignment
                                                                                                                                                                            1. Resource Limitation
                                                                                                                                                                            2. Built-in Pools
                                                                                                                                                                              1. Console Pool
                                                                                                                                                                                1. Default Pool Behavior
                                                                                                                                                                                2. Custom Pool Creation
                                                                                                                                                                                  1. Resource-Specific Pools
                                                                                                                                                                                    1. Performance Tuning