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. Generated mesa sources can be generated by including 'mesa_gensrc.gypi' in mesa.gyp, running 'gclient runhooks' and running the gyp target 'generate_mesa_sources'. The mesa.gyp file should not be checked in to include mesa_gensrc.gypi so we do not generate these files during a regular build. The generated files should be checked in. 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.