Part III. Advanced Functionality

In this part of the manual, we cover the remaining information about abuild's features in detail. This part contains complete reference guides to abuild's configuration files, discussions of more advanced topics, and numerous examples to illustrate how to solve specific build problems with abuild. By the end of this part, you should be able to use abuild for a wide range of build problems.

Table of Contents

13. The Abuild.conf File
13.1. Abuild.conf Syntax
14. The Abuild Interface System
14.1. Abuild Interface Functionality Overview
14.2. Abuild.interface Syntactic Details
14.3. Abuild Interface Conditional Functions
14.4. Abuild.interface and Target Types
14.5. Predefined Abuild.interface Variables
14.5.1. Interface Variables Available to All Items
14.5.2. Interface Variables for Object-Code Items
14.5.3. Interface Variables for Java Items
15. The Abuild.mk File
15.1. General Abuild.mk Syntax
15.2. Make Rule-specific Targets
15.2.1. C and C++: ccxx Rules
15.2.2. Autoconf: autoconf Rules
15.2.3. Do Nothing: empty Rules
15.3. Autoconf Example
16. The Apache Ant Build Files
16.1. The Abuild-ant.properties File
16.2. Directory Structure For Java Builds
16.3. The Abuild-ant.xml File
17. Shared Libraries
17.1. Building Shared Libraries
17.2. Shared Library Example
18. Automatically Generated Code for GNU Make-based Builds
18.1. Build Item Rules
18.2. Code Generator Example
18.3. Dependency on a Make Variable
19. Java Hooks and Code Generators
19.1. Ant Hooks
19.2. Java Code Generator Example
19.3. Build.xml-driven Java Example
20. Interface Flags
20.1. Interface Flags Conceptual Overview
20.2. Using Interface Flags
20.3. Private Interface Example
21. Cross-Platform Support
21.1. Platform Selection
21.2. Cross-Platform Dependencies
21.3. Cross-Platform Dependency Example
22. Build Item Visibility
22.1. Increasing a Build Item's Visibility
22.2. Mixed Classification Example
23. JARs and Other Archives
23.1. JAR-like Archives
23.2. WAR Files
23.3. EAR Files
24. Linking With Whole Libraries
24.1. Whole Library Example
25. Opaque Wrappers
25.1. Opaque Wrapper Example
26. Enhancing Abuild with Plugins
26.1. Plugin Functionality
26.2. Adding Platform Types and Platforms
26.2.1. Adding Platform Types
26.2.2. Adding Platforms
26.3. Adding Toolchains
26.4. Plugin Examples
26.4.1. Plugins with Rules and Interfaces
26.4.2. Adding Backend Code
26.4.3. Platforms and Platform Type Plugins
26.4.4. Plugins and Externals
26.4.5. Native Compiler Plugins
26.4.6. Checking Project-Specific Rules
26.4.7. Install Target
27. Best Practices
27.1. Guidelines for Extension Authors
27.2. Guidelines for Make Rule Authors
27.3. Guidelines for Ant Target Authors
27.4. Hidden Dependencies
27.5. Interfaces and Implementations
28. Monitored Mode
29. Abuild Internals
29.1. Avoiding Recursive Make
29.2. Starting Abuild in an Output Directory
29.3. Traversal Details
29.4. Computing Valid Traits
29.5. Construction of the Build Set
29.6. Construction of the Build Graph
29.6.1. Validation
29.6.2. Construction
29.6.3. Implications
29.7. Implementation of the Abuild Interface System
29.8. Loading Abuild Interfaces