Latte build notes
If you have problems building Latte, or even if you don't, we'd love to hear about your experience. Please let us know how it goes.
Building Latte from source requires a C++ compiler and the C++ "STL" library (which is included with modern C++ compilers).
Latte is known to trigger fatal compiler errors under g++ 2.8.1 on some platforms. On others, it may be necessary to disable the optimizer (the -O flag) in order to make the compiler work properly. The setting of the CXXFLAGS environment variable will override the default compiler flags; set CXXFLAGS before running configure.
Line 123 of the file closure.cxx in Latte 2.0 causes a compiler error with gcc 2.95. The line in question is:
throw Useless(*this, (tangible ? *tangible : loc));
To solve the problem, change that line to:
throw Useless(*this, (tangible ? tangible->fileloc() : loc));
This is fixed in Latte 2.1.
The file definitions.cxx appears to trigger a fatal compiler bug in gcc 22.214.171.124; specifically, in references to Latte_List::const_iterator operations in DefOp::apply().
If during "make check" the test undefined-x fails, you probably need to upgrade to a newer version of the "binutils" package (that includes the programs ld, as, and others). This problem also manifests as a core dump in some situations where Latte should report an error, such as referring to an undefined variable.
When building an RPM distribution of latte, note that for maximum portability you should "make LDFLAGS=-all-static latte-rpm" to create a static-linked latte-html. However, this disables distribution of liblatte.so.
Latte is known to compile and run successfully on these platforms:
Latte passes all tests except error-handling on this platform: