{\page \name={Latte build notes}

 If you have problems building Latte, or even if you don't, we'd love
 to hear about your experience.  Please {\a \href=correspond.html 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 {\tt CXXFLAGS} environment variable will override
 the default compiler flags; set {\tt CXXFLAGS} before running {\tt
 configure}.

 Line 123 of the file {\tt closure.cxx} in Latte 2.0 causes a compiler
 error with gcc 2.95.  The line in question is:

{\pre
\"      throw Useless(*this, (tangible ? *tangible : loc));\"
}

 To solve the problem, change that line to:

{\pre
\"      throw Useless(*this, (tangible ? tangible->fileloc() : loc));\"
}

 This is fixed in Latte 2.1.

 The file {\tt definitions.cxx} appears to trigger a fatal compiler
 bug in gcc 2.7.2.2; specifically, in references to {\tt
 Latte_List::const_iterator} operations in {\tt DefOp::apply()}.

 If during "make check" the test {\tt undefined-x} fails, you probably
 need to upgrade to a newer version of the "binutils" package (that
 includes the programs {\tt ld}, {\tt 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.
\;   The current version of binutils for Linux can be found at {\a
\;   \href=ftp://sunsite.unc.edu/pub/Linux/GCC
\;   ftp://sunsite.unc.edu/pub/Linux/GCC}.
\;   The current version of binutils for other platforms is at {\a
\;   \href=ftp://ftp.gnu.org/pub/gnu ftp://ftp.gnu.org/pub/gnu}.

 When building an RPM distribution of latte, note that for maximum
 portability you should "{\tt 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:

 {\ul
  {\li i686-linux 2.2.5, egcs 2.91.66}
  {\li i586-linux 2.0.33, egcs 2.90.27}
  {\li i686-linux 2.0.33, egcs 2.90.29}
  {\li i686-linux 2.0.35, egcs 2.90.27}
  {\li sparc-sunos 5.5.1, gcc 2.7.2 (no {\tt -O})}
  {\li sgi-irix 6.2, gcc 2.8.1 (with {\tt -O2 -g})}
  {\li ppc-linux 2.0.33, egcs 2.90.25}}

\;   The static-link latte-html executable in the Zanshin-packaged RPM is
\;   known to run successfully on:

\;   {\ul
\;    {\li i586-linux 2.0.31, RedHat 4.2}
\;    {\li i686-linux 2.0.35, RedHat 5.2}}

 Latte passes all tests except error-handling on this platform:

 {\ul
  {\li sgi-irix 6.2, gcc 2.7.2.x (GNU make, no {\tt -O})}}
}