[Mesa-dev] [PATCH] glsl: Autogenerate builtin_functions.cpp as part of the build process.
kenneth at whitecape.org
Tue Jan 11 21:52:59 PST 2011
On Tuesday, January 11, 2011 09:30:49 am José Fonseca wrote:
> This breaks cross-compilation because builtin_function.cpp needs to be
> built with the native compiler, instead of the cross compiler.
Ouch. Good point. How can we make sure it's built for the correct system?
> I see there is a python program too. Is this native program unavoidable?
Both are necessary. Currently, we use the standalone compiler to transform
the prototypes (in builtins/profiles) from GLSL to IR. While this isn't
strictly necessary, it is more convenient. In the future, I'd also like to
implement most of the built-in functions in GLSL itself, rather than in hand-
coded IR. GLSL is much easier to read, and doesn't need updating when we
change the IR (or printed format).
The idea is to build a stripped down version of the compiler
(builtin_compiler), and use that to compile the built-ins into IR and use that
to generate the final compiler (libglsl.a and glsl_compiler). That way, all
the compilation/optimization costs for built-ins are done at Mesa build time.
As far as I know, this bootstrapping approach is fairly standard practice in
most compiler projects.
If possible, I'd really like to avoid keeping builtin_function.cpp in the
repository. Not only is having a 13000+ line generated file in the repo ugly,
but it makes it really hard to change the IR in small reviewable patches that
still work at each step.
Any build gurus out there? I don't think this is an insurmountable problem -
we just need the right build magic. (twice...really wish we had a single
build system...) I've never done cross-compiling so I'm not sure how to fix
More information about the mesa-dev