|  | Compilation has a few phases: | 
|  |  | 
|  | 1. Generate the header and dispatch source files that have to match the GL api. | 
|  | These read in a description of the GL api in the form of XML files. In | 
|  | addition, generate the GLSL parser and lexer using flex and bison. These | 
|  | sources are needed for step 2 | 
|  | 2. Compile everything in src/glsl into a library. This step uses the parser and | 
|  | lexer output. | 
|  | 3. Compile the compiler (executable) that can create the builtin functions' | 
|  | source file.  Note that this step uses builtin_stubs.cpp because we haven't | 
|  | generated the actual builtin functions' source file yet. | 
|  | 4. Invoke the compiler that we just built to create | 
|  | gen/mesa/builtin_function.cpp | 
|  | 5. Compile the rest of mesa, using the builtins that we created in step 4. In | 
|  | addition, link in all the files that we've previously compiled in step 2. |