Chapter 3. Tools and Design
The LLVM project consists of several libraries and tools that, together, make a large compiler infrastructure. A careful design is the key to connecting all these pieces together. Throughout, LLVM emphasizes the philosophy that everything is a library, leaving a relatively small amount of code that is not immediately reusable and is exclusive of a particular tool. Still, a large number of tools allows the user to exercise the libraries from a command terminal in many ways. In this chapter, we will cover the following topics:
- An overview and design of LLVM core libraries
- How the compiler driver works
- Beyond the compiler driver: meeting LLVM intermediary tools
- How to write your first LLVM tool
- General advice on navigating the LLVM source code