[Mesa-dev] proper way to regenerate built-in functions?

Kenneth Graunke kenneth at whitecape.org
Tue Aug 31 18:54:53 PDT 2010


On Tuesday 31 August 2010 18:24:53 Brian Paul wrote:
> I just fixed a bug in the atan() built-in function.  After editing the
> src/glsl/builtins/ir/atan file, I found that the only way to reliably
> rebuild everything was:
> 
> pushd src/glsl/; make clean; make builtins; make; popd; make

This is correct.  You can probably omit 'make clean', but otherwise, yes, 
that's what I do.  Then commit the updated builtin_function.cpp.
 
> If I just did:
> 
> pushd src/glsl/; make; popd; make
> 
> I'd get runtime errors about bad IR code.

Ideally this would work, but I haven't done the Makefile trickery to make it 
happen automatically.  Whenever any file in builtins/ changes, 
builtin_function.cpp needs to be regenerated...but that process uses 
glsl_compiler.  So first, 'make builtins' builds a bare-bones compiler using a 
dummy copy of builtin_function.cpp (with no built-ins), then uses that 
compiler to build the proper source (with all the functions).  Once it's 
built, it goes ahead and rebuilds the compiler against the newly generated 
file.

I'm sure there's a way to set up the Makefile dependencies to do the proper 
bootstrapping, but I haven't gotten around to it.  Patches are welcome...

> What's the proper way to regenerate everything after modifying a file
> like ir/atan?
> 
> -Brian


More information about the mesa-dev mailing list