summaryrefslogtreecommitdiffstats
path: root/debian/fireflies/fireflies-2.08/libgfx
diff options
context:
space:
mode:
Diffstat (limited to 'debian/fireflies/fireflies-2.08/libgfx')
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/CHANGES.txt284
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/README.txt71
-rwxr-xr-xdebian/fireflies/fireflies-2.08/libgfx/configure9653
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/configure.in290
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/doc/build.html135
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/doc/cdoc.css86
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/doc/ex-gui.html238
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/doc/ex-script.html153
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/doc/geom3d.html59
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/doc/gl.html112
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/doc/gui-layout.gifbin0 -> 8119 bytes
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/doc/gui-redbox.gifbin0 -> 3571 bytes
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/doc/gui.html257
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/doc/index.html81
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/doc/intvec.html95
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/doc/license.html54
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/doc/mat.html119
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/doc/mat2.html46
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/doc/mat3.html44
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/doc/mat4.html83
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/doc/quat.html113
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/doc/raster.html143
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/doc/rotate.html107
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/doc/script.html192
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/doc/start.html136
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/doc/vec.html125
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/doc/vec2.html52
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/doc/vec3.html70
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/doc/vec4.html65
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/gfx-config.in38
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/include/gfx/arcball.h55
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/include/gfx/array.h70
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/include/gfx/baseball.h55
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/include/gfx/color.h48
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/include/gfx/config-osx.h86
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/include/gfx/config-vc.h85
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/include/gfx/config.h.in81
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/include/gfx/geom3d.h133
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/include/gfx/geom4d.h36
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/include/gfx/gfx.h105
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/include/gfx/gl.h32
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/include/gfx/glext.h30
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/include/gfx/gltools.h37
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/include/gfx/gui.h186
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/include/gfx/intvec.h97
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/include/gfx/mat2.h158
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/include/gfx/mat3.h157
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/include/gfx/mat4.h194
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/include/gfx/quat.h118
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/include/gfx/raster.h171
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/include/gfx/script.h182
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/include/gfx/symmat2.h134
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/include/gfx/symmat3.h136
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/include/gfx/symmat4.h145
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/include/gfx/trackball.h39
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/include/gfx/vec2.h158
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/include/gfx/vec3.h184
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/include/gfx/vec4.h183
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/include/gfx/win/gui-mfc.h120
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/include/gfx/win/mfc.h30
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/include/gfx/win/wintools.h26
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/macos/libgfx.xcodeproj/project.pbxproj799
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/macos/t-gui-Info.plist20
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/src/Makefile29
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/src/arcball.cxx192
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/src/baseball.cxx59
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/src/color.cxx128
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/src/geom3d.cxx33
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/src/geom4d.cxx14
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/src/gltools.cxx192
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/src/gui-mfc.cxx297
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/src/gui.cxx509
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/src/mat2.cxx89
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/src/mat3.cxx82
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/src/mat4.cxx206
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/src/quat.cxx136
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/src/raster-jpeg.cxx113
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/src/raster-png.cxx180
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/src/raster-pnm.cxx174
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/src/raster-tiff.cxx158
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/src/raster.cxx113
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/src/script.cxx295
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/src/symmat2.cxx61
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/src/symmat3.cxx61
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/src/symmat4.cxx52
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/src/time.cxx86
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/src/trackball.cxx153
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/src/wintools.cxx88
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/tests/Makefile42
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/tests/t-glext.cxx82
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/tests/t-glimg.cxx149
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/tests/t-gui.cxx130
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/tests/t-img.cxx82
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/tests/t-script.cxx74
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/tests/t-vec.cxx78
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/tests/test1.sc17
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/vc6/libgfx.dsw89
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/vc6/libgfx/libgfx.dsp236
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/vc6/libgfxmfc/libgfx.dsp252
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/vc6/tglimg/tglimg.dsp95
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/vc6/tgui/tgui.dsp95
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/vc6/tmfc/tmfc.dsp116
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/vc6/tscript/tscript.dsp88
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/vc6/tvec/tvec.dsp88
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/vc7/libgfx.sln57
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/vc7/libgfx/libgfx.vcproj505
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/vc7/tglimg/tglimg.vcproj166
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/vc7/tgui/tgui.vcproj166
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/vc7/tscript/tscript.vcproj160
-rw-r--r--debian/fireflies/fireflies-2.08/libgfx/vc7/tvec/tvec.vcproj160
110 files changed, 23418 insertions, 0 deletions
diff --git a/debian/fireflies/fireflies-2.08/libgfx/CHANGES.txt b/debian/fireflies/fireflies-2.08/libgfx/CHANGES.txt
new file mode 100644
index 00000000..8f15b370
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/CHANGES.txt
@@ -0,0 +1,284 @@
+in Version 1.1
+--------------
+
+ o Got rid of the n-vector and n*n-matrix code as it was quite broken.
+
+ o All MxGUI menu commands are visible to external code now.
+
+ o Got rid of the command-line compilation stuff for VC.
+
+ o Moved all the Windows-specific headers -- which have never moved
+ beyond experimental -- into a Windows specific <gfx/win/...> location.
+
+ o Placed all libgfx code in the 'gfx' namespace. To improve
+ compatibility with old code, the <gfx/gfx.h> header will
+ automatically import this namespace into the default global one.
+ This behavior can be turned off by defining the GFX_NAMESPACE
+ preprocessor symbol.
+
+ o The scripting framework now allows for encapsulation of one syntax
+ inside another. However, this is experimental, and is likely to
+ change considerably in a future release.
+
+ o Extended the script interface to support void parsers that throw
+ exceptions on errors rather than passing return codes. In future,
+ this will become the default way of writing parser functions.
+
+ o The script_do_xxx() functions formerly defined in <gfx/script.h>
+ have been removed. They were long ago superseded by the
+ CmdEnv::do_xxx() methods.
+
+ o Fixed the unitize() method for quaternions, which did not in fact
+ result in a unit quaternion.
+
+ o Added a small collection of useful color manipulation routines in
+ <gfx/color.h>.
+
+ o Added an ortho_camera_lookat() function to complement the
+ longstanding camera_lookat() perspective function.
+
+in Version 1.0.3
+----------------
+
+ o When compiling with GCC, warnings are turned on by default. To
+ compile without warnings, you must use --disable-warnings when
+ running the 'configure' script.
+
+ o The tests used by the 'configure' script to detect OpenGL headers
+ were a bit broken. These tests are now much more reliable.
+
+ o The quaternion SLERPing code in previous revisions was incorrect
+ due to a typo in the code. This problem has been fixed.
+
+ o The file parser provided by <gfx/script.h> now supports the use of
+ libgzstream. When using the library, the scripting code will
+ automatically decompress files ending with {.gz, .z, .Z} suffixes.
+ You must use the --enable-gzstream option when running ./configure.
+
+ o New experimental build files for use with Apple's XCode
+ development environment are available in the 'xcode' directory.
+
+ o Added functions to <gfx/geom3d.h> for computing the volume
+ of tetrahedra.
+
+ o The MIN/MAX macros were broken under Cygwin.
+
+ o Fixed up a few miscellaneous compiler warnings.
+
+ o Added an experimental MxBinder class to <gfx/gui.h>. This makes
+ it fairly painless to bind MxGUI member functions to FLTK callbacks.
+
+ o Moved management of libgfx source code from CVS to Subversion.
+
+
+in Version 1.0.2
+----------------
+
+ o The MxGUI::snapshot_to_file() method now takes an optional
+ filename argument. When provided, the code will simply write a
+ snapshot to this file, rather than presenting the user with a file
+ selector.
+
+ o The MxGUI::snapshot_to_file() method will now save the alpha
+ channel of the window, assuming the file format supports that.
+ (Currently, only PNG and TIFF support alpha channels.)
+
+ o MxGUI OpenGL windows allocate alpha channels (when available).
+
+ o New vector/matrix modules:
+
+ - <gfx/symmat4.h> Symmetric 4x4 matrices; after <gfx/symmat3.h>
+ - <gfx/vecn.h> Preliminary support for n-D vectors
+ - <gfx/matn.h> Preliminary support for nxn matrices
+ - <gfx/symmatn.h> Preliminary support for nxn symmetric matrices
+
+ o Project files for Apple's ProjectBuilder (OS X) are located in the
+ macos subdirectory.
+
+ o Added checks in the autoconf script for <ext/hash_map> and
+ <ext/hash_set>, which is where GCC3 chooses to place these
+ non-standard STL components.
+
+ o The scripting framework now supports a CmdEnv::ignore_command()
+ method that lets client code specify command names that should be
+ ignored. This is also available from the input file itself by
+ using the 'ignore' command.
+
+ o The Baseball-derived classes now have read()/write() methods for
+ exchanging view information in a textual form.
+
+
+in Version 1.0.1
+----------------
+
+ o The library should now compile correctly under Visual Studio .NET
+ (a.k.a Visual C++ 7).
+
+ o The array<> and varray<> templates in <gfx/array.h> have been
+ removed. Their original purpose was to support legacy code
+ written in prior to the widespread adoption of STL. The array2<>
+ and array3<> templates remain, but they are now subclasses of
+ std::vector<>.
+
+ o Many of the functions in <gfx/geom3d.h> were re-written to by
+ templatized by vector class rather than by element type. Thus,
+ they may now be used with any suitable vector type, not just the
+ TVec3<> template defined in <gfx/vec3.h>.
+
+ o The CmdLine::collect_as_xxx() methods used by the file format
+ scripting interface now accept an optional 'offset' argument.
+ This parameter controls at which token the methods start reading.
+ Their previous behavior was to always begin reading at the first
+ token on the command line.
+
+ o The script_do_xxx() functions have been replaced with
+ CmdEnv::do_xxx() methods. The old global functions remain in
+ place for compatibility, but the new CmdEnv methods should be used
+ in preference to them.
+
+ o The autoconf process now sets up a symbolic FLTKCONFIG program
+ name. This is primarily of interest under MacOS X, where the
+ fltk-config program is used to finalize the build of a GUI
+ application so that it will launch correctly from the Finder.
+ The Makefile in the 'test' directory demonstrates the correct use
+ of this program as a post-build step.
+
+ o Bug fixes:
+
+ - The Raster destructor is now correctly declared as virtual.
+
+ - Certain type declarations have been made more rigorously
+ correct for proper compilation under GCC 3.
+
+ o A geom4d package has been added that provides functionality
+ analogous to the geom3d package.
+
+ o A couple of new experimental packages have been added for building
+ Win32 interfaces with MFC: mfc, wintools, gui-mfc. They are
+ unfinished, undocumented, and may be unstable. Most users of this
+ library will want to avoid them.
+
+
+in Version 1.0
+----------------
+
+ o The documentation is now (mostly) complete and (mostly)
+ synchronized with the actual code.
+
+ o Trackball & Arcball now share a common Baseball base class.
+
+ o Extensions to the autoconf script to allow for:
+
+ - Automatic configuration under Mac OS X
+
+ - Selection of whether to compile with Cygwin libraries or not
+
+ - Handle differences between FLTK 1.0.x and 1.1.x in the way
+ that OpenGL code is handled
+
+ o Some minor changes to make the library compile under Mac OS X.
+
+ o Bug fixes:
+
+ - ByteRaster copy constructer faulted due to incorrect size
+ computation for memcpy().
+
+in Version 0.9.3
+----------------
+
+ o Even more significant changes in the file format scripting package. The
+ old approach was getting increasingly unmanageable, and the reliance on
+ magic global constructors for handler registration was proving to be
+ problematic.
+
+ o Added descriptive interface to vector/matrix types to make
+ templates easier to write.
+
+ o Vector templates now handle assignment between vectors of
+ different types (e.g., Vec3 and Vec3f) much more cleanly.
+
+ o New packages to efficiently support symmetric matrix types
+ (e.g., <gfx/symmat3.h>).
+
+ o Added is_inside_bbox() and clamp_to_bbox() to geom3d package.
+
+ o More complete documentation.
+
+ o Bug fixes in various packages:
+
+ - fixed autoconf script to correctly detect headers
+
+ - Raster class now uses delete[] to match its use of new[].
+
+ - Scalar multiplication of vectors under VC++ must now use
+ constants of the same type as the vector elements. This
+ prevents a tricky bug related to the VC++ template
+ instantiation.
+
+
+in Version 0.9.2
+----------------
+
+ o Significant changes to the file format scripting package. All previous
+ global functions are still available for backwards compatibility, but
+ you may need to change the definitions of your command handlers.
+
+ o The interface of the <geom3d> package has changed considerably
+
+ - Changed the triangle_* functions to be inlined templated functions.
+ Before they only worked with Vec3's. Now, they'll work with any
+ TVec3<T> type.
+
+ - Added a templated compute_bbox() function.
+
+ o Camera and object control has changed a bit
+
+ - The camera_lookat() function in the <gltools> package was putting
+ both the perspective and lookAt transformations on the Projection
+ stack. It now correctly puts the perspective on the Projection
+ stack and the lookAt transformation on the ModelView stack.
+
+ - The Arcball and Trackball manipulators now apply all transformations
+ to the object, rather than applying rotation to the object and
+ translation to the camera.
+
+ o Added eigenvalue/eigenvector functions for all matrix types.
+
+ - Because of licensing restrictions, only the 2x2 implementation is
+ actually present, although prototypes exist for all dimensions.
+
+ o Added a restricted STL-like interface to <array> package.
+
+ o Bug fixes in various packages
+
+ - The 2x2 matrix inversion method was incorrect.
+
+ - read_tiff_image() always returned a 3-channel image. It will now
+ return an image with the same number of channels as in the file
+ read.
+
+
+in Version 0.9.1
+---------------
+
+ o Added a new quaternion package <gfx/quat.h>. [currently undocumented]
+
+ o Added Trackball & Arcball interactive rotation control packages. This
+ makes it much easier to write applications where the user interactively
+ spins a model in the window. [currently undocumented]
+
+ o Bug fixes in various packages.
+
+ - Vec3, Vec4 operators for Visual C++ were broken.
+ - Fixed improper deallocation of array2<> and array3<> objects.
+ - camera_lookat() incorrectly computed camera location.
+
+ o Applications built on the MxGUI framework can now receive key
+ press events in the OpenGL canvas area by overriding the key_press()
+ method.
+
+
+in Version 0.9
+-----------
+
+ This was the initial preliminary release for Fall 2000.
diff --git a/debian/fireflies/fireflies-2.08/libgfx/README.txt b/debian/fireflies/fireflies-2.08/libgfx/README.txt
new file mode 100644
index 00000000..cffdc13a
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/README.txt
@@ -0,0 +1,71 @@
+------------------------------------------------------------------------
+
+ libgfx: A Graphics Library
+ Version 1.1.0
+
+ Michael Garland <[email protected]>
+ http://graphics.cs.uiuc.edu/~garland/software/libgfx.html
+
+ Copyright (C) 1999-2005 Michael Garland.
+
+------------------------------------------------------------------------
+
+OVERVIEW
+--------
+
+The purpose of this library is to simplify the creation of computer graphics
+software. Specifically, it is targeted towards cross-platform development
+using the OpenGL rendering API and the FLTK interface toolkit. It attempts to
+provide facilities which are useful in the majority of graphics programs. It
+is derived from the MixKit library I wrote for doing polygonal surface
+simplification (see http://graphics.cs.uiuc.edu/~garland/software/qslim.html).
+
+Instructions on building and using the library can be found in the 'doc'
+subdirectory.
+
+
+
+CURRENT STATUS
+--------------
+
+After having gone through multiple pre-release versions, the first
+official version (1.0) was released in March 2002. The changes made in
+successive 1.0.x series releases were meant primarily to fix bugs and
+add new functionality. The current 1.1.x series of releases makes
+certain incompatible changes to the code, such as moving headers and
+removing support for out-dated mechanisms.
+
+While the license for this library does not require it, I'd like to
+encourage you to contribute bug reports, patches, and whatever
+improvements you might come up with to this library. In that way,
+others can benefit from your efforts, and you can benefit from the
+efforts of others.
+
+
+USAGE TERMS & CONDITIONS
+------------------------
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, and/or sell copies of the Software, and to permit persons
+to whom the Software is furnished to do so, provided that the above
+copyright notice(s) and this permission notice appear in all copies of
+the Software and that both the above copyright notice(s) and this
+permission notice appear in supporting documentation.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder
+shall not be used in advertising or otherwise to promote the sale, use
+or other dealings in this Software without prior written authorization
+of the copyright holder.
diff --git a/debian/fireflies/fireflies-2.08/libgfx/configure b/debian/fireflies/fireflies-2.08/libgfx/configure
new file mode 100755
index 00000000..0f37a1d9
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/configure
@@ -0,0 +1,9653 @@
+#! /bin/sh
+# From configure.in Revision: 1.19 .
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.59.
+#
+# Copyright (C) 2003 Free Software Foundation, Inc.
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## --------------------- ##
+## M4sh Initialization. ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+ set -o posix
+fi
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ as_unset=unset
+else
+ as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+ LC_TELEPHONE LC_TIME
+do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+ $as_unset $as_var
+ fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)$' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+ /^X\/\(\/\/\)$/{ s//\1/; q; }
+ /^X\/\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+
+
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x$as_lineno_3" = "x$as_lineno_2" || {
+ # Find who we are. Look in the path if we contain no path at all
+ # relative or not.
+ case $0 in
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+
+ ;;
+ esac
+ # We did not find ourselves, most probably we were run as `sh COMMAND'
+ # in which case we are not to be found in the path.
+ if test "x$as_myself" = x; then
+ as_myself=$0
+ fi
+ if test ! -f "$as_myself"; then
+ { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
+ { (exit 1); exit 1; }; }
+ fi
+ case $CONFIG_SHELL in
+ '')
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for as_base in sh bash ksh sh5; do
+ case $as_dir in
+ /*)
+ if ("$as_dir/$as_base" -c '
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
+ $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+ $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+ CONFIG_SHELL=$as_dir/$as_base
+ export CONFIG_SHELL
+ exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+ fi;;
+ esac
+ done
+done
+;;
+ esac
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+ # line-number line before each line; the second 'sed' does the real
+ # work. The second script uses 'N' to pair each line-number line
+ # with the numbered line, and appends trailing '-' during
+ # substitution so that $LINENO is not a special case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+ # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
+ sed '=' <$as_myself |
+ sed '
+ N
+ s,$,-,
+ : loop
+ s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+ t loop
+ s,-$,,
+ s,^['$as_cr_digits']*\n,,
+ ' >$as_me.lineno &&
+ chmod +x $as_me.lineno ||
+ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+ { (exit 1); exit 1; }; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensible to this).
+ . ./$as_me.lineno
+ # Exit status is that of the last command.
+ exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+ *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T=' ' ;;
+ *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+ *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+ # We could just check for DJGPP; but this test a) works b) is more generic
+ # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+ if test -f conf$$.exe; then
+ # Don't use ln at all; we don't have any links
+ as_ln_s='cp -p'
+ else
+ as_ln_s='ln -s'
+ fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" $as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+exec 6>&1
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_config_libobj_dir=.
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+# Maximum number of lines to put in a shell here document.
+# This variable seems obsolete. It should probably be removed, and
+# only ac_max_sed_lines should be used.
+: ${ac_max_here_lines=38}
+
+# Identity of this package.
+PACKAGE_NAME=
+PACKAGE_TARNAME=
+PACKAGE_VERSION=
+PACKAGE_STRING=
+PACKAGE_BUGREPORT=
+
+ac_unique_file="include/gfx/gfx.h"
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#if HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#if HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#if STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# if HAVE_STDLIB_H
+# include <stdlib.h>
+# endif
+#endif
+#if HAVE_STRING_H
+# if !STDC_HEADERS && HAVE_MEMORY_H
+# include <memory.h>
+# endif
+# include <string.h>
+#endif
+#if HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#else
+# if HAVE_STDINT_H
+# include <stdint.h>
+# endif
+#endif
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP CXX CXXFLAGS ac_ct_CXX CXXCPP RANLIB ac_ct_RANLIB RM FLTKCONFIG CC_DEPEND CXX_DEPEND IMG_LIBS EGREP X_CFLAGS X_LIBS X_PRE_LIBS X_EXTRA_LIBS X_CORE X_DCORE GL_LIBS FLTK_LIBS ALLOCA LIBOBJS LTLIBOBJS'
+ac_subst_files=''
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datadir='${prefix}/share'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+libdir='${exec_prefix}/lib'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+infodir='${prefix}/info'
+mandir='${prefix}/man'
+
+ac_prev=
+for ac_option
+do
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+ eval "$ac_prev=\$ac_option"
+ ac_prev=
+ continue
+ fi
+
+ ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+ case $ac_option in
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+ bindir=$ac_optarg ;;
+
+ -build | --build | --buil | --bui | --bu)
+ ac_prev=build_alias ;;
+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+ build_alias=$ac_optarg ;;
+
+ -cache-file | --cache-file | --cache-fil | --cache-fi \
+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+ ac_prev=cache_file ;;
+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+ cache_file=$ac_optarg ;;
+
+ --config-cache | -C)
+ cache_file=config.cache ;;
+
+ -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+ ac_prev=datadir ;;
+ -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+ | --da=*)
+ datadir=$ac_optarg ;;
+
+ -disable-* | --disable-*)
+ ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+ { (exit 1); exit 1; }; }
+ ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+ eval "enable_$ac_feature=no" ;;
+
+ -enable-* | --enable-*)
+ ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+ { (exit 1); exit 1; }; }
+ ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+ case $ac_option in
+ *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) ac_optarg=yes ;;
+ esac
+ eval "enable_$ac_feature='$ac_optarg'" ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+ | --exec | --exe | --ex)
+ ac_prev=exec_prefix ;;
+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+ | --exec=* | --exe=* | --ex=*)
+ exec_prefix=$ac_optarg ;;
+
+ -gas | --gas | --ga | --g)
+ # Obsolete; use --with-gas.
+ with_gas=yes ;;
+
+ -help | --help | --hel | --he | -h)
+ ac_init_help=long ;;
+ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+ ac_init_help=recursive ;;
+ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+ ac_init_help=short ;;
+
+ -host | --host | --hos | --ho)
+ ac_prev=host_alias ;;
+ -host=* | --host=* | --hos=* | --ho=*)
+ host_alias=$ac_optarg ;;
+
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+ | --includ=* | --inclu=* | --incl=* | --inc=*)
+ includedir=$ac_optarg ;;
+
+ -infodir | --infodir | --infodi | --infod | --info | --inf)
+ ac_prev=infodir ;;
+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+ infodir=$ac_optarg ;;
+
+ -libdir | --libdir | --libdi | --libd)
+ ac_prev=libdir ;;
+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
+ libdir=$ac_optarg ;;
+
+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+ | --libexe | --libex | --libe)
+ ac_prev=libexecdir ;;
+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir=$ac_optarg ;;
+
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+ | --localstate | --localstat | --localsta | --localst \
+ | --locals | --local | --loca | --loc | --lo)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+ localstatedir=$ac_optarg ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+ ac_prev=mandir ;;
+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+ mandir=$ac_optarg ;;
+
+ -nfp | --nfp | --nf)
+ # Obsolete; use --without-fp.
+ with_fp=no ;;
+
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c | -n)
+ no_create=yes ;;
+
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+ no_recursion=yes ;;
+
+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+ | --oldin | --oldi | --old | --ol | --o)
+ ac_prev=oldincludedir ;;
+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+ oldincludedir=$ac_optarg ;;
+
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+ ac_prev=prefix ;;
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+ prefix=$ac_optarg ;;
+
+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
+ | --program-pre | --program-pr | --program-p)
+ ac_prev=program_prefix ;;
+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+ program_prefix=$ac_optarg ;;
+
+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
+ | --program-suf | --program-su | --program-s)
+ ac_prev=program_suffix ;;
+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+ program_suffix=$ac_optarg ;;
+
+ -program-transform-name | --program-transform-name \
+ | --program-transform-nam | --program-transform-na \
+ | --program-transform-n | --program-transform- \
+ | --program-transform | --program-transfor \
+ | --program-transfo | --program-transf \
+ | --program-trans | --program-tran \
+ | --progr-tra | --program-tr | --program-t)
+ ac_prev=program_transform_name ;;
+ -program-transform-name=* | --program-transform-name=* \
+ | --program-transform-nam=* | --program-transform-na=* \
+ | --program-transform-n=* | --program-transform-=* \
+ | --program-transform=* | --program-transfor=* \
+ | --program-transfo=* | --program-transf=* \
+ | --program-trans=* | --program-tran=* \
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name=$ac_optarg ;;
+
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+
+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+ ac_prev=sbindir ;;
+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+ | --sbi=* | --sb=*)
+ sbindir=$ac_optarg ;;
+
+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+ | --sharedst | --shareds | --shared | --share | --shar \
+ | --sha | --sh)
+ ac_prev=sharedstatedir ;;
+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+ | --sha=* | --sh=*)
+ sharedstatedir=$ac_optarg ;;
+
+ -site | --site | --sit)
+ ac_prev=site ;;
+ -site=* | --site=* | --sit=*)
+ site=$ac_optarg ;;
+
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+ ac_prev=srcdir ;;
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+ srcdir=$ac_optarg ;;
+
+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+ | --syscon | --sysco | --sysc | --sys | --sy)
+ ac_prev=sysconfdir ;;
+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+ sysconfdir=$ac_optarg ;;
+
+ -target | --target | --targe | --targ | --tar | --ta | --t)
+ ac_prev=target_alias ;;
+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+ target_alias=$ac_optarg ;;
+
+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
+ verbose=yes ;;
+
+ -version | --version | --versio | --versi | --vers | -V)
+ ac_init_version=: ;;
+
+ -with-* | --with-*)
+ ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid package name: $ac_package" >&2
+ { (exit 1); exit 1; }; }
+ ac_package=`echo $ac_package| sed 's/-/_/g'`
+ case $ac_option in
+ *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) ac_optarg=yes ;;
+ esac
+ eval "with_$ac_package='$ac_optarg'" ;;
+
+ -without-* | --without-*)
+ ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid package name: $ac_package" >&2
+ { (exit 1); exit 1; }; }
+ ac_package=`echo $ac_package | sed 's/-/_/g'`
+ eval "with_$ac_package=no" ;;
+
+ --x)
+ # Obsolete; use --with-x.
+ with_x=yes ;;
+
+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+ | --x-incl | --x-inc | --x-in | --x-i)
+ ac_prev=x_includes ;;
+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+ x_includes=$ac_optarg ;;
+
+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+ ac_prev=x_libraries ;;
+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+ x_libraries=$ac_optarg ;;
+
+ -*) { echo "$as_me: error: unrecognized option: $ac_option
+Try \`$0 --help' for more information." >&2
+ { (exit 1); exit 1; }; }
+ ;;
+
+ *=*)
+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+ { (exit 1); exit 1; }; }
+ ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
+ eval "$ac_envvar='$ac_optarg'"
+ export $ac_envvar ;;
+
+ *)
+ # FIXME: should be removed in autoconf 3.0.
+ echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+ ;;
+
+ esac
+done
+
+if test -n "$ac_prev"; then
+ ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+ { echo "$as_me: error: missing argument to $ac_option" >&2
+ { (exit 1); exit 1; }; }
+fi
+
+# Be sure to have absolute paths.
+for ac_var in exec_prefix prefix
+do
+ eval ac_val=$`echo $ac_var`
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
+ *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+ { (exit 1); exit 1; }; };;
+ esac
+done
+
+# Be sure to have absolute paths.
+for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
+ localstatedir libdir includedir oldincludedir infodir mandir
+do
+ eval ac_val=$`echo $ac_var`
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* ) ;;
+ *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+ { (exit 1); exit 1; }; };;
+ esac
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+ if test "x$build_alias" = x; then
+ cross_compiling=maybe
+ echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+ If a cross compiler is detected then cross compile mode will be used." >&2
+ elif test "x$build_alias" != "x$host_alias"; then
+ cross_compiling=yes
+ fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+ # Try the directory containing this script, then its parent.
+ ac_confdir=`(dirname "$0") 2>/dev/null ||
+$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$0" : 'X\(//\)[^/]' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$0" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ srcdir=$ac_confdir
+ if test ! -r $srcdir/$ac_unique_file; then
+ srcdir=..
+ fi
+else
+ ac_srcdir_defaulted=no
+fi
+if test ! -r $srcdir/$ac_unique_file; then
+ if test "$ac_srcdir_defaulted" = yes; then
+ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
+ { (exit 1); exit 1; }; }
+ else
+ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+ { (exit 1); exit 1; }; }
+ fi
+fi
+(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||
+ { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
+ { (exit 1); exit 1; }; }
+srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
+ac_env_build_alias_set=${build_alias+set}
+ac_env_build_alias_value=$build_alias
+ac_cv_env_build_alias_set=${build_alias+set}
+ac_cv_env_build_alias_value=$build_alias
+ac_env_host_alias_set=${host_alias+set}
+ac_env_host_alias_value=$host_alias
+ac_cv_env_host_alias_set=${host_alias+set}
+ac_cv_env_host_alias_value=$host_alias
+ac_env_target_alias_set=${target_alias+set}
+ac_env_target_alias_value=$target_alias
+ac_cv_env_target_alias_set=${target_alias+set}
+ac_cv_env_target_alias_value=$target_alias
+ac_env_CC_set=${CC+set}
+ac_env_CC_value=$CC
+ac_cv_env_CC_set=${CC+set}
+ac_cv_env_CC_value=$CC
+ac_env_CFLAGS_set=${CFLAGS+set}
+ac_env_CFLAGS_value=$CFLAGS
+ac_cv_env_CFLAGS_set=${CFLAGS+set}
+ac_cv_env_CFLAGS_value=$CFLAGS
+ac_env_LDFLAGS_set=${LDFLAGS+set}
+ac_env_LDFLAGS_value=$LDFLAGS
+ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
+ac_cv_env_LDFLAGS_value=$LDFLAGS
+ac_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_env_CPPFLAGS_value=$CPPFLAGS
+ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_cv_env_CPPFLAGS_value=$CPPFLAGS
+ac_env_CPP_set=${CPP+set}
+ac_env_CPP_value=$CPP
+ac_cv_env_CPP_set=${CPP+set}
+ac_cv_env_CPP_value=$CPP
+ac_env_CXX_set=${CXX+set}
+ac_env_CXX_value=$CXX
+ac_cv_env_CXX_set=${CXX+set}
+ac_cv_env_CXX_value=$CXX
+ac_env_CXXFLAGS_set=${CXXFLAGS+set}
+ac_env_CXXFLAGS_value=$CXXFLAGS
+ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set}
+ac_cv_env_CXXFLAGS_value=$CXXFLAGS
+ac_env_CXXCPP_set=${CXXCPP+set}
+ac_env_CXXCPP_value=$CXXCPP
+ac_cv_env_CXXCPP_set=${CXXCPP+set}
+ac_cv_env_CXXCPP_value=$CXXCPP
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+ # Omit some internal or obsolete options to make the list less imposing.
+ # This message is too long to be a string in the A/UX 3.1 sh.
+ cat <<_ACEOF
+\`configure' configures this package to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE. See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+ -h, --help display this help and exit
+ --help=short display options specific to this package
+ --help=recursive display the short help of all the included packages
+ -V, --version display version information and exit
+ -q, --quiet, --silent do not print \`checking...' messages
+ --cache-file=FILE cache test results in FILE [disabled]
+ -C, --config-cache alias for \`--cache-file=config.cache'
+ -n, --no-create do not create output files
+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
+
+_ACEOF
+
+ cat <<_ACEOF
+Installation directories:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
+ [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+ --bindir=DIR user executables [EPREFIX/bin]
+ --sbindir=DIR system admin executables [EPREFIX/sbin]
+ --libexecdir=DIR program executables [EPREFIX/libexec]
+ --datadir=DIR read-only architecture-independent data [PREFIX/share]
+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+ --infodir=DIR info documentation [PREFIX/info]
+ --mandir=DIR man documentation [PREFIX/man]
+_ACEOF
+
+ cat <<\_ACEOF
+
+X features:
+ --x-includes=DIR X include files are in DIR
+ --x-libraries=DIR X library files are in DIR
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+
+ cat <<\_ACEOF
+
+Optional Features:
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --enable-gzstream Allow for automatic (de)compression
+ --disable-warnings Disable GCC warning (default to on)
+ --enable-cygwin Use the Cygwin libraries (default=yes)
+
+Optional Packages:
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+ --with-libtiff-lzw Use the libtiff LZW compression kit
+ --with-local=DIR Use libraries in DIR (default /usr/local)
+ --with-x use the X Window System
+
+Some influential environment variables:
+ CC C compiler command
+ CFLAGS C compiler flags
+ LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
+ nonstandard directory <lib dir>
+ CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
+ headers in a nonstandard directory <include dir>
+ CPP C preprocessor
+ CXX C++ compiler command
+ CXXFLAGS C++ compiler flags
+ CXXCPP C++ preprocessor
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+_ACEOF
+fi
+
+if test "$ac_init_help" = "recursive"; then
+ # If there are subdirs, report their specific --help.
+ ac_popdir=`pwd`
+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+ test -d $ac_dir || continue
+ ac_builddir=.
+
+if test "$ac_dir" != .; then
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+ # A "../" for each directory in $ac_dir_suffix.
+ ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+ ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+ .) # No --srcdir option. We are building in place.
+ ac_srcdir=.
+ if test -z "$ac_top_builddir"; then
+ ac_top_srcdir=.
+ else
+ ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+ fi ;;
+ [\\/]* | ?:[\\/]* ) # Absolute path.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir ;;
+ *) # Relative path.
+ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+ case "$ac_dir" in
+ .) ac_abs_builddir=`pwd`;;
+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+ *) ac_abs_builddir=`pwd`/"$ac_dir";;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+ case ${ac_top_builddir}. in
+ .) ac_abs_top_builddir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+ case $ac_srcdir in
+ .) ac_abs_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+ case $ac_top_srcdir in
+ .) ac_abs_top_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+ esac;;
+esac
+
+ cd $ac_dir
+ # Check for guested configure; otherwise get Cygnus style configure.
+ if test -f $ac_srcdir/configure.gnu; then
+ echo
+ $SHELL $ac_srcdir/configure.gnu --help=recursive
+ elif test -f $ac_srcdir/configure; then
+ echo
+ $SHELL $ac_srcdir/configure --help=recursive
+ elif test -f $ac_srcdir/configure.ac ||
+ test -f $ac_srcdir/configure.in; then
+ echo
+ $ac_configure --help
+ else
+ echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ fi
+ cd $ac_popdir
+ done
+fi
+
+test -n "$ac_init_help" && exit 0
+if $ac_init_version; then
+ cat <<\_ACEOF
+
+Copyright (C) 2003 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+ exit 0
+fi
+exec 5>config.log
+cat >&5 <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by $as_me, which was
+generated by GNU Autoconf 2.59. Invocation command line was
+
+ $ $0 $@
+
+_ACEOF
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
+
+/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+hostinfo = `(hostinfo) 2>/dev/null || echo unknown`
+/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
+/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ echo "PATH: $as_dir"
+done
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_sep=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+ for ac_arg
+ do
+ case $ac_arg in
+ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ continue ;;
+ *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+ ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ case $ac_pass in
+ 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
+ 2)
+ ac_configure_args1="$ac_configure_args1 '$ac_arg'"
+ if test $ac_must_keep_next = true; then
+ ac_must_keep_next=false # Got value, back to normal.
+ else
+ case $ac_arg in
+ *=* | --config-cache | -C | -disable-* | --disable-* \
+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+ | -with-* | --with-* | -without-* | --without-* | --x)
+ case "$ac_configure_args0 " in
+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+ esac
+ ;;
+ -* ) ac_must_keep_next=true ;;
+ esac
+ fi
+ ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
+ # Get rid of the leading space.
+ ac_sep=" "
+ ;;
+ esac
+ done
+done
+$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
+$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log. We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Be sure not to use single quotes in there, as some shells,
+# such as our DU 5.0 friend, will then `close' the trap.
+trap 'exit_status=$?
+ # Save into config.log some information that might help in debugging.
+ {
+ echo
+
+ cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+{
+ (set) 2>&1 |
+ case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
+ *ac_space=\ *)
+ sed -n \
+ "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
+ ;;
+ *)
+ sed -n \
+ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+ ;;
+ esac;
+}
+ echo
+
+ cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+ echo
+ for ac_var in $ac_subst_vars
+ do
+ eval ac_val=$`echo $ac_var`
+ echo "$ac_var='"'"'$ac_val'"'"'"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ cat <<\_ASBOX
+## ------------- ##
+## Output files. ##
+## ------------- ##
+_ASBOX
+ echo
+ for ac_var in $ac_subst_files
+ do
+ eval ac_val=$`echo $ac_var`
+ echo "$ac_var='"'"'$ac_val'"'"'"
+ done | sort
+ echo
+ fi
+
+ if test -s confdefs.h; then
+ cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+ echo
+ sed "/^$/d" confdefs.h | sort
+ echo
+ fi
+ test "$ac_signal" != 0 &&
+ echo "$as_me: caught signal $ac_signal"
+ echo "$as_me: exit $exit_status"
+ } >&5
+ rm -f core *.core &&
+ rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+ ' 0
+for ac_signal in 1 2 13 15; do
+ trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -rf conftest* confdefs.h
+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+echo >confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer explicitly selected file to automatically selected ones.
+if test -z "$CONFIG_SITE"; then
+ if test "x$prefix" != xNONE; then
+ CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
+ else
+ CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+ fi
+fi
+for ac_site_file in $CONFIG_SITE; do
+ if test -r "$ac_site_file"; then
+ { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+echo "$as_me: loading site script $ac_site_file" >&6;}
+ sed 's/^/| /' "$ac_site_file" >&5
+ . "$ac_site_file"
+ fi
+done
+
+if test -r "$cache_file"; then
+ # Some versions of bash will fail to source /dev/null (special
+ # files actually), so we avoid doing that.
+ if test -f "$cache_file"; then
+ { echo "$as_me:$LINENO: loading cache $cache_file" >&5
+echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+ [\\/]* | ?:[\\/]* ) . $cache_file;;
+ *) . ./$cache_file;;
+ esac
+ fi
+else
+ { echo "$as_me:$LINENO: creating cache $cache_file" >&5
+echo "$as_me: creating cache $cache_file" >&6;}
+ >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in `(set) 2>&1 |
+ sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
+ eval ac_new_set=\$ac_env_${ac_var}_set
+ eval ac_old_val="\$ac_cv_env_${ac_var}_value"
+ eval ac_new_val="\$ac_env_${ac_var}_value"
+ case $ac_old_set,$ac_new_set in
+ set,)
+ { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,set)
+ { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,);;
+ *)
+ if test "x$ac_old_val" != "x$ac_new_val"; then
+ { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ { echo "$as_me:$LINENO: former value: $ac_old_val" >&5
+echo "$as_me: former value: $ac_old_val" >&2;}
+ { echo "$as_me:$LINENO: current value: $ac_new_val" >&5
+echo "$as_me: current value: $ac_new_val" >&2;}
+ ac_cache_corrupted=:
+ fi;;
+ esac
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+ *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+ ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
+ *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+ esac
+ fi
+done
+if $ac_cache_corrupted; then
+ { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+ { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ac_config_headers="$ac_config_headers include/gfx/config.h"
+
+
+sys=`uname`
+
+
+
+# Check whether --with-libtiff-lzw or --without-libtiff-lzw was given.
+if test "${with_libtiff_lzw+set}" = set; then
+ withval="$with_libtiff_lzw"
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_LIBTIFF_LZW 1
+_ACEOF
+
+fi;
+
+
+# Check whether --with-local or --without-local was given.
+if test "${with_local+set}" = set; then
+ withval="$with_local"
+ if test $withval = "yes"; then withval="/usr/local"; fi
+ CPPFLAGS="-I${withval}/include"
+ LDFLAGS="-L${withval}/lib"
+fi;
+
+# Check whether --enable-gzstream or --disable-gzstream was given.
+if test "${enable_gzstream+set}" = set; then
+ enableval="$enable_gzstream"
+
+fi;
+
+if test "$enable_gzstream" = "yes"; then
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_GZSTREAM 1
+_ACEOF
+
+fi
+
+# Check whether --enable-warnings or --disable-warnings was given.
+if test "${enable_warnings+set}" = set; then
+ enableval="$enable_warnings"
+
+else
+ enable_warnings="yes"
+fi;
+
+case $sys in
+ CYGWIN*|cygwin*)
+ # Check whether --enable-cygwin or --disable-cygwin was given.
+if test "${enable_cygwin+set}" = set; then
+ enableval="$enable_cygwin"
+
+fi;
+
+ if test "$enable_cygwin" = "no"; then
+ CFLAGS="$CFLAGS -mno-cygwin"
+ CPPFLAGS="$CPPFLAGS -mno-cygwin"
+ CXXFLAGS="$CXXFLAGS -mno-cygwin"
+ fi
+ ;;
+esac
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ CC=$ac_ct_CC
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="cc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ CC=$ac_ct_CC
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+fi
+if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+ fi
+ ac_cv_prog_CC="cc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_CC
+ shift
+ if test $# != 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set CC to just the basename; use the full file name.
+ shift
+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+ fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in cl
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$CC" && break
+ done
+fi
+if test -z "$CC"; then
+ ac_ct_CC=$CC
+ for ac_prog in cl
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$ac_ct_CC" && break
+done
+
+ CC=$ac_ct_CC
+fi
+
+fi
+
+
+test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&5
+echo "$as_me: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+
+# Provide some information about the compiler.
+echo "$as_me:$LINENO:" \
+ "checking for C compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+ (eval $ac_compiler --version </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+ (eval $ac_compiler -v </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+ (eval $ac_compiler -V </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
+echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6
+ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5
+ (eval $ac_link_default) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ # Find the output, starting from the most likely. This scheme is
+# not robust to junk in `.', hence go to wildcards (a.*) only as a last
+# resort.
+
+# Be careful to initialize this variable, since it used to be cached.
+# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile.
+ac_cv_exeext=
+# b.out is created by i960 compilers.
+for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out
+do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj )
+ ;;
+ conftest.$ac_ext )
+ # This is the source file.
+ ;;
+ [ab].out )
+ # We found the default executable, but exeext='' is most
+ # certainly right.
+ break;;
+ *.* )
+ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ # FIXME: I believe we export ac_cv_exeext for Libtool,
+ # but it would be cool to find out if it's true. Does anybody
+ # maintain Libtool? --akim.
+ export ac_cv_exeext
+ break;;
+ * )
+ break;;
+ esac
+done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { echo "$as_me:$LINENO: error: C compiler cannot create executables
+See \`config.log' for more details." >&5
+echo "$as_me: error: C compiler cannot create executables
+See \`config.log' for more details." >&2;}
+ { (exit 77); exit 77; }; }
+fi
+
+ac_exeext=$ac_cv_exeext
+echo "$as_me:$LINENO: result: $ac_file" >&5
+echo "${ECHO_T}$ac_file" >&6
+
+# Check the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:$LINENO: checking whether the C compiler works" >&5
+echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
+# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
+# If not cross compiling, check that we can run a simple program.
+if test "$cross_compiling" != yes; then
+ if { ac_try='./$ac_file'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cross_compiling=no
+ else
+ if test "$cross_compiling" = maybe; then
+ cross_compiling=yes
+ else
+ { { echo "$as_me:$LINENO: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+ fi
+fi
+echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+rm -f a.out a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+# Check the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
+echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $cross_compiling" >&5
+echo "${ECHO_T}$cross_compiling" >&6
+
+echo "$as_me:$LINENO: checking for suffix of executables" >&5
+echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ export ac_cv_exeext
+ break;;
+ * ) break;;
+ esac
+done
+else
+ { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest$ac_cv_exeext
+echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+echo "${ECHO_T}$ac_cv_exeext" >&6
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+echo "$as_me:$LINENO: checking for suffix of object files" >&5
+echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6
+if test "${ac_cv_objext+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+echo "${ECHO_T}$ac_cv_objext" >&6
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
+if test "${ac_cv_c_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_compiler_gnu=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
+GCC=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+CFLAGS="-g"
+echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_prog_cc_g=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_cc_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
+if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-g"
+ fi
+else
+ if test "$GCC" = yes; then
+ CFLAGS="-O2"
+ else
+ CFLAGS=
+ fi
+fi
+echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
+echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_stdc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_prog_cc_stdc=no
+ac_save_CC=$CC
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+ char **p;
+ int i;
+{
+ return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+ char *s;
+ va_list v;
+ va_start (v,p);
+ s = g (p, va_arg (v,int));
+ va_end (v);
+ return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+ as 'x'. The following induces an error, until -std1 is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+ that's true only with -std1. */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
+ ;
+ return 0;
+}
+_ACEOF
+# Don't try gcc -ansi; that turns off useful extensions and
+# breaks some systems' header files.
+# AIX -qlanglvl=ansi
+# Ultrix and OSF/1 -std1
+# HP-UX 10.20 and later -Ae
+# HP-UX older versions -Aa -D_HPUX_SOURCE
+# SVR4 -Xc -D__EXTENSIONS__
+for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+ CC="$ac_save_CC $ac_arg"
+ rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_prog_cc_stdc=$ac_arg
+break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext
+done
+rm -f conftest.$ac_ext conftest.$ac_objext
+CC=$ac_save_CC
+
+fi
+
+case "x$ac_cv_prog_cc_stdc" in
+ x|xno)
+ echo "$as_me:$LINENO: result: none needed" >&5
+echo "${ECHO_T}none needed" >&6 ;;
+ *)
+ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
+ CC="$CC $ac_cv_prog_cc_stdc" ;;
+esac
+
+# Some people use a C++ compiler to compile C. Since we use `exit',
+# in C++ we need to declare it. In case someone uses the same compiler
+# for both compiling C and C++ we need to have the C++ compiler decide
+# the declaration of exit, since it's the most demanding environment.
+cat >conftest.$ac_ext <<_ACEOF
+#ifndef __cplusplus
+ choke me
+#endif
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ for ac_declaration in \
+ '' \
+ 'extern "C" void std::exit (int) throw (); using std::exit;' \
+ 'extern "C" void std::exit (int); using std::exit;' \
+ 'extern "C" void exit (int) throw ();' \
+ 'extern "C" void exit (int);' \
+ 'void exit (int);'
+do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_declaration
+#include <stdlib.h>
+int
+main ()
+{
+exit (42);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+continue
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_declaration
+int
+main ()
+{
+exit (42);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+rm -f conftest*
+if test -n "$ac_declaration"; then
+ echo '#ifdef __cplusplus' >>confdefs.h
+ echo $ac_declaration >>confdefs.h
+ echo '#endif' >>confdefs.h
+fi
+
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
+echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+fi
+if test -z "$CPP"; then
+ if test "${ac_cv_prog_CPP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ # Double quotes because CPP needs to be expanded
+ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+ do
+ ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ # Broken: success on invalid input.
+continue
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+ break
+fi
+
+ done
+ ac_cv_prog_CPP=$CPP
+
+fi
+ CPP=$ac_cv_prog_CPP
+else
+ ac_cv_prog_CPP=$CPP
+fi
+echo "$as_me:$LINENO: result: $CPP" >&5
+echo "${ECHO_T}$CPP" >&6
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ # Broken: success on invalid input.
+continue
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+ :
+else
+ { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&5
+echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CXX"; then
+ ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+ echo "$as_me:$LINENO: result: $CXX" >&5
+echo "${ECHO_T}$CXX" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$CXX" && break
+ done
+fi
+if test -z "$CXX"; then
+ ac_ct_CXX=$CXX
+ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_CXX"; then
+ ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CXX="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+ echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
+echo "${ECHO_T}$ac_ct_CXX" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$ac_ct_CXX" && break
+done
+test -n "$ac_ct_CXX" || ac_ct_CXX="g++"
+
+ CXX=$ac_ct_CXX
+fi
+
+
+# Provide some information about the compiler.
+echo "$as_me:$LINENO:" \
+ "checking for C++ compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+ (eval $ac_compiler --version </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+ (eval $ac_compiler -v </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+ (eval $ac_compiler -V </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+
+echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6
+if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_compiler_gnu=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6
+GXX=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+CXXFLAGS="-g"
+echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
+echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_cxx_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_prog_cxx_g=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_cxx_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6
+if test "$ac_test_CXXFLAGS" = set; then
+ CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+ if test "$GXX" = yes; then
+ CXXFLAGS="-g -O2"
+ else
+ CXXFLAGS="-g"
+ fi
+else
+ if test "$GXX" = yes; then
+ CXXFLAGS="-O2"
+ else
+ CXXFLAGS=
+ fi
+fi
+for ac_declaration in \
+ '' \
+ 'extern "C" void std::exit (int) throw (); using std::exit;' \
+ 'extern "C" void std::exit (int); using std::exit;' \
+ 'extern "C" void exit (int) throw ();' \
+ 'extern "C" void exit (int);' \
+ 'void exit (int);'
+do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_declaration
+#include <stdlib.h>
+int
+main ()
+{
+exit (42);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+continue
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_declaration
+int
+main ()
+{
+exit (42);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+rm -f conftest*
+if test -n "$ac_declaration"; then
+ echo '#ifdef __cplusplus' >>confdefs.h
+ echo $ac_declaration >>confdefs.h
+ echo '#endif' >>confdefs.h
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5
+echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6
+if test -z "$CXXCPP"; then
+ if test "${ac_cv_prog_CXXCPP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ # Double quotes because CXXCPP needs to be expanded
+ for CXXCPP in "$CXX -E" "/lib/cpp"
+ do
+ ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ # Broken: success on invalid input.
+continue
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+ break
+fi
+
+ done
+ ac_cv_prog_CXXCPP=$CXXCPP
+
+fi
+ CXXCPP=$ac_cv_prog_CXXCPP
+else
+ ac_cv_prog_CXXCPP=$CXXCPP
+fi
+echo "$as_me:$LINENO: result: $CXXCPP" >&5
+echo "${ECHO_T}$CXXCPP" >&6
+ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ # Broken: success on invalid input.
+continue
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+ :
+else
+ { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details." >&5
+echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$RANLIB"; then
+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+ echo "$as_me:$LINENO: result: $RANLIB" >&5
+echo "${ECHO_T}$RANLIB" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+ ac_ct_RANLIB=$RANLIB
+ # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_RANLIB"; then
+ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_RANLIB="ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+ echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+echo "${ECHO_T}$ac_ct_RANLIB" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ RANLIB=$ac_ct_RANLIB
+else
+ RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+# Extract the first word of "rm", so it can be a program name with args.
+set dummy rm; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_RM+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $RM in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_RM="$RM" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_RM="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ ;;
+esac
+fi
+RM=$ac_cv_path_RM
+
+if test -n "$RM"; then
+ echo "$as_me:$LINENO: result: $RM" >&5
+echo "${ECHO_T}$RM" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+# Extract the first word of "fltk-config", so it can be a program name with args.
+set dummy fltk-config; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_FLTKCONFIG+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$FLTKCONFIG"; then
+ ac_cv_prog_FLTKCONFIG="$FLTKCONFIG" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_FLTKCONFIG="fltk-config"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_prog_FLTKCONFIG" && ac_cv_prog_FLTKCONFIG=":"
+fi
+fi
+FLTKCONFIG=$ac_cv_prog_FLTKCONFIG
+if test -n "$FLTKCONFIG"; then
+ echo "$as_me:$LINENO: result: $FLTKCONFIG" >&5
+echo "${ECHO_T}$FLTKCONFIG" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+
+if test $GCC = "yes"; then
+ CC_DEPEND="\$(CC) -M"
+ CXX_DEPEND="\$(CXX) -M"
+else
+ CC_DEPEND="makedepend"
+ CXX_DEPEND="makedepend"
+fi
+
+
+
+
+if test $GCC = "yes" -a "$enable_warnings" = "yes"; then
+ warning="-Wall -Wno-sign-compare"
+ CPPFLAGS="$CPPFLAGS $warning"
+fi
+
+
+
+
+echo "$as_me:$LINENO: checking for sqrt in -lm" >&5
+echo $ECHO_N "checking for sqrt in -lm... $ECHO_C" >&6
+if test "${ac_cv_lib_m_sqrt+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char sqrt ();
+int
+main ()
+{
+sqrt ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_m_sqrt=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_m_sqrt=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_m_sqrt" >&5
+echo "${ECHO_T}$ac_cv_lib_m_sqrt" >&6
+if test $ac_cv_lib_m_sqrt = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBM 1
+_ACEOF
+
+ LIBS="-lm $LIBS"
+
+fi
+
+
+BASE_LIBS=${LIBS}
+BASE_CFLAGS=${CFLAGS}
+BASE_CXXFLAGS=${CXXFLAGS}
+BASE_LDFLAGS=${LDFLAGS}
+
+IMG_LIBS=""
+
+
+
+
+echo "$as_me:$LINENO: checking for zlibVersion in -lz" >&5
+echo $ECHO_N "checking for zlibVersion in -lz... $ECHO_C" >&6
+if test "${ac_cv_lib_z_zlibVersion+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lz $IMG_LIBS $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char zlibVersion ();
+int
+main ()
+{
+zlibVersion ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_z_zlibVersion=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_z_zlibVersion=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_z_zlibVersion" >&5
+echo "${ECHO_T}$ac_cv_lib_z_zlibVersion" >&6
+if test $ac_cv_lib_z_zlibVersion = yes; then
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_LIBZ 1
+_ACEOF
+ \
+ IMG_LIBS="$IMG_LIBS -lz"
+fi
+
+
+echo "$as_me:$LINENO: checking for jpeg_start_compress in -ljpeg" >&5
+echo $ECHO_N "checking for jpeg_start_compress in -ljpeg... $ECHO_C" >&6
+if test "${ac_cv_lib_jpeg_jpeg_start_compress+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ljpeg $IMG_LIBS $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char jpeg_start_compress ();
+int
+main ()
+{
+jpeg_start_compress ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_jpeg_jpeg_start_compress=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_jpeg_jpeg_start_compress=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_jpeg_jpeg_start_compress" >&5
+echo "${ECHO_T}$ac_cv_lib_jpeg_jpeg_start_compress" >&6
+if test $ac_cv_lib_jpeg_jpeg_start_compress = yes; then
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_LIBJPEG 1
+_ACEOF
+ \
+ IMG_LIBS="$IMG_LIBS -ljpeg"
+fi
+
+
+echo "$as_me:$LINENO: checking for TIFFOpen in -ltiff" >&5
+echo $ECHO_N "checking for TIFFOpen in -ltiff... $ECHO_C" >&6
+if test "${ac_cv_lib_tiff_TIFFOpen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ltiff $IMG_LIBS $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char TIFFOpen ();
+int
+main ()
+{
+TIFFOpen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_tiff_TIFFOpen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_tiff_TIFFOpen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_tiff_TIFFOpen" >&5
+echo "${ECHO_T}$ac_cv_lib_tiff_TIFFOpen" >&6
+if test $ac_cv_lib_tiff_TIFFOpen = yes; then
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_LIBTIFF 1
+_ACEOF
+ \
+ IMG_LIBS="$IMG_LIBS -ltiff"
+fi
+
+
+echo "$as_me:$LINENO: checking for png_read_image in -lpng" >&5
+echo $ECHO_N "checking for png_read_image in -lpng... $ECHO_C" >&6
+if test "${ac_cv_lib_png_png_read_image+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpng $IMG_LIBS $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char png_read_image ();
+int
+main ()
+{
+png_read_image ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_png_png_read_image=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_png_png_read_image=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_png_png_read_image" >&5
+echo "${ECHO_T}$ac_cv_lib_png_png_read_image" >&6
+if test $ac_cv_lib_png_png_read_image = yes; then
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_LIBPNG 1
+_ACEOF
+ \
+ IMG_LIBS="$IMG_LIBS -lpng"
+fi
+
+
+
+
+echo "$as_me:$LINENO: checking for egrep" >&5
+echo $ECHO_N "checking for egrep... $ECHO_C" >&6
+if test "${ac_cv_prog_egrep+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+ then ac_cv_prog_egrep='grep -E'
+ else ac_cv_prog_egrep='egrep'
+ fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
+echo "${ECHO_T}$ac_cv_prog_egrep" >&6
+ EGREP=$ac_cv_prog_egrep
+
+
+echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+if test "${ac_cv_header_stdc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_header_stdc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_header_stdc=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "memchr" >/dev/null 2>&1; then
+ :
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "free" >/dev/null 2>&1; then
+ :
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+ if test "$cross_compiling" = yes; then
+ :
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ctype.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+ (('a' <= (c) && (c) <= 'i') \
+ || ('j' <= (c) && (c) <= 'r') \
+ || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+ int i;
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+ exit(2);
+ exit (0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_header_stdc=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+echo "${ECHO_T}$ac_cv_header_stdc" >&6
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STDC_HEADERS 1
+_ACEOF
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+
+
+
+
+
+
+
+
+
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+ inttypes.h stdint.h unistd.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_Header=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_Header=no"
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+for ac_header in GL/gl.h OpenGL/gl.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists. ##
+## ------------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+ break
+fi
+
+done
+
+
+
+for ac_header in GL/glu.h OpenGL/glu.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists. ##
+## ------------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+ break
+fi
+
+done
+
+
+
+
+
+
+for ac_header in GL/glext.h GL/glxext.h GL/wglext.h OpenGL/glext.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#if HAVE_GL_GL_H
+ #include <GL/gl.h>
+ #elif HAVE_OPENGL_GL_H
+ #include <OpenGL/gl.h>
+ #endif
+
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_Header=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_Header=no"
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+case $sys in
+
+Darwin*)
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_OPENGL "OpenGL"
+_ACEOF
+
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_POLYOFFSET 1
+_ACEOF
+
+ GL_LIBS="-framework AGL -framework OpenGL"
+ X_CORE="-framework Carbon -framework ApplicationServices"
+ X_DCORE="$X_CORE"
+ X_PRE_LIBS=""
+ X_EXTRA_LIBS=""
+
+
+
+
+
+ ;;
+
+CYGWIN*|cygwin*)
+ CPPFLAGS="${CPPFLAGS} -DWIN32"
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_OPENGL "OpenGL"
+_ACEOF
+
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_POLYOFFSET 1
+_ACEOF
+
+ GL_LIBS="-lopengl32 -lglu32"
+ X_DCORE="-lkernel32 -luser32 -lgdi32 -lcomdlg32 -lole32 -luuid -lcomctl32 -lwsock32"
+ X_CORE="-mwindows -lole32 -luuid -lcomctl32 -lwsock32"
+
+ X_PRE_LIBS=""
+ X_EXTRA_LIBS=""
+
+
+
+
+
+ ;;
+
+*)
+ echo "$as_me:$LINENO: checking for X" >&5
+echo $ECHO_N "checking for X... $ECHO_C" >&6
+
+
+# Check whether --with-x or --without-x was given.
+if test "${with_x+set}" = set; then
+ withval="$with_x"
+
+fi;
+# $have_x is `yes', `no', `disabled', or empty when we do not yet know.
+if test "x$with_x" = xno; then
+ # The user explicitly disabled X.
+ have_x=disabled
+else
+ if test "x$x_includes" != xNONE && test "x$x_libraries" != xNONE; then
+ # Both variables are already set.
+ have_x=yes
+ else
+ if test "${ac_cv_have_x+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ # One or both of the vars are not set, and there is no cached value.
+ac_x_includes=no ac_x_libraries=no
+rm -fr conftest.dir
+if mkdir conftest.dir; then
+ cd conftest.dir
+ # Make sure to not put "make" in the Imakefile rules, since we grep it out.
+ cat >Imakefile <<'_ACEOF'
+acfindx:
+ @echo 'ac_im_incroot="${INCROOT}"; ac_im_usrlibdir="${USRLIBDIR}"; ac_im_libdir="${LIBDIR}"'
+_ACEOF
+ if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
+ # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+ eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
+ # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR.
+ for ac_extension in a so sl; do
+ if test ! -f $ac_im_usrlibdir/libX11.$ac_extension &&
+ test -f $ac_im_libdir/libX11.$ac_extension; then
+ ac_im_usrlibdir=$ac_im_libdir; break
+ fi
+ done
+ # Screen out bogus values from the imake configuration. They are
+ # bogus both because they are the default anyway, and because
+ # using them would break gcc on systems where it needs fixed includes.
+ case $ac_im_incroot in
+ /usr/include) ;;
+ *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;;
+ esac
+ case $ac_im_usrlibdir in
+ /usr/lib | /lib) ;;
+ *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;;
+ esac
+ fi
+ cd ..
+ rm -fr conftest.dir
+fi
+
+# Standard set of common directories for X headers.
+# Check X11 before X11Rn because it is often a symlink to the current release.
+ac_x_header_dirs='
+/usr/X11/include
+/usr/X11R6/include
+/usr/X11R5/include
+/usr/X11R4/include
+
+/usr/include/X11
+/usr/include/X11R6
+/usr/include/X11R5
+/usr/include/X11R4
+
+/usr/local/X11/include
+/usr/local/X11R6/include
+/usr/local/X11R5/include
+/usr/local/X11R4/include
+
+/usr/local/include/X11
+/usr/local/include/X11R6
+/usr/local/include/X11R5
+/usr/local/include/X11R4
+
+/usr/X386/include
+/usr/x386/include
+/usr/XFree86/include/X11
+
+/usr/include
+/usr/local/include
+/usr/unsupported/include
+/usr/athena/include
+/usr/local/x11r5/include
+/usr/lpp/Xamples/include
+
+/usr/openwin/include
+/usr/openwin/share/include'
+
+if test "$ac_x_includes" = no; then
+ # Guess where to find include files, by looking for Intrinsic.h.
+ # First, try using that file with no special directory specified.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <X11/Intrinsic.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ # We can compile using X headers with no special include directory.
+ac_x_includes=
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ for ac_dir in $ac_x_header_dirs; do
+ if test -r "$ac_dir/X11/Intrinsic.h"; then
+ ac_x_includes=$ac_dir
+ break
+ fi
+done
+fi
+rm -f conftest.err conftest.$ac_ext
+fi # $ac_x_includes = no
+
+if test "$ac_x_libraries" = no; then
+ # Check for the libraries.
+ # See if we find them without any special options.
+ # Don't add to $LIBS permanently.
+ ac_save_LIBS=$LIBS
+ LIBS="-lXt $LIBS"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <X11/Intrinsic.h>
+int
+main ()
+{
+XtMalloc (0)
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ LIBS=$ac_save_LIBS
+# We can link X programs with no special library path.
+ac_x_libraries=
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+LIBS=$ac_save_LIBS
+for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g`
+do
+ # Don't even attempt the hair of trying to link an X program!
+ for ac_extension in a so sl; do
+ if test -r $ac_dir/libXt.$ac_extension; then
+ ac_x_libraries=$ac_dir
+ break 2
+ fi
+ done
+done
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi # $ac_x_libraries = no
+
+if test "$ac_x_includes" = no || test "$ac_x_libraries" = no; then
+ # Didn't find X anywhere. Cache the known absence of X.
+ ac_cv_have_x="have_x=no"
+else
+ # Record where we found X for the cache.
+ ac_cv_have_x="have_x=yes \
+ ac_x_includes=$ac_x_includes ac_x_libraries=$ac_x_libraries"
+fi
+fi
+
+ fi
+ eval "$ac_cv_have_x"
+fi # $with_x != no
+
+if test "$have_x" != yes; then
+ echo "$as_me:$LINENO: result: $have_x" >&5
+echo "${ECHO_T}$have_x" >&6
+ no_x=yes
+else
+ # If each of the values was on the command line, it overrides each guess.
+ test "x$x_includes" = xNONE && x_includes=$ac_x_includes
+ test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries
+ # Update the cache value to reflect the command line values.
+ ac_cv_have_x="have_x=yes \
+ ac_x_includes=$x_includes ac_x_libraries=$x_libraries"
+ echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5
+echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6
+fi
+
+if test "$no_x" = yes; then
+ # Not all programs may use this symbol, but it does not hurt to define it.
+
+cat >>confdefs.h <<\_ACEOF
+#define X_DISPLAY_MISSING 1
+_ACEOF
+
+ X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS=
+else
+ if test -n "$x_includes"; then
+ X_CFLAGS="$X_CFLAGS -I$x_includes"
+ fi
+
+ # It would also be nice to do this for all -L options, not just this one.
+ if test -n "$x_libraries"; then
+ X_LIBS="$X_LIBS -L$x_libraries"
+ # For Solaris; some versions of Sun CC require a space after -R and
+ # others require no space. Words are not sufficient . . . .
+ case `(uname -sr) 2>/dev/null` in
+ "SunOS 5"*)
+ echo "$as_me:$LINENO: checking whether -R must be followed by a space" >&5
+echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6
+ ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_R_nospace=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_R_nospace=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test $ac_R_nospace = yes; then
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ X_LIBS="$X_LIBS -R$x_libraries"
+ else
+ LIBS="$ac_xsave_LIBS -R $x_libraries"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_R_space=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_R_space=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test $ac_R_space = yes; then
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ X_LIBS="$X_LIBS -R $x_libraries"
+ else
+ echo "$as_me:$LINENO: result: neither works" >&5
+echo "${ECHO_T}neither works" >&6
+ fi
+ fi
+ LIBS=$ac_xsave_LIBS
+ esac
+ fi
+
+ # Check for system-dependent libraries X programs must link with.
+ # Do this before checking for the system-independent R6 libraries
+ # (-lICE), since we may need -lsocket or whatever for X linking.
+
+ if test "$ISC" = yes; then
+ X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet"
+ else
+ # Martyn Johnson says this is needed for Ultrix, if the X
+ # libraries were built with DECnet support. And Karl Berry says
+ # the Alpha needs dnet_stub (dnet does not exist).
+ ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char XOpenDisplay ();
+int
+main ()
+{
+XOpenDisplay ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5
+echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6
+if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldnet $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dnet_ntoa ();
+int
+main ()
+{
+dnet_ntoa ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dnet_dnet_ntoa=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dnet_dnet_ntoa=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5
+echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6
+if test $ac_cv_lib_dnet_dnet_ntoa = yes; then
+ X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"
+fi
+
+ if test $ac_cv_lib_dnet_dnet_ntoa = no; then
+ echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5
+echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6
+if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldnet_stub $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dnet_ntoa ();
+int
+main ()
+{
+dnet_ntoa ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dnet_stub_dnet_ntoa=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dnet_stub_dnet_ntoa=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5
+echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6
+if test $ac_cv_lib_dnet_stub_dnet_ntoa = yes; then
+ X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"
+fi
+
+ fi
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$ac_xsave_LIBS"
+
+ # [email protected] says -lnsl (and -lsocket) are needed for his 386/AT,
+ # to get the SysV transport functions.
+ # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4)
+ # needs -lnsl.
+ # The nsl library prevents programs from opening the X display
+ # on Irix 5.2, according to T.E. Dickey.
+ # The functions gethostbyname, getservbyname, and inet_addr are
+ # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking.
+ echo "$as_me:$LINENO: checking for gethostbyname" >&5
+echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6
+if test "${ac_cv_func_gethostbyname+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define gethostbyname to an innocuous variant, in case <limits.h> declares gethostbyname.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define gethostbyname innocuous_gethostbyname
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char gethostbyname (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef gethostbyname
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char gethostbyname ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_gethostbyname) || defined (__stub___gethostbyname)
+choke me
+#else
+char (*f) () = gethostbyname;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != gethostbyname;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_gethostbyname=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_gethostbyname=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5
+echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6
+
+ if test $ac_cv_func_gethostbyname = no; then
+ echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5
+echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6
+if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lnsl $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char gethostbyname ();
+int
+main ()
+{
+gethostbyname ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_nsl_gethostbyname=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_nsl_gethostbyname=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5
+echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6
+if test $ac_cv_lib_nsl_gethostbyname = yes; then
+ X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"
+fi
+
+ if test $ac_cv_lib_nsl_gethostbyname = no; then
+ echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5
+echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6
+if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lbsd $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char gethostbyname ();
+int
+main ()
+{
+gethostbyname ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_bsd_gethostbyname=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_bsd_gethostbyname=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5
+echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6
+if test $ac_cv_lib_bsd_gethostbyname = yes; then
+ X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd"
+fi
+
+ fi
+ fi
+
+ # [email protected] says without -lsocket,
+ # socket/setsockopt and other routines are undefined under SCO ODT
+ # 2.0. But -lsocket is broken on IRIX 5.2 (and is not necessary
+ # on later versions), says Simon Leinen: it contains gethostby*
+ # variants that don't use the name server (or something). -lsocket
+ # must be given before -lnsl if both are needed. We assume that
+ # if connect needs -lnsl, so does gethostbyname.
+ echo "$as_me:$LINENO: checking for connect" >&5
+echo $ECHO_N "checking for connect... $ECHO_C" >&6
+if test "${ac_cv_func_connect+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define connect to an innocuous variant, in case <limits.h> declares connect.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define connect innocuous_connect
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char connect (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef connect
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char connect ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_connect) || defined (__stub___connect)
+choke me
+#else
+char (*f) () = connect;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != connect;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_connect=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_connect=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5
+echo "${ECHO_T}$ac_cv_func_connect" >&6
+
+ if test $ac_cv_func_connect = no; then
+ echo "$as_me:$LINENO: checking for connect in -lsocket" >&5
+echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6
+if test "${ac_cv_lib_socket_connect+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char connect ();
+int
+main ()
+{
+connect ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_socket_connect=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_socket_connect=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5
+echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6
+if test $ac_cv_lib_socket_connect = yes; then
+ X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"
+fi
+
+ fi
+
+ # Guillermo Gomez says -lposix is necessary on A/UX.
+ echo "$as_me:$LINENO: checking for remove" >&5
+echo $ECHO_N "checking for remove... $ECHO_C" >&6
+if test "${ac_cv_func_remove+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define remove to an innocuous variant, in case <limits.h> declares remove.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define remove innocuous_remove
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char remove (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef remove
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char remove ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_remove) || defined (__stub___remove)
+choke me
+#else
+char (*f) () = remove;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != remove;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_remove=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_remove=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5
+echo "${ECHO_T}$ac_cv_func_remove" >&6
+
+ if test $ac_cv_func_remove = no; then
+ echo "$as_me:$LINENO: checking for remove in -lposix" >&5
+echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6
+if test "${ac_cv_lib_posix_remove+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lposix $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char remove ();
+int
+main ()
+{
+remove ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_posix_remove=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_posix_remove=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5
+echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6
+if test $ac_cv_lib_posix_remove = yes; then
+ X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"
+fi
+
+ fi
+
+ # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
+ echo "$as_me:$LINENO: checking for shmat" >&5
+echo $ECHO_N "checking for shmat... $ECHO_C" >&6
+if test "${ac_cv_func_shmat+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define shmat to an innocuous variant, in case <limits.h> declares shmat.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define shmat innocuous_shmat
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char shmat (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef shmat
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char shmat ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_shmat) || defined (__stub___shmat)
+choke me
+#else
+char (*f) () = shmat;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != shmat;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_shmat=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_shmat=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5
+echo "${ECHO_T}$ac_cv_func_shmat" >&6
+
+ if test $ac_cv_func_shmat = no; then
+ echo "$as_me:$LINENO: checking for shmat in -lipc" >&5
+echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6
+if test "${ac_cv_lib_ipc_shmat+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lipc $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char shmat ();
+int
+main ()
+{
+shmat ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_ipc_shmat=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_ipc_shmat=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5
+echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6
+if test $ac_cv_lib_ipc_shmat = yes; then
+ X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"
+fi
+
+ fi
+ fi
+
+ # Check for libraries that X11R6 Xt/Xaw programs need.
+ ac_save_LDFLAGS=$LDFLAGS
+ test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries"
+ # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to
+ # check for ICE first), but we must link in the order -lSM -lICE or
+ # we get undefined symbols. So assume we have SM if we have ICE.
+ # These have to be linked with before -lX11, unlike the other
+ # libraries we check for below, so use a different variable.
+ # John Interrante, Karl Berry
+ echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5
+echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6
+if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lICE $X_EXTRA_LIBS $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char IceConnectionNumber ();
+int
+main ()
+{
+IceConnectionNumber ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_ICE_IceConnectionNumber=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_ICE_IceConnectionNumber=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
+echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6
+if test $ac_cv_lib_ICE_IceConnectionNumber = yes; then
+ X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"
+fi
+
+ LDFLAGS=$ac_save_LDFLAGS
+
+fi
+
+ CFLAGS="${CFLAGS} ${X_CFLAGS}"
+ CXXFLAGS="${CXXFLAGS} ${X_CFLAGS}"
+ LIBS="${X_PRE_LIBS} -lX11 ${X_EXTRA_LIBS} ${LIBS}"
+ LDFLAGS="${LDFLAGS} ${X_LIBS}"
+
+ X_CORE="-lX11 -lXext"
+ X_DCORE="$X_CORE"
+
+ glneeds="$X_CORE $X_EXTRA_LIBS"
+
+ echo "$as_me:$LINENO: checking for glBegin in -lGL" >&5
+echo $ECHO_N "checking for glBegin in -lGL... $ECHO_C" >&6
+if test "${ac_cv_lib_GL_glBegin+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lGL $glneeds $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char glBegin ();
+int
+main ()
+{
+glBegin ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_GL_glBegin=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_GL_glBegin=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_GL_glBegin" >&5
+echo "${ECHO_T}$ac_cv_lib_GL_glBegin" >&6
+if test $ac_cv_lib_GL_glBegin = yes; then
+ \
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_OPENGL "OpenGL"
+_ACEOF
+ GL_LIBS="-lGL -lGLU"
+else
+ \
+ echo "$as_me:$LINENO: checking for glBegin in -lMesaGL" >&5
+echo $ECHO_N "checking for glBegin in -lMesaGL... $ECHO_C" >&6
+if test "${ac_cv_lib_MesaGL_glBegin+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lMesaGL $glneeds $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char glBegin ();
+int
+main ()
+{
+glBegin ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_MesaGL_glBegin=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_MesaGL_glBegin=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_MesaGL_glBegin" >&5
+echo "${ECHO_T}$ac_cv_lib_MesaGL_glBegin" >&6
+if test $ac_cv_lib_MesaGL_glBegin = yes; then
+ \
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_OPENGL "Mesa"
+_ACEOF
+
+ GL_LIBS="-lMesaGL -lMesaGLU"
+fi
+
+fi
+
+
+ LIBS="${GL_LIBS} $glneeds"
+
+ echo "$as_me:$LINENO: checking for glPolygonOffset" >&5
+echo $ECHO_N "checking for glPolygonOffset... $ECHO_C" >&6
+if test "${ac_cv_func_glPolygonOffset+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define glPolygonOffset to an innocuous variant, in case <limits.h> declares glPolygonOffset.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define glPolygonOffset innocuous_glPolygonOffset
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char glPolygonOffset (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef glPolygonOffset
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char glPolygonOffset ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_glPolygonOffset) || defined (__stub___glPolygonOffset)
+choke me
+#else
+char (*f) () = glPolygonOffset;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != glPolygonOffset;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_glPolygonOffset=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_glPolygonOffset=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_glPolygonOffset" >&5
+echo "${ECHO_T}$ac_cv_func_glPolygonOffset" >&6
+if test $ac_cv_func_glPolygonOffset = yes; then
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_POLYOFFSET 1
+_ACEOF
+
+fi
+
+ echo "$as_me:$LINENO: checking for glPolygonOffsetEXT" >&5
+echo $ECHO_N "checking for glPolygonOffsetEXT... $ECHO_C" >&6
+if test "${ac_cv_func_glPolygonOffsetEXT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define glPolygonOffsetEXT to an innocuous variant, in case <limits.h> declares glPolygonOffsetEXT.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define glPolygonOffsetEXT innocuous_glPolygonOffsetEXT
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char glPolygonOffsetEXT (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef glPolygonOffsetEXT
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char glPolygonOffsetEXT ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_glPolygonOffsetEXT) || defined (__stub___glPolygonOffsetEXT)
+choke me
+#else
+char (*f) () = glPolygonOffsetEXT;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != glPolygonOffsetEXT;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_glPolygonOffsetEXT=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_glPolygonOffsetEXT=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_glPolygonOffsetEXT" >&5
+echo "${ECHO_T}$ac_cv_func_glPolygonOffsetEXT" >&6
+if test $ac_cv_func_glPolygonOffsetEXT = yes; then
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_POLYOFFSET_EXT 1
+_ACEOF
+
+fi
+
+ ;;
+esac
+
+
+
+
+
+
+FLTK_LIBS="-lfltk"
+
+echo "$as_me:$LINENO: checking for FLTK library" >&5
+echo $ECHO_N "checking for FLTK library... $ECHO_C" >&6
+save_libs=$LIBS
+LIBS="$FLTK_LIBS $X_CORE $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <FL/Fl.H>
+int
+main ()
+{
+Fl::run();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_FLTK 1
+_ACEOF
+
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ FLTK_LIBS=""
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$save_libs
+
+echo "$as_me:$LINENO: checking for FLTK GL support" >&5
+echo $ECHO_N "checking for FLTK GL support... $ECHO_C" >&6
+save_libs=$LIBS
+LIBS="$FLTK_LIBS $GL_LIBS $X_CORE $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <FL/Fl.H>
+ #include <FL/Fl_Gl_Window.H>
+int
+main ()
+{
+Fl_Gl_Window win(640,480);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_FLTK_GL 1
+_ACEOF
+
+ echo "$as_me:$LINENO: result: in libfltk" >&5
+echo "${ECHO_T}in libfltk" >&6
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+FLTK_LIBS="-lfltk_gl $FLTK_LIBS"
+ LIBS="$FLTK_LIBS $GL_LIBS $X_CORE $save_libs"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <FL/Fl.H>
+ #include <FL/Fl_Gl_Window.H>
+int
+main ()
+{
+Fl_Gl_Window win(640,480);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_FLTK_GL 1
+_ACEOF
+
+ echo "$as_me:$LINENO: result: in libfltk_gl" >&5
+echo "${ECHO_T}in libfltk_gl" >&6
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+FLTK_LIBS="-lfltk"
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+LIBS=$save_libs
+
+
+LIBS=${BASE_LIBS}
+CFLAGS=${BASE_CFLAGS}
+CXXFLAGS=${BASE_CXXFLAGS}
+LDFLAGS=${BASE_LDFLAGS}
+
+
+echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+if test "${ac_cv_header_stdc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_header_stdc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_header_stdc=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "memchr" >/dev/null 2>&1; then
+ :
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "free" >/dev/null 2>&1; then
+ :
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+ if test "$cross_compiling" = yes; then
+ :
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ctype.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+ (('a' <= (c) && (c) <= 'i') \
+ || ('j' <= (c) && (c) <= 'r') \
+ || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+ int i;
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+ exit(2);
+ exit (0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_header_stdc=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+echo "${ECHO_T}$ac_cv_header_stdc" >&6
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STDC_HEADERS 1
+_ACEOF
+
+fi
+
+
+for ac_header in limits.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists. ##
+## ------------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_header in unistd.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists. ##
+## ------------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+for ac_header in hash_map
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists. ##
+## ------------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_header in hash_set
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists. ##
+## ------------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_header in ext/hash_map
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists. ##
+## ------------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_header in ext/hash_set
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists. ##
+## ------------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_header in valarray
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists. ##
+## ------------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_header in sstream
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists. ##
+## ------------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_header in strstream
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists. ##
+## ------------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5
+echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6
+if test "${ac_cv_c_const+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+/* FIXME: Include the comments suggested by Paul. */
+#ifndef __cplusplus
+ /* Ultrix mips cc rejects this. */
+ typedef int charset[2];
+ const charset x;
+ /* SunOS 4.1.1 cc rejects this. */
+ char const *const *ccp;
+ char **p;
+ /* NEC SVR4.0.2 mips cc rejects this. */
+ struct point {int x, y;};
+ static struct point const zero = {0,0};
+ /* AIX XL C 1.02.0.0 rejects this.
+ It does not let you subtract one const X* pointer from another in
+ an arm of an if-expression whose if-part is not a constant
+ expression */
+ const char *g = "string";
+ ccp = &g + (g ? g-g : 0);
+ /* HPUX 7.0 cc rejects these. */
+ ++ccp;
+ p = (char**) ccp;
+ ccp = (char const *const *) p;
+ { /* SCO 3.2v4 cc rejects this. */
+ char *t;
+ char const *s = 0 ? (char *) 0 : (char const *) 0;
+
+ *t++ = 0;
+ }
+ { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */
+ int x[] = {25, 17};
+ const int *foo = &x[0];
+ ++foo;
+ }
+ { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
+ typedef const int *iptr;
+ iptr p = 0;
+ ++p;
+ }
+ { /* AIX XL C 1.02.0.0 rejects this saying
+ "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
+ struct s { int j; const int *ap[3]; };
+ struct s *b; b->j = 5;
+ }
+ { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
+ const int foo = 10;
+ }
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_c_const=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_c_const=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5
+echo "${ECHO_T}$ac_cv_c_const" >&6
+if test $ac_cv_c_const = no; then
+
+cat >>confdefs.h <<\_ACEOF
+#define const
+_ACEOF
+
+fi
+
+echo "$as_me:$LINENO: checking for inline" >&5
+echo $ECHO_N "checking for inline... $ECHO_C" >&6
+if test "${ac_cv_c_inline+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_c_inline=no
+for ac_kw in inline __inline__ __inline; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifndef __cplusplus
+typedef int foo_t;
+static $ac_kw foo_t static_foo () {return 0; }
+$ac_kw foo_t foo () {return 0; }
+#endif
+
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_c_inline=$ac_kw; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5
+echo "${ECHO_T}$ac_cv_c_inline" >&6
+
+
+case $ac_cv_c_inline in
+ inline | yes) ;;
+ *)
+ case $ac_cv_c_inline in
+ no) ac_val=;;
+ *) ac_val=$ac_cv_c_inline;;
+ esac
+ cat >>confdefs.h <<_ACEOF
+#ifndef __cplusplus
+#define inline $ac_val
+#endif
+_ACEOF
+ ;;
+esac
+
+
+echo "$as_me:$LINENO: checking for type bool" >&5
+echo $ECHO_N "checking for type bool... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+bool x; x;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_BOOL 1
+_ACEOF
+
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+
+# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
+# for constant arguments. Useless!
+echo "$as_me:$LINENO: checking for working alloca.h" >&5
+echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6
+if test "${ac_cv_working_alloca_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <alloca.h>
+int
+main ()
+{
+char *p = (char *) alloca (2 * sizeof (int));
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_working_alloca_h=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_working_alloca_h=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5
+echo "${ECHO_T}$ac_cv_working_alloca_h" >&6
+if test $ac_cv_working_alloca_h = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ALLOCA_H 1
+_ACEOF
+
+fi
+
+echo "$as_me:$LINENO: checking for alloca" >&5
+echo $ECHO_N "checking for alloca... $ECHO_C" >&6
+if test "${ac_cv_func_alloca_works+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef __GNUC__
+# define alloca __builtin_alloca
+#else
+# ifdef _MSC_VER
+# include <malloc.h>
+# define alloca _alloca
+# else
+# if HAVE_ALLOCA_H
+# include <alloca.h>
+# else
+# ifdef _AIX
+ #pragma alloca
+# else
+# ifndef alloca /* predefined by HP cc +Olibcalls */
+char *alloca ();
+# endif
+# endif
+# endif
+# endif
+#endif
+
+int
+main ()
+{
+char *p = (char *) alloca (1);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_alloca_works=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_alloca_works=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5
+echo "${ECHO_T}$ac_cv_func_alloca_works" >&6
+
+if test $ac_cv_func_alloca_works = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ALLOCA 1
+_ACEOF
+
+else
+ # The SVR3 libPW and SVR4 libucb both contain incompatible functions
+# that cause trouble. Some versions do not even contain alloca or
+# contain a buggy version. If you still want to use their alloca,
+# use ar to extract alloca.o from them instead of compiling alloca.c.
+
+ALLOCA=alloca.$ac_objext
+
+cat >>confdefs.h <<\_ACEOF
+#define C_ALLOCA 1
+_ACEOF
+
+
+echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5
+echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6
+if test "${ac_cv_os_cray+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#if defined(CRAY) && ! defined(CRAY2)
+webecray
+#else
+wenotbecray
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "webecray" >/dev/null 2>&1; then
+ ac_cv_os_cray=yes
+else
+ ac_cv_os_cray=no
+fi
+rm -f conftest*
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5
+echo "${ECHO_T}$ac_cv_os_cray" >&6
+if test $ac_cv_os_cray = yes; then
+ for ac_func in _getb67 GETB67 getb67; do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define CRAY_STACKSEG_END $ac_func
+_ACEOF
+
+ break
+fi
+
+ done
+fi
+
+echo "$as_me:$LINENO: checking stack direction for C alloca" >&5
+echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6
+if test "${ac_cv_c_stack_direction+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then
+ ac_cv_c_stack_direction=0
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+int
+find_stack_direction ()
+{
+ static char *addr = 0;
+ auto char dummy;
+ if (addr == 0)
+ {
+ addr = &dummy;
+ return find_stack_direction ();
+ }
+ else
+ return (&dummy > addr) ? 1 : -1;
+}
+
+int
+main ()
+{
+ exit (find_stack_direction () < 0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_c_stack_direction=1
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_c_stack_direction=-1
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5
+echo "${ECHO_T}$ac_cv_c_stack_direction" >&6
+
+cat >>confdefs.h <<_ACEOF
+#define STACK_DIRECTION $ac_cv_c_stack_direction
+_ACEOF
+
+
+fi
+
+
+
+
+
+
+
+for ac_func in rint getrusage times random getopt getopt_long
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+
+ROOT=`pwd`
+
+CPPFLAGS="$CPPFLAGS -I${ROOT}/include -DHAVE_CONFIG_H"
+CFLAGS="$BASE_CFLAGS $CPPFLAGS"
+CXXFLAGS="$BASE_CXXFLAGS $CPPFLAGS"
+LDFLAGS="$BASE_LDFLAGS -L${ROOT}/src"
+
+ ac_config_files="$ac_config_files gfx-config"
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems. If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, don't put newlines in cache variables' values.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+{
+ (set) 2>&1 |
+ case `(ac_space=' '; set | grep ac_space) 2>&1` in
+ *ac_space=\ *)
+ # `set' does not quote correctly, so add quotes (double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \).
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+ ;;
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n \
+ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+ ;;
+ esac;
+} |
+ sed '
+ t clear
+ : clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+ /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+ : end' >>confcache
+if diff $cache_file confcache >/dev/null 2>&1; then :; else
+ if test -w $cache_file; then
+ test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
+ cat confcache >$cache_file
+ else
+ echo "not updating unwritable cache $cache_file"
+ fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+ ac_vpsub='/^[ ]*VPATH[ ]*=/{
+s/:*\$(srcdir):*/:/;
+s/:*\${srcdir}:*/:/;
+s/:*@srcdir@:*/:/;
+s/^\([^=]*=[ ]*\):*/\1/;
+s/:*$//;
+s/^[^=]*=[ ]*$//;
+}'
+fi
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+ ac_i=`echo "$ac_i" |
+ sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
+ # 2. Add them.
+ ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
+ ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+
+: ${CONFIG_STATUS=./config.status}
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+## --------------------- ##
+## M4sh Initialization. ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+ set -o posix
+fi
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ as_unset=unset
+else
+ as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+ LC_TELEPHONE LC_TIME
+do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+ $as_unset $as_var
+ fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)$' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+ /^X\/\(\/\/\)$/{ s//\1/; q; }
+ /^X\/\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+
+
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x$as_lineno_3" = "x$as_lineno_2" || {
+ # Find who we are. Look in the path if we contain no path at all
+ # relative or not.
+ case $0 in
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+
+ ;;
+ esac
+ # We did not find ourselves, most probably we were run as `sh COMMAND'
+ # in which case we are not to be found in the path.
+ if test "x$as_myself" = x; then
+ as_myself=$0
+ fi
+ if test ! -f "$as_myself"; then
+ { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
+echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+ case $CONFIG_SHELL in
+ '')
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for as_base in sh bash ksh sh5; do
+ case $as_dir in
+ /*)
+ if ("$as_dir/$as_base" -c '
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
+ $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+ $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+ CONFIG_SHELL=$as_dir/$as_base
+ export CONFIG_SHELL
+ exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+ fi;;
+ esac
+ done
+done
+;;
+ esac
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+ # line-number line before each line; the second 'sed' does the real
+ # work. The second script uses 'N' to pair each line-number line
+ # with the numbered line, and appends trailing '-' during
+ # substitution so that $LINENO is not a special case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+ # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
+ sed '=' <$as_myself |
+ sed '
+ N
+ s,$,-,
+ : loop
+ s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+ t loop
+ s,-$,,
+ s,^['$as_cr_digits']*\n,,
+ ' >$as_me.lineno &&
+ chmod +x $as_me.lineno ||
+ { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
+echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
+ { (exit 1); exit 1; }; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensible to this).
+ . ./$as_me.lineno
+ # Exit status is that of the last command.
+ exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+ *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T=' ' ;;
+ *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+ *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+ # We could just check for DJGPP; but this test a) works b) is more generic
+ # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+ if test -f conf$$.exe; then
+ # Don't use ln at all; we don't have any links
+ as_ln_s='cp -p'
+ else
+ as_ln_s='ln -s'
+ fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" $as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+exec 6>&1
+
+# Open the log real soon, to keep \$[0] and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling. Logging --version etc. is OK.
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+} >&5
+cat >&5 <<_CSEOF
+
+This file was extended by $as_me, which was
+generated by GNU Autoconf 2.59. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+_CSEOF
+echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
+echo >&5
+_ACEOF
+
+# Files that config.status was made for.
+if test -n "$ac_config_files"; then
+ echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_headers"; then
+ echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_links"; then
+ echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_commands"; then
+ echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTIONS] [FILE]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number, then exit
+ -q, --quiet do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
+ --header=FILE[:TEMPLATE]
+ instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Report bugs to <[email protected]>."
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+ac_cs_version="\\
+config.status
+configured by $0, generated by GNU Autoconf 2.59,
+ with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright (C) 2003 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+srcdir=$srcdir
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+# If no file are specified by the user, then we need to provide default
+# value. By we need to know if files were specified by the user.
+ac_need_defaults=:
+while test $# != 0
+do
+ case $1 in
+ --*=*)
+ ac_option=`expr "x$1" : 'x\([^=]*\)='`
+ ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+ -*)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+ *) # This is not an option, so the user has probably given explicit
+ # arguments.
+ ac_option=$1
+ ac_need_defaults=false;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+ --version | --vers* | -V )
+ echo "$ac_cs_version"; exit 0 ;;
+ --he | --h)
+ # Conflict between --help and --header
+ { { echo "$as_me:$LINENO: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2;}
+ { (exit 1); exit 1; }; };;
+ --help | --hel | -h )
+ echo "$ac_cs_usage"; exit 0 ;;
+ --debug | --d* | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+ CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+ ac_need_defaults=false;;
+ --header | --heade | --head | --hea )
+ $ac_shift
+ CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+ ac_need_defaults=false;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+ -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2;}
+ { (exit 1); exit 1; }; } ;;
+
+ *) ac_config_targets="$ac_config_targets $1" ;;
+
+ esac
+ shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+ exec 6>/dev/null
+ ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+if \$ac_cs_recheck; then
+ echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
+ exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+fi
+
+_ACEOF
+
+
+
+
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_config_target in $ac_config_targets
+do
+ case "$ac_config_target" in
+ # Handling of arguments.
+ "gfx-config" ) CONFIG_FILES="$CONFIG_FILES gfx-config" ;;
+ "include/gfx/config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS include/gfx/config.h" ;;
+ *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+ { (exit 1); exit 1; }; };;
+ esac
+done
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used. Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+fi
+
+# Have a temporary directory for convenience. Make it in the build tree
+# simply because there is no reason to put it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Create a temporary directory, and hook for its removal unless debugging.
+$debug ||
+{
+ trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
+ trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+
+# Create a (secure) tmp directory for tmp files.
+
+{
+ tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
+ test -n "$tmp" && test -d "$tmp"
+} ||
+{
+ tmp=./confstat$$-$RANDOM
+ (umask 077 && mkdir $tmp)
+} ||
+{
+ echo "$me: cannot create a temporary directory in ." >&2
+ { (exit 1); exit 1; }
+}
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+
+#
+# CONFIG_FILES section.
+#
+
+# No need to generate the scripts if there are no CONFIG_FILES.
+# This happens for instance when ./config.status config.h
+if test -n "\$CONFIG_FILES"; then
+ # Protect against being on the right side of a sed subst in config.status.
+ sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
+ s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
+s,@SHELL@,$SHELL,;t t
+s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
+s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
+s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
+s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
+s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
+s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
+s,@exec_prefix@,$exec_prefix,;t t
+s,@prefix@,$prefix,;t t
+s,@program_transform_name@,$program_transform_name,;t t
+s,@bindir@,$bindir,;t t
+s,@sbindir@,$sbindir,;t t
+s,@libexecdir@,$libexecdir,;t t
+s,@datadir@,$datadir,;t t
+s,@sysconfdir@,$sysconfdir,;t t
+s,@sharedstatedir@,$sharedstatedir,;t t
+s,@localstatedir@,$localstatedir,;t t
+s,@libdir@,$libdir,;t t
+s,@includedir@,$includedir,;t t
+s,@oldincludedir@,$oldincludedir,;t t
+s,@infodir@,$infodir,;t t
+s,@mandir@,$mandir,;t t
+s,@build_alias@,$build_alias,;t t
+s,@host_alias@,$host_alias,;t t
+s,@target_alias@,$target_alias,;t t
+s,@DEFS@,$DEFS,;t t
+s,@ECHO_C@,$ECHO_C,;t t
+s,@ECHO_N@,$ECHO_N,;t t
+s,@ECHO_T@,$ECHO_T,;t t
+s,@LIBS@,$LIBS,;t t
+s,@CC@,$CC,;t t
+s,@CFLAGS@,$CFLAGS,;t t
+s,@LDFLAGS@,$LDFLAGS,;t t
+s,@CPPFLAGS@,$CPPFLAGS,;t t
+s,@ac_ct_CC@,$ac_ct_CC,;t t
+s,@EXEEXT@,$EXEEXT,;t t
+s,@OBJEXT@,$OBJEXT,;t t
+s,@CPP@,$CPP,;t t
+s,@CXX@,$CXX,;t t
+s,@CXXFLAGS@,$CXXFLAGS,;t t
+s,@ac_ct_CXX@,$ac_ct_CXX,;t t
+s,@CXXCPP@,$CXXCPP,;t t
+s,@RANLIB@,$RANLIB,;t t
+s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
+s,@RM@,$RM,;t t
+s,@FLTKCONFIG@,$FLTKCONFIG,;t t
+s,@CC_DEPEND@,$CC_DEPEND,;t t
+s,@CXX_DEPEND@,$CXX_DEPEND,;t t
+s,@IMG_LIBS@,$IMG_LIBS,;t t
+s,@EGREP@,$EGREP,;t t
+s,@X_CFLAGS@,$X_CFLAGS,;t t
+s,@X_LIBS@,$X_LIBS,;t t
+s,@X_PRE_LIBS@,$X_PRE_LIBS,;t t
+s,@X_EXTRA_LIBS@,$X_EXTRA_LIBS,;t t
+s,@X_CORE@,$X_CORE,;t t
+s,@X_DCORE@,$X_DCORE,;t t
+s,@GL_LIBS@,$GL_LIBS,;t t
+s,@FLTK_LIBS@,$FLTK_LIBS,;t t
+s,@ALLOCA@,$ALLOCA,;t t
+s,@LIBOBJS@,$LIBOBJS,;t t
+s,@LTLIBOBJS@,$LTLIBOBJS,;t t
+CEOF
+
+_ACEOF
+
+ cat >>$CONFIG_STATUS <<\_ACEOF
+ # Split the substitutions into bite-sized pieces for seds with
+ # small command number limits, like on Digital OSF/1 and HP-UX.
+ ac_max_sed_lines=48
+ ac_sed_frag=1 # Number of current file.
+ ac_beg=1 # First line for current file.
+ ac_end=$ac_max_sed_lines # Line after last line for current file.
+ ac_more_lines=:
+ ac_sed_cmds=
+ while $ac_more_lines; do
+ if test $ac_beg -gt 1; then
+ sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+ else
+ sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+ fi
+ if test ! -s $tmp/subs.frag; then
+ ac_more_lines=false
+ else
+ # The purpose of the label and of the branching condition is to
+ # speed up the sed processing (if there are no `@' at all, there
+ # is no need to browse any of the substitutions).
+ # These are the two extra sed commands mentioned above.
+ (echo ':t
+ /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
+ if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+ else
+ ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+ fi
+ ac_sed_frag=`expr $ac_sed_frag + 1`
+ ac_beg=$ac_end
+ ac_end=`expr $ac_end + $ac_max_sed_lines`
+ fi
+ done
+ if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds=cat
+ fi
+fi # test -n "$CONFIG_FILES"
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+ case $ac_file in
+ - | *:- | *:-:* ) # input from stdin
+ cat >$tmp/stdin
+ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ * ) ac_file_in=$ac_file.in ;;
+ esac
+
+ # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
+ ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ { if $as_mkdir_p; then
+ mkdir -p "$ac_dir"
+ else
+ as_dir="$ac_dir"
+ as_dirs=
+ while test ! -d "$as_dir"; do
+ as_dirs="$as_dir $as_dirs"
+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ done
+ test ! -n "$as_dirs" || mkdir $as_dirs
+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+ { (exit 1); exit 1; }; }; }
+
+ ac_builddir=.
+
+if test "$ac_dir" != .; then
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+ # A "../" for each directory in $ac_dir_suffix.
+ ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+ ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+ .) # No --srcdir option. We are building in place.
+ ac_srcdir=.
+ if test -z "$ac_top_builddir"; then
+ ac_top_srcdir=.
+ else
+ ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+ fi ;;
+ [\\/]* | ?:[\\/]* ) # Absolute path.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir ;;
+ *) # Relative path.
+ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+ case "$ac_dir" in
+ .) ac_abs_builddir=`pwd`;;
+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+ *) ac_abs_builddir=`pwd`/"$ac_dir";;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+ case ${ac_top_builddir}. in
+ .) ac_abs_top_builddir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+ case $ac_srcdir in
+ .) ac_abs_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+ case $ac_top_srcdir in
+ .) ac_abs_top_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+ esac;;
+esac
+
+
+
+ if test x"$ac_file" != x-; then
+ { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+ rm -f "$ac_file"
+ fi
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ if test x"$ac_file" = x-; then
+ configure_input=
+ else
+ configure_input="$ac_file. "
+ fi
+ configure_input=$configure_input"Generated from `echo $ac_file_in |
+ sed 's,.*/,,'` by configure."
+
+ # First look for the input files in the build tree, otherwise in the
+ # src tree.
+ ac_file_inputs=`IFS=:
+ for f in $ac_file_in; do
+ case $f in
+ -) echo $tmp/stdin ;;
+ [\\/$]*)
+ # Absolute (can't be DOS-style, as IFS=:)
+ test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ echo "$f";;
+ *) # Relative
+ if test -f "$f"; then
+ # Build tree
+ echo "$f"
+ elif test -f "$srcdir/$f"; then
+ # Source tree
+ echo "$srcdir/$f"
+ else
+ # /dev/null tree
+ { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ fi;;
+ esac
+ done` || { (exit 1); exit 1; }
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+ sed "$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s,@configure_input@,$configure_input,;t t
+s,@srcdir@,$ac_srcdir,;t t
+s,@abs_srcdir@,$ac_abs_srcdir,;t t
+s,@top_srcdir@,$ac_top_srcdir,;t t
+s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
+s,@builddir@,$ac_builddir,;t t
+s,@abs_builddir@,$ac_abs_builddir,;t t
+s,@top_builddir@,$ac_top_builddir,;t t
+s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
+" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
+ rm -f $tmp/stdin
+ if test x"$ac_file" != x-; then
+ mv $tmp/out $ac_file
+ else
+ cat $tmp/out
+ rm -f $tmp/out
+ fi
+
+done
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+#
+# CONFIG_HEADER section.
+#
+
+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+# NAME is the cpp macro being defined and VALUE is the value it is being given.
+#
+# ac_d sets the value in "#define NAME VALUE" lines.
+ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)'
+ac_dB='[ ].*$,\1#\2'
+ac_dC=' '
+ac_dD=',;t'
+# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
+ac_uB='$,\1#\2define\3'
+ac_uC=' '
+ac_uD=',;t'
+
+for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+ case $ac_file in
+ - | *:- | *:-:* ) # input from stdin
+ cat >$tmp/stdin
+ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ * ) ac_file_in=$ac_file.in ;;
+ esac
+
+ test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+
+ # First look for the input files in the build tree, otherwise in the
+ # src tree.
+ ac_file_inputs=`IFS=:
+ for f in $ac_file_in; do
+ case $f in
+ -) echo $tmp/stdin ;;
+ [\\/$]*)
+ # Absolute (can't be DOS-style, as IFS=:)
+ test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ # Do quote $f, to prevent DOS paths from being IFS'd.
+ echo "$f";;
+ *) # Relative
+ if test -f "$f"; then
+ # Build tree
+ echo "$f"
+ elif test -f "$srcdir/$f"; then
+ # Source tree
+ echo "$srcdir/$f"
+ else
+ # /dev/null tree
+ { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ fi;;
+ esac
+ done` || { (exit 1); exit 1; }
+ # Remove the trailing spaces.
+ sed 's/[ ]*$//' $ac_file_inputs >$tmp/in
+
+_ACEOF
+
+# Transform confdefs.h into two sed scripts, `conftest.defines' and
+# `conftest.undefs', that substitutes the proper values into
+# config.h.in to produce config.h. The first handles `#define'
+# templates, and the second `#undef' templates.
+# And first: Protect against being on the right side of a sed subst in
+# config.status. Protect against being in an unquoted here document
+# in config.status.
+rm -f conftest.defines conftest.undefs
+# Using a here document instead of a string reduces the quoting nightmare.
+# Putting comments in sed scripts is not portable.
+#
+# `end' is used to avoid that the second main sed command (meant for
+# 0-ary CPP macros) applies to n-ary macro definitions.
+# See the Autoconf documentation for `clear'.
+cat >confdef2sed.sed <<\_ACEOF
+s/[\\&,]/\\&/g
+s,[\\$`],\\&,g
+t clear
+: clear
+s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
+t end
+s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
+: end
+_ACEOF
+# If some macros were called several times there might be several times
+# the same #defines, which is useless. Nevertheless, we may not want to
+# sort them, since we want the *last* AC-DEFINE to be honored.
+uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
+sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
+rm -f confdef2sed.sed
+
+# This sed command replaces #undef with comments. This is necessary, for
+# example, in the case of _POSIX_SOURCE, which is predefined and required
+# on some systems where configure will not decide to define it.
+cat >>conftest.undefs <<\_ACEOF
+s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
+_ACEOF
+
+# Break up conftest.defines because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
+echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
+echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
+echo ' :' >>$CONFIG_STATUS
+rm -f conftest.tail
+while grep . conftest.defines >/dev/null
+do
+ # Write a limited-size here document to $tmp/defines.sed.
+ echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
+ # Speed up: don't consider the non `#define' lines.
+ echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS
+ # Work around the forget-to-reset-the-flag bug.
+ echo 't clr' >>$CONFIG_STATUS
+ echo ': clr' >>$CONFIG_STATUS
+ sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
+ echo 'CEOF
+ sed -f $tmp/defines.sed $tmp/in >$tmp/out
+ rm -f $tmp/in
+ mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+ sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
+ rm -f conftest.defines
+ mv conftest.tail conftest.defines
+done
+rm -f conftest.defines
+echo ' fi # grep' >>$CONFIG_STATUS
+echo >>$CONFIG_STATUS
+
+# Break up conftest.undefs because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo ' # Handle all the #undef templates' >>$CONFIG_STATUS
+rm -f conftest.tail
+while grep . conftest.undefs >/dev/null
+do
+ # Write a limited-size here document to $tmp/undefs.sed.
+ echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
+ # Speed up: don't consider the non `#undef'
+ echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS
+ # Work around the forget-to-reset-the-flag bug.
+ echo 't clr' >>$CONFIG_STATUS
+ echo ': clr' >>$CONFIG_STATUS
+ sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
+ echo 'CEOF
+ sed -f $tmp/undefs.sed $tmp/in >$tmp/out
+ rm -f $tmp/in
+ mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+ sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
+ rm -f conftest.undefs
+ mv conftest.tail conftest.undefs
+done
+rm -f conftest.undefs
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ if test x"$ac_file" = x-; then
+ echo "/* Generated by configure. */" >$tmp/config.h
+ else
+ echo "/* $ac_file. Generated by configure. */" >$tmp/config.h
+ fi
+ cat $tmp/in >>$tmp/config.h
+ rm -f $tmp/in
+ if test x"$ac_file" != x-; then
+ if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
+ { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+echo "$as_me: $ac_file is unchanged" >&6;}
+ else
+ ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ { if $as_mkdir_p; then
+ mkdir -p "$ac_dir"
+ else
+ as_dir="$ac_dir"
+ as_dirs=
+ while test ! -d "$as_dir"; do
+ as_dirs="$as_dir $as_dirs"
+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ done
+ test ! -n "$as_dirs" || mkdir $as_dirs
+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+ { (exit 1); exit 1; }; }; }
+
+ rm -f $ac_file
+ mv $tmp/config.h $ac_file
+ fi
+ else
+ cat $tmp/config.h
+ rm -f $tmp/config.h
+ fi
+done
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+{ (exit 0); exit 0; }
+_ACEOF
+chmod +x $CONFIG_STATUS
+ac_clean_files=$ac_clean_files_save
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded. So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status. When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+ ac_cs_success=:
+ ac_config_status_args=
+ test "$silent" = yes &&
+ ac_config_status_args="$ac_config_status_args --quiet"
+ exec 5>/dev/null
+ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+ exec 5>>config.log
+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+ # would make configure fail if this is the last instruction.
+ $ac_cs_success || { (exit 1); exit 1; }
+fi
+
diff --git a/debian/fireflies/fireflies-2.08/libgfx/configure.in b/debian/fireflies/fireflies-2.08/libgfx/configure.in
new file mode 100644
index 00000000..f0c0a630
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/configure.in
@@ -0,0 +1,290 @@
+dnl Process this file with 'autoconf' to produce a 'configure' script
+dnl $Id: configure.in 409 2004-07-06 19:22:39Z garland $
+
+AC_REVISION($Revision: 1.19 $)
+AC_INIT(include/gfx/gfx.h)
+AC_CONFIG_HEADER(include/gfx/config.h)
+
+sys=`uname`
+
+dnl ----------------------------------------------------------------------
+dnl --
+dnl -- Handle command line options
+dnl --
+
+AC_ARG_WITH(libtiff-lzw,
+ [ --with-libtiff-lzw Use the libtiff LZW compression kit],
+ AC_DEFINE(HAVE_LIBTIFF_LZW))
+
+AC_ARG_WITH(local,
+ [ --with-local[=DIR] Use libraries in DIR (default /usr/local)],
+ [if test $withval = "yes"; then withval="/usr/local"; fi
+ CPPFLAGS="-I${withval}/include"
+ LDFLAGS="-L${withval}/lib"])
+
+AC_ARG_ENABLE(gzstream,
+ [ --enable-gzstream Allow for automatic (de)compression])
+
+if test "$enable_gzstream" = "yes"; then
+ AC_DEFINE(HAVE_GZSTREAM)
+fi
+
+AC_ARG_ENABLE(warnings,
+ [ --disable-warnings Disable GCC warning (default to on)],
+ [],
+ [enable_warnings="yes"])
+
+case $sys in
+ CYGWIN*|cygwin*)
+ AC_ARG_ENABLE(cygwin,
+ [ --enable-cygwin Use the Cygwin libraries (default=yes)])
+
+ if test "$enable_cygwin" = "no"; then
+ CFLAGS="$CFLAGS -mno-cygwin"
+ CPPFLAGS="$CPPFLAGS -mno-cygwin"
+ CXXFLAGS="$CXXFLAGS -mno-cygwin"
+ fi
+ ;;
+esac
+
+dnl ----------------------------------------------------------------------
+dnl --
+dnl -- Check for programs that the build process needs
+dnl --
+
+AC_PROG_CC
+AC_PROG_CPP
+AC_PROG_CXX
+AC_PROG_CXXCPP
+AC_PROG_RANLIB
+AC_LANG_CPLUSPLUS
+AC_PATH_PROG(RM, rm)
+AC_CHECK_PROG(FLTKCONFIG, fltk-config, fltk-config, :)
+
+dnl -- It might be good to write a more thorough test here
+if test $GCC = "yes"; then
+ CC_DEPEND="\$(CC) -M"
+ CXX_DEPEND="\$(CXX) -M"
+else
+ CC_DEPEND="makedepend"
+ CXX_DEPEND="makedepend"
+fi
+
+AC_SUBST(CC_DEPEND)
+AC_SUBST(CXX_DEPEND)
+
+dnl -- If we're using GCC, turn on warnings unless disabled
+if test $GCC = "yes" -a "$enable_warnings" = "yes"; then
+ warning="-Wall -Wno-sign-compare"
+ CPPFLAGS="$CPPFLAGS $warning"
+fi
+
+dnl ----------------------------------------------------------------------
+dnl --
+dnl -- Check for libraries
+dnl --
+
+AC_CHECK_LIB(m, sqrt)
+
+dnl -- Save the basic (non-GUI) compilation configuration
+BASE_LIBS=${LIBS}
+BASE_CFLAGS=${CFLAGS}
+BASE_CXXFLAGS=${CXXFLAGS}
+BASE_LDFLAGS=${LDFLAGS}
+
+IMG_LIBS=""
+AC_SUBST(IMG_LIBS)
+
+
+dnl -- We pass IMG_LIBS as need libraries to these check because libtiff
+dnl -- can be compiled to use both libz and libjpeg.
+
+AC_CHECK_LIB(z, zlibVersion, AC_DEFINE(HAVE_LIBZ) \
+ IMG_LIBS="$IMG_LIBS -lz", , $IMG_LIBS)
+
+AC_CHECK_LIB(jpeg, jpeg_start_compress, AC_DEFINE(HAVE_LIBJPEG) \
+ IMG_LIBS="$IMG_LIBS -ljpeg", , $IMG_LIBS)
+
+AC_CHECK_LIB(tiff, TIFFOpen, AC_DEFINE(HAVE_LIBTIFF) \
+ IMG_LIBS="$IMG_LIBS -ltiff", , $IMG_LIBS)
+
+AC_CHECK_LIB(png, png_read_image, AC_DEFINE(HAVE_LIBPNG) \
+ IMG_LIBS="$IMG_LIBS -lpng", , $IMG_LIBS)
+
+dnl -- Check for OpenGL headers and libraries
+
+AC_CHECK_HEADERS([GL/gl.h OpenGL/gl.h], [break])
+AC_CHECK_HEADERS([GL/glu.h OpenGL/glu.h], [break])
+
+dnl -- OpenGL Extension headers
+AC_CHECK_HEADERS(GL/glext.h GL/glxext.h GL/wglext.h OpenGL/glext.h,
+ [], [],
+ [#if HAVE_GL_GL_H
+ #include <GL/gl.h>
+ #elif HAVE_OPENGL_GL_H
+ #include <OpenGL/gl.h>
+ #endif
+ ])
+
+case $sys in
+
+Darwin*)
+ AC_DEFINE(HAVE_OPENGL, "OpenGL")
+ AC_DEFINE(HAVE_POLYOFFSET)
+ GL_LIBS="-framework AGL -framework OpenGL"
+ X_CORE="-framework Carbon -framework ApplicationServices"
+ X_DCORE="$X_CORE"
+ X_PRE_LIBS=""
+ X_EXTRA_LIBS=""
+
+ AC_SUBST(X_CFLAGS)
+ AC_SUBST(X_LIBS)
+ AC_SUBST(X_PRE_LIBS)
+ AC_SUBST(X_EXTRA_LIBS)
+ ;;
+
+CYGWIN*|cygwin*)
+ CPPFLAGS="${CPPFLAGS} -DWIN32"
+ AC_DEFINE(HAVE_OPENGL, "OpenGL")
+ AC_DEFINE(HAVE_POLYOFFSET)
+ GL_LIBS="-lopengl32 -lglu32"
+ X_DCORE="-lkernel32 -luser32 -lgdi32 -lcomdlg32 -lole32 -luuid -lcomctl32 -lwsock32"
+ X_CORE="-mwindows -lole32 -luuid -lcomctl32 -lwsock32"
+
+ X_PRE_LIBS=""
+ X_EXTRA_LIBS=""
+
+ AC_SUBST(X_CFLAGS)
+ AC_SUBST(X_LIBS)
+ AC_SUBST(X_PRE_LIBS)
+ AC_SUBST(X_EXTRA_LIBS)
+ ;;
+
+*)
+ AC_PATH_XTRA
+ CFLAGS="${CFLAGS} ${X_CFLAGS}"
+ CXXFLAGS="${CXXFLAGS} ${X_CFLAGS}"
+ LIBS="${X_PRE_LIBS} -lX11 ${X_EXTRA_LIBS} ${LIBS}"
+ LDFLAGS="${LDFLAGS} ${X_LIBS}"
+
+ X_CORE="-lX11 -lXext"
+ X_DCORE="$X_CORE"
+
+ glneeds="$X_CORE $X_EXTRA_LIBS"
+
+ AC_CHECK_LIB(GL, glBegin, \
+ AC_DEFINE(HAVE_OPENGL, "OpenGL") GL_LIBS="-lGL -lGLU", \
+ AC_CHECK_LIB(MesaGL, glBegin, \
+ [AC_DEFINE(HAVE_OPENGL, "Mesa")
+ GL_LIBS="-lMesaGL -lMesaGLU"], ,$glneeds),$glneeds)
+
+ LIBS="${GL_LIBS} $glneeds"
+
+ dnl -- Check for OpenGL extensions
+ AC_CHECK_FUNC(glPolygonOffset, AC_DEFINE(HAVE_POLYOFFSET))
+ AC_CHECK_FUNC(glPolygonOffsetEXT, AC_DEFINE(HAVE_POLYOFFSET_EXT))
+ ;;
+esac
+
+AC_SUBST(X_CORE)
+AC_SUBST(X_DCORE)
+AC_SUBST(GL_LIBS)
+
+dnl -- Check for FLTK
+dnl We use custom AC_TRY_LINK tests because AC_CHECK_LIB can't really
+dnl properly handle C++ name mangling.
+
+FLTK_LIBS="-lfltk"
+
+AC_MSG_CHECKING(for FLTK library)
+save_libs=$LIBS
+LIBS="$FLTK_LIBS $X_CORE $LIBS"
+AC_TRY_LINK(
+ [#include <FL/Fl.H>],
+ [Fl::run();],
+ [AC_DEFINE(HAVE_FLTK)
+ AC_MSG_RESULT(yes)],
+ [AC_MSG_RESULT(no)
+ FLTK_LIBS=""])
+LIBS=$save_libs
+
+AC_MSG_CHECKING(for FLTK GL support)
+save_libs=$LIBS
+LIBS="$FLTK_LIBS $GL_LIBS $X_CORE $LIBS"
+AC_TRY_LINK(
+ [#include <FL/Fl.H>
+ #include <FL/Fl_Gl_Window.H>],
+ [Fl_Gl_Window win(640,480);],
+ [AC_DEFINE(HAVE_FLTK_GL)
+ AC_MSG_RESULT(in libfltk)],
+ [FLTK_LIBS="-lfltk_gl $FLTK_LIBS"
+ LIBS="$FLTK_LIBS $GL_LIBS $X_CORE $save_libs"
+ AC_TRY_LINK(
+ [#include <FL/Fl.H>
+ #include <FL/Fl_Gl_Window.H>],
+ [Fl_Gl_Window win(640,480);],
+ [AC_DEFINE(HAVE_FLTK_GL)
+ AC_MSG_RESULT(in libfltk_gl)],
+ [FLTK_LIBS="-lfltk"
+ AC_MSG_RESULT(no)])])
+
+LIBS=$save_libs
+AC_SUBST(FLTK_LIBS)
+
+dnl -- Restore non-GUI compilation settings
+LIBS=${BASE_LIBS}
+CFLAGS=${BASE_CFLAGS}
+CXXFLAGS=${BASE_CXXFLAGS}
+LDFLAGS=${BASE_LDFLAGS}
+
+dnl ----------------------------------------------------------------------
+dnl --
+dnl -- Check for header files that we'll need
+dnl --
+
+AC_HEADER_STDC
+AC_CHECK_HEADERS(limits.h)
+AC_CHECK_HEADERS(unistd.h)
+
+
+dnl -- STL headers that aren't always available
+AC_CHECK_HEADERS(hash_map)
+AC_CHECK_HEADERS(hash_set)
+AC_CHECK_HEADERS(ext/hash_map)
+AC_CHECK_HEADERS(ext/hash_set)
+AC_CHECK_HEADERS(valarray)
+AC_CHECK_HEADERS(sstream)
+AC_CHECK_HEADERS(strstream)
+
+dnl ----------------------------------------------------------------------
+dnl --
+dnl -- Check for typedefs, declarations, and compiler characteristics
+dnl --
+
+AC_C_CONST
+AC_C_INLINE
+
+AC_MSG_CHECKING(for type bool)
+AC_TRY_COMPILE([],
+ [bool x; x;],
+ [AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_BOOL)],
+ AC_MSG_RESULT(no))
+
+
+AC_FUNC_ALLOCA
+AC_CHECK_FUNCS(rint getrusage times random getopt getopt_long)
+
+dnl ----------------------------------------------------------------------
+dnl --
+dnl -- Wrap up and write the results
+dnl --
+
+ROOT=`pwd`
+
+CPPFLAGS="$CPPFLAGS -I${ROOT}/include -DHAVE_CONFIG_H"
+CFLAGS="$BASE_CFLAGS $CPPFLAGS"
+CXXFLAGS="$BASE_CXXFLAGS $CPPFLAGS"
+LDFLAGS="$BASE_LDFLAGS -L${ROOT}/src"
+
+AC_OUTPUT(gfx-config)
diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/build.html b/debian/fireflies/fireflies-2.08/libgfx/doc/build.html
new file mode 100644
index 00000000..e373c81e
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/doc/build.html
@@ -0,0 +1,135 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
+ "http://www.w3.org/TR/REC-html40/loose.dtd">
+<!-- $Id: build.html 334 2002-04-02 17:01:32Z garland $ -->
+
+<html>
+
+<head>
+<title>libgfx: Building the Library</title>
+<link rel=stylesheet href="cdoc.css" type="text/css">
+<meta name="Author" content="Michael Garland">
+</head>
+
+<body>
+
+<h2>Building the Library</h2>
+
+<p><tt>libgfx</tt> is a C++ library which is meant to be fairly easy
+to compile on a wide range of systems. It was developed under Windows
+NT 4.0, Windows 2000, and RedHat Linux 6.
+
+<p>This library does make use of the ANSI C++ Standard Library. For
+instance, it uses the new <tt>&lt;iostream&gt;</tt> rather than the
+old <tt>&lt;iostream.h&gt;</tt> package. And it does make some
+minimal use of the Standard Template Library (STL). Therefore, it may
+not work on older C++ compilers. It is known to work on Microsoft
+Visual C++ version 5.0 and above and GNU GCC version 2.9 and above.
+
+<p><strong>Required</strong> external libraries:
+<ul>
+<li>The <a href="http://www.fltk.org">FLTK</a> graphical interface toolkit.
+<li>An <a href="http://www.opengl.org">OpenGL</a> library
+or the <a href="http://www.mesa3d.org">Mesa</a> library.
+</ul>
+
+
+<p><strong>Optional</strong> external libraries:
+<ul>
+<li>The <a href="http://www.libtiff.org">libtiff</a> library for TIFF image
+file support
+
+<li>The JPEG support library from the
+<a href="http://www.ijg.org">Independent JPEG Group</a>
+
+<li>The <a href="http://www.libpng.org/pub/png/">libpng</a> library
+for PNG image file support.
+
+</ul>
+
+
+<h3>For Windows Systems</h3>
+
+
+
+
+<h4>Visual C++</h4>
+
+<p>A Visual C++ 6.0 workspace and accompanying project files are
+provided in the <tt>vc6</tt> directory.
+An older VC++ 5.0 workspace is available in the <tt>vc5</tt> directory.
+However, this is no longer in regular use and may be out of date.
+
+<h5>Manual Build</h5>
+
+<p>The library can also be built manually using the <tt>nmake</tt>
+command line tool. A <tt>configure.bat</tt> batch file is provided
+which will set up the necessary configuration files.
+
+<p>To build the library manually, use the following process:
+<ol>
+<li><tt>configure.bat</tt>
+<li><tt>cd src</tt>
+<li><tt>nmake /f Makefile.vc</tt>
+</ol>
+
+
+<h4>Cygwin</h4>
+
+<p>The <tt>libgfx</tt> library will build properly under Windows with
+ the <a href="http://sourceware.cygnus.com/cygwin/">Cygwin</a>
+ toolset. Simply follow the directions for <a href="#unix">Unix
+ systems</a>.
+
+
+
+
+<h3><a name="unix">For Unix Systems</a></h3>
+
+<p>The Unix build process relies on the GNU
+<a href="http://www.gnu.org/software/autoconf/autoconf.html">Autoconf</a>
+system to properly configure the software.
+
+<p>Once the required libraries are installed, you should be able to
+build the library using the following process:
+<ol>
+<li><tt>./configure</tt>
+<li><tt>cd src</tt>
+<li><tt>make</tt>
+</ol>
+If the support libraries are installed in a directory outside the default
+search path, you can invoke the <tt>configure</tt> script with the option
+<tt>--with-local[=dir]</tt> which will add "dir" to the search path. The
+default local directory is <tt>/usr/local</tt>, but you can specify any
+directory of your choice.
+
+<h3><a name="macosx">For Mac OS X Systems</a></h3>
+
+<p>The current version of <tt>libgfx</tt> can be successfully compiled
+under Mac OS X, but it requires a bit of manual intervention.
+
+<p>First, you should install the FLTK library. To build under Mac OS X,
+you must use version 1.1.0 or later.
+Next, you should follow the instructions for using the Autoconf
+script outlined in the <a href="#unix">directions for Unix systems</a>
+above.
+
+<p>This is sufficient to compile command-line programs. However, GUI
+programs require a little extra work. The typical GUI <tt>make</tt> rule looks
+like this:
+<pre>
+ gui-program: gui-program.cxx
+ $(CXX) -o $@ $^ $(CXXFLAGS) $(LDFLAGS) -lgfx $(GUI_LIBS) -lm
+</pre>
+To work correctly with the Mac OS, you must add an additional step to
+this <tt>make</tt> rule:
+<pre>
+ gui-program: gui-program.cxx
+ $(CXX) -o $@ $^ $(CXXFLAGS) $(LDFLAGS) -lgfx $(GUI_LIBS) -lm
+ $(FLTKCONFIG) --post $@
+</pre>
+This uses the <tt>fltk-config</tt> script to add a standard resource
+fork to the compiled application.
+
+</body>
+
+</html>
diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/cdoc.css b/debian/fireflies/fireflies-2.08/libgfx/doc/cdoc.css
new file mode 100644
index 00000000..289832b6
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/doc/cdoc.css
@@ -0,0 +1,86 @@
+/*
+ * Stylesheet for code documentation
+ *
+ * $Id: cdoc.css 268 2001-10-02 16:09:20Z garland $
+ */
+
+BODY {
+ font-family: "Times New Roman", "Times", serif;
+ background-color: white;
+ color: black;
+}
+
+@media screen {
+ BODY {
+ margin-left: 11.11%;
+ margin-right: 11.11%;
+ }
+
+ /* To be used for floating navbars */
+ DIV.navbar {
+ font-family: Arial Narrow;
+ display: block;
+ text-align: left;
+ float: right;
+ padding-bottom: 2pt;
+ padding-left: 2pt;
+ border-left: thin dashed black;
+ border-bottom: thin dashed black;
+ }
+}
+
+@media print {
+ /* IE often prints Web pages in excessively large fonts */
+ BODY { font-size: 10pt; }
+
+ /* Navbars should not be printed */
+ DIV.navbar { display: none }
+
+ /* H2 headers are used as the top-level elements for separate sections */
+ H2 { page-break-before: always }
+}
+
+H1, H2, H3, H4, H5, H6 { clear: both; font-family: Arial, sans-serif; }
+H1 { font-size: 249% }
+H2 { font-size: 172%; }
+H3 { font-size: 144%; }
+H4 { font-size: 120%; margin-bottom: 0.5em; }
+H5,H6 { font-size: 100%; margin-bottom: 0.2em; }
+
+H1, H2, H3, H4 {
+ color: #4444aa;
+ background-color: #cccccc;
+ padding-top: 4px;
+ padding-left: 4px;
+ padding-right: 4px;
+ padding-bottom: 4px;
+}
+
+H1,H2 { margin-left: -1.5em; }
+H3 { margin-left: -0.75em; }
+
+P { text-indent: 0pt; }
+P.indent { text-indent: 1em; }
+P.justify { text-align: justify; }
+
+PRE.code { margin-left: 2em }
+
+/* The standard size scale */
+.min5 { font-size: 40%; }
+.min4 { font-size: 48%; }
+.min3 { font-size: 58%; }
+.min2 { font-size: 69%; }
+.min1 { font-size: 83%; }
+.min0 { font-size: 100%; }
+.mag0 { font-size: 100%; }
+.mag1 { font-size: 120%; }
+.mag2 { font-size: 144%; }
+.mag3 { font-size: 172%; }
+.mag4 { font-size: 207%; }
+.mag5 { font-size: 249%; }
+
+/* Link styles */
+A { text-decoration: none }
+A:active {color: red}
+A:hover {color: red}
+A:visited {color: purple}
diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/ex-gui.html b/debian/fireflies/fireflies-2.08/libgfx/doc/ex-gui.html
new file mode 100644
index 00000000..d1e0a1be
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/doc/ex-gui.html
@@ -0,0 +1,238 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
+ "http://www.w3.org/TR/REC-html40/loose.dtd">
+<!-- $Id: ex-gui.html 173 2000-09-07 02:57:34Z garland $ -->
+
+<!-- Based on ../tests/t-gui.cxx revision 1.3 -->
+
+<html>
+
+<head>
+<title>libgfx: Simple GUI Example Program</title>
+<link rel=stylesheet href="cdoc.css" type="text/css">
+<meta name="Author" content="Michael Garland">
+
+<style type="text/css">
+<!--
+pre { margin-left: 2em }
+-->
+</style>
+
+</head>
+
+<body>
+
+<h2>Simple GUI Example Program</h2>
+
+<p>This is a very simple program which uses the minimalist <a
+href="gui.html">GUI</a> facility provided by <tt>libgfx</tt>
+to create a window a draw a red square in it. When first started, it
+presents the user with a window which looks like the one shown below.
+The full source code for this example application can be found in
+the file <tt>tests/t-gui.cxx</tt> in the <tt>libgfx</tt> source
+distribution.
+
+<p>
+<div align=center>
+<img src="gui-redbox.gif">
+</div>
+
+<h3>Setup</h3>
+
+<p>The program begins by including some of the standard
+<tt>libgfx</tt> headers.
+
+<pre>
+#include &lt;gfx/gfx.h&gt;
+#include &lt;gfx/gui.h&gt;
+#include &lt;gfx/gltools.h&gt;
+</pre>
+
+<p>The first step in using the <tt>libgfx</tt> GUI framework is to
+subclass the <tt>MxGUI</tt> class and override whatever handlers you
+want to write code for. After defining the subclass, you must then
+create a <em>single</em> instance. In this application, we override
+the handlers involved with drawing and mouse events.
+We also follow the recommended idiom of naming our derived subclass
+<tt>GUI</tt> and its lone instance <tt>gui</tt>.
+
+<pre>
+class GUI : public MxGUI
+{
+public:
+ float angle, opt_theta, center[2];
+ bool dragging;
+
+public:
+ <i>// Drawing-related handler methods</i>
+ virtual void setup_for_drawing();
+ virtual void draw_contents();
+ virtual void update_animation();
+
+ <i>// Mouse-related handler methods</i>
+ virtual bool mouse_down(int *where, int which);
+ virtual bool mouse_up(int *where, int which);
+ virtual bool mouse_drag(int *where, int *last, int which);
+};
+
+GUI gui;
+</pre>
+
+
+<h3>Application Entry Point</h3>
+
+<p><tt>MxGUI</tt> programs always use the <tt>main()</tt> procedure as
+their entry point, even on Windows systems. This application follows
+the recommended sequence of actions
+<ol>
+<li>Initialize member variables defined by the <tt>GUI</tt> derived class.
+<li>Call <tt>gui.initialize()</tt> to parse the command line and
+create the application.
+<li>Customize the default application by changing labels, adding
+menus, etc.
+<li>And finally, call <tt>gui.run()</tt> to open the application
+window and begin the event loop.
+</ol>
+These four distinct phases are indicated in the program source by
+whitespace-separated blocks.
+
+<pre>
+main(int argc, char **argv)
+{
+ gui.opt_theta = 10.0f;
+ gui.angle = 0.0f;
+ gui.dragging = false;
+ gui.center[0] = gui.center[1] = 0.0f;
+
+ gui.initialize(argc, argv);
+
+ gui.toplevel->label("Simple GUI Example");
+
+ return gui.run();
+}
+</pre>
+
+<h3>Drawing-Related Handler Methods</h3>
+
+<p>Whenever our OpenGL drawing canvas is created, resized, or
+otherwise reconfigured, the <tt>setup_for_drawing()</tt> handler is
+invoked. This is where you want to set up any graphics state that is
+the same for every frame.
+
+<pre>
+void GUI::setup_for_drawing()
+{
+ glClearColor(0.65f, 0.65f, 0.65f, 0.0f);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+
+ glMatrixMode(GL_PROJECTION);
+ gluOrtho2D(-1.0, 1.0, -1.0, 1.0);
+}
+</pre>
+
+
+<p>If the contents of the OpenGL canvas need to be redrawn, the
+<tt>draw_contents()</tt> handler is invoked.
+
+<pre>
+void GUI::draw_contents()
+{
+ glClear(GL_COLOR_BUFFER_BIT);
+
+ glMatrixMode(GL_MODELVIEW);
+ glPushMatrix();
+ glLoadIdentity();
+
+ <i>// Draw the black axes</i>
+ glColor3f(0.0, 0.0, 0.0);
+ glBegin(GL_LINES);
+ glVertex2f(-1.0, 0.0);
+ glVertex2f(1.0, 0.0);
+ glVertex2f(0.0, -1.0);
+ glVertex2f(0.0, 1.0);
+ glEnd();
+
+ glTranslatef(center[0], center[1], 0);
+ glRotatef(angle, 0, 0, 1);
+
+ <i>// Draw the red rectangle</i>
+ glEnable(GL_BLEND);
+ glColor4d(0.8, 0.15, 0.15, 0.85);
+ glBegin(dragging?GL_LINE_LOOP:GL_POLYGON);
+ glBegin(GL_POLYGON);
+ glVertex2f(-0.5, -0.5);
+ glVertex2f(-0.5, 0.5);
+ glVertex2f(0.5, 0.5);
+ glVertex2f(0.5, -0.5);
+ glEnd();
+ glDisable(GL_BLEND);
+
+ glPopMatrix();
+}
+</pre>
+
+<p>The <tt>MxGUI</tt> framework provides a simplistic animation
+mechanism. Whenever animation is activated --- the user controls this
+via a menu entry --- the event loop will periodically call the
+<tt>update_animation()</tt> handler.
+<pre>
+void GUI::update_animation()
+{
+ angle += opt_theta;
+}
+</pre>
+
+<h3>Mouse-Related Handler Methods</h3>
+
+<p>When the user clicks the left mouse button, we want to re-center
+the square around that position. We use a call to the
+<tt>unproject_pixel()</tt> <a href="gl.html">utility function</a>
+to map the pixel location into a world-space coordinate.
+
+<pre>
+static bool center_on_click(float *ctr, int *where)
+{
+ double world[3];
+
+ unproject_pixel(where, world);
+ ctr[0] = (float)world[0];
+ ctr[1] = (float)world[1];
+
+ return true;
+}
+</pre>
+
+<p>Given the above code to center the rectangle on a click location,
+it is a simple matter to write our mouse handlers. Whenever the
+left button is pressed or dragged, we recenter the rectangle. We also
+maintain the value of <tt>gui.dragging</tt> to indicate whether the
+mouse is being dragged. If it is, the <tt>draw_contents()</tt>
+handler will draw the rectangle as an outline rather than a filled box.
+
+<pre>
+bool GUI::mouse_down(int *where, int which)
+{
+ if( which==1 )
+ {
+ dragging = true;
+ return center_on_click(center, where);
+ }
+ else return false;
+}
+
+bool GUI::mouse_up(int *where, int which)
+{
+ dragging = false;
+ return (which==1);
+}
+
+bool GUI::mouse_drag(int *where, int *last, int which)
+{
+ if( which==1 )
+ return center_on_click(center, where);
+ else
+ return false;
+}
+</pre>
+
+</body>
+</html>
diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/ex-script.html b/debian/fireflies/fireflies-2.08/libgfx/doc/ex-script.html
new file mode 100644
index 00000000..56124fb4
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/doc/ex-script.html
@@ -0,0 +1,153 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
+ "http://www.w3.org/TR/REC-html40/loose.dtd">
+<!-- $Id: ex-script.html 269 2001-10-10 00:38:28Z garland $ -->
+
+<!-- Based on ../tests/t-script.cxx revision 1.6 -->
+
+<html>
+
+<head>
+<title>libgfx: Simple Scripted Program</title>
+<link rel=stylesheet href="cdoc.css" type="text/css">
+<meta name="Author" content="Michael Garland">
+
+<style type="text/css">
+<!--
+pre { margin-left: 2em }
+-->
+</style>
+
+</head>
+
+<body>
+
+<h2>Simple Scripted Program</h2>
+
+<p>This program demonstrates some of the basic features provided by the
+<tt>libgfx</tt> <a href="script.html">scripting package</a>. Given a list of
+file names on the command line, it reads each of them in turn and executes the
+scripting commands contained within them.
+
+<h3>Setup and Initialization</h3>
+
+<p>The program begins by including the headers for the <tt>libgfx</tt> modules
+which it uses:
+<pre>
+#include &lt;gfx/gfx.h&gt;
+#include &lt;gfx/script.h&gt;
+#include &lt;gfx/vec3.h&gt;
+</pre>
+
+<p>The <tt>main()</tt> application entry point performs a very simple task.
+It creates a scripting environment (<tt>class CmdEnv</tt> and registers a set
+of scripting commands. Once these handlers have been installed,
+it loops over every file name specified on the command line and executes it as
+a script.
+<pre>
+main(int argc, char *argv[])
+{
+ CmdEnv env;
+
+ env.register_command("add", proc_add);
+ env.register_command("avg", proc_add);
+ env.register_command("echo", proc_echo);
+ env.register_command("vec3", proc_vec3);
+
+ for(int i=1; i&amp;argc; i++)
+ script_do_file(argv[i], env);
+
+ return 0;
+}
+</pre>
+
+<h3>Command Procedures</h3>
+
+<p>Every scripting command is handled by some command procedure. The
+registration code above binds the actual procedures to the names of their
+scripting commands. Then, whenever a given command occurs in a script being
+processed, the corresponding handler is invoked.
+
+<p>The first command procedure actually implements two scripting commands:
+<tt>add</tt> and <tt>avg</tt>. It determines which command has been invoked
+by examining its <tt>name</tt> argument.
+It treats its command line as a whitespace-separated sequence of numbers,
+either adds or averages all of them, and then prints the result.
+<pre>
+int proc_add(const CmdLine &amp;cmd)
+{
+ double sum = 0.0;
+ int count;
+
+ std::vector&lt;double&gt; values;
+ cmd.collect_as_numbers(values);
+ for(count=0; count&lt;values.size(); count++)
+ sum += values[count];
+
+ if( cmd.opname() == "avg" &amp;&amp; count&gt;0 )
+ sum /= (double)count;
+
+ cout &lt;&lt; sum &lt;&lt; endl;
+ return SCRIPT_OK;
+}
+</pre>
+
+<p>This next procedure requires precisely 3 numeric arguments, from which it
+constructs a 3-D vector using the <tt>Vec3</tt> class. If the number of
+arguments is not 3, it returns a value indicating a syntax error occurred.
+<pre>
+int proc_vec3(const CmdLine &amp;cmd)
+{
+ if( cmd.argcount() != 3 ) return SCRIPT_ERR_SYNTAX;
+
+ Vec3 v;
+ cmd.collect_as_numbers(v, 3);
+
+ cout &lt;&lt; v &lt;&lt; endl;
+ return SCRIPT_OK;
+}
+</pre>
+
+<p>Finally, the <tt>echo</tt> procedure does not interpret its arguments at
+all. Instead, it simply prints the entire argument line as is.
+<pre>
+int proc_echo(const CmdLine &amp;cmd)
+{
+ cout &lt;&lt; cmd.argline() &lt;&lt; endl;
+ return SCRIPT_OK;
+}
+</pre>
+
+<h3>Sample Execution</h3>
+
+<p>To demonstrate the action of this sample program, here is a particularly
+simple script.
+<pre>
+# This is a test script meant to be fed to t-script. It is not meant as an
+# exhaustive test, but mainly as a demonstration.
+
+echo The following sum should be 15
+add 1 2 3 4 5
+
+echo
+echo The following average should be 3.5
+avg 3 8 2 1
+
+echo
+echo The following is the vector [1 0 0]
+vec3 1 0 0
+</pre>
+
+<p>When given to the sample program, it produces the following output
+<pre>
+The following sum should be 15
+15
+
+The following average should be 3.5
+3.5
+
+The following is the vector [1 0 0]
+1 0 0
+</pre>
+
+</body>
+</html>
diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/geom3d.html b/debian/fireflies/fireflies-2.08/libgfx/doc/geom3d.html
new file mode 100644
index 00000000..549aa7a7
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/doc/geom3d.html
@@ -0,0 +1,59 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
+ "http://www.w3.org/TR/REC-html40/loose.dtd">
+<!-- $Id: geom3d.html 160 2000-09-05 19:44:15Z garland $ -->
+
+<html>
+
+<head>
+<title>libgfx: 3-D Geometric Procedures</title>
+<link rel=stylesheet href="cdoc.css" type="text/css">
+<meta name="Author" content="Michael Garland">
+</head>
+
+<body>
+
+<h2>3-D Geometric Procedures</h2>
+
+<p>Triangles are a very common modeling primitive in many graphics
+applications. The <tt>libgfx</tt> library provides a package of routines for
+computing various geometric properties of triangles.
+To use this package you must include the standard header file
+<pre>
+ #include &lt;gfx/geom3d.h&gt;
+</pre>
+Note that all of these functions assume that the corners of the triangle are
+listed in <em>counter-clockwise order</em> around the outward pointing normal.
+
+<p>You can compute the (signed) area of a triangle using the following
+function. Note that the area will be negative if the vertices are listed in
+clockwise order.
+<pre>
+ double triangle_area(const Vec3&amp;, const Vec3&amp;, const Vec3&amp;);
+</pre>
+
+<p>The following functions compute the plane defined by a triangle, and the
+corresponding normal vector. The standard versions always use unit normal
+vectors while the "raw" versions will use unscaled normals.
+<pre>
+ Vec3 triangle_normal(const Vec3&amp;, const Vec3&amp;, const Vec3&amp;);
+ Vec4 triangle_plane(const Vec3&amp;, const Vec3&amp;, const Vec3&amp;);
+
+ Vec3 triangle_raw_normal(const Vec3&amp;, const Vec3&amp;, const Vec3&amp;);
+ Vec4 triangle_raw_plane(const Vec3&amp;, const Vec3&amp;, const Vec3&amp;);
+</pre>
+
+
+<p>For some meshing applications, it may on occasion be necessary to assess
+the aspect ratio of a triangle.
+<pre>
+ double triangle_compactness(const Vec3&amp;, const Vec3&amp;, const Vec3&amp;);
+</pre>
+This function computes the "compactness" of a triangle. The returned value
+will be between 0 and 1, with 0 meaning a degenerate (area=0) triangle and 1
+meaning an equilateral triangle. The formula used, originally suggested by
+Andre Gueziec, is 4*sqrt(3) * Area / (L1 + L2 + L3) where Li is the squared
+length of side <i>i</i> of the triangle.
+
+</body>
+
+</html>
diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/gl.html b/debian/fireflies/fireflies-2.08/libgfx/doc/gl.html
new file mode 100644
index 00000000..a00ba9ab
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/doc/gl.html
@@ -0,0 +1,112 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
+ "http://www.w3.org/TR/REC-html40/loose.dtd">
+<!-- $Id: gl.html 156 2000-09-05 16:33:04Z garland $ -->
+
+<html>
+
+<head>
+<title>libgfx: OpenGL Support</title>
+<link rel=stylesheet href="cdoc.css" type="text/css">
+<meta name="Author" content="Michael Garland">
+</head>
+
+<body>
+
+<h2>OpenGL Support</h2>
+
+<p>
+
+
+<p><strong>Important:</strong>
+The standard way to include the OpenGL headers is to include the
+headers
+
+<pre>
+ #include &lt;GL/gl.h&gt;
+ #include &lt;GL/glu.h&gt;
+</pre>
+
+However, to ensure portability you <em>should not</em> do this; use
+the following inclusion instead:
+
+<pre>
+ #include &lt;gfx/gl.h&gt;
+</pre>
+
+The primary reason for this is that the Microsoft OpenGL headers do
+not work properly unless you have included <tt>&lt;windows.h&gt;</tt>
+first. This <tt>libgfx</tt> header takes care of the necessary
+<tt>#ifdefs</tt> and keeps your code looking cleaner.
+
+
+<h3>Utility Functions</h3>
+
+
+To gain access to these utility functions, include the header
+
+<pre>
+ #include &lt;gfx/gltools.h&gt;
+</pre>
+
+<p>Given a pixel coordinate in the OpenGL viewport, it is often
+necessary to project this to a 3-D point in the world being displayed.
+You can use the function
+<pre>
+ int unproject_pixel(int *pixel, double *world, double z=0.0);
+</pre>
+to accomplish this.
+
+
+
+<p>To simplify the display of 3-D scenes, the function
+<pre>
+ void camera_lookat(const Vec3& min, const Vec3& max, double aspect);
+</pre>
+will set up a standard viewing geometry for displaying an object
+bounded by the axis-aligned box [<tt>min</tt>, <tt>max</tt>] in a
+window whose aspect ratio is <tt>aspect</tt>.
+The camera will be looking at the center of the box, from a position
+further along the <i>z</i> axis, with a 60&deg; field of view.
+The viewing transform will be multiplied into the current matrix,
+using calls to <tt>gluPerspective()</tt> and <tt>gluLookAt()</tt>.
+
+<p>Errors during OpenGL processing are not reported to the user, they are
+merely flagged in the current OpenGL state. To check for and report any
+OpenGL errors, you can call the function:
+<pre>
+ void check_opengl_errors(const char *msg=NULL);
+</pre>
+An optional message can be provided which will be prepended to the error
+reported (if any).
+
+<h4>Picking</h4>
+
+<p>Interactive programs frequently need to allow the user to select
+individual components of the scene being displayed by clicking on the
+rendered image. Given a pixel location in the window, the application
+must determine which entity the user clicked on.
+The standard technique for doing this with OpenGL is with the selection
+buffer. The <tt>libgfx</tt> library provides some utility functions to make
+using the selection buffer somewhat easier.
+Details on using the selection buffer can be found in the OpenGL Programming
+Guide.
+
+<p>Before drawing your primitives, call the function
+<pre>
+ void begin_opengl_pick(int *ctr, double radius, GLuint *buf, int size);
+</pre>
+with the location of the user's pointer (<tt>ctr</tt>) and
+the <tt>radius</tt> of the region to consider. You will also need to allocate
+and pass a buffer of object identifiers to hold the candidate objects.
+Having set things up, you can draw your primitives as usual, assigning an
+integer identifier to each using the <tt>glLoadName()</tt> function.
+After all primitives have been drawn, call the function
+<pre>
+ GLuint complete_opengl_pick(GLuint *buffer);
+</pre>
+The returned value will be the identifier of the object clicked on, or
+<tt>opengl_pick_nil</tt> if the user clicked on the background.
+
+</body>
+
+</html>
diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/gui-layout.gif b/debian/fireflies/fireflies-2.08/libgfx/doc/gui-layout.gif
new file mode 100644
index 00000000..767daa05
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/doc/gui-layout.gif
Binary files differ
diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/gui-redbox.gif b/debian/fireflies/fireflies-2.08/libgfx/doc/gui-redbox.gif
new file mode 100644
index 00000000..d53d89fd
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/doc/gui-redbox.gif
Binary files differ
diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/gui.html b/debian/fireflies/fireflies-2.08/libgfx/doc/gui.html
new file mode 100644
index 00000000..01031805
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/doc/gui.html
@@ -0,0 +1,257 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
+ "http://www.w3.org/TR/REC-html40/loose.dtd">
+<!-- $Id: gui.html 307 2002-03-11 21:15:37Z garland $ -->
+
+<html>
+
+<head>
+<title>libgfx: Minimalist GUI Framework</title>
+<link rel=stylesheet href="cdoc.css" type="text/css">
+<meta name="Author" content="Michael Garland">
+</head>
+
+<body>
+
+<h2>Minimalist GUI Framework</h2>
+
+<p>All interactive graphics applications need to create some sort of graphical
+user interface. While many applications may require a fairly sophisticated
+interface, there is a large class of applications which can be built with a
+very simple interface. The <tt>libgfx</tt> library provides a framework to
+ease the construction of such simple interfaces.
+
+<p>The kind of application interface supported by the GUI framework is
+pictured in the following figure:
+<blockquote>
+<center><img src="gui-layout.gif"></center>
+</blockquote>
+
+The application window consists of three primary components:
+<ol>
+<li>A menu bar, which is managed by the GUI framework,
+<li>An OpenGL canvas window where the application is free to draw its content
+and receive user events such as mouse clicks, and
+<li>A status bar where the application can print text messages.
+</ol>
+
+<p>The <a href="ex-gui.html">code for the application pictured
+above</a> provides a concrete example of using this GUI framework.
+
+<h3>Creating a GUI Application</h3>
+
+<p>To begin building your GUI application, you'll need to include the GUI
+framework header:
+<pre>
+ #include &lt;gfx/gui.h&gt;
+</pre>
+The framework itself is packaged as a C++ class named <tt>MxGUI</tt>.
+You create your application by subclassing it and overriding various virtual
+methods. You can then create a single instance of this class, which will
+represent your application.
+For consistency, it is recommended that you name
+the derived subclass <tt>GUI</tt> and its instance <tt>gui</tt> as in the
+following:
+<pre>
+ class GUI : public MxGUI
+ {
+ public:
+ <i>// Application variables and methods</i>
+
+ public:
+ <i>// Override virtual methods to handle events</i>
+ };
+
+ GUI gui; <i>// Create application instance</i>
+</pre>
+
+<p>Programs based using this framework always use the <tt>main()</tt>
+procedure as their entry point, <em>even on Windows systems</em>.
+Inside this main procedure, you should perform this general sequence of
+operations:
+<ol>
+<li>Initialize global variables and member variables defined in the
+<tt>GUI</tt> class.
+<li>Call the <tt>gui.initialize()</tt> procedure to parse the command line and
+create the application.
+<li>Customize the default application by changing labels, adding menus, etc.
+<li>Call <tt>gui.run()</tt> to open the application window and begin the event
+loop.
+</ol>
+
+<p>The <tt>MxGUI::initialize</tt> method must be called to initialize the GUI
+framework.
+<pre>
+ virtual void initialize(int argc, char **argv,
+ Fl_Menu_Item *layout=NULL, int xw=640, int yw=480);
+</pre>
+You should pass to it the <tt>argc</tt> and <tt>argv</tt> command-line
+variables as passed into <tt>main()</tt>. The framework will take care of
+parsing the command-line and calling the appropriate handlers.
+The optional <tt>layout</tt> argument can be used to specify an initial menu
+structure; the default value of <tt>NULL</tt> directs the framework to use the
+default menu layout.
+The optional <tt>xw</tt> and <tt>yw</tt> arguments specify the desired width
+and height (in pixels) of the OpenGL canvas.
+
+<h4>Command-Line Processing</h4>
+
+<p>
+The <tt>MxGUI</tt> framework uses the FLTK
+<a href="http://www.fltk.org/doc-1.0/functions.html#args"><tt>Fl::args</tt></a>
+facility to parse the command line passed to <tt>MxGUI::initialize()</tt>.
+For each option on the command line, it invokes the following handler:
+<pre>
+ virtual int cmdline_option(int argc, char **argv, int& index);
+</pre>
+The <tt>argc</tt> and <tt>argv</tt> values are the complete array originally
+passed to <tt>initialize()</tt>. The <tt>index</tt> argument indicates which
+element of <tt>argv</tt> contains the current switch being processed.
+This <tt>index</tt> variable is passed by reference to allow the handler to
+consume additional elements of <tt>argv</tt> by incrementing <tt>index</tt>.
+The handler should return <tt>1</tt> if it handled the switch and <tt>0</tt>
+otherwise.
+
+<p>Once all options have been processed, the initialization code invokes the
+following handler for each file listed on the command line.
+<pre>
+ virtual void cmdline_file(const char *file);
+</pre>
+If no files are specified this handler will be invoked with a <tt>NULL</tt>
+value.
+
+<h4>Drawing</h4>
+
+<p>The <tt>MxGUI</tt> framework uses two virtual methods to control drawing in
+the OpenGL canvas. The first of these is:
+<pre>
+ virtual void setup_for_drawing();
+</pre>
+This method is called whenever the canvas has been reconfigured. Primarily,
+this occurs when the canvas has either just been shown on the screen (e.g.,
+after creation) or when it has been resized.
+
+<p>Whenever the canvas needs to be repainted, the framework will invoke the
+handler:
+<pre>
+ virtual void draw_contents();
+</pre>
+You should override this method and place all your drawing code in it.
+
+
+<h4>Handling Mouse Events</h4>
+
+<p>Interactive applications will typically want to receive mouse events taking
+place on the OpenGL canvas. The framework classifies mouse events into three
+types:
+<ol>
+<li><strong>Button down:</strong>
+ the user has depressed a mouse button
+<li><strong>Button up:</strong>
+ the user has released a previously depressed button
+<li><strong>Drag:</strong>
+ the user is moving the mouse with a button depressed
+</ol>
+When one of these events occur, the corresponding event handler will be
+invoked:
+<pre>
+ virtual bool mouse_down(int *where, int which);
+ virtual bool mouse_up(int *where, int which);
+ virtual bool mouse_drag(int *where, int *last, int which);
+</pre>
+The <tt>where</tt> argument is a 2-D array containing the pixel location in
+the OpenGL canvas at which the mouse was pointing when the event occurred.
+The number of the button involved (either 1, 2, or 3) is passed in the
+<tt>which</tt> argument.
+To simplify drag operations, that event handler is also passed the location of
+the <tt>last</tt> received drag event.
+
+<p>All of these mouse handlers should return <tt>true</tt> if the canvas
+should be redrawn in response to the event just handled. If the canvas does
+not need to be updated, they should return <tt>false</tt>.
+
+<h4>Handling Key Presses</h4>
+
+<p>Key press events can be received through the virtual function:
+<pre>
+ virtual bool key_press(int key);
+</pre>
+The return value of this function indicates whether the key press event
+was consumed by the handler. You should make sure to return
+<tt>false</tt> if you do not use the given key, otherwise keyboard
+accelerators for the menu bar will no longer function correctly.
+
+<p>Note that FLTK defines
+<a
+ href="http://www.fltk.org/doc-1.0/enumerations.html#key_values">symbolic
+ names</a> for non-ASCII keys. You can also query the state of the
+modifier keys using the <tt><a href="http://www.fltk.org/doc-1.0/enumerations.html#13_6">Fl::event_state()</a></tt> function.
+
+<h4>Animation</h4>
+
+<p>A very simple mechanism for supporting animation is also provided by the
+framework. To take advantage of this, first set the <tt>MxGUI</tt> instance
+variable
+<pre>
+ float default_fps;
+</pre>
+to the desired number of frames per second (defaults to 24). The method
+<pre>
+ void animate(bool will);
+</pre>
+can then be used to start and stop animation.
+The system works by setting a system timer to go off every 1/fps of a second.
+When that timer goes off, the framework will call the handler
+<pre>
+ virtual void update_animation();
+</pre>
+so that the application can update its state appropriately, after which the
+framework will invoke the <tt>draw_contents()</tt> handler to repaint the
+canvas. Note that this system makes no effort to guarantee a consistent
+update rate.
+
+<p>The default menu bar contains items to toggle animation on and off and to
+set the desired <tt>default_fps</tt> value.
+
+
+<h3>The Menu Bar</h3>
+
+<p>Many GUI applications use menu systems to provide the user control over the
+application. By default, the <tt>MxGUI</tt> framework creates a very simple
+menu layout for its applications. This standard menu provides basic features
+such as saving a snapshot of the OpenGL canvas to an image file, toggling
+animation, and setting the size of the display canvas.
+However, the application also has complete freedom to customize the menu
+system.
+
+<h4>Static Menu Layouts</h4>
+
+<p>The <tt>initialize()</tt> method accepts an optional argument which
+specifies the layout of the menu system. This layout is an array of <a
+href="http://www.fltk.org/doc-1.0/Fl_Menu_Item.html">Fl_Menu_Item</a> elements,
+whose format is described in the <a
+href="http://www.fltk.org/doc-1.0/Fl_Menu_Item.html">FLTK documentation</a>.
+Passing a menu layout to <tt>initialize()</tt> will completely replace the
+default menu structure.
+
+<h4>Adding Menus at Run Time</h4>
+
+<p>Once an initial menu system has been created, either the default or an
+application-specific one, additional items can be added at run time. To do
+this, you can invoke the <a
+href="http://www.fltk.org/doc-1.0/Fl_Menu_.html#Fl_Menu_.add"><tt>add()</tt></a>
+method of the <tt>MxGUI::menu_bar</tt> object.
+
+
+<h3>The Status Bar</h3>
+
+<p>The status bar at the bottom of the GUI application can be used to display
+short textual messages to the user.
+You can use the following method to print text in the status bar:
+<pre>
+ int status(const char *fmt, ...);
+</pre>
+It accepts argument lists of exactly the same form as the <tt>printf</tt>
+function of the C standard library.
+
+</body>
+</html>
diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/index.html b/debian/fireflies/fireflies-2.08/libgfx/doc/index.html
new file mode 100644
index 00000000..5844b4ed
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/doc/index.html
@@ -0,0 +1,81 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
+ "http://www.w3.org/TR/REC-html40/loose.dtd">
+<!-- $Id: index.html 372 2003-06-26 10:46:43Z garland $ -->
+
+<html>
+
+<head>
+<title>libgfx: A Library for Writing Graphics Programs</title>
+<link rel=stylesheet href="cdoc.css" type="text/css">
+<meta name="Author" content="Michael Garland">
+</head>
+
+<body>
+
+<h1>libgfx: A Graphics Library</h1>
+
+<p>This software and associated documentation files are
+Copyright &copy; 1999&ndash;2001 Michael Garland.
+Please see the accompanying <a href="license.html">License</a>
+for details.
+
+
+<h2>Contents</h2>
+
+<ul>
+ <li><a href="#intro">Introduction</a>
+ <li><a href="build.html">Building the Library</a>
+ <li><a href="start.html">Getting Started</a>
+
+ <li><a href="vec.html">Vector Math</a>
+ <ul>
+ <li><a href="vec2.html">2-D vectors</a>
+ <li><a href="vec3.html">3-D vectors</a>
+ <li><a href="vec4.html">4-D vectors</a>
+ </ul>
+
+ <li><a href="mat.html">Matrix Math</a>
+ <ul>
+ <li><a href="mat2.html">2-D matrices</a>
+ <li><a href="mat3.html">3-D matrices</a>
+ <li><a href="mat4.html">4-D matrices</a>
+ </ul>
+
+ <li><a href="intvec.html">Packed Integer Vectors</a>
+ <li><a href="quat.html">Quaternions</a>
+ <li><a href="geom3d.html">3-D Geometric Procedures</a>
+ <li><a href="gl.html">OpenGL Support</a>
+ <li><a href="raster.html">Raster Images</a>
+ <li><a href="gui.html">Minimalist GUI framework</a>
+ <li><a href="rotate.html">Interactive Rotation Control</a>
+ <li><a href="script.html">Simple File Format Scripting</a>
+
+ <li>Example Programs
+ <ul>
+ <li><a href="ex-gui.html">Simple GUI Program</a>
+ <li><a href="ex-script.html">Simple Scripted Program</a>
+ </ul>
+
+ <li><a href="license.html">Copyright Notice and License</a>
+</ul>
+
+
+<h2><a name="intro">Introduction</a></h2>
+
+<p>The purpose of this library is to simplify the creation of computer
+graphics software. Specifically, it is targeted towards
+cross-platform development using the
+<a href="http://www.opengl.org">OpenGL</a> rendering API and the
+<a href="http://www.fltk.org">FLTK</a> interface toolkit.
+It is derived from the <a
+href="http://www.uiuc.edu/~garland/software/qslim20.html">MixKit</a> library I
+developed for supporting polygonal
+<a href="http://www.uiuc.edu/~garland/research.html">surface
+simplification</a>.
+This is <em>not</em> a full-fledged graphics engine. Rather it
+provides facilities which are useful in the majority of graphics
+programs.
+
+</body>
+
+</html>
diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/intvec.html b/debian/fireflies/fireflies-2.08/libgfx/doc/intvec.html
new file mode 100644
index 00000000..9c13957d
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/doc/intvec.html
@@ -0,0 +1,95 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
+ "http://www.w3.org/TR/REC-html40/loose.dtd">
+<!-- $Id: intvec.html 161 2000-09-05 20:29:15Z garland $ -->
+
+<html>
+
+<head>
+<title>libgfx: Packed Integer Vectors</title>
+<link rel=stylesheet href="cdoc.css" type="text/css">
+<meta name="Author" content="Michael Garland">
+</head>
+
+<body>
+
+<h2>Packed Integer Vectors</h2>
+
+<p>The <a href="vec.html">vector package</a> provides the standard way to
+represent and manipulate vector quantities.
+These vectors are primarily designed to represent real-valued vectors using
+floating point numbers.
+However, there are times when it is more convenient to use a packed integer
+vector format. That is the purpose of this package, which you can use by
+including the header file
+<pre>
+ #include &lt;intvec.h&gt;
+</pre>
+
+<p>A <em>packed integer vector</em> is an <i>n</i> element vector, each of whose
+elements are <i>k</i>-bit integers. These <i>k</i>-bit integers are
+interpreted as representing the range [0, 1] for unsigned types and [-1, 1]
+for signed types. For example, suppose we have a vector whose elements are
+unsigned 8-bit quantities (e.g., of type <tt>unsigned char</tt>).
+Each value would have an integral value in the range [0, 255], but these
+values would always be interpreted as real values ranging between [0, 1].
+
+<h3>class IntVec</h3>
+<p>Packed integer vectors are declared using the following template class
+<pre>
+ template&lt;class T, int T_MAX, int N&gt; class IntVec;
+</pre>
+The type <tt>T</tt> is the type of the constituent elements (e.g.,
+<tt>unsigned char</tt>) and <tt>T_MAX</tt> is the maxium representable value
+for this type (e.g., <tt>UCHAR_MAX</tt>). The number of elements in the
+vector is determined by <tt>N</tt>. Note that ANSI C defines appropriate
+maximum values of integer types in &lt;limits.h&gt;.
+
+<p>Classes created from the <tt>IntVec</tt> template provide a small set of
+fundamental public methods:
+<ul>
+<li>A default constructor that initializes all elements of the vector to 0.
+
+<li>A C-style [] bracket accessor which returns, as a
+<tt>double</tt> the appropriate element of the vector.
+
+<li>A vector assignment operator (<tt>v = w</tt>).
+
+<li>A scalar assignment operator (<tt>v = 3.14</tt>).
+</ul>
+
+<h3>class IntVec3</h3>
+
+<p>Because 3-D vectors are particularly common in graphics applications, this
+package provides explicit support for them.
+<pre>
+ template &lt;class T, int T_MAX&gt; class IntVec3;
+</pre>
+
+<p>In addition to the standard <tt>IntVec</tt> methods, <tt>IntVec3</tt>
+provides the following additional constructors, all of which allow the values
+of the vector to be explicitly initialized.
+<pre>
+ IntVec3(double x, double y, double z);
+ IntVec3(const Vec3&amp; v);
+ IntVec3(const float v[3]);
+ IntVec3(const double v[3]);
+</pre>
+
+<p>It also provides the following methods for manipulating the elements of the
+vector:
+<pre>
+ Vec3 unpack() const; <i>// Return vector as Vec3</i>
+ void pack(const Vec3&amp; v); <i>// Set vector from v</i>
+ void pack(double x, double y, double z); <i>// Set vector from x,y,z</i>
+</pre>
+
+<p>A typical use of this class would be in defining a type for RGB colors
+represented with 8 bits per channel. Such a type could be declared as
+follows:
+<pre>
+ typedef IntVec3<unsigned char, UCHAR_MAX> byteColor;
+</pre>
+
+</body>
+
+</html>
diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/license.html b/debian/fireflies/fireflies-2.08/libgfx/doc/license.html
new file mode 100644
index 00000000..2e96b7d8
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/doc/license.html
@@ -0,0 +1,54 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
+ "http://www.w3.org/TR/REC-html40/loose.dtd">
+<!-- $Id: license.html 257 2001-07-26 19:20:44Z garland $ -->
+
+<html>
+
+<head>
+<title>libgfx: License</title>
+<link rel=stylesheet href="cdoc.css" type="text/css">
+<meta name="Author" content="Michael Garland">
+</head>
+
+<body>
+
+<h2>License</h2>
+
+
+<p><strong>Copyright Notice</strong>
+<blockquote>
+Copyright &copy; 1999&ndash;2001 Michael Garland. All rights reserved.
+</blockquote>
+
+<p><strong>Terms and Conditions</strong>
+
+<p>Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, and/or sell copies of the Software, and to permit persons
+to whom the Software is furnished to do so, provided that the above
+copyright notice(s) and this permission notice appear in all copies of
+the Software and that both the above copyright notice(s) and this
+permission notice appear in supporting documentation.
+
+<p>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+<p>Except as contained in this notice, the name of a copyright holder
+shall not be used in advertising or otherwise to promote the sale, use
+or other dealings in this Software without prior written authorization
+of the copyright holder.
+
+
+
+</body>
+
+</html>
diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/mat.html b/debian/fireflies/fireflies-2.08/libgfx/doc/mat.html
new file mode 100644
index 00000000..4f43c019
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/doc/mat.html
@@ -0,0 +1,119 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
+ "http://www.w3.org/TR/REC-html40/loose.dtd">
+<!-- $Id: mat.html 159 2000-09-05 19:43:19Z garland $ -->
+
+<html>
+
+<head>
+<title>libgfx: Matrix Math</title>
+<link rel=stylesheet href="cdoc.css" type="text/css">
+<meta name="Author" content="Michael Garland">
+</head>
+
+<body>
+
+<h2>Matrix Math</h2>
+
+<p>The <tt>libgfx</tt> matrix math package is the companion to the
+<a href="vec.html">vector package</a> and are intended to provide a convenient
+way of writing vector/matrix equations.
+Currently, only square matrices
+of dimension 2x2 [<a href="mat2.html"><tt>Mat2</tt></a>],
+3x3 [<a href="mat3.html"><tt>Mat3</tt></a>],
+and 4x4 [<a href="mat4.html"><tt>Mat4</tt></a>].
+
+<p>A matrix consists of <i>n*n</i> double precision floating point values.
+Unlike the vector package, the matrix package is not yet template-based.
+Matrix elements are accessed using 0-indexed (row, column) pairs. Thus, a 2x2
+identity matrix can be constructed as follows:
+<pre>
+ Mat2 A;
+
+ A(0, 0) = 1.0;
+ A(0, 1) = 0.0;
+ A(1, 0) = 0.0;
+ A(1, 1) = 1.0;
+</pre>
+The default constructors (as used above) initialize all elements to 0. All
+matrix classes also provide constructors which accept a list of row vectors to
+initialize their elements. Thus, the following example is equivalent to the
+code above:
+<pre>
+ Mat2 A(Vec2(1.0, 0.0), Vec2(1.0, 0.0));
+</pre>
+Matrices can also be automatically case to <tt>double</tt> pointers. Since
+matrices are stored in row-major order, the follow code would change element
+(0, 1) of the matrix above:
+<pre>
+ double *B = A;
+ B[1] = -1.0;
+</pre>
+
+<p><strong>Warning:</strong>
+For efficiency reasons, <em>accessors are not range checked</em>.
+Thus you can legally write
+<pre>
+ Mat2 v;
+ v(-10, 37) = 1.0;
+</pre>
+and generate an invalid memory access.
+
+<h3>Arithmetic Operators</h3>
+
+<p>Like the vector package, one of the primary goals of the matrix package is
+to simplify the writing of vector/matrix equations.
+To accomplish this, it makes use of C++ operator overloading.
+
+<p><strong>Assignment</strong>&nbsp;&nbsp;
+Matrices can be assigned the values of other matrices or scalars.
+A matrix assignment <tt>A = B</tt> copies the elements of <tt>B</tt>
+into the corresponding elements of <tt>A</tt>. A scalar assignment
+<tt>A = 1.0</tt> copies the given scalar, in this case <tt>1.0</tt>,
+into each of the elements of <tt>A</tt>.
+
+<p><strong>Addition/Subtraction</strong>&nbsp;&nbsp;
+Matrices can be added together either with the binary addition operator (<tt>C
+= A + B</tt>) or the additive assignment operator (<tt>A += B</tt>).
+Subtraction operates similarly, using subtraction rather than addition
+operators.
+
+<p><strong>Scalar Multiplication/Division</strong>&nbsp;&nbsp;
+Matrices can be multiplied by scalar values using either the binary
+operator (<tt>A * 2.0</tt>) or the accumulation operator (<tt>A *=
+2.0</tt>). Scalar division operates similarly.
+
+<p><strong>Matrix/Vector Multiplication</strong>&nbsp;&nbsp;
+Matrices can be multiplied together with a binary operator (<tt>A *
+B</tt>). Matrices can also multiply vectors (<tt>A * v</tt>) which returns a
+new vector.
+
+<h3>Standard Matrix Functions</h3>
+
+<p>All matrix classes support a standard set of functions for performing
+common operations on matrices. The functions are:
+<pre>
+<i>// Constructs the outer product of the two vectors</i>
+Mat_ outer_product(const Vec_ &amp;u, const Vec_ &amp;v);
+
+<i>// Returns the determinant of the matrix</i>
+double det(const Mat_ &amp;A);
+
+<i>// Returns the trace of the matrix (the sum of the diagonals)</i>
+double trace(const Mat_ &amp;A);
+
+<i>// Returns the transpose of A</i>
+Mat_ transpose(const Mat_ &amp;A);
+
+<i>// Returns the adjoint of A</i>
+Mat_ adjoint(const Mat_ &amp;A);
+
+<i>// Places the inverse of A in A_inv and returns det(A)
+// The contents of A_inv are undefined if the inverse doesn't exist.</i>
+double invert(Mat_ &amp;A_inv, const Mat_ &amp;A);
+</pre>
+
+<p>Matrices can also be read from and written to C++ iostreams using the
+standard <tt>&lt;&lt;</tt> and <tt>&gt;&gt;</tt> operators.
+
+</body>
+</html>
diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/mat2.html b/debian/fireflies/fireflies-2.08/libgfx/doc/mat2.html
new file mode 100644
index 00000000..a41a0cb7
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/doc/mat2.html
@@ -0,0 +1,46 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
+ "http://www.w3.org/TR/REC-html40/loose.dtd">
+<!-- $Id: mat2.html 159 2000-09-05 19:43:19Z garland $ -->
+
+<html>
+
+<head>
+<title>libgfx: Matrix Math</title>
+<link rel=stylesheet href="cdoc.css" type="text/css">
+<meta name="Author" content="Michael Garland">
+</head>
+
+<body>
+
+<h2>Matrix Math</h2>
+
+<h3>class Mat2</h3>
+
+<p>This class implements a 2x2 real-valued matrix.
+Individual elements are represented with <code>double</code> precision
+floating point numbers. To use the <tt>Mat2</tt> class you must include the
+header
+<pre>
+ #include &lt;gfx/mat2.h&gt;
+</pre>
+
+<h4>Constructor Methods</h4>
+
+<p>The <tt>Mat2</tt> class defines the following set of constructors:
+
+<pre>
+ <i>// Initialize all elements to 0</i>
+ Mat2();
+
+ <i>// Initialize row 0 to [a b] and row 1 to [c d]</i>
+ Mat2(double a, double b, double c, double d);
+
+ <i>// Initialize rows with given vectors</i>
+ Mat2(const Vec2 &amp;r0,const Vec2 &amp;r1);
+
+ <i>// Copy values from A</i>
+ Mat2(const Mat2 &amp;A);
+</pre>
+
+</body>
+</html>
diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/mat3.html b/debian/fireflies/fireflies-2.08/libgfx/doc/mat3.html
new file mode 100644
index 00000000..d2c7a778
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/doc/mat3.html
@@ -0,0 +1,44 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
+ "http://www.w3.org/TR/REC-html40/loose.dtd">
+<!-- $Id: mat3.html 159 2000-09-05 19:43:19Z garland $ -->
+
+<html>
+
+<head>
+<title>libgfx: Matrix Math</title>
+<link rel=stylesheet href="cdoc.css" type="text/css">
+<meta name="Author" content="Michael Garland">
+</head>
+
+<body>
+
+<h2>Matrix Math</h2>
+
+<h3>class Mat3</h3>
+
+<p>This class implements a 3x3 real-valued matrix.
+Individual elements are represented with <code>double</code> precision
+floating point numbers. To use the <tt>Mat3</tt> class you must include the
+header
+<pre>
+ #include &lt;gfx/mat3.h&gt;
+</pre>
+
+<h4>Constructor Methods</h4>
+
+<p>The <tt>Mat3</tt> class defines the following set of constructors:
+
+<pre>
+ <i>// Initialize all elements to 0</i>
+ Mat3();
+
+ <i>// Initialize rows with given vectors</i>
+ Mat3(const Vec3&amp; r0,const Vec3&amp; r1,const Vec3&amp; r2);
+
+ <i>// Copy values from A</i>
+ Mat3(const Mat3&amp; A);
+</pre>
+
+
+</body>
+</html>
diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/mat4.html b/debian/fireflies/fireflies-2.08/libgfx/doc/mat4.html
new file mode 100644
index 00000000..d180d210
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/doc/mat4.html
@@ -0,0 +1,83 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
+ "http://www.w3.org/TR/REC-html40/loose.dtd">
+<!-- $Id: mat4.html 220 2001-01-16 21:21:46Z garland $ -->
+
+<html>
+
+<head>
+<title>libgfx: Matrix Math</title>
+<link rel=stylesheet href="cdoc.css" type="text/css">
+<meta name="Author" content="Michael Garland">
+</head>
+
+<body>
+
+<h2>Matrix Math</h2>
+
+<h3>class Mat4</h3>
+
+
+<p>This class implements a 4x4 real-valued matrix.
+Individual elements are represented with <code>double</code> precision
+floating point numbers. To use the <tt>Mat4</tt> class you must include the
+header
+<pre>
+ #include &lt;gfx/mat4.h&gt;
+</pre>
+
+<h4>Constructor Methods</h4>
+
+<p>The <tt>Mat4</tt> class defines the following set of constructors:
+
+<pre>
+ <i>// Initialize all elements to 0</i>
+ Mat4();
+
+ <i>// Initialize rows with given vectors</i>
+ Mat4(const Vec4&amp; r0,const Vec4&amp; r1,const Vec4&amp; r2,const Vec4&amp; r3);
+
+ <i>// Copy values from A</i>
+ Mat4(const Mat4&amp; A);
+</pre>
+
+
+<h4>Transformation Functions</h4>
+
+<p>Because 4x4 matrices are commonly used to represent linear homogeneous
+transformations in computer graphics, the matrix package provides several
+functions to construct transformation matrices. The operation of these
+functions is based directly on the definition of the corresponding
+transformations as used in OpenGL. The resulting matrices should be
+equivalent to those produced by OpenGL, to the extent allowed by limited
+floating point accuracy.
+
+<pre>
+ <i>// Construct translation, scaling, and rotation matrices.</i>
+ Mat4 translation_matrix(const Vec3&amp; delta);
+ Mat4 scaling_matrix(const Vec3&amp; scale);
+ Mat4 rotation_matrix_deg(double theta, const Vec3&amp; axis);
+ Mat4 rotation_matrix_rad(double theta, const Vec3&amp; axis);
+
+ <i>// Construct a perspective projection matrix.
+ // Direct analog of gluPerspective()</i>
+ Mat4 perspective_matrix(double fovy, double aspect,
+ double zmin=0.0, double zmax=0.0);
+
+ <i>// Construct a viewing transformation.
+ // Direct analog of gluLookAt()</i>
+ Mat4 lookat_matrix(const Vec3&amp; from, const Vec3&amp; at, const Vec3&amp; up);
+
+ <i>// Construct a viewport mapping.
+ // Direct analog of glViewport().</i>
+ Mat4 viewport_matrix(double w, double h);
+</pre>
+
+Note that the <tt>rotation_matrix()</tt> function comes in two forms, once
+which expects an angle in <em>radians</em> and one which expects an angle in
+<em>degrees</em>. The type of angle expected is made explicit in the function
+name (i.e., <tt>_rad</tt> and <tt>_deg</tt> suffixes) in an attempt to avoid
+confusion.
+
+
+</body>
+</html>
diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/quat.html b/debian/fireflies/fireflies-2.08/libgfx/doc/quat.html
new file mode 100644
index 00000000..781ed2ad
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/doc/quat.html
@@ -0,0 +1,113 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
+ "http://www.w3.org/TR/REC-html40/loose.dtd">
+<!-- $Id: quat.html 308 2002-03-11 21:16:57Z garland $ -->
+
+<html>
+
+<head>
+<title>libgfx: Quaternions</title>
+<link rel=stylesheet href="cdoc.css" type="text/css">
+<meta name="Author" content="Michael Garland">
+</head>
+
+<body>
+
+<h2>Quaternions</h2>
+
+<p>This package provides the basic mathematical tools necessary for
+manipulating quaternions. To begin using it, you must first include the
+header file:
+<pre>
+ #include &lt;gfx/quat.h&gt;
+</pre>
+
+<p>For more information on the definition of quaternions and their
+associated mathematics, you might try the informative Web pages provided
+by
+<a href="http://mathworld.wolfram.com/Quaternion.html">MathWorld</a>,
+<a href="http://www.magic-software.com/Documentation/quat.pdf">David
+ Eberly</a>, or
+<a
+ href="http://graphics.cs.ucdavis.edu/GraphicsNotes/Quaternions.pdf">UC
+ Davis</a>.
+
+<h3>class Quat</h3>
+
+<p>The interface presented by the <tt>Quat</tt> class treats quaternions
+as consisting of a real scalar part and a complex 3-vector part.
+
+<h4>Constructor Methods</h4>
+
+<p>The <tt>Quat</tt> class defines the following set of constructors:
+
+<pre>
+ Quat(); <i>// Initializes to identity quaternion</i>
+ Quat(double x, double y, double z, double w); <i>// Specify vector &amp; scalar part.</i>
+ Quat(const Vec3&amp; a, double b); <i>// Specify vector &amp; scalar part.</i>
+ Quat(const Quat&amp; q); <i>// Copy values from q</i>
+</pre>
+
+<pre>
+ Quat::ident(); <i>// Return the identity quaternion</i>
+</pre>
+
+<h4>Arithmetic Methods</h4>
+
+<p>The quaternion class supports all the usual arithmetic methods, both
+as in-place assignment operators:
+
+<pre>
+ Quat&amp; operator=(const Quat&amp; q);
+ Quat&amp; operator+=(const Quat&amp; q);
+ Quat&amp; operator-=(const Quat&amp; q);
+ Quat&amp; operator=(double d);
+ Quat&amp; operator*=(double d);
+ Quat&amp; operator/=(double d);
+</pre>
+
+and as normal binary operations:
+
+<pre>
+ Quat operator+(const Quat&amp; q, const Quat&amp; r);
+ Quat operator*(const Quat&amp; q, const Quat&amp; r);
+ Quat operator*(const Quat&amp; q, double s);
+ Quat operator*(double s, const Quat&amp; q);
+ Quat operator/(const Quat&amp; q, double s);
+</pre>
+
+<h4>Quaternion Operations</h4>
+
+<p>Using the fundamental arithmetic operations defined above, this
+package also provides the following operations on quaternions:
+<pre>
+ double norm(const Quat&amp; q); <i>// Return the length of q</i>
+ Quat conjugate(const Quat&amp; q); <i>// Return conjugate of q</i>
+ Quat inverse(const Quat&amp; q); <i>// Return multiplicative inverse of q</i>
+ void unitize(Quat&amp; q); <i>// Convert to unit quaternion</i>
+ Quat exp(const Quat&amp; q); <i>// Exponential of a <b>unit</b> quaternion </i>
+ Quat log(const Quat&amp; q); <i>// Natural logarithm of a <b>unit</b> quaternion </i>
+</pre>
+
+<p>Quaternions can be constructed from an axis/angle rotation
+specification using the function:
+<pre>
+ Quat axis_to_quat(const Vec3&amp; a, double phi);
+</pre>
+At is also generally useful to be able to convert a quaternion into a
+rotation matrix:
+<pre>
+ Mat4 quat_to_matrix(const Quat&amp; q);
+ Mat4 unit_quat_to_matrix(const Quat&amp; q);
+</pre>
+
+<p>
+<pre>
+ Quat slerp(const Quat&amp; from, const Quat&amp; to, double t);
+</pre>
+
+<p>Quaternions can also be read from and written to C++ iostreams using the
+standard <tt>&lt;&lt;</tt> and <tt>&gt;&gt;</tt> operators.
+
+</body>
+
+</html>
diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/raster.html b/debian/fireflies/fireflies-2.08/libgfx/doc/raster.html
new file mode 100644
index 00000000..544a30b6
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/doc/raster.html
@@ -0,0 +1,143 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
+ "http://www.w3.org/TR/REC-html40/loose.dtd">
+<!-- $Id: raster.html 157 2000-09-05 17:28:52Z garland $ -->
+
+<html>
+
+<head>
+<title>libgfx: Raster Images</title>
+<link rel=stylesheet href="cdoc.css" type="text/css">
+<meta name="Author" content="Michael Garland">
+</head>
+
+<body>
+
+<h2>Raster Images</h2>
+
+<p>The <tt>libgfx</tt> library provides very basic support for storing raster
+image data. This is not really intended to provide the kind of support
+necessary for advanced image processing, but rather the basic functionality
+needed for saving screen snapshots, loading texture files, etc. To use this
+package you will first need to include the header file
+<pre>
+ #include &lt;gfx/raster.h&gt;
+</pre>
+
+<h3>Image Representation</h3>
+
+<p>Images are implemented using the <tt>Raster&lt;T&gt;</tt> template class.
+The templated type <tt>T</tt> determines how individual pixel values are
+stored. There are two standard image types:
+<ul>
+<li><tt>ByteRaster</tt>:
+pixel components are represented with values of type <tt>unsigned
+char</tt>
+
+<li><tt>FloatRaster</tt>:
+pixel components are represented with values of type <tt>float</tt>
+</ul>
+
+<h4>Allocating an Image</h4>
+
+<p>When allocating an image, you must specify its three dimensions: (1) width
+in pixels, (2) height in pixels, and (3) number of channels.
+<pre>
+ Raster&lt;T&gt;(int width, int height, int nchannels);
+</pre>
+Typically, the number of channels should by either 1 for grayscale images, 3
+for RGB color images, or 4 for RGB images with an alpha channel.
+
+<h4>Accessors</h4>
+
+<p>The dimensions of an image can be determined through a standard set of
+accessor functions:
+<pre>
+ int width(); <i>// Width of image (in pixels)</i>
+ int height(); <i>// Height of image (in pixels)</i>
+ int channels(); <i>// Number of channels in image</i>
+ int length(); <i>// Total number of pixel values</i>
+</pre>
+The width, height, and channel count values are merely those specified when
+the image is allocated. The length of the image is the total number of pixel
+elements (i.e., width*height*channels).
+
+<p>Pixel elements can be accessed in two different ways. First of all, you
+can get a pointer to the single pixel at the image location (i,j) by calling
+the method
+<pre>
+ T *pixel(int i, int j);
+</pre>
+This is the standard way to access pixels. Alternatively, you can access
+pixel elements using the standard C [] bracket notation. This method is
+generally discouraged since it exposes the underlying layout of the image.
+However, it can be useful if you want to visit every pixel element without
+regard to its location.
+
+
+<h4>Pixel Manipulation</h4>
+
+<p>The <tt>Raster</tt> template class provides some very simple methods for
+manipulating the image which it stores. They are:
+<pre>
+ void hflip(); <i>// Flip the image from left to right</i>
+ void vflip(); <i>// Flip the image from top to bottom</i>
+</pre>
+
+
+<h3>Input/Output of Image Files</h3>
+
+<p>In addition to internal image representation, this package provides a
+simple set of functions for reading and writing external image files.
+The library supports the following image types:
+<ul>
+<li>PNM (supported internally)
+<li>TIFF (requires <a href="http://www.libtiff.org">libtiff</a>)
+<li>JPEG (requires <a href="http://www.ijg.org">jpeglib</a>)
+<li>PNG (requires <a href="http://www.libpng.org/pub/png/">libpng</a>)
+</ul>
+
+<p>Images can be read from files using the following functions:
+<pre>
+ ByteRaster *read_pnm_image(const char *filename);
+ ByteRaster *read_tiff_image(const char *filename);
+ ByteRaster *read_png_image(const char *filename);
+ ByteRaster *read_jpeg_image(const char *filename);
+</pre>
+These functions return <tt>NULL</tt> if the file could not be read. This
+includes the case when the required external libraries are not available.
+Similar functions can be used to write images to files:
+<pre>
+ bool write_pnm_image(const char *filename, const ByteRaster&);
+ bool write_tiff_image(const char *filename, const ByteRaster&);
+ bool write_png_image(const char *filename, const ByteRaster&);
+ bool write_jpeg_image(const char *filename, const ByteRaster&);
+</pre>
+They return <tt>true</tt> or <tt>false</tt> indicating whether the output
+operation succeeded or not.
+
+<p>The PNM output routines can output both raw (i.e., binary) and ASCII image
+files. Which type of file they write is controlled by the global variable
+<pre>
+ bool will_write_raw_pnm;
+</pre>
+Since JPEG is a lossy compression format, the behavior of the JPEG output
+routines is dependent upon the global variable controlling image quality
+<pre>
+ int jpeg_output_quality;
+</pre>
+These quality factors are integers ranging from 0-100 (with 100 being the
+highest quality). See the <tt>jpeglib</tt> documentation for further details.
+
+<p>For convenience, you can read/write image files with the functions
+<pre>
+ bool write_image(const char *filename, const ByteRaster&, int type=-1);
+ ByteRaster *read_image(const char *filename, int type=-1);
+</pre>
+The file format will be inferred from the filename, unless the optional
+<tt>type</tt> argument is given. The image type should be one of
+<tt>IMG_PNM</tt>, <tt>IMG_PNG</tt>, <tt>IMG_TIFF</tt>, or <tt>IMG_JPEG</tt>.
+
+
+</body>
+
+</html>
diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/rotate.html b/debian/fireflies/fireflies-2.08/libgfx/doc/rotate.html
new file mode 100644
index 00000000..dc444409
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/doc/rotate.html
@@ -0,0 +1,107 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
+ "http://www.w3.org/TR/REC-html40/loose.dtd">
+<!-- $Id: rotate.html 309 2002-03-11 21:17:15Z garland $ -->
+
+<html>
+
+<head>
+<title>libgfx: Interactive Rotation Control</title>
+<link rel=stylesheet href="cdoc.css" type="text/css">
+<meta name="Author" content="Michael Garland">
+</head>
+
+<body>
+
+<h2>Interactive Rotation Control</h2>
+
+<p>The <tt>libgfx</tt> library provides a fairly simple facility for
+interactive inspection of 3-D objects. The interface is designed
+for applications where a user is inspecting an object by spinning it and
+by translating the camera to provide a better view. All of the user
+interaction is implemented through mouse motion:
+<ul>
+ <li>Left mouse drag &mdash; rotate object about its centroid
+ <li>Right mouse drag &mdash; translate camera forward/backward
+ <li>Middle mouse drag &mdash; translate camera parallel to image plane
+</ul>
+
+<p>The classes used to implement this functionality are based on a
+fairly standard paradigm. Two subsequent mouse positions are projected
+onto a notional surface "below" the window. The cross product of these
+projected vectors defines an axis of rotation and the angle between them
+defines the rotation angle.
+
+<h3>Ball Types</h3>
+
+<p>The library currently supports two control classes:
+
+<blockquote>
+
+<p><b>Arcball</b>&nbsp;&nbsp;The Arcball controller is based on the
+article <i>Arcball Rotation Control</i> written by Ken Shoemake in
+<i>Graphics Gems IV</i> published by Academic Press.
+The underlying surface of projection is a hemisphere.
+
+<p><b>Trackball</b>&nbsp;&nbsp;Implements the mechanism used in the SGI
+3-D demo programs. This approach was originally developed by Gavin
+Bell. The underlying surface of projection is a hybrid of a hemisphere
+and a hyperbolic sheet.
+</blockquote>
+
+<h3>Public Interface</h3>
+
+<p>The two controller types both implement the same public interface,
+and can be freely interchanged in the application program. The
+interfaces for these controllers are defined in the following header
+files:
+<ul>
+ <li><tt>class Arcball</tt> &mdash; <tt>&lt;gfx/arcball.h&gt;</tt>
+ <li><tt>class Trackball</tt> &mdash; <tt>&lt;gfx/trackball.h&gt;</tt>
+</ul>
+To use one of the controllers, you need to include the appropriate
+header and create an instance of the appropriate class.
+
+<h4>Initialization</h4>
+
+<p>Before using a rotation controller, you must initialize it by
+providing the bounding sphere of the object to be controlled. This is
+done using the templated method:
+<pre>
+ template&lt;class T&gt;
+ void bounding_sphere(const TVec3&lt;T&gt;&amp; center, T radius);
+</pre>
+The specified sphere <tt>center</tt> will be the point about which the
+object will rotate.
+
+<h4>Interaction</h4>
+
+<p>Once initialized, the controller is meant to be interfaced directly
+with the event handlers of an application built using the
+<tt>libgfx</tt> <a href="gui.html">GUI framework</a>.
+Each of the following controller methods should be called from the event
+handlers of your application.
+<pre>
+ virtual void update_animation();
+ virtual bool mouse_down(int *where, int which);
+ virtual bool mouse_up(int *where, int which);
+ virtual bool mouse_drag(int *where, int *last, int which);
+</pre>
+
+<h4>Applying Results</h4>
+
+<p>For the rotation to take effect, you must apply it in the rendering
+loop of the application. Before drawing your scene, you should call the
+method:
+<pre>
+ virtual void apply_transform();
+</pre>
+This will set up the appropriate transform on the <tt>ModelView</tt>
+matrix stack. Similarly, when done drawing, you should call the method:
+<pre>
+ virtual void unapply_transform();
+</pre>
+which will clean up the <tt>ModelView</tt> matrix stack.
+
+</body>
+
+</html>
diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/script.html b/debian/fireflies/fireflies-2.08/libgfx/doc/script.html
new file mode 100644
index 00000000..1a457b2d
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/doc/script.html
@@ -0,0 +1,192 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
+ "http://www.w3.org/TR/REC-html40/loose.dtd">
+<!-- $Id: script.html 269 2001-10-10 00:38:28Z garland $ -->
+
+<html>
+
+<head>
+<title>libgfx: Simple File Format Scripting</title>
+<link rel=stylesheet href="cdoc.css" type="text/css">
+<meta name="Author" content="Michael Garland">
+</head>
+
+<body>
+
+<h2>Simple File Format Scripting</h2>
+
+<p>The <tt>libgfx</tt> library provides a very simple scripting facility which
+is primarily intended to support parsing of input files and control scripts.
+To use this package, you must include the header file:
+<pre>
+ #include &lt;gfx/script.h&gt;
+</pre>
+
+<p>For more information about this package, you may want to examine the
+sample <a href="ex-script.html">scripted application</a>.
+
+<h3>File Structure</h3>
+
+<p>Scripts processed by this package are assumed to be composed of a sequence
+of lines. Each line is processed separately, in sequence, and falls into one
+of the following categories:
+<ol>
+<li>Lines containing only whitespace are ignored
+<li>Lines whose first non-whitespace character is a '#' (hash mark) are
+treated as comments and are ignored
+<li>All other lines are assumed to be a sequence of whitespace-separated
+tokens where the first token is a command name and subsequent tokens are
+arguments to this command.
+</ol>
+
+<h3>Processing Scripts</h3>
+
+<p>In order to process scripts, you must (at minimum) perform the following
+steps:
+<ol>
+<li>Instantiate a <i>scripting environment</i> of type <tt>CmdEnv</tt>.
+<li>Register your command(s) with <tt>CmdEnv::register_command()</tt>
+or <tt>CmdEnv::register_method()</tt>.
+<li>Feed the text of the script to the parsing system.
+</ol>
+The specifics of these steps are detailed in the following sections.
+
+<h4>The Scripting Environment</h4>
+
+<p>The primary task of the scripting system is to map command name tokens into
+command procedures. These procedures, also referred to as "handlers", are
+responsible for actually performing the computation associated with a
+particular command.
+Handlers should conform to the following type definition:
+<pre>
+ typedef int (*CmdHandler)(const CmdLine &amp;cmd);
+</pre>
+The <tt>CmdLine</tt> type manages the text of a particular command line, and
+provides various methods for parsing that information (see details below).
+
+<p>The <tt>CmdEnv</tt> class manages the mapping of command names to
+handlers. In particular, handler names are mapped to pointers to
+objects derived from the base class <tt>CmdObject</tt>. All derived
+classes of <tt>CmdObject</tt> are required to override the
+<tt>operator()</tt> invocation virtual method. By using this virtual
+function, handler objects are allowed to encapsulate arbitrary data in
+their definition (i.e., to create closures). The standard scripting
+framework defines two kinds of <tt>CmdObject</tt> handlers: (1) the
+<tt>CmdFunction</tt> class to encapsulate normal functions and static
+methods and (2) and the <tt>CmdMethod</tt> template class to
+encapsulate member functions.
+
+
+<p>New handler procedures (non-member functions)
+can be associated with names using
+the method:
+<pre>
+ void register_command(const std::string&amp; name, CmdHandler proc);
+</pre>
+Member functions can be bound to names uses the templated member
+function:
+<pre>
+ template&lt;class T&gt;
+ void register_method(const std::string& name,
+ T *obj,
+ int (T::*fn)(const CmdLine&));
+</pre>
+Note that in both cases, prior bindings of <tt>name</tt> associated
+with another handler will be overwritten.
+Existing handlers can be located by name
+using the method:
+<pre>
+ CmdObject *lookup_command(const std::string&amp; name);
+</pre>
+which returns <tt>NULL</tt> if no handler is bound to the given name.
+
+<h4>Submitting Text for Execution</h4>
+
+<p>Several procedures are available for submitting script text to the parsing
+system. All of them require a <tt>CmdEnv</tt> argument that will determine
+the mapping of command names to handlers.
+
+<p>The underlying method for parsing text is:
+<pre>
+ int script_do_line(std::string &amp;line, CmdEnv &amp;env);
+ int script_do_line(const char *line, CmdEnv &amp;env);
+</pre>
+It assumes that its input is a string consisting of a single line &mdash; any
+embedded newlines will be treated like any other whitespace.
+It will
+split this line it a series of whitespace-separated tokens, interpreting the
+first such token as a command name. If <tt>env</tt> provides a binding for
+this name, the appropriate handler will be called.
+
+<p>For convenience, the scripting package also provides the following methods:
+<pre>
+ int script_do_stream(std::istream &amp;in, CmdEnv &amp;env);
+ int script_do_file(const char *name, CmdEnv &amp;env);
+ int script_do_string(const char *str, CmdEnv &amp;env);
+</pre>
+They operate by extracting a single line from the input source and processing
+that line with <tt>script_do_line()</tt>. They repeat this line-by-line
+process until the file/stream/string has been exhausted.
+The first time the processing of a line fails with an error code, these
+procedures return this error code immediately without completing the
+processing of the rest of the input.
+
+
+<h3>Writing Command Handlers</h3>
+
+<p>A command procedure is declared as follows:
+<pre>
+ int proc(const CmdLine&amp; cmd);
+</pre>
+The <tt>CmdLine</tt> structure contains all the necessary data about the line
+being processed. It provides the following fundamental accessors:
+<pre>
+ class CmdLine
+ {
+ public:
+ const std::string &amp;line; // Raw text of the (complete) line
+ std::string opname() const; // Name of the command being invoked
+ std::string argline() const; // Argument string
+ int argcount() const; // Number of argument tokens
+ };
+</pre>
+The argument string returned by <tt>argline()</tt> is unparsed except that
+whitespace following the command name and trailing whitespace at the end of
+the line have been removed.
+
+
+<p>It is up to the handler to parse the command line in whatever way it likes.
+However, the scripting system assumes that command will be given
+whitespace-separated token lists. Therefore, it pre-computes the indices of
+these tokens in the command line text before invoking the handler. To access
+an individual token, you can use the <tt>CmdLine</tt> methods:
+<pre>
+ std::string token_to_string(int i) const;
+ double token_to_double(int i) const;
+ float token_to_float(int i) const;
+ int token_to_int(int i) const;
+</pre>
+Tokens are numbered from <tt>[0 .. argcount()-1]</tt>. Note that, for
+efficiency, these methods <em>do not perform range checking.</em> It is up to
+the caller to verify that the given indices are valid.
+
+<p>In addition to accessing single argument tokens, you can collect all
+argument tokens into lists with the following <tt>CmdLine</tt> methods:
+<pre>
+ int collect_as_strings(std::vector&lt;std::string&gt; &amp;v) const;
+ int collect_as_numbers(std::vector&lt;double&gt; &amp;v) const;
+ int collect_as_numbers(std::vector&lt;int&gt; &amp;v) const;
+
+ int collect_as_numbers(double *v, int size) const;
+ int collect_as_numbers(float *v, int size) const;
+ int collect_as_numbers(int *v, int size) const;
+</pre>
+These methods always return the number of tokens collected.
+The <tt>vector</tt>-based methods will always collect all available tokens.
+In contrast, those which accept raw arrays will either collect <tt>size</tt>
+or <tt>argcount()</tt> tokens, whichever is smaller.
+
+<p>See the accompanying <a href="ex-script.html">scripting example</a> for more
+details on how to write command handlers.
+
+</body>
+</html>
diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/start.html b/debian/fireflies/fireflies-2.08/libgfx/doc/start.html
new file mode 100644
index 00000000..75da67d6
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/doc/start.html
@@ -0,0 +1,136 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
+ "http://www.w3.org/TR/REC-html40/loose.dtd">
+<!-- $Id: start.html 111 2000-07-31 21:40:02Z garland $ -->
+
+<html>
+
+<head>
+<title>libgfx: Getting Started</title>
+<link rel=stylesheet href="cdoc.css" type="text/css">
+<meta name="Author" content="Michael Garland">
+</head>
+
+<body>
+
+<h2>Getting Started </h2>
+
+<p>The <tt>libgfx</tt> library can be used for writing both
+console-oriented and GUI programs. All programs, whether console or
+GUI, should begin by including the standard header:
+<pre>
+ #include &lt;gfx/gfx.h&gt;
+</pre>
+
+<h3>The Standard Header: gfx.h</h3>
+
+<p>The first task of the standard header file is to provide a consist
+code environment. It begins by including a set of standard C++
+headers <tt>&lt;cstdlib&gt;</tt>, <tt>&lt;cmath&gt;</tt>,
+<tt>&lt;climits&gt;</tt>, and <tt>&lt;iostream&gt;</tt>.
+It then makes sure that various common symbols, such as <tt>bool</tt>,
+<tt>M_PI</tt>, and <tt>HUGE</tt> are defined.
+
+<h4>Numerical Procedures</h4>
+
+<p>Graphics programs typically involve a substantial amount of
+mathematical calculation. Indeed, much the the <tt>libgfx</tt>
+library is devoted to supporting things such as matrix/vector
+computations. Certain mathematical procedures are common enough, and
+simple enough, that they are included in the standard header.
+
+<p>First, there are the procedures for generating random numbers:
+<pre>
+ inline double random1(); <i>// Random number between 0 and 1</i>
+ inline char random_byte(); <i>// Random byte between 0 and 255</i>
+</pre>
+These functions use the internal <tt>random()</tt> procedure if it's
+available, or <tt>rand()</tt> if not.
+
+<p>Next, are procedures for comparing floating point numbers:
+<pre>
+ const double FEQ_EPS = 1e-6;
+ const double FEQ_EPS2 = 1e-12;
+
+ inline bool FEQ(double a, double b, double eps=FEQ_EPS);
+ inline bool FEQ2(double a, double b, double eps=FEQ_EPS2);
+</pre>
+The <tt>FEQ()</tt> procedures return <tt>true</tt> if <tt>a</tt> and
+<tt>b</tt> are within <tt>eps</tt> of each other.
+
+<h4>Timing Procedures</h4>
+
+<p>To characterize the performance of a program, it is often useful to
+measure it's running time. For this reason, <tt>libgfx</tt> provides
+some basic facilities for measuring time.
+
+<pre>
+ extern double get_cpu_time();
+</pre>
+
+The function returns the number of seconds on the CPU clock. Based on
+the platform you're using, this function may use various system
+services to compute this clock. Therefore, it does not use a
+consistent measure across all systems; however, the returned quantity
+will usually be the number of seconds since the system was turned on.
+
+<p>A more convenient way to measure running time is to use the
+following macro:
+<pre>
+ #define TIMING(t, cmd) { t=get_cpu_time(); cmd; t=get_cpu_time() - t; }
+</pre>
+Given a procedure <tt>test_proc()</tt> whose performance we want to
+measure, we can use the following code:
+<pre>
+ double running_time;
+
+ TIME(running_time, test_proc());
+
+ cout << "The running time was: " << running_time << " seconds." << endl;
+</pre>
+This will print the running time of <tt>test_proc()</tt> on the console.
+
+
+<h4>Configuration Definitions</h4>
+
+<p>The final task of the standard header is to include the
+<tt>libgfx</tt> configuration header. This header is generated when
+the library is compiled. On Unix-like platforms, the header is named
+<tt>&lt;gfx/config.h&gt;</tt> and is generated automatically by the
+configuration script. For Microsoft Visual Studio platforms, a
+hand-coded header such as <tt>&lt;gfx/config-vc5.h&gt;</tt> is used
+instead. The symbols defined in this header can be used to detect the
+presence of various language features and external libraries.
+The symbols of interest to external programs are summarized below:
+
+<br><br>
+<table align=center width=85% border=0 cellpadding=5>
+<tr valign=top><th align=left>Symbol</th><th align=left>Defined when ...</th></tr>
+
+<tr valign=top><td><tt>HAVE_LIBTIFF</tt></td>
+<td>library supporting TIFF image I/O is available.</td></tr>
+
+<tr valign=top><td><tt>HAVE_LIBTIFF_LZW</tt></td>
+<td><tt>libtiff</tt> supports patented LZW compression.</td></tr>
+
+<tr valign=top><td><tt>HAVE_LIBPNG</tt></td>
+<td>library supporting PNG image I/O is available.</td></tr>
+
+<tr valign=top><td><tt>HAVE_LIBJPEG</tt></td>
+<td>library supporting JPEG image I/O is available.</td></tr>
+
+<tr valign=top><td><tt>HAVE_OPENGL</tt></td>
+<td>OpenGL is available. Value is name of implementation
+(e.g., "OpenGL" or "Mesa").</td></tr>
+</table>
+
+<p>These configuration symbols should be tested with <tt>#ifdef</tt>
+directives, as in the following example:
+<pre>
+ #ifdef HAVE_LIBTIFF
+ generate_tiff_output();
+ #endif
+</pre>
+
+</body>
+
+</html>
diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/vec.html b/debian/fireflies/fireflies-2.08/libgfx/doc/vec.html
new file mode 100644
index 00000000..f62aa29d
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/doc/vec.html
@@ -0,0 +1,125 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
+ "http://www.w3.org/TR/REC-html40/loose.dtd">
+<!-- $Id: vec.html 289 2002-01-14 18:21:43Z garland $ -->
+
+<html>
+
+<head>
+<title>libgfx: Vector Math</title>
+<link rel=stylesheet href="cdoc.css" type="text/css">
+<meta name="Author" content="Michael Garland">
+</head>
+
+<body>
+
+<h2>Vector Math</h2>
+
+<p>The <tt>libgfx</tt> vector math package provides classes that
+make it much more convenient to write vector equations.
+Two dimensional [<a href="vec2.html">Vec2</a>],
+three dimensional [<a href="vec3.html">Vec3</a>],
+and four dimensional [<a href="vec4.html">Vec4</a>]
+vector classes are provided.
+
+<p>A vector consists of <i>n</i> numeric values. These vector types are
+actually implemented using template classes such as <tt>TVec3&lt;class
+T&gt;</tt> that allow the application to specify the type of value used to
+represent the vector elements. The standard classes described in this
+documentation (<tt>Vec2</tt>, <tt>Vec3</tt>, and <tt>Vec4</tt>) use double
+precision floating point values. Corresponding classes using single precision
+floating point values (<tt>Vec2f</tt>, <tt>Vec3f</tt>, and <tt>Vec4f</tt>) are
+also provided.
+
+<p>The elements of a vector are accessed with the standard bracket notation
+used for arrays. And like C++ arrays, vectors are indexed starting from 0.
+Thus the elements of a 3-vector can be assigned as follows:
+
+<pre>
+ Vec3 v;
+
+ v[0] = 1.0;
+ v[1] = 0.0;
+ v[2] = 2.0;
+</pre>
+
+The default constructors (as used in the previous example) always
+initialize the vector elements to 0. All vector classes also provide
+constructors which accept the initial element values as arguments.
+Thus the previous example could be more succinctly written as:
+
+<pre>
+ Vec3 v(1.0, 0.0, 2.0);
+</pre>
+
+Vectors can also be automatically cast to <code>double</code> pointer
+types. Continuing the preceding example, the following is perfectly legal:
+<pre>
+ double *w = v; <i>// w points to the first element of v</i>
+ w[1] = 3.14; <i>// Exactly equivalent to v[1] = 3.14</i>
+</pre>
+
+<p><strong>Warning:</strong>
+For efficiency reasons, <em>accessors are not range checked</em>.
+Thus you can legally write
+
+<pre>
+ Vec3 v;
+ v[42] = 3.14159;
+</pre>
+
+and this will cause an invalid memory access beyond the bounds of the
+vector. This may cause a memory fault or it may just silently
+over-write other data. Therefore you must make sure that you only
+access valid elements of arrays.
+
+
+<h3>Arithmetic Operators</h3>
+
+<p>One of the primary goals of the vector package is to simplify the
+coding of vector equations. To accomplish this, it makes use of
+<em>operator overloading</em>.
+
+
+<p><strong>Assignment</strong>&nbsp;&nbsp;
+Vectors can be assigned the values of other vectors or scalars.
+A vector assignment <tt>v = w</tt> copies the elements of <tt>w</tt>
+into the corresponding elements of <tt>v</tt>. A scalar assignment
+<tt>v = 1.0</tt> copies the given scalar, in this case <tt>1.0</tt>,
+into each of the elements of <tt>v</tt>.
+
+<p><strong>Addition/Subtraction</strong>&nbsp;&nbsp; Vectors can be
+added together either with the binary addition operator (<tt>u = v +
+w</tt>) or the additive assignment operator (<tt>u += v</tt>).
+Subtraction operates similarly, using subtraction rather than addition
+operators.
+
+<p><strong>Scalar Multiplication/Division</strong>&nbsp;&nbsp;
+Vectors can be multiplied by scalar values using either the binary
+operator (<tt>v * 2.0</tt>) or the accumulation operator (<tt>v *=
+2.0</tt>). Scalar division operates similarly.
+
+<p><strong>Inner Product</strong>&nbsp;&nbsp;
+The inner product (or dot product) of two vectors is written with the
+standard multiplication operator: <tt>v * w</tt>.
+
+<h3>Standard Vector Functions</h3>
+
+<p>All vector classes support a standard set of functions for
+performing common operations on vectors. These functions are:
+<pre>
+ <i>// Returns the squared length of the vector v</i>
+ inline double norm2(const Vec_& v);
+
+ <i>// Returns the length of the vector v</i>
+ inline double norm(const Vec_& v);
+
+ <i>// Adjusts v to have unit length. Mostly equivalent to v/=norm(v)</i>
+ inline void unitize(Vec_& v);
+</pre>
+
+<p>Vector can also be read from and written to C++ iostreams using the
+standard <tt>&lt;&lt;</tt> and <tt>&gt;&gt;</tt> operators.
+
+</body>
+
+</html>
diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/vec2.html b/debian/fireflies/fireflies-2.08/libgfx/doc/vec2.html
new file mode 100644
index 00000000..5faa016a
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/doc/vec2.html
@@ -0,0 +1,52 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
+ "http://www.w3.org/TR/REC-html40/loose.dtd">
+<!-- $Id: vec2.html 153 2000-09-05 16:11:26Z garland $ -->
+
+<html>
+
+<head>
+<title>libgfx: Vector Math</title>
+<link rel=stylesheet href="cdoc.css" type="text/css">
+<meta name="Author" content="Michael Garland">
+</head>
+
+<body>
+
+<h2>Vector Math</h2>
+
+<h3>class Vec2</h3>
+
+<p> This class implements a 2-dimensional real-valued vector.
+Individual elements are represent with <code>double</code> precision
+floating point numbers. To use the <tt>Vec2</tt> class you must
+include the header
+<pre>
+ #include &lt;gfx/vec2.h&gt;
+</pre>
+
+<h4>Constructor Methods</h4>
+
+<p>The <tt>Vec2</tt> class defines the following set of constructors:
+
+<pre>
+ Vec2(); <i>// Initializes vector to (0 0).</i>
+ Vec2(double x, double y); <i>// Initializes vector to (x y).</i>
+ Vec2(double s); <i>// Initializes vector to (s s)</i>
+
+ Vec2(const Vec2& v); <i>// </i>
+ Vec2(const float v[2]); <i>// These copy values from v</i>
+ Vec2(const double v[2]); <i>// </i>
+</pre>
+
+<h4>Specialized Functions</h4>
+
+<p>Beyond the standard functions supported by all vector classes, the
+<tt>Vec2</tt> class provides the following additional function:
+<pre>
+ Vec2 perp(const Vec2 &v);
+</pre>
+that returns a new vector which is perpendicular to the given vector.
+
+</body>
+
+</html>
diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/vec3.html b/debian/fireflies/fireflies-2.08/libgfx/doc/vec3.html
new file mode 100644
index 00000000..83e27c60
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/doc/vec3.html
@@ -0,0 +1,70 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
+ "http://www.w3.org/TR/REC-html40/loose.dtd">
+<!-- $Id: vec3.html 86 2000-06-13 18:59:13Z garland $ -->
+
+<html>
+
+<head>
+<title>libgfx: Vector Math</title>
+<link rel=stylesheet href="cdoc.css" type="text/css">
+<meta name="Author" content="Michael Garland">
+</head>
+
+<body>
+
+<h2>Vector Math</h2>
+
+<h3>class Vec3</h3>
+
+<p> This class implements a 3-dimensional real-valued vector.
+Individual elements are represent with <code>double</code> precision
+floating point numbers. To use the <tt>Vec3</tt> class you must
+include the header
+<pre>
+ #include &lt;gfx/vec3.h&gt;
+</pre>
+
+<h4>Constructor Methods</h4>
+
+<p>The <tt>Vec3</tt> class defines the following set of constructors:
+
+<pre>
+ Vec3(); <i>// Initializes vector to (0 0 0).</i>
+ Vec3(double x, double y, double z); <i>// Initializes vector to (x y z).</i>
+ Vec3(double s); <i>// Initializes vector to (s s s)</i>
+
+ Vec3(const Vec3& v); <i>// </i>
+ Vec3(const float v[3]); <i>// These copy values from v</i>
+ Vec3(const double v[3]); <i>// </i>
+
+ Vec3(const Vec2& v, double z); <i>// Initializes vector to (v[0] v[1] z)</i>
+</pre>
+
+<h4>Specialized Functions</h4>
+
+<p>In addition to the standard functions provided by all vector classes,
+the <tt>Vec3</tt> class defines certain specialized functions which
+operate only on 3-D vectors.
+
+<p>The <em>cross product</em> of two vectors <tt>v, w</tt> is a third
+vector which is perpendicular to both <tt>v</tt> and <tt>w</tt>.
+It can be computed with either a function call or an overloaded
+operator
+
+<pre>
+ u = cross(v, w); <i>// Equivalent ways of computing</i>
+ u = v ^ w; <i>// the cross product of v and w.</i>
+</pre>
+
+<p>Since 3-D vectors may be used to represent 2-D homogeneous
+coordinates, a projection function is provided.
+<pre>
+ Vec2 proj(const Vec3& v);
+</pre>
+This routine takes a homogeneous vector <i>(x y w)</i> and returns the
+corresponding 2-D vector <i>(x/w y/w)</i>. If <i>w</i> is 0 then
+the vector <i>(x y)</i> is returned.
+
+</body>
+
+</html>
diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/vec4.html b/debian/fireflies/fireflies-2.08/libgfx/doc/vec4.html
new file mode 100644
index 00000000..77e3e467
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/doc/vec4.html
@@ -0,0 +1,65 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
+ "http://www.w3.org/TR/REC-html40/loose.dtd">
+<!-- $Id: vec4.html 86 2000-06-13 18:59:13Z garland $ -->
+
+<html>
+
+<head>
+<title>libgfx: Vector Math</title>
+<link rel=stylesheet href="cdoc.css" type="text/css">
+<meta name="Author" content="Michael Garland">
+</head>
+
+<body>
+
+<h2>Vector Math</h2>
+
+<h3>class Vec4</h3>
+
+<p> This class implements a 4-dimensional real-valued vector.
+Individual elements are represent with <code>double</code> precision
+floating point numbers. To use the <tt>Vec4</tt> class you must
+include the header
+<pre>
+ #include &lt;gfx/vec4.h&gt;
+</pre>
+
+<h4>Constructor Methods</h4>
+
+<p>The <tt>Vec4</tt> class defines the following set of constructors:
+
+<pre>
+ Vec4(); <i>// Initializes vector to (0 0 0 0).</i>
+ Vec4(double x, double y, double z, double w); <i>// Initializes vector to (x y z w).</i>
+ Vec3(double s); <i>// Initializes vector to (s s s s)</i>
+
+ Vec4(const Vec4& v); <i>// </i>
+ Vec4(const float v[4]); <i>// These copy values from v</i>
+ Vec4(const double v[4]); <i>// </i>
+
+ Vec4(const Vec3& v, double w); <i>// Initializes vector to (v[0] v[1] v[2] w)</i>
+</pre>
+
+<h4>Specialized Functions</h4>
+
+<p>In addition to the standard functions provided by all vector classes,
+the <tt>Vec4</tt> class defines certain specialized functions which
+operate only on 4-D vectors.
+
+<p>The <em>cross product</em> of three 4-vectors <tt>u, v, w</tt> is a
+fourth vector which is perpendicular to all of <tt>u, v, w</tt>.
+It can be computed with the function call
+
+<pre>
+ t = cross(u, v, w);
+</pre>
+
+<p>Since 4-D vectors are frequently
+used to represent 3-D homogeneous
+coordinates, a projection function is provided.
+<pre>
+ Vec3 proj(const Vec4& v);
+</pre>
+This routine takes a homogeneous vector <i>(x y z w)</i> and returns the
+corresponding 3-vector <i>(x/w y/w z/w)</i>. If <i>w</i> is 0 then
+the vector <i>(x y z)</i> is returned.
diff --git a/debian/fireflies/fireflies-2.08/libgfx/gfx-config.in b/debian/fireflies/fireflies-2.08/libgfx/gfx-config.in
new file mode 100644
index 00000000..47ac58f0
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/gfx-config.in
@@ -0,0 +1,38 @@
+# $Id: gfx-config.in 343 2002-06-13 18:34:59Z garland $
+
+CC = @CC@
+CXX = @CXX@
+RANLIB = @RANLIB@
+RM = @RM@
+FLTKCONFIG = @FLTKCONFIG@
+
+WIN_FLAGS = @X_CFLAGS@
+WIN_LFLAGS = @X_LIBS@
+CFLAGS = @CFLAGS@ $(WIN_FLAGS)
+CXXFLAGS = @CXXFLAGS@ $(WIN_FLAGS)
+LDFLAGS = @LDFLAGS@ $(WIN_LFLAGS)
+
+WIN_LIBS = @X_PRE_LIBS@ @X_CORE@ @X_EXTRA_LIBS@
+WIN_DLIBS = @X_PRE_LIBS@ @X_DCORE@ @X_EXTRA_LIBS@
+IMG_LIBS = @IMG_LIBS@
+GL_LIBS = @GL_LIBS@
+FLTK_LIBS = @FLTK_LIBS@
+GUI_LIBS = $(FLTK_LIBS) $(IMG_LIBS) $(GL_LIBS) $(WIN_LIBS)
+
+CC_DEPEND = @CC_DEPEND@ $(CFLAGS)
+CXX_DEPEND = @CXX_DEPEND@ $(CXXFLAGS)
+
+.SUFFIXES:
+.SUFFIXES: .fl .c .cc .cxx .o
+
+.c.o:
+ $(CC) -c $(CFLAGS) $<
+
+.cxx.o:
+ $(CXX) -c $(CXXFLAGS) $<
+
+.fl.cxx:
+ fluid -c $<
+
+.fl.h:
+ fluid -c $<
diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/arcball.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/arcball.h
new file mode 100644
index 00000000..3b1ff00e
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/arcball.h
@@ -0,0 +1,55 @@
+#ifndef GFXARCBALL_INCLUDED // -*- C++ -*-
+#define GFXARCBALL_INCLUDED
+#if !defined(__GNUC__)
+# pragma once
+#endif
+
+/************************************************************************
+
+ Arcball rotation control.
+
+ $Id: arcball.h 427 2004-09-27 04:45:31Z garland $
+
+ ************************************************************************/
+
+#include "baseball.h"
+
+namespace gfx
+{
+
+class Arcball : public Baseball
+{
+private:
+ Vec2 ball_ctr;
+ double ball_radius;
+
+ Quat q_now, q_down, q_drag; // Quaternions describing rotation
+ Vec3 v_from, v_to; //
+
+ bool is_dragging;
+
+protected:
+ Vec3 proj_to_sphere(const Vec2&);
+ void update();
+
+
+public:
+ Arcball();
+
+ virtual void update_animation();
+ virtual bool mouse_down(int *where, int which);
+ virtual bool mouse_up(int *where, int which);
+ virtual bool mouse_drag(int *where, int *last, int which);
+
+ virtual void apply_transform();
+ virtual void get_transform(Vec3 & c, Vec3 &t, Quat & q);
+ virtual void set_transform(const Vec3 & c, const Vec3 & t, const Quat & q);
+
+ virtual void write(std::ostream&);
+ virtual void read(std::istream&);
+};
+
+} // namespace gfx
+
+// GFXARCBALL_INCLUDED
+#endif
diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/array.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/array.h
new file mode 100644
index 00000000..66189e4b
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/array.h
@@ -0,0 +1,70 @@
+#ifndef GFXARRAY_INCLUDED // -*- C++ -*-
+#define GFXARRAY_INCLUDED
+#if !defined(__GNUC__)
+# pragma once
+#endif
+
+/************************************************************************
+
+ These array classes extend the STL vector<> template to provide
+ convenient 2-D and 3-D arrays.
+
+ NOTE: This package used to provide array<T> and varray<T> templates
+ that were alternatives to the STL vector<T> template. Its purpose was
+ to support some legacy code written in the days when few compilers
+ understood STL. Now that STL support is common, that code has been
+ removed.
+
+ $Id: array.h 427 2004-09-27 04:45:31Z garland $
+
+ ************************************************************************/
+
+#include "gfx.h"
+#include <vector>
+
+namespace gfx
+{
+
+template<class T>
+class array2 : public std::vector<T>
+{
+private:
+ int W, H;
+
+protected:
+ array2() { }
+
+public:
+ array2(int w, int h) : std::vector<T>(w*h), W(w), H(h) { }
+
+ T& operator()(int i, int j) { return (*this)[j*W+i]; }
+ const T& operator()(int i, int j) const { return (*this)[j*W+i]; }
+
+ int width() const { return W; }
+ int height() const { return H; }
+};
+
+template<class T>
+class array3 : public std::vector<T>
+{
+private:
+ int W, H, D;
+
+protected:
+ array3() { }
+
+public:
+ array3(int w, int h, int d) : std::vector<T>(w*h*d), W(w), H(h), D(d) { }
+
+ T& operator()(int i, int j, int k) { return (*this)[k*W*H + j*W+i]; }
+ const T& operator()(int i,int j,int k) const {return (*this)[k*W*H+j*W+i];}
+
+ int width() const { return W; }
+ int height() const { return H; }
+ int depth() const { return D; }
+};
+
+} // namespace gfx
+
+// GFXARRAY_INCLUDED
+#endif
diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/baseball.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/baseball.h
new file mode 100644
index 00000000..6e10d647
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/baseball.h
@@ -0,0 +1,55 @@
+#ifndef GFXBASEBALL_INCLUDED // -*- C++ -*-
+#define GFXBASEBALL_INCLUDED
+#if !defined(__GNUC__)
+# pragma once
+#endif
+
+/************************************************************************
+
+ Common base class for ball-based rotators (e.g., Trackball & Arcball).
+
+ $Id: baseball.h 443 2005-06-14 00:53:40Z garland $
+
+ ************************************************************************/
+
+#include "quat.h"
+
+namespace gfx
+{
+
+class Baseball
+{
+public:
+ Vec3 ctr; // Describes bounding sphere of object
+ double radius; //
+
+ Quat curquat; // Current rotation of object
+ Vec3 trans; // Current translation of object
+
+public:
+ Baseball();
+ virtual ~Baseball() {}
+
+ // Required initialization method
+ template<class T>
+ void bounding_sphere(const TVec3<T>& v, T r) { ctr=v; radius=r; }
+
+ // Standard event interface provide by all Ball controllers
+ virtual void update_animation() = 0;
+ virtual bool mouse_down(int *where, int which) = 0;
+ virtual bool mouse_up(int *where, int which) = 0;
+ virtual bool mouse_drag(int *where, int *last, int which) = 0;
+
+ // Interface for use during drawing to apply appropriate transformation
+ virtual void apply_transform();
+ virtual void unapply_transform();
+
+ // Interface for reading/writing transform
+ virtual void write(std::ostream&);
+ virtual void read(std::istream&);
+};
+
+} // namespace gfx
+
+// GFXBASEBALL_INCLUDED
+#endif
diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/color.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/color.h
new file mode 100644
index 00000000..6b86e6e6
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/color.h
@@ -0,0 +1,48 @@
+#ifndef GFXCOLOR_INCLUDED // -*- C++ -*-
+#define GFXCOLOR_INCLUDED
+#if !defined(__GNUC__)
+# pragma once
+#endif
+
+/************************************************************************
+
+ Simple color manipulations
+
+ $Id$
+
+ ************************************************************************/
+
+#include "vec3.h"
+
+namespace gfx
+{
+
+ // RGB colors have components R,G,B in [0,1]
+ typedef Vec3f rgbColor;
+
+ // HSV colors should have components:
+ // H in [0,360]
+ // S in [0,1]
+ // V in [0,1]
+ typedef Vec3f hsvColor;
+
+ typedef Vec3f yiqColor;
+
+ typedef Vec3f xyzColor;
+ typedef Vec2f xyChromaticity;
+
+ extern hsvColor RGBtoHSV(const rgbColor& rgb);
+ extern rgbColor HSVtoRGB(const hsvColor& hsv);
+
+ extern float rgb_luminance_ntsc(const rgbColor& rgb);
+ extern float rgb_luminance_alt(const rgbColor& rgb);
+
+ extern yiqColor RGBtoYIQ(const rgbColor& rgb);
+
+ extern xyzColor RGBtoXYZ(const rgbColor& rgb);
+ extern rgbColor XYZtoRGB(const xyzColor& xyz);
+ extern xyChromaticity xyz_chromaticity(const xyzColor& xyz);
+}
+
+// GFXCOLOR_INCLUDED
+#endif
diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/config-osx.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/config-osx.h
new file mode 100644
index 00000000..b8081979
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/config-osx.h
@@ -0,0 +1,86 @@
+/************************************************************************
+
+ Configuration header for Mac OS X. Manually derived from config.h
+ generated by autoconf on OS X Tiger (10.4).
+
+ ************************************************************************/
+
+/* Define this if your compiler doesn't support the new C++ 'bool' type */
+#define HAVE_BOOL 1
+
+/* Define if your system supports rint() */
+#define HAVE_RINT 1
+
+/* Define if your system supports getrusage() */
+#define HAVE_GETRUSAGE 1
+
+/* Define if your system does not support getrusage() but supports times() */
+#define HAVE_TIMES 1
+
+/* Define if your system supports random() as opposed to just rand() */
+/* #undef HAVE_RANDOM */
+
+/* Define if the STL hash_map template is available */
+/* #undef HAVE_HASH_MAP */
+
+/* Define if the STL hash_set template is available */
+/* #undef HAVE_HASH_SET */
+
+/* GCC v3 puts hash_map and hash_set in an 'ext' directory */
+#define HAVE_EXT_HASH_MAP 1
+#define HAVE_EXT_HASH_SET 1
+
+/* Define if the STL valarray template is available */
+#define HAVE_VALARRAY 1
+
+/* Define if the ANSI standard <sstream> is available */
+#define HAVE_SSTREAM 1
+
+/* Define if the pre-ANSI <strstream> is available */
+#define HAVE_STRSTREAM 1
+
+/* Define if the gzstream library (a zlib wrapper) is available */
+/* #undef HAVE_GZSTREAM */
+
+/* ***** GUI & Image configuration section ***** */
+
+/* Define if the FLTK GUI toolkit is available */
+#define HAVE_FLTK 1
+
+/* Define if FLTK OpenGL support is available */
+#define HAVE_FLTK_GL 1
+
+/* Define if Sam Leffler's libtiff is available */
+#define HAVE_LIBTIFF 1
+
+/* Define the libtiff LZW is available */
+/* #undef HAVE_LIBTIFF_LZW */
+
+/* Define if libpng is available */
+#define HAVE_LIBPNG 1
+
+/* Define if the Independent JPEG Group's libjpeg is available */
+#define HAVE_LIBJPEG 1
+
+/* ***** OpenGL configuration section ***** */
+
+/* Define to the name of OpenGL implementation (e.g., "OpenGL" or "Mesa") */
+#define HAVE_OPENGL "OpenGL"
+
+/* Define if glPolygonOffsetEXT is available */
+/* #undef HAVE_POLYOFFSET_EXT */
+
+/* Define if glPolygonOffset is available */
+#define HAVE_POLYOFFSET 1
+
+/* Define if <GL/glext.h> header is available */
+/* #undef HAVE_GL_GLEXT_H */
+
+/* Define if <GL/glxext.h> header is available */
+/* #undef HAVE_GL_GLXEXT_H */
+
+/* Define if <GL/wglext.h> header is available */
+/* #undef HAVE_GL_WGLEXT_H */
+
+/* Define if <OpenGL/glext.h> header is available (for Apple) */
+#define HAVE_OPENGL_GLEXT_H 1
diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/config-vc.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/config-vc.h
new file mode 100644
index 00000000..ed327937
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/config-vc.h
@@ -0,0 +1,85 @@
+/************************************************************************
+
+ Visual C++ 5/6 configuration header.
+ Manually generated from config.h.in.
+
+ ************************************************************************/
+
+/* Define this if your compiler doesn't support the new C++ 'bool' type */
+#define HAVE_BOOL 1
+
+/* Define if your system supports rint() */
+/* #define HAVE_RINT 1 */
+
+/* Define if your system supports getrusage() */
+/* #undef HAVE_GETRUSAGE */
+
+/* Define if your system does not support getrusage() but supports times() */
+/* #undef HAVE_TIMES */
+
+/* Define if your system supports random() as opposed to just rand() */
+/* #undef HAVE_RANDOM */
+
+/* Define if the STL hash_map template is available */
+/* #undef HAVE_HASH_MAP */
+
+/* Define if the STL hash_set template is available */
+/*#undef HAVE_HASH_SET */
+
+/* GCC v3 puts hash_map and hash_set in an 'ext' directory */
+/* #undef HAVE_EXT_HASH_MAP */
+/* #undef HAVE_EXT_HASH_SET */
+
+/* Define if the STL valarray template is available */
+#define HAVE_VALARRAY 1
+
+/* Define if the ANSI standard <sstream> is available */
+#define HAVE_SSTREAM 1
+
+/* Define if the pre-ANSI <strstream> is available */
+/* #undef HAVE_STRSTREAM */
+
+/* Define if the FLTK GUI toolkit is available */
+#define HAVE_FLTK 1
+
+/* Define if FLTK OpenGL support is available */
+#define HAVE_FLTK_GL 1
+
+/* Define if Sam Leffler's libtiff is available */
+#define HAVE_LIBTIFF 1
+
+/* Define if libpng is available */
+#define HAVE_LIBPNG 1
+
+/* Define if the Independent JPEG Group's libjpeg is available */
+#define HAVE_LIBJPEG 1
+
+/* ***** OpenGL configuration section ***** */
+
+/* Define to the name of OpenGL implementation (e.g., "OpenGL" or "Mesa") */
+#define HAVE_OPENGL "OpenGL"
+
+/* Define if glPolygonOffsetEXT is available */
+/* #undef HAVE_POLYOFFSET_EXT */
+
+/* Define if glPolygonOffset is available */
+#define HAVE_POLYOFFSET 1
+
+/* Define if <GL/glext.h> header is available */
+#define HAVE_GL_GLEXT_H 1
+
+/* Define if <GL/glxext.h> header is available */
+/* #undef HAVE_GL_GLXEXT_H */
+
+/* Define if <GL/wglext.h> header is available */
+#define HAVE_GL_WGLEXT_H 1
+
+/* Visual C++ gets confused by too many casting and [] operators */
+#define HAVE_CASTING_LIMITS 1
+
+#if defined(_DEBUG) && defined(_MSC_VER)
+// STL makes Visual C++ complain about identifiers longer than 255
+// characters. Unfortunately, this may limit the debugability of
+// code that uses STL.
+#pragma warning (disable : 4786)
+#endif
diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/config.h.in b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/config.h.in
new file mode 100644
index 00000000..0adb4ea7
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/config.h.in
@@ -0,0 +1,81 @@
+/* This -*- C -*- file is meant to be processed by the configure script */
+
+/* Define this if your compiler doesn't support the new C++ 'bool' type */
+#undef HAVE_BOOL
+
+/* Define if your system supports rint() */
+#undef HAVE_RINT
+
+/* Define if your system supports getrusage() */
+#undef HAVE_GETRUSAGE
+
+/* Define if your system does not support getrusage() but supports times() */
+#undef HAVE_TIMES
+
+/* Define if your system supports random() as opposed to just rand() */
+#undef HAVE_RANDOM
+
+/* Define if the STL hash_map template is available */
+#undef HAVE_HASH_MAP
+
+/* Define if the STL hash_set template is available */
+#undef HAVE_HASH_SET
+
+/* GCC v3 puts hash_map and hash_set in an 'ext' directory */
+#undef HAVE_EXT_HASH_MAP
+#undef HAVE_EXT_HASH_SET
+
+/* Define if the STL valarray template is available */
+#undef HAVE_VALARRAY
+
+/* Define if the ANSI standard <sstream> is available */
+#undef HAVE_SSTREAM
+
+/* Define if the pre-ANSI <strstream> is available */
+#undef HAVE_STRSTREAM
+
+/* Define if the gzstream library (a zlib wrapper) is available */
+#undef HAVE_GZSTREAM
+
+/* ***** GUI & Image configuration section ***** */
+
+/* Define if the FLTK GUI toolkit is available */
+#undef HAVE_FLTK
+
+/* Define if FLTK OpenGL support is available */
+#undef HAVE_FLTK_GL
+
+/* Define if Sam Leffler's libtiff is available */
+#undef HAVE_LIBTIFF
+
+/* Define the libtiff LZW is available */
+#undef HAVE_LIBTIFF_LZW
+
+/* Define if libpng is available */
+#undef HAVE_LIBPNG
+
+/* Define if the Independent JPEG Group's libjpeg is available */
+#undef HAVE_LIBJPEG
+
+/* ***** OpenGL configuration section ***** */
+
+/* Define to the name of OpenGL implementation (e.g., "OpenGL" or "Mesa") */
+#undef HAVE_OPENGL
+
+/* Define if glPolygonOffsetEXT is available */
+#undef HAVE_POLYOFFSET_EXT
+
+/* Define if glPolygonOffset is available */
+#undef HAVE_POLYOFFSET
+
+/* Define if <GL/glext.h> header is available */
+#undef HAVE_GL_GLEXT_H
+
+/* Define if <GL/glxext.h> header is available */
+#undef HAVE_GL_GLXEXT_H
+
+/* Define if <GL/wglext.h> header is available */
+#undef HAVE_GL_WGLEXT_H
+
+/* Define if <OpenGL/glext.h> header is available (for Apple) */
+#undef HAVE_OPENGL_GLEXT_H
diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/geom3d.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/geom3d.h
new file mode 100644
index 00000000..817bb6f2
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/geom3d.h
@@ -0,0 +1,133 @@
+#ifndef GFXGEOM3D_INCLUDED
+#define GFXGEOM3D_INCLUDED
+#if !defined(__GNUC__)
+# pragma once
+#endif
+
+/************************************************************************
+
+ Handy 3D geometrical primitives
+
+ $Id: geom3d.h 432 2004-11-02 22:55:41Z garland $
+
+ ************************************************************************/
+
+#include "vec3.h"
+
+namespace gfx
+{
+
+//
+// Computing properties of triangles
+//
+
+template<class Vec>
+inline Vec triangle_raw_normal(const Vec& v1, const Vec& v2, const Vec& v3)
+{
+ return cross(v2-v1, v3-v1);
+}
+
+template<class Vec>
+inline typename Vec::value_type
+ triangle_area(const Vec& v1,const Vec& v2,const Vec& v3)
+{
+ return 0.5 * norm(triangle_raw_normal(v1, v2, v3));
+}
+
+template<class Vec>
+inline Vec triangle_normal(const Vec& v1, const Vec& v2, const Vec& v3)
+{
+ Vec n = triangle_raw_normal(v1, v2, v3);
+ unitize(n);
+ return n;
+}
+
+template<class Vec, class Plane>
+inline Plane triangle_plane(const Vec& v1, const Vec& v2, const Vec& v3)
+{
+ Vec n = triangle_normal(v1, v2, v3);
+ return Plane(n, -(n*v1));
+}
+
+template<class Vec, class Plane>
+inline Plane triangle_raw_plane(const Vec& v1, const Vec& v2, const Vec& v3)
+{
+ Vec n = triangle_raw_normal(v1, v2, v3);
+ return Plane(n, -(n*v1));
+}
+
+template< class Vec>
+inline typename Vec::value_type
+ triangle_compactness(const Vec& v1, const Vec& v2, const Vec& v3)
+{
+ const double FOUR_ROOT3 = 6.928203230275509;
+
+ return FOUR_ROOT3 * triangle_area(v1, v2, v3) /
+ ( norm2(v2 - v1) + norm2(v3 - v2) + norm2(v1 - v3) );
+}
+
+//
+// Operations with axis-aligned bounding boxes
+//
+
+template<class Vec, class List>
+void update_bbox(Vec& min, Vec& max, const List& items)
+{
+ typedef typename List::const_iterator iterator;
+
+ for(iterator i=items.begin(); i!=items.end(); i++)
+ {
+ const Vec& v = *i;
+ for(int j=0; j<Vec::dim(); j++)
+ {
+ if( v[j] < min[j] ) min[j] = v[j];
+ if( v[j] > max[j] ) max[j] = v[j];
+ }
+ }
+}
+
+template<class Vec, class List>
+void compute_bbox(Vec& min, Vec& max, const List& items)
+{
+ if( items.size()==0 ) min = max = 0;
+ else min = max = items[0];
+
+ update_bbox(min, max, items);
+}
+
+template<class Vec>
+bool is_inside_bbox(const Vec& p, const Vec& min, Vec& max)
+{
+ for(int i=0; i<Vec::dim(); i++)
+ if( p[i]<min[i] || p[i]>max[i] )
+ return false;
+
+ return true;
+}
+
+template<class Vec>
+Vec clamp_to_bbox(Vec p, const Vec& min, const Vec& max)
+{
+ for(int i=0; i<Vec::dim(); i++)
+ {
+ if (p[i]<min[i]) p[i]=min[i];
+ else if (p[i]>max[i]) p[i]=max[i];
+ }
+
+ return p;
+}
+
+//
+// Computing properties of tetrahedra
+//
+
+extern double tetrahedron_determinant(const Vec3& v0, const Vec3& v1,
+ const Vec3& v2, const Vec3& v3);
+
+extern double tetrahedron_volume(const Vec3& v0, const Vec3& v1,
+ const Vec3& v2, const Vec3& v3);
+
+} // namespace gfx
+
+// GFXGEOM3D_INCLUDED
+#endif
diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/geom4d.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/geom4d.h
new file mode 100644
index 00000000..47007c02
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/geom4d.h
@@ -0,0 +1,36 @@
+#ifndef GFXGEOM4D_INCLUDED
+#define GFXGEOM4D_INCLUDED
+#if !defined(__GNUC__)
+# pragma once
+#endif
+
+/************************************************************************
+
+ Handy 4D geometrical primitives
+
+ $Id: geom4d.h 427 2004-09-27 04:45:31Z garland $
+
+ ************************************************************************/
+
+namespace gfx
+{
+
+template<class Vec>
+inline Vec tet_raw_normal(const Vec& v1, const Vec& v2, const Vec& v3, const Vec& v4)
+{
+ return cross(v2-v1, v3-v1, v4-v1);
+}
+
+
+template<class Vec>
+inline Vec tet_normal(const Vec& v1, const Vec& v2, const Vec& v3, const Vec& v4)
+{
+ Vec n = tet_raw_normal(v1, v2, v3, v4);
+ unitize(n);
+ return n;
+}
+
+}
+
+// GFXGEOM4D_INCLUDED
+#endif
diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/gfx.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/gfx.h
new file mode 100644
index 00000000..69d5a0bd
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/gfx.h
@@ -0,0 +1,105 @@
+#ifndef GFX_INCLUDED // -*- C++ -*-
+#define GFX_INCLUDED
+#if !defined(__GNUC__)
+# pragma once
+#endif
+
+/************************************************************************
+
+ Main header file for the libgfx graphics library.
+
+ $Id: gfx.h 455 2005-08-17 18:10:25Z garland $
+
+ ************************************************************************/
+
+#if defined(HAVE_CONFIG_H)
+# include "config.h"
+#elif defined(_MSC_VER)
+# include "config-vc.h"
+#elif defined(__APPLE__)
+# include "config-osx.h"
+#endif
+
+#include <cstdlib>
+#include <cmath>
+#include <climits>
+#include <iostream>
+
+////////////////////////////////////////////////////////////////////////
+//
+// Standards notwithstanding, not all platforms define exactly the
+// same things in their header files. We try to compensate here.
+//
+
+#if !defined(HAVE_BOOL)
+typedef int bool;
+const bool false = 0;
+const bool true = 1;
+#endif
+
+// Microsoft doesn't define std::min() & std::max() because it conflicts with
+// <windef.h>, and their _MIN/_MAX macro workarounds don't add the std::
+// namespace qualification. These macros provide a uniform way of getting
+// around this problem.
+//
+#if defined(_MSC_VER)
+# define MIN(a,b) std::_cpp_min(a,b)
+# define MAX(a,b) std::_cpp_max(a,b)
+#else
+# if defined(__CYGWIN__)
+# define NOMINMAX
+# endif
+# define MIN(a,b) std::min(a,b)
+# define MAX(a,b) std::max(a,b)
+#endif
+
+#ifndef M_PI
+# define M_PI 3.14159265358979323846264338327950288419716939937510582097494459
+#endif
+
+#if !defined(HUGE) && defined(HUGE_VAL)
+# define HUGE HUGE_VAL
+#endif
+
+#if !defined(HAVE_RINT)
+inline double rint(double x) { return floor(x + 0.5); }
+#endif
+
+////////////////////////////////////////////////////////////////////////
+//
+//
+//
+namespace gfx
+{
+
+#if defined(HAVE_RANDOM)
+ inline double random1() { return (double)random() / (double)LONG_MAX; }
+ inline char random_byte() { return (char)(random() & 0xff); }
+#else
+ inline double random1() { return (double)rand() / (double)RAND_MAX; }
+ inline char random_byte() { return (char)(rand() & 0xff); }
+#endif
+
+const double FEQ_EPS = 1e-6;
+const double FEQ_EPS2 = 1e-12;
+
+inline bool FEQ(double a, double b, double e=FEQ_EPS) {return fabs(a-b)<e;}
+inline bool FEQ2(double a, double b, double e=FEQ_EPS2) {return fabs(a-b)<e;}
+
+
+////////////////////////////////////////////////////////////////////////
+//
+//
+//
+
+#define TIMING(t, cmd) { t=get_cpu_time(); cmd; t=get_cpu_time() - t; }
+extern double get_cpu_time();
+
+} // namespace gfx
+
+#ifndef GFX_NAMESPACE
+using namespace gfx;
+#endif
+
+// GFX_INCLUDED
+#endif
diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/gl.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/gl.h
new file mode 100644
index 00000000..c8fe3bcb
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/gl.h
@@ -0,0 +1,32 @@
+#ifndef GFXGL_INCLUDED // -*- C++ -*-
+#define GFXGL_INCLUDED
+#if !defined(__GNUC__)
+# pragma once
+#endif
+
+/************************************************************************
+
+ Include standard OpenGL headers. This process is complicated by the
+ fact that the Win32 OpenGL headers require that <windows.h> be
+ included before they are.
+
+ $Id: gl.h 292 2002-01-24 17:43:59Z garland $
+
+ ************************************************************************/
+
+#include "gfx.h"
+
+#if defined(WIN32)
+# include <windows.h>
+#endif
+
+#if defined(__APPLE__)
+# include <OpenGL/gl.h>
+# include <OpenGL/glu.h>
+#else
+# include <GL/gl.h>
+# include <GL/glu.h>
+#endif
+
+// GFXGL_INCLUDED
+#endif
diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/glext.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/glext.h
new file mode 100644
index 00000000..c5c99ca1
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/glext.h
@@ -0,0 +1,30 @@
+#ifndef GFXGLEXT_INCLUDED // -*- C++ -*-
+#define GFXGLEXT_INCLUDED
+#if !defined(__GNUC__)
+# pragma once
+#endif
+
+/************************************************************************
+
+ Include the standard OpenGL Extension headers, if available.
+
+ $Id: glext.h 273 2001-10-15 16:57:23Z garland $
+
+ ************************************************************************/
+
+#include "gl.h"
+
+#if defined(HAVE_GL_GLEXT_H)
+# include <GL/glext.h>
+#endif
+
+#if defined(HAVE_GL_GLXEXT_H)
+# include <GL/glxext.h>
+#endif
+
+#if defined(HAVE_GL_WGLEXT_H)
+# include <GL/wglext.h>
+#endif
+
+// GFXGLEXT_INCLUDED
+#endif
diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/gltools.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/gltools.h
new file mode 100644
index 00000000..a5422f9e
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/gltools.h
@@ -0,0 +1,37 @@
+#ifndef GFXGLTOOLS_INCLUDED // -*- C++ -*-
+#define GFXGLTOOLS_INCLUDED
+#if !defined(__GNUC__)
+# pragma once
+#endif
+
+/************************************************************************
+
+ Handy functions for common OpenGL tasks
+
+ $Id: gltools.h 445 2005-06-18 02:40:45Z garland $
+
+ ************************************************************************/
+
+#include "gl.h"
+#include "vec3.h"
+
+namespace gfx
+{
+
+extern GLuint opengl_pick_nil;
+extern GLuint opengl_pick_zmax;
+
+extern void begin_opengl_pick(int *ctr, double radius, GLuint *buf, int size);
+extern GLuint complete_opengl_pick(GLuint *buffer);
+
+extern void check_opengl_errors(const char *msg=NULL);
+
+extern void camera_lookat(const Vec3& min, const Vec3& max, double aspect);
+extern void ortho_camera_lookat(const Vec3& min, const Vec3& max,double aspect);
+
+extern int unproject_pixel(int *pixel, double *world, double z=0.0);
+
+}
+
+// GFXGLTOOLS_INCLUDED
+#endif
diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/gui.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/gui.h
new file mode 100644
index 00000000..da8285ac
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/gui.h
@@ -0,0 +1,186 @@
+#ifndef GFXGUI_INCLUDED // -*- C++ -*-
+#define GFXGUI_INCLUDED
+#if !defined(__GNUC__)
+# pragma once
+#endif
+
+/************************************************************************
+
+ Minimalist GUI framework.
+
+ This package implements a baseline GUI framework for use in
+ GFX-based applications. Only a very specific kind of interface is
+ supported: one where the application window consists primarily of an
+ OpenGL drawing canvas.
+
+ $Id: gui.h 443 2005-06-14 00:53:40Z garland $
+
+ ************************************************************************/
+
+#include "gl.h"
+
+#include <FL/Fl.H>
+#include <FL/Fl_Window.H>
+#include <FL/Fl_Menu_Bar.H>
+#include <FL/Fl_Gl_Window.H>
+#include <FL/Fl_Output.H>
+
+namespace gfx
+{
+
+class MxGUI;
+
+class MxGLCanvas : public Fl_Gl_Window
+{
+private:
+ int last_click[2];
+ MxGUI *app;
+
+public:
+ // Override selected FLTK window methods
+ //
+ virtual void draw();
+ virtual int handle(int event);
+ virtual void resize(int x, int y, int w, int h);
+
+public:
+ MxGLCanvas(int x, int y, int w, int h, const char *label=NULL);
+ void attach_app(MxGUI *a);
+};
+
+class MxGUI
+{
+private:
+ int w_offset, h_offset;
+ Fl_Window *create_window(int xw=640, int yw=480, int pad=5);
+
+public:
+ // This is the public interface of MxGUI available to the application.
+ //
+ Fl_Window *toplevel;
+ MxGLCanvas *canvas;
+ Fl_Output *status_line;
+ Fl_Menu_Bar *menu_bar;
+ Fl_Menu_Item *menu_layout;
+ float default_fps, target_fps;
+
+ static MxGUI *current; // There should only be one.
+
+ MxGUI();
+ virtual ~MxGUI() {}
+
+ virtual void initialize(int argc, char **argv,
+ Fl_Menu_Item *layout=NULL,
+ int xw=640, int yw=480);
+ virtual int run();
+
+ int status(const char *fmt, ...);
+ void animate(bool will);
+ bool snapshot_to_file(int format, const char *filenamep=NULL);
+ void resize_canvas(int width, int height);
+ void lock_size();
+ void unlock_size();
+
+ void title(const char *l) { toplevel->label(l); }
+
+ // Menu construction and standard callbacks
+ int add_menu(const std::string&, int key, Fl_Callback *cb, int flags=0);
+ int add_toggle_menu(const std::string&, int key, bool& val, int flags=0);
+ static void cb_toggle(Fl_Menu_ *m, bool *flag);
+
+public:
+ //
+ // Callback functions that get executed in response to menu commands.
+ virtual void cb_new();
+ virtual void cb_exit();
+ virtual void cb_snapshot(int);
+ virtual void cb_animate(Fl_Menu_ *m);
+ virtual void cb_fps();
+ virtual void cb_vga_size(int width); // uses 4:3 aspect ratio
+ virtual void cb_hdtv_size(int width); // uses 16:9 aspect ratio
+ virtual void cb_dv_size(int width); // uses 3:2 aspect ratio
+
+ virtual void cb_save_view_to_file();
+ virtual void cb_load_view_from_file();
+ virtual bool save_view_to_file();
+ virtual bool load_view_from_file();
+
+public:
+ //
+ // Applications are customized by overriding the following methods.
+
+ // Override these methods to control the contents of the GL canvas
+ virtual void setup_for_drawing();
+ virtual void draw_contents();
+ virtual void update_animation();
+
+ // Override these methods to receive events from the GL canvas
+ virtual bool mouse_down(int *where, int which);
+ virtual bool mouse_up(int *where, int which);
+ virtual bool mouse_drag(int *where, int *last, int which);
+ virtual bool key_press(int key);
+
+ // Override these methods to get command line arguments
+ virtual int cmdline_option(int argc, char **argv, int& index);
+ virtual void cmdline_file(const char *file);
+
+ // Override these methods to add custom interface elements
+ virtual void add_upper_controls(int& yfill, const int pad) {}
+ virtual void add_lower_controls(int& yfill, const int pad) {}
+
+ // Override this method to free memory, close files, etc.
+ virtual void cleanup_for_exit() {}
+};
+
+////////////////////////////////////////////////////////////////////////
+//
+// This template makes it easier to create FLTK-compliant callbacks.
+// In particular, its purpose is to construct static thunks for
+// calling member functions of MxGUI-derived classes.
+//
+
+template<class Gui>
+struct MxBinder
+{
+ typedef void (Gui::*GuiCommand)();
+ typedef void (Gui::*GuiCommand1)(int);
+ typedef void (Gui::*GuiCommand2)(Fl_Menu_ *);
+
+ template<GuiCommand cmd>
+ static void to(Fl_Widget *, void *data)
+ {
+ Gui *gui = static_cast<Gui*>(data);
+ (gui->*cmd)();
+ gui->canvas->redraw();
+ }
+
+ template<GuiCommand2 cmd>
+ static void to_menu(Fl_Widget *w, void *data)
+ {
+ Gui *gui = static_cast<Gui*>(data);
+ (gui->*cmd)(static_cast<Fl_Menu_ *>(w));
+ gui->canvas->redraw();
+ }
+
+ template<GuiCommand1 cmd, int i>
+ static void to_arg(Fl_Widget *, void *data)
+ {
+ Gui *gui = static_cast<Gui*>(data);
+ (gui->*cmd)(i);
+ gui->canvas->redraw();
+ }
+};
+
+////////////////////////////////////////////////////////////////////////
+//
+// These macros make static FLTK menu definitions look a little nicer.
+//
+
+#define MXGUI_BEGIN_MENU(name) {name, 0, 0, 0, FL_SUBMENU},
+#define MXGUI_END_MENU {0},
+#define MXGUI_FINISH_MENUBAR {0}
+
+} // namespace gfx
+
+// GFXGUI_INCLUDED
+#endif
diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/intvec.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/intvec.h
new file mode 100644
index 00000000..f6cf4d05
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/intvec.h
@@ -0,0 +1,97 @@
+#ifndef GFXINTVEC_INCLUDED // -*- C++ -*-
+#define GFXINTVEC_INCLUDED
+#if !defined(__GNUC__)
+# pragma once
+#endif
+
+/************************************************************************
+
+ Generic class for representing packed integer vectors.
+
+ For signed types (e.g., short) the elements of the vector are
+ assumed to fall in the range [-1, 1]. For unsigned types the
+ elements of the vector are assumed to fall in the range [0, 1].
+
+ Note that ANSI C defines the maximum values of integer types in
+ <limits.h>.
+
+ $Id: intvec.h 427 2004-09-27 04:45:31Z garland $
+
+ ************************************************************************/
+
+#include "gfx.h"
+
+namespace gfx
+{
+
+template<class T, int T_MAX, int N>
+class IntVec
+{
+private:
+ T data[N];
+
+ // These are the routines used by all other methods to convert
+ // between the internal integral representation and the external
+ // floating point representation.
+ //
+ static inline T _fromflt(double x)
+ { return (T)rint((x>1.0f?1.0f:x)*(double)T_MAX); }
+ static inline double _toflt(T s) { return (double)s/(double)T_MAX; }
+
+protected:
+ operator T*() { return data; }
+ operator const T*() const { return data; }
+
+public:
+ IntVec() { *this = 0.0; }
+
+ double operator[](int i) const { return _toflt(data[i]); }
+ void set(int i, double x) { data[i] = _fromflt(x); }
+
+ IntVec<T, T_MAX, N>& operator=(const IntVec<T, T_MAX, N>& v)
+ { for(int i=0; i<N; i++) data[i]=v.data[i]; return *this; }
+
+ double operator=(double x)
+ { T y = _fromflt(x); for(int i=0; i<N; i++) data[i] = y; return x; }
+
+ const T *raw_data() const { return data; }
+};
+
+
+////////////////////////////////////////////////////////////////////////
+//
+// 3-D vectors are particularly common in graphics applications.
+// RGB colors and normals are common examples of data types for which
+// we might want to use packed integer representation. Therefore we
+// make a special derived class to make it easy to define such types.
+//
+// Example: To define an RGB 3-vector represented as 3 components
+// whose values range from [0 .. 255], we could use the
+// declaration:
+//
+// typedef IntVec3<unsigned char, UCHAR_MAX> byteColor;
+//
+
+#include "vec3.h"
+
+template<class T, int T_MAX>
+class IntVec3 : public IntVec<T, T_MAX, 3>
+{
+public:
+ IntVec3() { *this = 0.0; }
+ IntVec3(double x, double y, double z) { pack(Vec3(x, y, z)); }
+ template<class U> IntVec3(const TVec3<U>& v) { pack(v[0], v[1], v[2]); }
+
+ Vec3 unpack() const { return Vec3((*this)[0],(*this)[1],(*this)[2]); }
+ void pack(const Vec3& v)
+ { this->set(0, v[0]); this->set(1, v[1]); this->set(2, v[2]); }
+ void pack(double x, double y, double z)
+ { this->set(0,x); this->set(1,y); this->set(2,z); }
+
+ IntVec3<T,T_MAX>& operator=(const Vec3& v) { pack(v); return *this; }
+};
+
+} // namespace gfx
+
+// GFXINTVEC_INCLUDED
+#endif
diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/mat2.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/mat2.h
new file mode 100644
index 00000000..d4331e89
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/mat2.h
@@ -0,0 +1,158 @@
+#ifndef GFXMAT2_INCLUDED // -*- C++ -*-
+#define GFXMAT2_INCLUDED
+#if !defined(__GNUC__)
+# pragma once
+#endif
+
+/************************************************************************
+
+ 2x2 Matrix class
+
+ $Id: mat2.h 427 2004-09-27 04:45:31Z garland $
+
+ ************************************************************************/
+
+#include "vec2.h"
+
+namespace gfx
+{
+
+class Mat2
+{
+private:
+ Vec2 row[2];
+
+public:
+ // Standard constructors
+ //
+ Mat2() { *this = 0.0; }
+ Mat2(double a, double b, double c, double d)
+ { row[0][0]=a; row[0][1]=b; row[1][0]=c; row[1][1]=d; }
+ Mat2(const Vec2 &r0,const Vec2 &r1) { row[0]=r0; row[1]=r1; }
+ Mat2(const Mat2 &m) { *this = m; }
+
+ // Descriptive interface
+ //
+ typedef double value_type;
+ typedef Vec2 vector_type;
+ typedef Mat2 inverse_type;
+ static int dim() { return 2; }
+
+ // Access methods note: A(i, j) == row i, col j
+ //
+ double& operator()(int i, int j) { return row[i][j]; }
+ double operator()(int i, int j) const { return row[i][j]; }
+ Vec2& operator[](int i) { return row[i]; }
+ const Vec2& operator[](int i) const { return row[i]; }
+ inline Vec2 col(int i) const {return Vec2(row[0][i],row[1][i]);}
+
+ operator double*() { return row[0]; }
+ operator const double*() { return row[0]; }
+ operator const double*() const { return row[0]; }
+
+
+ // Assignment methods
+ //
+ inline Mat2& operator=(const Mat2& m);
+ inline Mat2& operator=(double s);
+
+ inline Mat2& operator+=(const Mat2& m);
+ inline Mat2& operator-=(const Mat2& m);
+ inline Mat2& operator*=(double s);
+ inline Mat2& operator/=(double s);
+
+
+ // Construction of standard matrices
+ //
+ static Mat2 I();
+ static Mat2 outer_product(const Vec2 &u, const Vec2 &v)
+ { return Mat2(u[0]*v[0], u[0]*v[1], u[1]*v[0], u[1]*v[1]); }
+ static Mat2 outer_product(const Vec2 &u) { return outer_product(u,u); }
+
+ Mat2 &diag(double d);
+ Mat2 &ident() { return diag(1.0); }
+};
+
+////////////////////////////////////////////////////////////////////////
+//
+// Method definitions
+//
+
+inline Mat2& Mat2::operator=(const Mat2& m)
+ { row[0]=m[0]; row[1]=m[1]; return *this; }
+
+inline Mat2& Mat2::operator=(double s)
+ { row[0]=s; row[1]=s; return *this; }
+
+inline Mat2& Mat2::operator+=(const Mat2& m)
+ { row[0] += m.row[0]; row[1] += m.row[1]; return *this;}
+
+inline Mat2& Mat2::operator-=(const Mat2& m)
+ { row[0] -= m.row[0]; row[1] -= m.row[1]; return *this; }
+
+inline Mat2& Mat2::operator*=(double s)
+ { row[0] *= s; row[1] *= s; return *this; }
+
+inline Mat2& Mat2::operator/=(double s)
+ { row[0] /= s; row[1] /= s; return *this; }
+
+////////////////////////////////////////////////////////////////////////
+//
+// Operator definitions
+//
+
+inline Mat2 operator+(const Mat2 &n, const Mat2 &m)
+ { return Mat2(n[0]+m[0], n[1]+m[1]); }
+
+inline Mat2 operator-(const Mat2 &n, const Mat2 &m)
+ { return Mat2(n[0]-m[0], n[1]-m[1]); }
+
+inline Mat2 operator-(const Mat2 &m)
+ { return Mat2(-m[0], -m[1]); }
+
+inline Mat2 operator*(double s, const Mat2 &m)
+ { return Mat2(m[0]*s, m[1]*s); }
+inline Mat2 operator*(const Mat2 &m, double s)
+ { return s*m; }
+
+inline Mat2 operator/(const Mat2 &m, double s)
+ { return Mat2(m[0]/s, m[1]/s); }
+
+inline Vec2 operator*(const Mat2 &m, const Vec2 &v)
+ { return Vec2(m[0]*v, m[1]*v); }
+
+extern Mat2 operator*(const Mat2 &n, const Mat2 &m);
+
+inline std::ostream &operator<<(std::ostream &out, const Mat2& M)
+ { return out << M[0] << std::endl << M[1]; }
+
+inline std::istream &operator>>(std::istream &in, Mat2& M)
+ { return in >> M[0] >> M[1]; }
+
+////////////////////////////////////////////////////////////////////////
+//
+// Misc. function definitions
+//
+
+inline double det(const Mat2 &m)
+ { return m(0,0)*m(1,1) - m(0,1)*m(1,0); }
+
+inline double trace(const Mat2 &m)
+ { return m(0,0) + m(1,1); }
+
+inline Mat2 transpose(const Mat2 &m)
+ { return Mat2(m.col(0), m.col(1)); }
+
+inline Mat2 adjoint(const Mat2 &m)
+ { return Mat2(perp(m[1]), -perp(m[0])); }
+
+extern double invert(Mat2 &m_inv, const Mat2 &m);
+
+extern bool eigenvalues(const Mat2&, Vec2& evals);
+extern bool eigenvectors(const Mat2&, const Vec2& evals, Vec2 evecs[2]);
+extern bool eigen(const Mat2&, Vec2& evals, Vec2 evecs[2]);
+
+} // namespace gfx
+
+// GFXMAT2_INCLUDED
+#endif
diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/mat3.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/mat3.h
new file mode 100644
index 00000000..d898a964
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/mat3.h
@@ -0,0 +1,157 @@
+#ifndef GFXMAT3_INCLUDED // -*- C++ -*-
+#define GFXMAT3_INCLUDED
+#if !defined(__GNUC__)
+# pragma once
+#endif
+
+/************************************************************************
+
+ 3x3 Matrix class
+
+ $Id: mat3.h 427 2004-09-27 04:45:31Z garland $
+
+ ************************************************************************/
+
+#include "vec3.h"
+
+namespace gfx
+{
+
+class Mat3
+{
+private:
+ Vec3 row[3];
+
+public:
+ // Standard constructors
+ //
+ Mat3() { *this = 0.0; }
+ Mat3(const Vec3& r0,const Vec3& r1,const Vec3& r2)
+ { row[0]=r0; row[1]=r1; row[2]=r2; }
+ Mat3(const Mat3& m) { *this = m; }
+
+ // Descriptive interface
+ //
+ typedef double value_type;
+ typedef Vec3 vector_type;
+ typedef Mat3 inverse_type;
+ static int dim() { return 3; }
+
+ // Access methods
+ //
+ double& operator()(int i, int j) { return row[i][j]; }
+ double operator()(int i, int j) const { return row[i][j]; }
+ Vec3& operator[](int i) { return row[i]; }
+ const Vec3& operator[](int i) const { return row[i]; }
+ inline Vec3 col(int i) const {return Vec3(row[0][i],row[1][i],row[2][i]);}
+
+ operator double*() { return row[0]; }
+ operator const double*() { return row[0]; }
+ operator const double*() const { return row[0]; }
+
+
+ // Assignment methods
+ //
+ inline Mat3& operator=(const Mat3& m);
+ inline Mat3& operator=(double s);
+
+ inline Mat3& operator+=(const Mat3& m);
+ inline Mat3& operator-=(const Mat3& m);
+ inline Mat3& operator*=(double s);
+ inline Mat3& operator/=(double s);
+
+
+ // Construction of standard matrices
+ //
+ static Mat3 I();
+ static Mat3 outer_product(const Vec3& u, const Vec3& v);
+ static Mat3 outer_product(const Vec3& v);
+
+ Mat3 &diag(double d);
+ Mat3 &ident() { return diag(1.0); }
+
+
+};
+
+////////////////////////////////////////////////////////////////////////
+//
+// Methods definitions
+//
+
+inline Mat3& Mat3::operator=(const Mat3& m)
+ { row[0] = m[0]; row[1] = m[1]; row[2] = m[2]; return *this; }
+
+inline Mat3& Mat3::operator=(double s)
+ { row[0]=s; row[1]=s; row[2]=s; return *this; }
+
+inline Mat3& Mat3::operator+=(const Mat3& m)
+ { row[0] += m[0]; row[1] += m[1]; row[2] += m[2]; return *this; }
+
+inline Mat3& Mat3::operator-=(const Mat3& m)
+ { row[0] -= m[0]; row[1] -= m[1]; row[2] -= m[2]; return *this; }
+
+inline Mat3& Mat3::operator*=(double s)
+ { row[0] *= s; row[1] *= s; row[2] *= s; return *this; }
+
+inline Mat3& Mat3::operator/=(double s)
+ { row[0] /= s; row[1] /= s; row[2] /= s; return *this; }
+
+////////////////////////////////////////////////////////////////////////
+//
+// Operator definitions
+//
+
+inline Mat3 operator+(const Mat3& n, const Mat3& m)
+ { return Mat3(n[0]+m[0], n[1]+m[1], n[2]+m[2]); }
+
+inline Mat3 operator-(const Mat3& n, const Mat3& m)
+ { return Mat3(n[0]-m[0], n[1]-m[1], n[2]-m[2]); }
+
+inline Mat3 operator-(const Mat3& m)
+ { return Mat3(-m[0], -m[1], -m[2]); }
+
+inline Mat3 operator*(double s, const Mat3& m)
+ { return Mat3(m[0]*s, m[1]*s, m[2]*s); }
+inline Mat3 operator*(const Mat3& m, double s)
+ { return s*m; }
+
+inline Mat3 operator/(const Mat3& m, double s)
+ { return Mat3(m[0]/s, m[1]/s, m[2]/s); }
+
+inline Vec3 operator*(const Mat3& m, const Vec3& v)
+ { return Vec3(m[0]*v, m[1]*v, m[2]*v); }
+
+extern Mat3 operator*(const Mat3& n, const Mat3& m);
+
+inline std::ostream &operator<<(std::ostream &out, const Mat3& M)
+ { return out << M[0] << std::endl << M[1] << std::endl << M[2]; }
+
+inline std::istream &operator>>(std::istream &in, Mat3& M)
+ { return in >> M[0] >> M[1] >> M[2]; }
+
+////////////////////////////////////////////////////////////////////////
+//
+// Misc. function definitions
+//
+
+inline double det(const Mat3& m) { return m[0] * (m[1] ^ m[2]); }
+
+inline double trace(const Mat3& m) { return m(0,0) + m(1,1) + m(2,2); }
+
+inline Mat3 transpose(const Mat3& m)
+ { return Mat3(m.col(0), m.col(1), m.col(2)); }
+
+extern Mat3 adjoint(const Mat3& m);
+
+extern double invert(Mat3& m_inv, const Mat3& m);
+
+inline Mat3 row_extend(const Vec3& v) { return Mat3(v, v, v); }
+
+extern Mat3 diag(const Vec3& v);
+
+extern bool eigen(const Mat3& m, Vec3& eig_vals, Vec3 eig_vecs[3]);
+
+} // namespace gfx
+
+// GFXMAT3_INCLUDED
+#endif
diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/mat4.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/mat4.h
new file mode 100644
index 00000000..dfb36da4
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/mat4.h
@@ -0,0 +1,194 @@
+#ifndef GFXMAT4_INCLUDED // -*- C++ -*-
+#define GFXMAT4_INCLUDED
+#if !defined(__GNUC__)
+# pragma once
+#endif
+
+/************************************************************************
+
+ 4x4 Matrix class
+
+ $Id: mat4.h 427 2004-09-27 04:45:31Z garland $
+
+ ************************************************************************/
+
+#include "vec4.h"
+
+namespace gfx
+{
+
+class Mat4
+{
+private:
+ Vec4 row[4];
+
+public:
+ // Standard constructors
+ //
+ Mat4() { *this = 0.0; }
+ Mat4(const Vec4& r0,const Vec4& r1,const Vec4& r2,const Vec4& r3)
+ { row[0]=r0; row[1]=r1; row[2]=r2; row[3]=r3; }
+ Mat4(const Mat4& m) { *this = m; }
+
+ // Descriptive interface
+ //
+ typedef double value_type;
+ typedef Vec4 vector_type;
+ typedef Mat4 inverse_type;
+ static int dim() { return 4; }
+
+ // Access methods
+ //
+ double& operator()(int i, int j) { return row[i][j]; }
+ double operator()(int i, int j) const { return row[i][j]; }
+ Vec4& operator[](int i) { return row[i]; }
+ const Vec4& operator[](int i) const { return row[i]; }
+ inline Vec4 col(int i) const
+ { return Vec4(row[0][i],row[1][i],row[2][i],row[3][i]); }
+
+ operator double*() { return row[0]; }
+ operator const double*() { return row[0]; }
+ operator const double*() const { return row[0]; }
+
+ // Assignment methods
+ //
+ inline Mat4& operator=(const Mat4& m);
+ inline Mat4& operator=(double s);
+
+ inline Mat4& operator+=(const Mat4& m);
+ inline Mat4& operator-=(const Mat4& m);
+ inline Mat4& operator*=(double s);
+ inline Mat4& operator/=(double s);
+
+ static Mat4 I();
+};
+
+////////////////////////////////////////////////////////////////////////
+//
+// Method definitions
+//
+
+inline Mat4& Mat4::operator=(const Mat4& m)
+{
+ row[0] = m[0]; row[1] = m[1]; row[2] = m[2]; row[3] = m[3];
+ return *this;
+}
+
+inline Mat4& Mat4::operator=(double s)
+{
+ row[0]=s; row[1]=s; row[2]=s; row[3]=s;
+ return *this;
+}
+
+inline Mat4& Mat4::operator+=(const Mat4& m)
+{
+ row[0] += m[0]; row[1] += m[1]; row[2] += m[2]; row[3] += m[3];
+ return *this;
+}
+
+inline Mat4& Mat4::operator-=(const Mat4& m)
+{
+ row[0] -= m[0]; row[1] -= m[1]; row[2] -= m[2]; row[3] -= m[3];
+ return *this;
+}
+
+inline Mat4& Mat4::operator*=(double s)
+{
+ row[0] *= s; row[1] *= s; row[2] *= s; row[3] *= s;
+ return *this;
+}
+
+inline Mat4& Mat4::operator/=(double s)
+{
+ row[0] /= s; row[1] /= s; row[2] /= s; row[3] /= s;
+ return *this;
+}
+
+////////////////////////////////////////////////////////////////////////
+//
+// Operator definitions
+//
+
+inline Mat4 operator+(const Mat4& n, const Mat4& m)
+ { return Mat4(n[0]+m[0], n[1]+m[1], n[2]+m[2], n[3]+m[3]); }
+
+inline Mat4 operator-(const Mat4& n, const Mat4& m)
+ { return Mat4(n[0]-m[0], n[1]-m[1], n[2]-m[2], n[3]-m[3]); }
+
+inline Mat4 operator-(const Mat4& n)
+ { return Mat4(-n[0], -n[1], -n[2], -n[3]); }
+
+inline Mat4 operator*(double s, const Mat4& m)
+ { return Mat4(m[0]*s, m[1]*s, m[2]*s, m[3]*s); }
+inline Mat4 operator*(const Mat4& m, double s)
+ { return s*m; }
+
+inline Mat4 operator/(const Mat4& m, double s)
+ { return Mat4(m[0]/s, m[1]/s, m[2]/s, m[3]/s); }
+
+inline Vec4 operator*(const Mat4& m, const Vec4& v)
+ { return Vec4(m[0]*v, m[1]*v, m[2]*v, m[3]*v); }
+
+extern Mat4 operator*(const Mat4& n, const Mat4& m);
+
+//
+// Transform a homogeneous 3-vector and reproject into normal 3-space
+//
+inline Vec3 operator*(const Mat4& m, const Vec3& v)
+{
+ Vec4 u=Vec4(v,1);
+ double w=m[3]*u;
+
+ if(w==0.0) return Vec3(m[0]*u, m[1]*u, m[2]*u);
+ else return Vec3(m[0]*u/w, m[1]*u/w, m[2]*u/w);
+}
+
+inline std::ostream &operator<<(std::ostream &out, const Mat4& M)
+ { return out<<M[0]<<std::endl<<M[1]<<std::endl<<M[2]<<std::endl<<M[3]; }
+
+inline std::istream &operator>>(std::istream &in, Mat4& M)
+ { return in >> M[0] >> M[1] >> M[2] >> M[3]; }
+
+////////////////////////////////////////////////////////////////////////
+//
+// Transformations
+//
+
+extern Mat4 translation_matrix(const Vec3& delta);
+
+extern Mat4 scaling_matrix(const Vec3& scale);
+
+extern Mat4 rotation_matrix_rad(double theta, const Vec3& axis);
+
+inline Mat4 rotation_matrix_deg(double theta, const Vec3& axis)
+ { return rotation_matrix_rad(theta*M_PI/180.0, axis); }
+
+extern Mat4 perspective_matrix(double fovy, double aspect,
+ double zmin=0.0, double zmax=0.0);
+
+extern Mat4 lookat_matrix(const Vec3& from, const Vec3& at, const Vec3& up);
+
+extern Mat4 viewport_matrix(double w, double h);
+
+////////////////////////////////////////////////////////////////////////
+//
+// Misc. function definitions
+//
+
+inline double det(const Mat4& m) { return m[0] * cross(m[1], m[2], m[3]); }
+
+inline double trace(const Mat4& m) { return m(0,0)+m(1,1)+m(2,2)+m(3,3); }
+
+inline Mat4 transpose(const Mat4& m)
+ { return Mat4(m.col(0), m.col(1), m.col(2), m.col(3)); }
+
+extern Mat4 adjoint(const Mat4& m);
+extern double invert(Mat4& m_inv, const Mat4& m);
+extern double invert_cramer(Mat4& m_inv, const Mat4& m);
+
+extern bool eigen(const Mat4& m, Vec4& eig_vals, Vec4 eig_vecs[4]);
+
+} // namespace gfx
+
+// GFXMAT4_INCLUDED
+#endif
diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/quat.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/quat.h
new file mode 100644
index 00000000..172a8b30
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/quat.h
@@ -0,0 +1,118 @@
+#ifndef GFXQUAT_INCLUDED // -*- C++ -*-
+#define GFXQUAT_INCLUDED
+#if !defined(__GNUC__)
+# pragma once
+#endif
+
+/************************************************************************
+
+ Quaternion class
+
+ $Id: quat.h 440 2005-02-23 05:14:13Z garland $
+
+ ************************************************************************/
+
+#include "mat4.h"
+
+namespace gfx
+{
+
+class Quat
+{
+private:
+ Vec3 v; // Vector component
+ double s; // Scalar component
+
+public:
+ Quat() { v=0.0; s=1.0; }
+ Quat(double x, double y, double z, double w) { v[0]=x;v[1]=y;v[2]=z; s=w; }
+ Quat(const Vec3& a, double b) { v=a; s=b; }
+ Quat(const Quat& q) { *this=q; }
+
+ // Access methods
+ const Vec3& vector() const { return v; }
+ Vec3& vector() { return v; }
+ double scalar() const { return s; }
+ double& scalar() { return s; }
+
+ // Assignment and in-place arithmetic methods
+ Quat& operator=(const Quat& q);
+ Quat& operator+=(const Quat& q);
+ Quat& operator-=(const Quat& q);
+ Quat& operator=(double d);
+ Quat& operator*=(double d);
+ Quat& operator/=(double d);
+
+ // Construction of standard quaternions
+ static Quat ident();
+};
+
+////////////////////////////////////////////////////////////////////////
+//
+// Implementation of Quat methods
+//
+
+inline Quat& Quat::operator=(const Quat& q) { v=q.v; s=q.s; return *this; }
+inline Quat& Quat::operator+=(const Quat& q) { v+=q.v; s+=q.s; return *this; }
+inline Quat& Quat::operator-=(const Quat& q) { v-=q.v; s-=q.s; return *this; }
+
+inline Quat& Quat::operator=(double d) { v=d; s=d; return *this; }
+inline Quat& Quat::operator*=(double d) { v*=d; s*=d; return *this; }
+inline Quat& Quat::operator/=(double d) { v/=d; s/=d; return *this; }
+
+inline Quat Quat::ident() { return Quat(0, 0, 0, 1); }
+
+////////////////////////////////////////////////////////////////////////
+//
+// Standard arithmetic operators on quaternions
+//
+
+inline Quat operator+(const Quat& q, const Quat& r)
+ { return Quat(q.vector()+r.vector(), q.scalar()+r.scalar()); }
+
+inline Quat operator*(const Quat& q, const Quat& r)
+{
+ return Quat(cross(q.vector(),r.vector()) +
+ r.scalar()*q.vector() +
+ q.scalar()*r.vector(),
+ q.scalar()*r.scalar() - q.vector()*r.vector());
+}
+
+inline Quat operator*(const Quat& q, double s)
+ { return Quat(q.vector()*s, q.scalar()*s); }
+inline Quat operator*(double s, const Quat& q)
+ { return Quat(q.vector()*s, q.scalar()*s); }
+
+inline Quat operator/(const Quat& q, double s)
+ { return Quat(q.vector()/s, q.scalar()/s); }
+
+inline std::ostream &operator<<(std::ostream &out, const Quat& q)
+ { return out << q.vector() << " " << q.scalar(); }
+
+inline std::istream &operator>>(std::istream &in, Quat& q)
+ { return in >> q.vector() >> q.scalar(); }
+
+
+////////////////////////////////////////////////////////////////////////
+//
+// Standard functions on quaternions
+//
+
+inline double norm(const Quat& q)
+ { return q.scalar()*q.scalar() + q.vector()*q.vector(); }
+
+inline Quat conjugate(const Quat& q) { return Quat(-q.vector(), q.scalar()); }
+inline Quat inverse(const Quat& q) { return conjugate(q)/norm(q); }
+inline Quat& unitize(Quat& q) { q /= sqrt(norm(q)); return q; }
+
+extern Quat exp(const Quat& q);
+extern Quat log(const Quat& q);
+extern Quat axis_to_quat(const Vec3& a, double phi);
+extern Mat4 quat_to_matrix(const Quat& q);
+extern Mat4 unit_quat_to_matrix(const Quat& q);
+extern Quat slerp(const Quat& from, const Quat& to, double t);
+
+} // namespace gfx
+
+// GFXQUAT_INCLUDED
+#endif
diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/raster.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/raster.h
new file mode 100644
index 00000000..4d4b2336
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/raster.h
@@ -0,0 +1,171 @@
+#ifndef GFXRASTER_INCLUDED // -*- C++ -*-
+#define GFXRASTER_INCLUDED
+#if !defined(__GNUC__)
+# pragma once
+#endif
+
+/************************************************************************
+
+ Raster image support.
+
+ $Id: raster.h 427 2004-09-27 04:45:31Z garland $
+
+ ************************************************************************/
+
+#include "gfx.h"
+#include "vec2.h"
+
+namespace gfx
+{
+
+typedef TVec2<short> PixelAddress;
+
+template<class T>
+class Raster
+{
+private:
+ T *data;
+ int W, H, nchan;
+
+public:
+ Raster(int w, int h, int c)
+ {
+ W=w; H=h; nchan=c;
+ data = new T[length()];
+ }
+ virtual ~Raster() { delete[] data; }
+
+ int width() const { return W; }
+ int height() const { return H; }
+ int channels() const { return nchan; }
+ int length() const { return W*H*nchan; }
+
+ T& operator[](int i) { return data[i]; }
+ T operator[](int i) const { return data[i]; }
+
+ virtual T *pixel(int i, int j) { return data + (j*W+i)*nchan; }
+ virtual const T *pixel(int i, int j) const { return data + (j*W+i)*nchan; }
+ T *pixel(const PixelAddress &a) { return pixel(a[0], a[1]); }
+ const T *pixel(const PixelAddress &a) const { return pixel(a[0], a[1]); }
+
+ T *head() { return data; }
+ const T *head() const { return data; }
+
+ void reverse(int start=0, int end=-1);
+ void hflip();
+ void vflip();
+
+ bool is_valid_address(const PixelAddress& a) const
+ {
+ return is_valid_address(a[0], a[1]);
+ }
+
+ virtual bool is_valid_address(int x, int y) const
+ {
+ return ( (x >= 0) && (x < W) && (y >= 0) && (y < H) );
+ }
+};
+
+
+class FloatRaster;
+class ByteRaster : public Raster<unsigned char>
+{
+public:
+ ByteRaster(int w, int h, int c) : Raster<unsigned char>(w,h,c) {}
+ ByteRaster(const ByteRaster& img);
+ ByteRaster(const FloatRaster& img);
+};
+
+
+class FloatRaster : public Raster<float>
+{
+public:
+ FloatRaster(int w, int h, int c) : Raster<float>(w,h,c) {}
+ FloatRaster(const FloatRaster &img);
+ FloatRaster(const ByteRaster &img);
+};
+
+
+////////////////////////////////////////////////////////////////////////
+//
+// Templated raster methods
+//
+
+template<class T>
+inline void Raster<T>::reverse(int start, int end)
+{
+ if(end<0 || end>=length()) end = length() - channels();
+
+ int i=start, j=end;
+
+ while(i<j)
+ {
+ for(int k=0; k<channels(); k++)
+ {
+ T tmp = (*this)[i+k];
+ (*this)[i+k] = (*this)[j+k];
+ (*this)[j+k] = tmp;
+ }
+ i += channels();
+ j -= channels();
+ }
+}
+
+template<class T>
+inline void Raster<T>::hflip()
+{
+ int i = 0;
+ int j = channels()*(width()-1);
+
+ while( i<length() )
+ {
+ reverse(i, i+j);
+ i += j + channels();
+ }
+}
+
+template<class T>
+inline void Raster<T>::vflip()
+{
+ reverse();
+ hflip();
+}
+
+
+////////////////////////////////////////////////////////////////////////
+//
+// Supported external image file formats.
+//
+
+enum { IMG_PNM=0, IMG_PNG=1, IMG_TIFF=2, IMG_JPEG=3, IMG_LIMIT=4 };
+
+extern const char *image_type_name(int type);
+extern const char *image_type_ext(int type);
+extern int infer_image_type(const char *filename);
+
+// Image I/O based on filename extensions
+extern bool write_image(const char *filename, const ByteRaster&, int type=-1);
+extern ByteRaster *read_image(const char *filename, int type=-1);
+
+// PNM support provided by libgfx (always available)
+extern bool will_write_raw_pnm;
+extern bool write_pnm_image(const char *filename, const ByteRaster&);
+extern ByteRaster *read_pnm_image(const char *filename);
+
+// TIFF support provided through libtiff (if available).
+extern bool write_tiff_image(const char *filename, const ByteRaster&);
+extern ByteRaster *read_tiff_image(const char *filename);
+
+// PNG support provided through libpng (if available).
+extern bool write_png_image(const char *filename, const ByteRaster&);
+extern ByteRaster *read_png_image(const char *filename);
+
+// JPEG support provided through libjpeg (if available)
+extern int jpeg_output_quality;
+extern bool write_jpeg_image(const char *filename, const ByteRaster&);
+extern ByteRaster *read_jpeg_image(const char *filename);
+
+} // namespace gfx
+
+// GFXRASTER_INCLUDED
+#endif
diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/script.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/script.h
new file mode 100644
index 00000000..c38cba1a
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/script.h
@@ -0,0 +1,182 @@
+#ifndef GFXSCRIPT_INCLUDED // -*- C++ -*-
+#define GFXSCRIPT_INCLUDED
+#if !defined(__GNUC__)
+# pragma once
+#endif
+
+/************************************************************************
+
+ Simple low-level file format scripting support.
+
+ This is the THIRD major revision of this code. It represents a
+ significant departure from the previous scripting structure.
+
+ $Id: script.h 443 2005-06-14 00:53:40Z garland $
+
+ ************************************************************************/
+
+#include "gfx.h"
+#include <vector>
+#include <string>
+#include <map>
+//#include <hash_map>
+
+namespace gfx
+{
+
+// Define a set of exceptions that can occur during script parsing
+//
+ namespace script
+ {
+ struct Error
+ {
+ std::string msg;
+ Error(const std::string& m) : msg(m) {}
+ };
+
+ struct SyntaxError : public Error
+ { SyntaxError(const std::string& m) : Error(m) {} };
+
+ struct NameError : public Error
+ { NameError(const std::string& m) : Error(m) {} };
+
+ struct IOError : public Error
+ { IOError(const std::string& m) : Error(m) {} };
+ }
+
+
+// These return codes are deprecated and will be going away in the near
+// future. Start using the exceptions defined above instead.
+enum {
+ SCRIPT_OK = 0,
+ SCRIPT_ERR_UNDEF,
+ SCRIPT_ERR_SYNTAX,
+ SCRIPT_ERR_UNSUPPORTED,
+ SCRIPT_ERR_NOFILE,
+ SCRIPT_END
+};
+
+class CmdLine
+{
+public:
+ typedef std::string::size_type index_type;
+ typedef std::pair<index_type, index_type> range_type;
+
+ const std::string &line;
+ range_type op;
+ std::vector<range_type> tokens;
+
+ std::string substr(const range_type& r) const
+ { return line.substr(r.first, r.second-r.first);}
+
+ std::string token_to_string(int i) const;
+ double token_to_double(int i) const;
+ float token_to_float(int i) const;
+ int token_to_int(int i) const;
+ std::string rest_to_string(int i) const;
+
+
+ CmdLine(const std::string &l) : line(l) { }
+
+ std::string opname() const { return substr(op); }
+ int argcount() const { return tokens.size(); }
+ std::string argline() const;
+
+ int collect_as_strings(std::vector<std::string> &v, int offset=0) const;
+ int collect_as_numbers(std::vector<double> &v, int offset=0) const;
+ int collect_as_numbers(std::vector<int> &v, int offset=0) const;
+
+ int collect_as_numbers(double *v, int size, int offset=0) const;
+ int collect_as_numbers(float *v, int size, int offset=0) const;
+ int collect_as_numbers(int *v, int size, int offset=0) const;
+};
+
+typedef int (*CmdHandler)(const CmdLine&);
+
+struct CmdObject
+{
+ virtual ~CmdObject() {}
+ virtual int operator()(const CmdLine& cmd) = 0;
+};
+
+struct CmdFunction : public CmdObject
+{
+ CmdHandler fn;
+ CmdFunction(CmdHandler f) { fn=f; }
+ virtual int operator()(const CmdLine& cmd) { return (*fn)(cmd); }
+};
+
+template<class T> struct CmdMethod : public CmdObject
+{
+ typedef int (T::*member_handler)(const CmdLine&);
+ T *self;
+ member_handler fn;
+
+ CmdMethod(T &obj, member_handler p) { self=&obj; fn=p; }
+ virtual int operator()(const CmdLine& cmd) { return (self->*fn)(cmd); }
+};
+
+template<class T> struct CmdMethod2 : public CmdObject
+{
+ typedef void (T::*member_handler)(const CmdLine&);
+ T *self;
+ member_handler fn;
+
+ CmdMethod2(T &obj, member_handler p) { self=&obj; fn=p; }
+ virtual int operator()(const CmdLine& cmd)
+ {
+ (self->*fn)(cmd);
+ return SCRIPT_OK;
+ }
+};
+
+//typedef std::hash_map< std::string, CmdHandler > CmdTable;
+typedef std::map< std::string, CmdObject* > CmdTable;
+
+class CmdEnv
+{
+private:
+ CmdTable script_commands;
+
+ int script_include(const CmdLine&);
+ int script_ignore(const CmdLine&);
+ int script_end(const CmdLine&);
+ int script_eval(const CmdLine&);
+
+ std::vector<CmdEnv*> scopes;
+
+public:
+ CmdEnv();
+ virtual ~CmdEnv();
+
+ void register_command(const std::string& name, CmdObject *fn);
+ CmdObject *lookup_command(const std::string& name);
+
+ void register_command(const std::string& name, CmdHandler proc);
+
+ template<class T> inline void register_method(const std::string& name,
+ T *obj,
+ int (T::*fn)(const CmdLine&))
+ { register_command(name, new CmdMethod<T>(*obj, fn)); }
+
+ template<class T> inline void register_method(const std::string& name,
+ T *obj,
+ void (T::*fn)(const CmdLine&))
+ { register_command(name, new CmdMethod2<T>(*obj, fn)); }
+
+ void ignore_command(const std::string& name);
+
+ void register_vocabulary(const std::string& name, CmdEnv *env);
+ void begin_scope(CmdEnv *subenv);
+ void end_scope();
+
+ int do_line(const std::string& line);
+ int do_stream(std::istream& in);
+ int do_file(const std::string& filename);
+ int do_string(const std::string& line);
+};
+
+} // namespace gfx
+
+// GFXSCRIPT_INCLUDED
+#endif
diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/symmat2.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/symmat2.h
new file mode 100644
index 00000000..db58c19c
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/symmat2.h
@@ -0,0 +1,134 @@
+#ifndef GFXSYMMAT2_INCLUDED // -*- C++ -*-
+#define GFXSYMMAT2_INCLUDED
+#if !defined(__GNUC__)
+# pragma once
+#endif
+
+/************************************************************************
+
+ Symmetric 2x2 Matrix class
+
+ ************************************************************************/
+
+#include "mat2.h"
+
+namespace gfx
+{
+
+class SymMat2
+{
+private:
+ double elt[3];
+
+ inline int index(int i, int j) const
+ {
+ // if n=dim(), and if i<=j:
+ // index = ( n*(n+1)/2 - (n-i)*(n-i+1)/2 ) + (j-i)
+ //
+ if( i<=j ) return 3 - (2-i)*(3-i)/2 + (j-i);
+ else return 3 - (2-j)*(3-j)/2 + (i-j);
+ }
+
+public:
+ // Standard constructors
+ //
+ SymMat2(double s=0.0) { *this = s; }
+ SymMat2(const SymMat2& m) { *this = m; }
+
+ double& operator()(int i, int j) { return elt[index(i,j)]; }
+ double operator()(int i, int j) const { return elt[index(i,j)]; }
+
+ static int size() { return 3; }
+ static int dim() { return 2; }
+ typedef Vec2 vector_type;
+ typedef Mat2 inverse_type;
+ typedef double value_type;
+
+ operator double*() { return elt; }
+ operator const double*() { return elt; }
+ operator const double*() const { return elt; }
+
+ inline Vec2 row(int i) const;
+ inline Vec2 col(int j) const;
+ Mat2 fullmatrix() const;
+
+ inline SymMat2& operator=(const SymMat2& m);
+ inline SymMat2& operator=(double s);
+
+ inline SymMat2& operator+=(const SymMat2& m);
+ inline SymMat2& operator-=(const SymMat2& m);
+ inline SymMat2& operator*=(double s);
+ inline SymMat2& operator/=(double s);
+
+ static SymMat2 I();
+ static SymMat2 outer_product(const Vec2& v);
+};
+
+////////////////////////////////////////////////////////////////////////
+//
+// Methods definitions
+//
+
+inline Vec2 SymMat2::row(int i) const
+ { return Vec2((*this)(i, 0), (*this)(i, 1)); }
+
+inline Vec2 SymMat2::col(int j) const
+ { return Vec2((*this)(0, j), (*this)(1, j)); }
+
+inline SymMat2& SymMat2::operator=(const SymMat2& m)
+ { for(int i=0; i<size(); i++) elt[i]=m.elt[i]; return *this; }
+
+inline SymMat2& SymMat2::operator=(double s)
+ { for(int i=0; i<size(); i++) elt[i]=s; return *this; }
+
+inline SymMat2& SymMat2::operator+=(const SymMat2& m)
+ { for(int i=0; i<size(); i++) elt[i]+=m.elt[i]; return *this; }
+
+inline SymMat2& SymMat2::operator-=(const SymMat2& m)
+ { for(int i=0; i<size(); i++) elt[i]-=m.elt[i]; return *this; }
+
+inline SymMat2& SymMat2::operator*=(double s)
+ { for(int i=0; i<size(); i++) elt[i]*=s; return *this; }
+
+inline SymMat2& SymMat2::operator/=(double s)
+ { for(int i=0; i<size(); i++) elt[i]/=s; return *this; }
+
+////////////////////////////////////////////////////////////////////////
+//
+// Operator definitions
+//
+
+inline SymMat2 operator+(SymMat2 n, const SymMat2& m) { n += m; return n; }
+inline SymMat2 operator-(SymMat2 n, const SymMat2& m) { n -= m; return n; }
+
+inline SymMat2 operator*(double s, SymMat2 m) { m*=s; return m; }
+inline SymMat2 operator*(SymMat2 m, double s) { m*=s; return m; }
+inline SymMat2 operator/(SymMat2 m, double s) { m/=s; return m; }
+
+inline Vec2 operator*(const SymMat2& m, const Vec2& v)
+ { return Vec2(m.row(0)*v, m.row(1)*v); }
+
+extern SymMat2 operator*(const SymMat2& n, const SymMat2& m);
+
+extern std::ostream &operator<<(std::ostream &out, const SymMat2& M);
+
+
+////////////////////////////////////////////////////////////////////////
+//
+// Misc. function definitions
+//
+
+inline double det(const SymMat2& m) { return m(0,0)*m(1,1) - 2*m(0,1); }
+
+inline double trace(const SymMat2& m) { return m(0,0) + m(1,1); }
+
+inline SymMat2 transpose(const SymMat2& m) { return m; }
+
+extern double invert(Mat2& m_inv, const SymMat2& m);
+
+extern bool eigen(const SymMat2& m, Vec2& eig_vals, Vec2 eig_vecs[2]);
+
+} // namespace gfx
+
+// GFXSYMMAT2_INCLUDED
+#endif
diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/symmat3.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/symmat3.h
new file mode 100644
index 00000000..ec5e181f
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/symmat3.h
@@ -0,0 +1,136 @@
+#ifndef GFXSYMMAT3_INCLUDED // -*- C++ -*-
+#define GFXSYMMAT3_INCLUDED
+#if !defined(__GNUC__)
+# pragma once
+#endif
+
+/************************************************************************
+
+ Symmetric 3x3 Matrix class
+
+ $Id: symmat3.h 427 2004-09-27 04:45:31Z garland $
+
+ ************************************************************************/
+
+#include "mat3.h"
+
+namespace gfx
+{
+
+class SymMat3
+{
+private:
+ double elt[6];
+
+ inline int index(int i, int j) const
+ {
+ // if n=dim(), and if i<=j:
+ // index = ( n*(n+1)/2 - (n-i)*(n-i+1)/2 ) + (j-i)
+ //
+ if( i<=j ) return 6 - (3-i)*(4-i)/2 + (j-i);
+ else return 6 - (3-j)*(4-j)/2 + (i-j);
+ }
+
+public:
+ // Standard constructors
+ //
+ SymMat3(double s=0.0) { *this = s; }
+ SymMat3(const SymMat3& m) { *this = m; }
+
+ double& operator()(int i, int j) { return elt[index(i,j)]; }
+ double operator()(int i, int j) const { return elt[index(i,j)]; }
+
+ static int size() { return 6; }
+ static int dim() { return 3; }
+ typedef Vec3 vector_type;
+ typedef Mat3 inverse_type;
+ typedef double value_type;
+
+ operator double*() { return elt; }
+ operator const double*() { return elt; }
+ operator const double*() const { return elt; }
+
+ inline Vec3 row(int i) const;
+ inline Vec3 col(int j) const;
+ Mat3 fullmatrix() const;
+
+ inline SymMat3& operator=(const SymMat3& m);
+ inline SymMat3& operator=(double s);
+
+ inline SymMat3& operator+=(const SymMat3& m);
+ inline SymMat3& operator-=(const SymMat3& m);
+ inline SymMat3& operator*=(double s);
+ inline SymMat3& operator/=(double s);
+
+ static SymMat3 I();
+ static SymMat3 outer_product(const Vec3& v);
+};
+
+////////////////////////////////////////////////////////////////////////
+//
+// Methods definitions
+//
+
+inline Vec3 SymMat3::row(int i) const
+ { return Vec3((*this)(i, 0), (*this)(i, 1), (*this)(i, 2)); }
+
+inline Vec3 SymMat3::col(int j) const
+ { return Vec3((*this)(0, j), (*this)(1, j), (*this)(2, j)); }
+
+inline SymMat3& SymMat3::operator=(const SymMat3& m)
+ { for(int i=0; i<size(); i++) elt[i]=m.elt[i]; return *this; }
+
+inline SymMat3& SymMat3::operator=(double s)
+ { for(int i=0; i<size(); i++) elt[i]=s; return *this; }
+
+inline SymMat3& SymMat3::operator+=(const SymMat3& m)
+ { for(int i=0; i<size(); i++) elt[i]+=m.elt[i]; return *this; }
+
+inline SymMat3& SymMat3::operator-=(const SymMat3& m)
+ { for(int i=0; i<size(); i++) elt[i]-=m.elt[i]; return *this; }
+
+inline SymMat3& SymMat3::operator*=(double s)
+ { for(int i=0; i<size(); i++) elt[i]*=s; return *this; }
+
+inline SymMat3& SymMat3::operator/=(double s)
+ { for(int i=0; i<size(); i++) elt[i]/=s; return *this; }
+
+////////////////////////////////////////////////////////////////////////
+//
+// Operator definitions
+//
+
+inline SymMat3 operator+(SymMat3 n, const SymMat3& m) { n += m; return n; }
+inline SymMat3 operator-(SymMat3 n, const SymMat3& m) { n -= m; return n; }
+
+inline SymMat3 operator*(double s, SymMat3 m) { m*=s; return m; }
+inline SymMat3 operator*(SymMat3 m, double s) { m*=s; return m; }
+inline SymMat3 operator/(SymMat3 m, double s) { m/=s; return m; }
+
+inline Vec3 operator*(const SymMat3& m, const Vec3& v)
+ { return Vec3(m.row(0)*v, m.row(1)*v, m.row(2)*v); }
+
+extern SymMat3 operator*(const SymMat3& n, const SymMat3& m);
+
+extern std::ostream &operator<<(std::ostream &out, const SymMat3& M);
+
+
+////////////////////////////////////////////////////////////////////////
+//
+// Misc. function definitions
+//
+
+inline double det(const SymMat3& m) { return m.row(0) * (m.row(1)^m.row(2)); }
+
+inline double trace(const SymMat3& m) { return m(0,0) + m(1,1) + m(2,2); }
+
+inline SymMat3 transpose(const SymMat3& m) { return m; }
+
+extern double invert(Mat3& m_inv, const SymMat3& m);
+
+extern bool eigen(const SymMat3& m, Vec3& eig_vals, Vec3 eig_vecs[3]);
+
+} // namespace gfx
+
+// GFXSYMMAT3_INCLUDED
+#endif
diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/symmat4.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/symmat4.h
new file mode 100644
index 00000000..e33ac14d
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/symmat4.h
@@ -0,0 +1,145 @@
+#ifndef GFXSYMMAT4_INCLUDED // C++
+#define GFXSYMMAT4_INCLUDED
+#if !defined(__GNUC__)
+# pragma once
+#endif
+/************************************************************************
+
+ 4X4 Symmetric Matrix class
+
+ $Id: symmat4.h 441 2005-05-03 18:05:36Z garland $
+
+ ************************************************************************/
+
+#include "mat4.h"
+
+namespace gfx
+{
+
+class SymMat4
+{
+public:
+ double elt[10];
+
+ inline int index(int i, int j) const
+ {
+ // if n=dim(), and if i<=j:
+ // index = ( n*(n+1)/2 - (n-i)*(n-i+1)/2 ) + (j-i)
+ //
+ if (i<=j) return (10 - (4-i)*(5-i)/2 + (j-i));
+ else return (10 - (4-j)*(5-j)/2 + (i-j));
+ }
+
+public:
+ // Standard constructors
+ //
+ SymMat4(double s=0.0) { *this = 0.0; }
+ SymMat4(const SymMat4 &m) {*this=m;}
+
+
+ // Descriptive interface
+ //
+ typedef double value_type;
+ typedef Vec4 vector_type;
+ typedef Mat4 inverse_type;
+ static int dim() { return 4; }
+ static int size() {return 10;}
+
+
+ // Access methods
+ //
+ double& operator()(int i, int j) { return elt[index(i,j)]; }
+ double operator()(int i, int j) const { return elt[index(i,j)]; }
+
+ inline Vec4 row(int i) const;
+ inline Vec4 col(int i) const;
+ Mat4 fullmatrix() const;
+
+ operator double*() { return elt; }
+ operator const double*() { return elt; }
+ operator const double*() const { return elt; }
+
+ // Assignment methods
+ //
+ inline SymMat4& operator=(const SymMat4& m);
+ inline SymMat4& operator=(double s);
+
+ inline SymMat4& operator+=(const SymMat4& m);
+ inline SymMat4& operator-=(const SymMat4& m);
+ inline SymMat4& operator*=(double s);
+ inline SymMat4& operator/=(double s);
+
+ static SymMat4 I();
+ static SymMat4 outer_product(const Vec4& v);
+};
+
+////////////////////////////////////////////////////////////////////////
+//
+// Method definitions
+//
+inline Vec4 SymMat4::row(int i) const
+ { return Vec4((*this)(i,0), (*this)(i,1), (*this)(i,2), (*this)(i,3)); }
+
+inline Vec4 SymMat4::col(int j) const
+ { return Vec4((*this)(0,j), (*this)(1,j), (*this)(2,j), (*this)(3,j)); }
+
+inline SymMat4& SymMat4::operator=(const SymMat4& m)
+ { for(int i=0; i<size(); i++) elt[i] = m.elt[i]; return *this; }
+
+inline SymMat4& SymMat4::operator=(double s)
+ { for(int i=0; i<size(); i++) elt[i] = s; return *this; }
+
+inline SymMat4& SymMat4::operator+=(const SymMat4& m)
+ { for(int i=0; i<size(); i++) elt[i]+=m.elt[i]; return *this; }
+
+inline SymMat4& SymMat4::operator-=(const SymMat4& m)
+ { for(int i=0; i<size(); i++) elt[i]-=m.elt[i]; return *this; }
+
+inline SymMat4& SymMat4::operator*=(double s)
+ { for(int i=0; i<size(); i++) elt[i] *= s; return *this; }
+
+inline SymMat4& SymMat4::operator/=(double s)
+ { for(int i=0; i<size(); i++) elt[i] /= s; return *this; }
+
+////////////////////////////////////////////////////////////////////////
+//
+// Operator definitions
+//
+
+inline SymMat4 operator+(SymMat4 n, const SymMat4& m) { n += m; return n; }
+inline SymMat4 operator-(SymMat4 n, const SymMat4& m) { n -= m; return n; }
+
+inline SymMat4 operator*(double s, SymMat4 m) { m*=s; return m; }
+inline SymMat4 operator*(SymMat4 m, double s) { m*=s; return m; }
+inline SymMat4 operator/(SymMat4 m, double s) { m/=s; return m; }
+
+inline SymMat4 operator-(const SymMat4& m)
+{
+ SymMat4 temp;
+ for(int i=0; i<m.size(); i++) temp.elt[i]= -m.elt[i];
+ return temp;
+}
+
+inline Vec4 operator*(const SymMat4& m, const Vec4& v)
+ { return Vec4(m.row(0)*v, m.row(1)*v, m.row(2)*v, m.row(3)*v); }
+
+extern SymMat4 operator*(const SymMat4& n, const SymMat4& m);
+
+
+////////////////////////////////////////////////////////////////////////
+//
+// Misc. function definitions
+//
+
+inline double trace(const SymMat4& m) { return m(0,0)+m(1,1)+m(2,2)+m(3,3); }
+
+inline SymMat4 transpose(const SymMat4& m) { return m; }
+
+extern double invert(Mat4& m_inv, const SymMat4& m);
+
+extern bool eigen(const SymMat4& m, Vec4& eig_vals, Vec4 eig_vecs[4]);
+
+} // namespace gfx
+
+// GFXSYMMAT4_INCLUDED
+#endif
diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/trackball.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/trackball.h
new file mode 100644
index 00000000..1432ed71
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/trackball.h
@@ -0,0 +1,39 @@
+#ifndef GFXTRACKBALL_INCLUDED // -*- C++ -*-
+#define GFXTRACKBALL_INCLUDED
+#if !defined(__GNUC__)
+# pragma once
+#endif
+
+/************************************************************************
+
+ Virtual trackball rotation control.
+
+ $Id: trackball.h 427 2004-09-27 04:45:31Z garland $
+
+ ************************************************************************/
+
+#include "baseball.h"
+
+namespace gfx
+{
+
+extern void trackball(Quat& q, float p1x, float p1y, float p2x, float p2y);
+
+class Trackball : public Baseball
+{
+public:
+ Quat lastquat;
+
+public:
+ Trackball();
+
+ virtual void update_animation();
+ virtual bool mouse_down(int *where, int which);
+ virtual bool mouse_up(int *where, int which);
+ virtual bool mouse_drag(int *where, int *last, int which);
+};
+
+} // namespace gfx
+
+// GFXTRACKBALL_INCLUDED
+#endif
diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/vec2.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/vec2.h
new file mode 100644
index 00000000..11b7ac7f
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/vec2.h
@@ -0,0 +1,158 @@
+#ifndef GFXVEC2_INCLUDED // -*- C++ -*-
+#define GFXVEC2_INCLUDED
+#if !defined(__GNUC__)
+# pragma once
+#endif
+
+/************************************************************************
+
+ 2D Vector class
+
+ $Id: vec2.h 427 2004-09-27 04:45:31Z garland $
+
+ ************************************************************************/
+
+#include "gfx.h"
+
+namespace gfx
+{
+
+template<class T>
+class TVec2 {
+private:
+ T elt[2];
+
+public:
+ // Standard constructors
+ //
+ TVec2(T s=0) { *this = s; }
+ TVec2(T x, T y) { elt[0]=x; elt[1]=y; }
+
+ // Copy constructors & assignment operators
+ template<class U> TVec2(const TVec2<U>& v) { *this = v; }
+ template<class U> TVec2(const U v[2]) { elt[0]=v[0]; elt[1]=v[1]; }
+ template<class U> TVec2& operator=(const TVec2<U>& v)
+ { elt[0]=v[0]; elt[1]=v[1]; return *this; }
+ TVec2& operator=(T s) { elt[0]=elt[1]=s; return *this; }
+
+
+ // Descriptive interface
+ //
+ typedef T value_type;
+ static int dim() { return 2; }
+
+
+ // Access methods
+ //
+ operator T*() { return elt; }
+ operator const T*() const { return elt; }
+
+#ifndef HAVE_CASTING_LIMITS
+ T& operator[](int i) { return elt[i]; }
+ T operator[](int i) const { return elt[i]; }
+ operator const T*() { return elt; }
+#endif
+
+ // In-place arithmetic methods
+ //
+ inline TVec2& operator+=(const TVec2& v);
+ inline TVec2& operator-=(const TVec2& v);
+ inline TVec2& operator*=(T s);
+ inline TVec2& operator/=(T s);
+};
+
+////////////////////////////////////////////////////////////////////////
+//
+// Method definitions
+//
+template<class T> inline TVec2<T>& TVec2<T>::operator+=(const TVec2<T>& v)
+ { elt[0] += v[0]; elt[1] += v[1]; return *this; }
+
+template<class T> inline TVec2<T>& TVec2<T>::operator-=(const TVec2<T>& v)
+ { elt[0] -= v[0]; elt[1] -= v[1]; return *this; }
+
+template<class T> inline TVec2<T>& TVec2<T>::operator*=(T s)
+ { elt[0] *= s; elt[1] *= s; return *this; }
+
+template<class T> inline TVec2<T>& TVec2<T>::operator/=(T s)
+ { elt[0] /= s; elt[1] /= s; return *this; }
+
+////////////////////////////////////////////////////////////////////////
+//
+// Operator defintions
+//
+
+template<class T>
+inline TVec2<T> operator+(const TVec2<T> &u, const TVec2<T> &v)
+ { return TVec2<T>(u[0]+v[0], u[1]+v[1]); }
+
+template<class T>
+inline TVec2<T> operator-(const TVec2<T> &u, const TVec2<T> &v)
+ { return TVec2<T>(u[0]-v[0], u[1]-v[1]); }
+
+template<class T> inline TVec2<T> operator-(const TVec2<T> &v)
+ { return TVec2<T>(-v[0], -v[1]); }
+
+#if _MSC_VER>=1200
+// Normally, we use the <class T, class N> construct below to allow the scalar
+// argument to be different than the template type. This, for example, allows
+// the user to write things like v/2. Unfortunately, Microsoft VC6.0 (aka
+// v1200) gets confused by this. We used to include explicit versions for the
+// case of int's, but this was causing silent (and incorrect) coercion of
+// floats to ints.
+//
+
+ template<class T> inline TVec2<T> operator*(T s, const TVec2<T> &v)
+ { return TVec2<T>(v[0]*s, v[1]*s); }
+ template<class T> inline TVec2<T> operator*(const TVec2<T> &v, T s)
+ { return s*v; }
+
+ template<class T> inline TVec2<T> operator/(const TVec2<T> &v, T s)
+ { return TVec2<T>(v[0]/s, v[1]/s); }
+
+#else
+ template<class T, class N> inline TVec2<T> operator*(N s, const TVec2<T> &v)
+ { return TVec2<T>(v[0]*s, v[1]*s); }
+ template<class T, class N> inline TVec2<T> operator*(const TVec2<T> &v, N s)
+ { return s*v; }
+
+ template<class T, class N> inline TVec2<T> operator/(const TVec2<T> &v, N s)
+ { return TVec2<T>(v[0]/s, v[1]/s); }
+#endif
+
+template<class T> inline T operator*(const TVec2<T> &u, const TVec2<T>& v)
+ { return u[0]*v[0] + u[1]*v[1]; }
+
+template<class T> inline TVec2<T> perp(const TVec2<T> &v)
+ { return TVec2<T>(v[1], -v[0]); }
+
+template<class T>
+inline std::ostream &operator<<(std::ostream &out, const TVec2<T> &v)
+ { return out << v[0] << " " << v[1]; }
+
+template<class T>
+inline std::istream &operator>>(std::istream &in, TVec2<T>& v)
+ { return in >> v[0] >> v[1]; }
+
+
+////////////////////////////////////////////////////////////////////////
+//
+// Misc. function definitions
+//
+
+template<class T> inline T norm2(const TVec2<T>& v) { return v*v; }
+template<class T> inline T norm(const TVec2<T>& v) { return sqrt(norm2(v)); }
+
+template<class T> inline void unitize(TVec2<T>& v)
+{
+ T l = norm2(v);
+ if( l!=1.0 && l!=0.0 ) v /= sqrt(l);
+}
+
+typedef TVec2<double> Vec2;
+typedef TVec2<float> Vec2f;
+
+} // namespace gfx
+
+// GFXVEC2_INCLUDED
+#endif
diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/vec3.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/vec3.h
new file mode 100644
index 00000000..22d37394
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/vec3.h
@@ -0,0 +1,184 @@
+#ifndef GFXVEC3_INCLUDED // -*- C++ -*-
+#define GFXVEC3_INCLUDED
+#if !defined(__GNUC__)
+# pragma once
+#endif
+
+/************************************************************************
+
+ 3D Vector class
+
+ $Id: vec3.h 427 2004-09-27 04:45:31Z garland $
+
+ ************************************************************************/
+
+#include "vec2.h"
+
+namespace gfx
+{
+
+template<class T>
+class TVec3 {
+private:
+ T elt[3];
+
+public:
+ // Standard constructors
+ //
+ TVec3(T s=0) { *this = s; }
+ TVec3(T x, T y, T z) { elt[0]=x; elt[1]=y; elt[2]=z; }
+
+ // Copy constructors & assignment operators
+ template<class U> TVec3(const TVec3<U>& v) { *this = v; }
+#ifndef STDMIX_INCLUDED
+ // This is now a standard constructor, except when compiling legacy MixKit
+ // code.
+ template<class U> TVec3(const U v[3])
+ { elt[0]=v[0]; elt[1]=v[1]; elt[2]=v[2]; }
+#else
+ // For MixKit code, we need these constructors instead.
+ // They SHOULD NOT be used in new code.
+ TVec3(const float *v) { elt[0]=v[0]; elt[1]=v[1]; elt[2]=v[2]; }
+ TVec3(const double *v) { elt[0]=v[0]; elt[1]=v[1]; elt[2]=v[2]; }
+#endif
+ template<class U> TVec3& operator=(const TVec3<U>& v)
+ { elt[0]=v[0]; elt[1]=v[1]; elt[2]=v[2]; return *this; }
+ TVec3& operator=(T s) { elt[0]=elt[1]=elt[2]=s; return *this; }
+
+ // Descriptive interface
+ //
+ typedef T value_type;
+ static int dim() { return 3; }
+
+
+ // Access methods
+ //
+ operator T*() { return elt; }
+ operator const T*() const { return elt; }
+
+#ifndef HAVE_CASTING_LIMITS
+ T& operator[](int i) { return elt[i]; }
+ T operator[](int i) const { return elt[i]; }
+ operator const T*() { return elt; }
+#endif
+
+
+ // Assignment and in-place arithmetic methods
+ //
+ inline TVec3& operator+=(const TVec3& v);
+ inline TVec3& operator-=(const TVec3& v);
+ inline TVec3& operator*=(T s);
+ inline TVec3& operator/=(T s);
+};
+
+////////////////////////////////////////////////////////////////////////
+//
+// Method definitions
+//
+
+template<class T> inline TVec3<T>& TVec3<T>::operator+=(const TVec3<T>& v)
+ { elt[0] += v[0]; elt[1] += v[1]; elt[2] += v[2]; return *this; }
+
+template<class T> inline TVec3<T>& TVec3<T>::operator-=(const TVec3<T>& v)
+ { elt[0] -= v[0]; elt[1] -= v[1]; elt[2] -= v[2]; return *this; }
+
+template<class T> inline TVec3<T>& TVec3<T>::operator*=(T s)
+ { elt[0] *= s; elt[1] *= s; elt[2] *= s; return *this; }
+
+template<class T> inline TVec3<T>& TVec3<T>::operator/=(T s)
+ { elt[0] /= s; elt[1] /= s; elt[2] /= s; return *this; }
+
+
+////////////////////////////////////////////////////////////////////////
+//
+// Operator definitions
+//
+
+template<class T>
+inline TVec3<T> operator+(const TVec3<T> &u, const TVec3<T>& v)
+ { return TVec3<T>(u[0]+v[0], u[1]+v[1], u[2]+v[2]); }
+
+template<class T>
+inline TVec3<T> operator-(const TVec3<T> &u, const TVec3<T>& v)
+ { return TVec3<T>(u[0]-v[0], u[1]-v[1], u[2]-v[2]); }
+
+template<class T> inline TVec3<T> operator-(const TVec3<T> &v)
+ { return TVec3<T>(-v[0], -v[1], -v[2]); }
+
+#if _MSC_VER>=1200
+// Normally, we use the <class T, class N> construct below to allow the scalar
+// argument to be different than the template type. This, for example, allows
+// the user to write things like v/2. Unfortunately, Microsoft VC6.0 (aka
+// v1200) gets confused by this. We used to include explicit versions for the
+// case of int's, but this was causing silent (and incorrect) coercion of
+// floats to ints.
+//
+ template<class T> inline TVec3<T> operator*(T s, const TVec3<T> &v)
+ { return TVec3<T>(v[0]*s, v[1]*s, v[2]*s); }
+ template<class T> inline TVec3<T> operator*(const TVec3<T> &v, T s)
+ { return s*v; }
+
+ template<class T> inline TVec3<T> operator/(const TVec3<T> &v, T s)
+ { return TVec3<T>(v[0]/s, v[1]/s, v[2]/s); }
+#else
+ template<class T, class N> inline TVec3<T> operator*(N s, const TVec3<T> &v)
+ { return TVec3<T>(v[0]*s, v[1]*s, v[2]*s); }
+ template<class T, class N> inline TVec3<T> operator*(const TVec3<T> &v, N s)
+ { return s*v; }
+
+ template<class T, class N> inline TVec3<T> operator/(const TVec3<T> &v, N s)
+ { return TVec3<T>(v[0]/s, v[1]/s, v[2]/s); }
+#endif
+
+template<class T> inline T operator*(const TVec3<T> &u, const TVec3<T>& v)
+ { return u[0]*v[0] + u[1]*v[1] + u[2]*v[2]; }
+
+template<class T> inline TVec3<T> cross(const TVec3<T>& u, const TVec3<T>& v)
+{
+ return TVec3<T>( u[1]*v[2] - v[1]*u[2],
+ -u[0]*v[2] + v[0]*u[2],
+ u[0]*v[1] - v[0]*u[1] );
+}
+
+template<class T>
+inline TVec3<T> operator^(const TVec3<T>& u, const TVec3<T>& v)
+ { return cross(u, v); }
+
+
+template<class T>
+inline std::ostream &operator<<(std::ostream &out, const TVec3<T>& v)
+ { return out << v[0] << " " << v[1] << " " << v[2]; }
+
+template<class T>
+inline std::istream &operator>>(std::istream &in, TVec3<T>& v)
+ { return in >> v[0] >> v[1] >> v[2]; }
+
+////////////////////////////////////////////////////////////////////////
+//
+// Misc. function definitions
+//
+
+template<class T> inline T norm2(const TVec3<T>& v) { return v*v; }
+template<class T> inline T norm(const TVec3<T>& v) { return sqrt(norm2(v)); }
+
+template<class T> inline void unitize(TVec3<T>& v)
+{
+ T l = norm2(v);
+ if( l!=1.0 && l!=0.0 ) v /= sqrt(l);
+}
+
+template<class T> inline TVec2<T> proj(const TVec3<T>& v)
+{
+ TVec2<T> u(v[0], v[1]);
+ if( v[2]!=1.0 && v[2]!=0.0 )
+ u /= v[2];
+ return u;
+}
+
+typedef TVec3<double> Vec3;
+typedef TVec3<float> Vec3f;
+
+} // namespace gfx
+
+// GFXVEC3_INCLUDED
+#endif
diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/vec4.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/vec4.h
new file mode 100644
index 00000000..8875074e
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/vec4.h
@@ -0,0 +1,183 @@
+#ifndef GFXVEC4_INCLUDED // -*- C++ -*-
+#define GFXVEC4_INCLUDED
+#if !defined(__GNUC__)
+# pragma once
+#endif
+
+/************************************************************************
+
+ 4D Vector class
+
+ $Id: vec4.h 427 2004-09-27 04:45:31Z garland $
+
+ ************************************************************************/
+
+#include "vec3.h"
+
+namespace gfx
+{
+
+template<class T>
+class TVec4 {
+private:
+ T elt[4];
+
+public:
+ // Standard constructors
+ //
+ TVec4(T s=0) { *this = s; }
+ TVec4(T x, T y, T z, T w) { elt[0]=x; elt[1]=y; elt[2]=z; elt[3]=w; }
+
+ // Copy constructors & assignment operators
+ template<class U> TVec4(const TVec4<U>& v) { *this = v; }
+ template<class U> TVec4(const TVec3<U>& v,T w)
+ { elt[0]=v[0]; elt[1]=v[1]; elt[2]=v[2]; elt[3]=w; }
+ template<class U> TVec4(const U v[4])
+ { elt[0]=v[0]; elt[1]=v[1]; elt[2]=v[2]; elt[3]=v[3]; }
+ template<class U> TVec4& operator=(const TVec4<U>& v)
+ { elt[0]=v[0]; elt[1]=v[1]; elt[2]=v[2]; elt[3]=v[3]; return *this; }
+ TVec4& operator=(T s) { elt[0]=elt[1]=elt[2]=elt[3]=s; return *this; }
+
+
+ // Descriptive interface
+ //
+ typedef T value_type;
+ static int dim() { return 4; }
+
+
+ // Access methods
+ //
+ operator T*() { return elt; }
+ operator const T*() const { return elt; }
+
+#ifndef HAVE_CASTING_LIMITS
+ T& operator[](int i) { return elt[i]; }
+ T operator[](int i) const { return elt[i]; }
+ operator const T*() { return elt; }
+#endif
+
+ // Assignment and in-place arithmetic methods
+ //
+ inline TVec4& operator+=(const TVec4& v);
+ inline TVec4& operator-=(const TVec4& v);
+ inline TVec4& operator*=(T s);
+ inline TVec4& operator/=(T s);
+};
+
+////////////////////////////////////////////////////////////////////////
+//
+// Method definitions
+//
+
+template<class T> inline TVec4<T>& TVec4<T>::operator+=(const TVec4<T>& v)
+ { elt[0]+=v[0]; elt[1]+=v[1]; elt[2]+=v[2]; elt[3]+=v[3]; return *this;}
+
+template<class T> inline TVec4<T>& TVec4<T>::operator-=(const TVec4<T>& v)
+ { elt[0]-=v[0]; elt[1]-=v[1]; elt[2]-=v[2]; elt[3]-=v[3]; return *this;}
+
+template<class T> inline TVec4<T>& TVec4<T>::operator*=(T s)
+ { elt[0] *= s; elt[1] *= s; elt[2] *= s; elt[3] *= s; return *this; }
+
+template<class T> inline TVec4<T>& TVec4<T>::operator/=(T s)
+ { elt[0] /= s; elt[1] /= s; elt[2] /= s; elt[3] /= s; return *this; }
+
+
+////////////////////////////////////////////////////////////////////////
+//
+// Operator definitions
+//
+
+template<class T>
+inline TVec4<T> operator+(const TVec4<T> &u, const TVec4<T> &v)
+ { return TVec4<T>(u[0]+v[0], u[1]+v[1], u[2]+v[2], u[3]+v[3]); }
+
+template<class T>
+inline TVec4<T> operator-(const TVec4<T> &u, const TVec4<T>& v)
+ { return TVec4<T>(u[0]-v[0], u[1]-v[1], u[2]-v[2], u[3]-v[3]); }
+
+template<class T> inline TVec4<T> operator-(const TVec4<T> &u)
+ { return TVec4<T>(-u[0], -u[1], -u[2], -u[3]); }
+
+#if _MSC_VER>=1200
+// Normally, we use the <class T, class N> construct below to allow the scalar
+// argument to be different than the template type. This, for example, allows
+// the user to write things like v/2. Unfortunately, Microsoft VC6.0 (aka
+// v1200) gets confused by this. We used to include explicit versions for the
+// case of int's, but this was causing silent (and incorrect) coercion of
+// floats to ints.
+//
+ template<class T> inline TVec4<T> operator*(T s, const TVec4<T> &v)
+ { return TVec4<T>(v[0]*s, v[1]*s, v[2]*s, v[3]*s); }
+ template<class T> inline TVec4<T> operator*(const TVec4<T> &v, T s)
+ { return s*v; }
+
+ template<class T> inline TVec4<T> operator/(const TVec4<T> &v, T s)
+ { return TVec4<T>(v[0]/s, v[1]/s, v[2]/s, v[3]/s); }
+#else
+ template<class T, class N> inline TVec4<T> operator*(N s, const TVec4<T> &v)
+ { return TVec4<T>(v[0]*s, v[1]*s, v[2]*s, v[3]*s); }
+ template<class T, class N> inline TVec4<T> operator*(const TVec4<T> &v, N s)
+ { return s*v; }
+
+ template<class T, class N> inline TVec4<T> operator/(const TVec4<T> &v, N s)
+ { return TVec4<T>(v[0]/s, v[1]/s, v[2]/s, v[3]/s); }
+#endif
+
+template<class T> inline T operator*(const TVec4<T> &u, const TVec4<T> &v)
+ { return u[0]*v[0] + u[1]*v[1] + u[2]*v[2] + u[3]*v[3]; }
+
+template<class T>
+inline std::ostream &operator<<(std::ostream &out, const TVec4<T>& v)
+ { return out <<v[0] <<" " <<v[1] <<" " <<v[2] <<" " <<v[3]; }
+
+template<class T>
+inline std::istream &operator>>(std::istream &in, TVec4<T>& v)
+ { return in >> v[0] >> v[1] >> v[2] >> v[3]; }
+
+////////////////////////////////////////////////////////////////////////
+//
+// Misc. function definitions
+//
+
+template<class T>
+inline TVec4<T> cross(const TVec4<T>& a, const TVec4<T>& b, const TVec4<T>& c)
+{
+ // Code adapted from VecLib4d.c in Graphics Gems V
+
+ T d1 = (b[2] * c[3]) - (b[3] * c[2]);
+ T d2 = (b[1] * c[3]) - (b[3] * c[1]);
+ T d3 = (b[1] * c[2]) - (b[2] * c[1]);
+ T d4 = (b[0] * c[3]) - (b[3] * c[0]);
+ T d5 = (b[0] * c[2]) - (b[2] * c[0]);
+ T d6 = (b[0] * c[1]) - (b[1] * c[0]);
+
+ return TVec4<T>(- a[1] * d1 + a[2] * d2 - a[3] * d3,
+ a[0] * d1 - a[2] * d4 + a[3] * d5,
+ - a[0] * d2 + a[1] * d4 - a[3] * d6,
+ a[0] * d3 - a[1] * d5 + a[2] * d6);
+}
+
+template<class T> inline T norm2(const TVec4<T>& v) { return v*v; }
+template<class T> inline T norm(const TVec4<T>& v) { return sqrt(norm2(v)); }
+
+template<class T> inline void unitize(TVec4<T>& v)
+{
+ T l = norm2(v);
+ if( l!=1.0 && l!=0.0 ) v /= sqrt(l);
+}
+
+template<class T> inline TVec3<T> proj(const TVec4<T>& v)
+{
+ TVec3<T> u(v[0], v[1], v[2]);
+ if( v[3]!=1.0 && v[3]!=0.0 )
+ u /= v[3];
+ return u;
+}
+
+typedef TVec4<double> Vec4;
+typedef TVec4<float> Vec4f;
+
+} // namespace gfx
+
+// GFXVEC4_INCLUDED
+#endif
diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/win/gui-mfc.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/win/gui-mfc.h
new file mode 100644
index 00000000..134916bd
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/win/gui-mfc.h
@@ -0,0 +1,120 @@
+#ifndef GFXGUIMFC_INCLUDED // -*- C++ -*-
+#define GFXGUIMFC_INCLUDED
+#if !defined(__GNUC__)
+# pragma once
+#endif
+
+/************************************************************************
+
+ Minimalist GUI framework built using MFC.
+
+ This package mimics the baseline GUI framework originally implemented
+ on top of FLTK in <gui.h>. It remains incomplete, and does not
+ support all the features provided by the FLTK-based version.
+
+ At this point, the two GUI implementations are close to
+ source-compatible, but not quite. The main difference is in the
+ startup issues -- main() vs. InitInstance().
+
+ $Id: gui-mfc.h 427 2004-09-27 04:45:31Z garland $
+
+ ************************************************************************/
+
+#include "mfc.h"
+#include "../gl.h"
+
+namespace gfx
+{
+
+
+class Canvas : public CFrameWnd
+{
+private:
+ int last_click[2];
+
+public:
+ Canvas();
+
+ CStatusBar *status_line;
+
+private:
+ int pixfmt;
+ HGLRC glcontext;
+
+protected:
+ inline void make_current(HDC dc) { wglMakeCurrent(dc, glcontext); }
+ inline void finish(HDC dc) { SwapBuffers(dc); }
+
+ void immediate_redraw();
+
+ int decode_mouse_button(UINT flags, int which=0);
+ void do_mouse_down(int which, UINT flags, CPoint where);
+ void do_mouse_up(int which, UINT flags, CPoint where);
+ void do_mouse_move(UINT flags, CPoint where);
+
+public:
+ void post_redraw();
+
+protected:
+ //
+ // Override selected MFC virtual functions
+ //
+ BOOL PreCreateWindow(CREATESTRUCT &cs);
+
+protected:
+ //
+ // Define MFC event handlers
+ //
+ afx_msg int OnCreate(LPCREATESTRUCT lpcs);
+ afx_msg void OnDestroy();
+ afx_msg void OnSize(UINT type, int width, int height);
+
+ afx_msg void OnActivate(UINT state, CWnd *other, BOOL is_minimized);
+ afx_msg void OnPaint();
+ afx_msg BOOL OnEraseBkgnd(CDC *dc);
+
+ afx_msg void OnLButtonDown(UINT flags, CPoint point);
+ afx_msg void OnLButtonUp(UINT flags, CPoint point);
+ afx_msg void OnRButtonDown(UINT flags, CPoint point);
+ afx_msg void OnRButtonUp(UINT flags, CPoint point);
+ afx_msg void OnMButtonDown(UINT flags, CPoint point);
+ afx_msg void OnMButtonUp(UINT flags, CPoint point);
+ afx_msg void OnMouseMove(UINT flags, CPoint point);
+ afx_msg void OnChar(UINT ch, UINT repcount, UINT flags);
+
+ DECLARE_MESSAGE_MAP()
+};
+
+
+class MfcGUI : public CWinApp
+{
+private:
+ UINT timer_id;
+
+public:
+ MfcGUI();
+
+ virtual BOOL InitInstance();
+
+ Canvas *canvas;
+ float default_fps, target_fps;
+
+ void status(const char *format, ...);
+
+ void animate(bool will=true);
+
+public:
+
+ virtual void update_animation();
+ virtual void setup_for_drawing();
+ virtual void draw_contents();
+ virtual bool mouse_down(int *where, int which);
+ virtual bool mouse_up(int *where, int which);
+ virtual bool mouse_drag(int *where, int *last, int which);
+ virtual bool key_press(int key);
+};
+
+} // namespace gfx
+
+// GFXGUIMFC_INCLUDED
+#endif
diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/win/mfc.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/win/mfc.h
new file mode 100644
index 00000000..9feb045f
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/win/mfc.h
@@ -0,0 +1,30 @@
+#ifndef GFXMFC_INCLUDED // -*- C++ -*-
+#define GFXMFC_INCLUDED
+#if !defined(__GNUC__)
+# pragma once
+#endif
+
+/************************************************************************
+
+ Support code for using MFC. At the moment, this just makes sure that
+ we include the right headers.
+
+ $Id: mfc.h 425 2004-09-27 03:40:06Z garland $
+
+ ************************************************************************/
+
+#ifndef _MBCS
+#define _MBCS
+#endif
+
+#ifndef _AFXDLL
+#define _AFXDLL
+#endif
+
+#include <afxwin.h>
+#include <afxext.h>
+
+#include "wintools.h"
+
+// GFXMFC_INCLUDED
+#endif
diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/win/wintools.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/win/wintools.h
new file mode 100644
index 00000000..2fd683ed
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/win/wintools.h
@@ -0,0 +1,26 @@
+#ifndef GFXWINTOOLS_INCLUDED // -*- C++ -*-
+#define GFXWINTOOLS_INCLUDED
+#if !defined(__GNUC__)
+# pragma once
+#endif
+
+/************************************************************************
+
+ Support code for handling various tasks under Win32
+
+ $Id: wintools.h 427 2004-09-27 04:45:31Z garland $
+
+ ************************************************************************/
+
+#include <windows.h>
+
+namespace gfx
+{
+
+extern HGLRC create_glcontext(HDC dc);
+extern int set_pixel_format(HDC dc);
+
+} // namespace gfx
+
+// GFXWINTOOLS_INCLUDED
+#endif
diff --git a/debian/fireflies/fireflies-2.08/libgfx/macos/libgfx.xcodeproj/project.pbxproj b/debian/fireflies/fireflies-2.08/libgfx/macos/libgfx.xcodeproj/project.pbxproj
new file mode 100644
index 00000000..f5dd6d5d
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/macos/libgfx.xcodeproj/project.pbxproj
@@ -0,0 +1,799 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 42;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 1D5D8DBB08B3A109009C84F9 /* t-gui.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5D8DBA08B3A109009C84F9 /* t-gui.cxx */; };
+ 1D5D8DD508B3A20A009C84F9 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D5D8DC208B3A20A009C84F9 /* OpenGL.framework */; };
+ 1D5D8E5808B3A251009C84F9 /* libgfx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D2AAC046055464E500DB518D /* libgfx.a */; };
+ 1D5D8E6608B3A6CF009C84F9 /* AGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D5D8E5908B3A6CF009C84F9 /* AGL.framework */; };
+ 1D5D8E8F08B3A831009C84F9 /* libgfx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D2AAC046055464E500DB518D /* libgfx.a */; };
+ 1D5D8E9708B3A849009C84F9 /* t-vec.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5D8E9608B3A849009C84F9 /* t-vec.cxx */; };
+ 1D5F0B9708B399390048C9A2 /* trackball.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B8108B399390048C9A2 /* trackball.cxx */; };
+ 1D5F0B9808B399390048C9A2 /* time.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B8208B399390048C9A2 /* time.cxx */; };
+ 1D5F0B9908B399390048C9A2 /* symmat4.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B8308B399390048C9A2 /* symmat4.cxx */; };
+ 1D5F0B9A08B399390048C9A2 /* symmat3.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B8408B399390048C9A2 /* symmat3.cxx */; };
+ 1D5F0B9B08B399390048C9A2 /* symmat2.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B8508B399390048C9A2 /* symmat2.cxx */; };
+ 1D5F0B9C08B399390048C9A2 /* script.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B8608B399390048C9A2 /* script.cxx */; };
+ 1D5F0B9D08B399390048C9A2 /* raster.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B8708B399390048C9A2 /* raster.cxx */; };
+ 1D5F0B9E08B399390048C9A2 /* raster-tiff.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B8808B399390048C9A2 /* raster-tiff.cxx */; };
+ 1D5F0B9F08B399390048C9A2 /* raster-pnm.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B8908B399390048C9A2 /* raster-pnm.cxx */; };
+ 1D5F0BA008B399390048C9A2 /* raster-png.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B8A08B399390048C9A2 /* raster-png.cxx */; };
+ 1D5F0BA108B399390048C9A2 /* raster-jpeg.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B8B08B399390048C9A2 /* raster-jpeg.cxx */; };
+ 1D5F0BA208B399390048C9A2 /* quat.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B8C08B399390048C9A2 /* quat.cxx */; };
+ 1D5F0BA308B399390048C9A2 /* mat4.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B8D08B399390048C9A2 /* mat4.cxx */; };
+ 1D5F0BA408B399390048C9A2 /* mat3.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B8E08B399390048C9A2 /* mat3.cxx */; };
+ 1D5F0BA508B399390048C9A2 /* mat2.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B8F08B399390048C9A2 /* mat2.cxx */; };
+ 1D5F0BA608B399390048C9A2 /* gui.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B9008B399390048C9A2 /* gui.cxx */; };
+ 1D5F0BA708B399390048C9A2 /* gltools.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B9108B399390048C9A2 /* gltools.cxx */; };
+ 1D5F0BA808B399390048C9A2 /* geom4d.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B9208B399390048C9A2 /* geom4d.cxx */; };
+ 1D5F0BA908B399390048C9A2 /* geom3d.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B9308B399390048C9A2 /* geom3d.cxx */; };
+ 1D5F0BAA08B399390048C9A2 /* color.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B9408B399390048C9A2 /* color.cxx */; };
+ 1D5F0BAB08B399390048C9A2 /* baseball.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B9508B399390048C9A2 /* baseball.cxx */; };
+ 1D5F0BAC08B399390048C9A2 /* arcball.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B9608B399390048C9A2 /* arcball.cxx */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXBuildStyle section */
+ 014CEA520018CE5811CA2923 /* Debug */ = {
+ isa = PBXBuildStyle;
+ buildSettings = {
+ COPY_PHASE_STRIP = NO;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_ENABLE_FIX_AND_CONTINUE = YES;
+ GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ ZERO_LINK = YES;
+ };
+ name = Debug;
+ };
+ 014CEA530018CE5811CA2923 /* Release */ = {
+ isa = PBXBuildStyle;
+ buildSettings = {
+ COPY_PHASE_STRIP = YES;
+ GCC_ENABLE_FIX_AND_CONTINUE = NO;
+ ZERO_LINK = NO;
+ };
+ name = Release;
+ };
+/* End PBXBuildStyle section */
+
+/* Begin PBXContainerItemProxy section */
+ 1D5D8DB408B3A0D9009C84F9 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = D2AAC045055464E500DB518D /* libgfx */;
+ remoteInfo = libgfx;
+ };
+ 1D5D8E8B08B3A81A009C84F9 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = D2AAC045055464E500DB518D /* libgfx */;
+ remoteInfo = libgfx;
+ };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXFileReference section */
+ 1D5D8DAD08B3A0CF009C84F9 /* t-gui.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "t-gui.app"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 1D5D8DAF08B3A0CF009C84F9 /* t-gui-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "t-gui-Info.plist"; sourceTree = "<group>"; };
+ 1D5D8DBA08B3A109009C84F9 /* t-gui.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = "t-gui.cxx"; path = "../tests/t-gui.cxx"; sourceTree = SOURCE_ROOT; };
+ 1D5D8DC208B3A20A009C84F9 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = "<absolute>"; };
+ 1D5D8E5908B3A6CF009C84F9 /* AGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AGL.framework; path = /System/Library/Frameworks/AGL.framework; sourceTree = "<absolute>"; };
+ 1D5D8E8908B3A813009C84F9 /* t-vec */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "t-vec"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 1D5D8E9608B3A849009C84F9 /* t-vec.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = "t-vec.cxx"; path = "../tests/t-vec.cxx"; sourceTree = SOURCE_ROOT; };
+ 1D5F0B8108B399390048C9A2 /* trackball.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = trackball.cxx; path = ../src/trackball.cxx; sourceTree = SOURCE_ROOT; };
+ 1D5F0B8208B399390048C9A2 /* time.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = time.cxx; path = ../src/time.cxx; sourceTree = SOURCE_ROOT; };
+ 1D5F0B8308B399390048C9A2 /* symmat4.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = symmat4.cxx; path = ../src/symmat4.cxx; sourceTree = SOURCE_ROOT; };
+ 1D5F0B8408B399390048C9A2 /* symmat3.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = symmat3.cxx; path = ../src/symmat3.cxx; sourceTree = SOURCE_ROOT; };
+ 1D5F0B8508B399390048C9A2 /* symmat2.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = symmat2.cxx; path = ../src/symmat2.cxx; sourceTree = SOURCE_ROOT; };
+ 1D5F0B8608B399390048C9A2 /* script.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = script.cxx; path = ../src/script.cxx; sourceTree = SOURCE_ROOT; };
+ 1D5F0B8708B399390048C9A2 /* raster.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = raster.cxx; path = ../src/raster.cxx; sourceTree = SOURCE_ROOT; };
+ 1D5F0B8808B399390048C9A2 /* raster-tiff.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = "raster-tiff.cxx"; path = "../src/raster-tiff.cxx"; sourceTree = SOURCE_ROOT; };
+ 1D5F0B8908B399390048C9A2 /* raster-pnm.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = "raster-pnm.cxx"; path = "../src/raster-pnm.cxx"; sourceTree = SOURCE_ROOT; };
+ 1D5F0B8A08B399390048C9A2 /* raster-png.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = "raster-png.cxx"; path = "../src/raster-png.cxx"; sourceTree = SOURCE_ROOT; };
+ 1D5F0B8B08B399390048C9A2 /* raster-jpeg.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = "raster-jpeg.cxx"; path = "../src/raster-jpeg.cxx"; sourceTree = SOURCE_ROOT; };
+ 1D5F0B8C08B399390048C9A2 /* quat.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = quat.cxx; path = ../src/quat.cxx; sourceTree = SOURCE_ROOT; };
+ 1D5F0B8D08B399390048C9A2 /* mat4.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = mat4.cxx; path = ../src/mat4.cxx; sourceTree = SOURCE_ROOT; };
+ 1D5F0B8E08B399390048C9A2 /* mat3.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = mat3.cxx; path = ../src/mat3.cxx; sourceTree = SOURCE_ROOT; };
+ 1D5F0B8F08B399390048C9A2 /* mat2.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = mat2.cxx; path = ../src/mat2.cxx; sourceTree = SOURCE_ROOT; };
+ 1D5F0B9008B399390048C9A2 /* gui.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = gui.cxx; path = ../src/gui.cxx; sourceTree = SOURCE_ROOT; };
+ 1D5F0B9108B399390048C9A2 /* gltools.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = gltools.cxx; path = ../src/gltools.cxx; sourceTree = SOURCE_ROOT; };
+ 1D5F0B9208B399390048C9A2 /* geom4d.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = geom4d.cxx; path = ../src/geom4d.cxx; sourceTree = SOURCE_ROOT; };
+ 1D5F0B9308B399390048C9A2 /* geom3d.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = geom3d.cxx; path = ../src/geom3d.cxx; sourceTree = SOURCE_ROOT; };
+ 1D5F0B9408B399390048C9A2 /* color.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = color.cxx; path = ../src/color.cxx; sourceTree = SOURCE_ROOT; };
+ 1D5F0B9508B399390048C9A2 /* baseball.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = baseball.cxx; path = ../src/baseball.cxx; sourceTree = SOURCE_ROOT; };
+ 1D5F0B9608B399390048C9A2 /* arcball.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = arcball.cxx; path = ../src/arcball.cxx; sourceTree = SOURCE_ROOT; };
+ 1D5F0BBE08B39AD90048C9A2 /* vec4.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = vec4.html; path = ../doc/vec4.html; sourceTree = SOURCE_ROOT; };
+ 1D5F0BBF08B39AD90048C9A2 /* vec3.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = vec3.html; path = ../doc/vec3.html; sourceTree = SOURCE_ROOT; };
+ 1D5F0BC008B39AD90048C9A2 /* vec2.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = vec2.html; path = ../doc/vec2.html; sourceTree = SOURCE_ROOT; };
+ 1D5F0BC108B39AD90048C9A2 /* vec.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = vec.html; path = ../doc/vec.html; sourceTree = SOURCE_ROOT; };
+ 1D5F0BC208B39AD90048C9A2 /* start.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = start.html; path = ../doc/start.html; sourceTree = SOURCE_ROOT; };
+ 1D5F0BC308B39AD90048C9A2 /* script.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = script.html; path = ../doc/script.html; sourceTree = SOURCE_ROOT; };
+ 1D5F0BC408B39AD90048C9A2 /* rotate.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = rotate.html; path = ../doc/rotate.html; sourceTree = SOURCE_ROOT; };
+ 1D5F0BC508B39AD90048C9A2 /* raster.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = raster.html; path = ../doc/raster.html; sourceTree = SOURCE_ROOT; };
+ 1D5F0BC608B39AD90048C9A2 /* quat.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = quat.html; path = ../doc/quat.html; sourceTree = SOURCE_ROOT; };
+ 1D5F0BC708B39AD90048C9A2 /* mat4.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = mat4.html; path = ../doc/mat4.html; sourceTree = SOURCE_ROOT; };
+ 1D5F0BC808B39AD90048C9A2 /* mat3.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = mat3.html; path = ../doc/mat3.html; sourceTree = SOURCE_ROOT; };
+ 1D5F0BC908B39AD90048C9A2 /* mat2.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = mat2.html; path = ../doc/mat2.html; sourceTree = SOURCE_ROOT; };
+ 1D5F0BCA08B39AD90048C9A2 /* mat.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = mat.html; path = ../doc/mat.html; sourceTree = SOURCE_ROOT; };
+ 1D5F0BCB08B39AD90048C9A2 /* license.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = license.html; path = ../doc/license.html; sourceTree = SOURCE_ROOT; };
+ 1D5F0BCC08B39AD90048C9A2 /* intvec.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = intvec.html; path = ../doc/intvec.html; sourceTree = SOURCE_ROOT; };
+ 1D5F0BCD08B39AD90048C9A2 /* index.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = index.html; path = ../doc/index.html; sourceTree = SOURCE_ROOT; };
+ 1D5F0BCE08B39AD90048C9A2 /* gui.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = gui.html; path = ../doc/gui.html; sourceTree = SOURCE_ROOT; };
+ 1D5F0BCF08B39AD90048C9A2 /* gl.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = gl.html; path = ../doc/gl.html; sourceTree = SOURCE_ROOT; };
+ 1D5F0BD008B39AD90048C9A2 /* geom3d.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = geom3d.html; path = ../doc/geom3d.html; sourceTree = SOURCE_ROOT; };
+ 1D5F0BD108B39AD90048C9A2 /* ex-script.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = "ex-script.html"; path = "../doc/ex-script.html"; sourceTree = SOURCE_ROOT; };
+ 1D5F0BD208B39AD90048C9A2 /* ex-gui.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = "ex-gui.html"; path = "../doc/ex-gui.html"; sourceTree = SOURCE_ROOT; };
+ 1D5F0BD308B39AD90048C9A2 /* cdoc.css */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = cdoc.css; path = ../doc/cdoc.css; sourceTree = SOURCE_ROOT; };
+ 1D5F0BD408B39AD90048C9A2 /* build.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = build.html; path = ../doc/build.html; sourceTree = SOURCE_ROOT; };
+ D2AAC046055464E500DB518D /* libgfx.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libgfx.a; sourceTree = BUILT_PRODUCTS_DIR; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 1D5D8DAB08B3A0CF009C84F9 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 1D5D8E5808B3A251009C84F9 /* libgfx.a in Frameworks */,
+ 1D5D8DD508B3A20A009C84F9 /* OpenGL.framework in Frameworks */,
+ 1D5D8E6608B3A6CF009C84F9 /* AGL.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 1D5D8E8708B3A813009C84F9 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 1D5D8E8F08B3A831009C84F9 /* libgfx.a in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ D289987405E68DCB004EDB86 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 08FB7794FE84155DC02AAC07 /* libgfx */ = {
+ isa = PBXGroup;
+ children = (
+ 08FB7795FE84155DC02AAC07 /* Library Source */,
+ C6A0FF2B0290797F04C91782 /* Library Documentation */,
+ 1D5D8E7408B3A743009C84F9 /* Test Applications */,
+ 1AB674ADFE9D54B511CA2CBB /* Products */,
+ 1D5D8E6D08B3A728009C84F9 /* External Frameworks */,
+ );
+ name = libgfx;
+ sourceTree = "<group>";
+ };
+ 08FB7795FE84155DC02AAC07 /* Library Source */ = {
+ isa = PBXGroup;
+ children = (
+ 1D5F0B8108B399390048C9A2 /* trackball.cxx */,
+ 1D5F0B8208B399390048C9A2 /* time.cxx */,
+ 1D5F0B8308B399390048C9A2 /* symmat4.cxx */,
+ 1D5F0B8408B399390048C9A2 /* symmat3.cxx */,
+ 1D5F0B8508B399390048C9A2 /* symmat2.cxx */,
+ 1D5F0B8608B399390048C9A2 /* script.cxx */,
+ 1D5F0B8708B399390048C9A2 /* raster.cxx */,
+ 1D5F0B8808B399390048C9A2 /* raster-tiff.cxx */,
+ 1D5F0B8908B399390048C9A2 /* raster-pnm.cxx */,
+ 1D5F0B8A08B399390048C9A2 /* raster-png.cxx */,
+ 1D5F0B8B08B399390048C9A2 /* raster-jpeg.cxx */,
+ 1D5F0B8C08B399390048C9A2 /* quat.cxx */,
+ 1D5F0B8D08B399390048C9A2 /* mat4.cxx */,
+ 1D5F0B8E08B399390048C9A2 /* mat3.cxx */,
+ 1D5F0B8F08B399390048C9A2 /* mat2.cxx */,
+ 1D5F0B9008B399390048C9A2 /* gui.cxx */,
+ 1D5F0B9108B399390048C9A2 /* gltools.cxx */,
+ 1D5F0B9208B399390048C9A2 /* geom4d.cxx */,
+ 1D5F0B9308B399390048C9A2 /* geom3d.cxx */,
+ 1D5F0B9408B399390048C9A2 /* color.cxx */,
+ 1D5F0B9508B399390048C9A2 /* baseball.cxx */,
+ 1D5F0B9608B399390048C9A2 /* arcball.cxx */,
+ );
+ name = "Library Source";
+ sourceTree = "<group>";
+ };
+ 1AB674ADFE9D54B511CA2CBB /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ D2AAC046055464E500DB518D /* libgfx.a */,
+ 1D5D8DAD08B3A0CF009C84F9 /* t-gui.app */,
+ 1D5D8E8908B3A813009C84F9 /* t-vec */,
+ );
+ name = Products;
+ sourceTree = "<group>";
+ };
+ 1D5D8E6D08B3A728009C84F9 /* External Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 1D5D8E5908B3A6CF009C84F9 /* AGL.framework */,
+ 1D5D8DC208B3A20A009C84F9 /* OpenGL.framework */,
+ );
+ name = "External Frameworks";
+ sourceTree = "<group>";
+ };
+ 1D5D8E7408B3A743009C84F9 /* Test Applications */ = {
+ isa = PBXGroup;
+ children = (
+ 1D5D8DAF08B3A0CF009C84F9 /* t-gui-Info.plist */,
+ 1D5D8DBA08B3A109009C84F9 /* t-gui.cxx */,
+ 1D5D8E9608B3A849009C84F9 /* t-vec.cxx */,
+ );
+ name = "Test Applications";
+ sourceTree = "<group>";
+ };
+ C6A0FF2B0290797F04C91782 /* Library Documentation */ = {
+ isa = PBXGroup;
+ children = (
+ 1D5F0BBE08B39AD90048C9A2 /* vec4.html */,
+ 1D5F0BBF08B39AD90048C9A2 /* vec3.html */,
+ 1D5F0BC008B39AD90048C9A2 /* vec2.html */,
+ 1D5F0BC108B39AD90048C9A2 /* vec.html */,
+ 1D5F0BC208B39AD90048C9A2 /* start.html */,
+ 1D5F0BC308B39AD90048C9A2 /* script.html */,
+ 1D5F0BC408B39AD90048C9A2 /* rotate.html */,
+ 1D5F0BC508B39AD90048C9A2 /* raster.html */,
+ 1D5F0BC608B39AD90048C9A2 /* quat.html */,
+ 1D5F0BC708B39AD90048C9A2 /* mat4.html */,
+ 1D5F0BC808B39AD90048C9A2 /* mat3.html */,
+ 1D5F0BC908B39AD90048C9A2 /* mat2.html */,
+ 1D5F0BCA08B39AD90048C9A2 /* mat.html */,
+ 1D5F0BCB08B39AD90048C9A2 /* license.html */,
+ 1D5F0BCC08B39AD90048C9A2 /* intvec.html */,
+ 1D5F0BCD08B39AD90048C9A2 /* index.html */,
+ 1D5F0BCE08B39AD90048C9A2 /* gui.html */,
+ 1D5F0BCF08B39AD90048C9A2 /* gl.html */,
+ 1D5F0BD008B39AD90048C9A2 /* geom3d.html */,
+ 1D5F0BD108B39AD90048C9A2 /* ex-script.html */,
+ 1D5F0BD208B39AD90048C9A2 /* ex-gui.html */,
+ 1D5F0BD308B39AD90048C9A2 /* cdoc.css */,
+ 1D5F0BD408B39AD90048C9A2 /* build.html */,
+ );
+ name = "Library Documentation";
+ sourceTree = "<group>";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ D2AAC043055464E500DB518D /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ 1D5D8DAC08B3A0CF009C84F9 /* t-gui */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 1D5D8DB008B3A0D0009C84F9 /* Build configuration list for PBXNativeTarget "t-gui" */;
+ buildPhases = (
+ 1D5D8DA908B3A0CF009C84F9 /* Resources */,
+ 1D5D8DAA08B3A0CF009C84F9 /* Sources */,
+ 1D5D8DAB08B3A0CF009C84F9 /* Frameworks */,
+ );
+ buildRules = (
+ );
+ buildSettings = {
+ GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+ GCC_MODEL_TUNING = G5;
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h";
+ INFOPLIST_FILE = "t-gui-Info.plist";
+ INSTALL_PATH = "$(USER_APPS_DIR)";
+ OPTIMIZATION_CFLAGS = "";
+ OTHER_CFLAGS = "";
+ OTHER_LDFLAGS = (
+ "-framework",
+ Carbon,
+ );
+ OTHER_REZFLAGS = "";
+ PREBINDING = NO;
+ PRODUCT_NAME = "t-gui";
+ SECTORDER_FLAGS = "";
+ WARNING_CFLAGS = (
+ "-Wmost",
+ "-Wno-four-char-constants",
+ "-Wno-unknown-pragmas",
+ );
+ };
+ dependencies = (
+ 1D5D8DB508B3A0D9009C84F9 /* PBXTargetDependency */,
+ );
+ name = "t-gui";
+ productName = "t-gui";
+ productReference = 1D5D8DAD08B3A0CF009C84F9 /* t-gui.app */;
+ productSettingsXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
+<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
+<plist version=\"1.0\">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleExecutable</key>
+ <string>t-gui</string>
+ <key>CFBundleIdentifier</key>
+ <string>com.yourcompany.t_gui</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleVersion</key>
+ <string>1.0</string>
+</dict>
+</plist>
+";
+ productType = "com.apple.product-type.application";
+ };
+ 1D5D8E8808B3A813009C84F9 /* t-vec */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 1D5D8E9208B3A839009C84F9 /* Build configuration list for PBXNativeTarget "t-vec" */;
+ buildPhases = (
+ 1D5D8E8608B3A813009C84F9 /* Sources */,
+ 1D5D8E8708B3A813009C84F9 /* Frameworks */,
+ );
+ buildRules = (
+ );
+ buildSettings = {
+ GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+ GCC_MODEL_TUNING = G5;
+ INSTALL_PATH = "$(HOME)/bin";
+ OPTIMIZATION_CFLAGS = "";
+ OTHER_CFLAGS = "";
+ OTHER_LDFLAGS = "";
+ OTHER_REZFLAGS = "";
+ PREBINDING = NO;
+ PRODUCT_NAME = "t-vec";
+ SECTORDER_FLAGS = "";
+ WARNING_CFLAGS = (
+ "-Wmost",
+ "-Wno-four-char-constants",
+ "-Wno-unknown-pragmas",
+ );
+ };
+ dependencies = (
+ 1D5D8E8C08B3A81A009C84F9 /* PBXTargetDependency */,
+ );
+ name = "t-vec";
+ productName = "t-vec";
+ productReference = 1D5D8E8908B3A813009C84F9 /* t-vec */;
+ productType = "com.apple.product-type.tool";
+ };
+ D2AAC045055464E500DB518D /* libgfx */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 1D5F0B7208B398A90048C9A2 /* Build configuration list for PBXNativeTarget "libgfx" */;
+ buildPhases = (
+ D2AAC043055464E500DB518D /* Headers */,
+ D2AAC044055464E500DB518D /* Sources */,
+ D289987405E68DCB004EDB86 /* Frameworks */,
+ );
+ buildRules = (
+ );
+ buildSettings = {
+ GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+ GCC_MODEL_TUNING = G5;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ INSTALL_PATH = /usr/local/lib;
+ LIBRARY_STYLE = STATIC;
+ PREBINDING = NO;
+ PRODUCT_NAME = libgfx;
+ };
+ dependencies = (
+ );
+ name = libgfx;
+ productName = libgfx;
+ productReference = D2AAC046055464E500DB518D /* libgfx.a */;
+ productType = "com.apple.product-type.library.static";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 08FB7793FE84155DC02AAC07 /* Project object */ = {
+ isa = PBXProject;
+ buildConfigurationList = 1D5F0B7608B398A90048C9A2 /* Build configuration list for PBXProject "libgfx" */;
+ buildSettings = {
+ };
+ buildStyles = (
+ 014CEA520018CE5811CA2923 /* Debug */,
+ 014CEA530018CE5811CA2923 /* Release */,
+ );
+ hasScannedForEncodings = 1;
+ mainGroup = 08FB7794FE84155DC02AAC07 /* libgfx */;
+ projectDirPath = "";
+ targets = (
+ D2AAC045055464E500DB518D /* libgfx */,
+ 1D5D8DAC08B3A0CF009C84F9 /* t-gui */,
+ 1D5D8E8808B3A813009C84F9 /* t-vec */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 1D5D8DA908B3A0CF009C84F9 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 1D5D8DAA08B3A0CF009C84F9 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 1D5D8DBB08B3A109009C84F9 /* t-gui.cxx in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 1D5D8E8608B3A813009C84F9 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 1D5D8E9708B3A849009C84F9 /* t-vec.cxx in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ D2AAC044055464E500DB518D /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 1D5F0B9708B399390048C9A2 /* trackball.cxx in Sources */,
+ 1D5F0B9808B399390048C9A2 /* time.cxx in Sources */,
+ 1D5F0B9908B399390048C9A2 /* symmat4.cxx in Sources */,
+ 1D5F0B9A08B399390048C9A2 /* symmat3.cxx in Sources */,
+ 1D5F0B9B08B399390048C9A2 /* symmat2.cxx in Sources */,
+ 1D5F0B9C08B399390048C9A2 /* script.cxx in Sources */,
+ 1D5F0B9D08B399390048C9A2 /* raster.cxx in Sources */,
+ 1D5F0B9E08B399390048C9A2 /* raster-tiff.cxx in Sources */,
+ 1D5F0B9F08B399390048C9A2 /* raster-pnm.cxx in Sources */,
+ 1D5F0BA008B399390048C9A2 /* raster-png.cxx in Sources */,
+ 1D5F0BA108B399390048C9A2 /* raster-jpeg.cxx in Sources */,
+ 1D5F0BA208B399390048C9A2 /* quat.cxx in Sources */,
+ 1D5F0BA308B399390048C9A2 /* mat4.cxx in Sources */,
+ 1D5F0BA408B399390048C9A2 /* mat3.cxx in Sources */,
+ 1D5F0BA508B399390048C9A2 /* mat2.cxx in Sources */,
+ 1D5F0BA608B399390048C9A2 /* gui.cxx in Sources */,
+ 1D5F0BA708B399390048C9A2 /* gltools.cxx in Sources */,
+ 1D5F0BA808B399390048C9A2 /* geom4d.cxx in Sources */,
+ 1D5F0BA908B399390048C9A2 /* geom3d.cxx in Sources */,
+ 1D5F0BAA08B399390048C9A2 /* color.cxx in Sources */,
+ 1D5F0BAB08B399390048C9A2 /* baseball.cxx in Sources */,
+ 1D5F0BAC08B399390048C9A2 /* arcball.cxx in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+ 1D5D8DB508B3A0D9009C84F9 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = D2AAC045055464E500DB518D /* libgfx */;
+ targetProxy = 1D5D8DB408B3A0D9009C84F9 /* PBXContainerItemProxy */;
+ };
+ 1D5D8E8C08B3A81A009C84F9 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = D2AAC045055464E500DB518D /* libgfx */;
+ targetProxy = 1D5D8E8B08B3A81A009C84F9 /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
+/* Begin XCBuildConfiguration section */
+ 1D5D8DB108B3A0D0009C84F9 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ COPY_PHASE_STRIP = NO;
+ GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
+ GCC_MODEL_TUNING = G5;
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h";
+ INFOPLIST_FILE = "t-gui-Info.plist";
+ INSTALL_PATH = "$(USER_APPS_DIR)";
+ OPTIMIZATION_CFLAGS = "";
+ OTHER_CFLAGS = "";
+ OTHER_LDFLAGS = (
+ "-framework",
+ Carbon,
+ "-framework",
+ ApplicationServices,
+ "-lfltk_gl",
+ "-lfltk",
+ "-ljpeg",
+ "-lpng",
+ "-ltiff",
+ "-lz",
+ );
+ OTHER_REZFLAGS = "";
+ PREBINDING = NO;
+ PRODUCT_NAME = "t-gui";
+ SECTORDER_FLAGS = "";
+ WARNING_CFLAGS = (
+ "-Wmost",
+ "-Wno-four-char-constants",
+ "-Wno-unknown-pragmas",
+ );
+ };
+ name = Debug;
+ };
+ 1D5D8DB208B3A0D0009C84F9 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ COPY_PHASE_STRIP = YES;
+ GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+ GCC_MODEL_TUNING = G5;
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h";
+ INFOPLIST_FILE = "t-gui-Info.plist";
+ INSTALL_PATH = "$(USER_APPS_DIR)";
+ OPTIMIZATION_CFLAGS = "";
+ OTHER_CFLAGS = "";
+ OTHER_LDFLAGS = (
+ "-framework",
+ Carbon,
+ "-framework",
+ ApplicationServices,
+ "-lfltk_gl",
+ "-lfltk",
+ "-ljpeg",
+ "-lpng",
+ "-ltiff",
+ "-lz",
+ );
+ OTHER_REZFLAGS = "";
+ PREBINDING = NO;
+ PRODUCT_NAME = "t-gui";
+ SECTORDER_FLAGS = "";
+ WARNING_CFLAGS = (
+ "-Wmost",
+ "-Wno-four-char-constants",
+ "-Wno-unknown-pragmas",
+ );
+ };
+ name = Release;
+ };
+ 1D5D8DB308B3A0D0009C84F9 /* Default */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+ GCC_MODEL_TUNING = G5;
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h";
+ INFOPLIST_FILE = "t-gui-Info.plist";
+ INSTALL_PATH = "$(USER_APPS_DIR)";
+ OPTIMIZATION_CFLAGS = "";
+ OTHER_CFLAGS = "";
+ OTHER_LDFLAGS = (
+ "-framework",
+ Carbon,
+ "-framework",
+ ApplicationServices,
+ "-lfltk_gl",
+ "-lfltk",
+ "-ljpeg",
+ "-lpng",
+ "-ltiff",
+ "-lz",
+ );
+ OTHER_REZFLAGS = "";
+ PREBINDING = NO;
+ PRODUCT_NAME = "t-gui";
+ SECTORDER_FLAGS = "";
+ WARNING_CFLAGS = (
+ "-Wmost",
+ "-Wno-four-char-constants",
+ "-Wno-unknown-pragmas",
+ );
+ };
+ name = Default;
+ };
+ 1D5D8E9308B3A839009C84F9 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ COPY_PHASE_STRIP = NO;
+ GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
+ GCC_MODEL_TUNING = G5;
+ INSTALL_PATH = "$(HOME)/bin";
+ OPTIMIZATION_CFLAGS = "";
+ OTHER_CFLAGS = "";
+ OTHER_LDFLAGS = "";
+ OTHER_REZFLAGS = "";
+ PREBINDING = NO;
+ PRODUCT_NAME = "t-vec";
+ SECTORDER_FLAGS = "";
+ WARNING_CFLAGS = (
+ "-Wmost",
+ "-Wno-four-char-constants",
+ "-Wno-unknown-pragmas",
+ );
+ };
+ name = Debug;
+ };
+ 1D5D8E9408B3A839009C84F9 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ COPY_PHASE_STRIP = YES;
+ GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+ GCC_MODEL_TUNING = G5;
+ INSTALL_PATH = "$(HOME)/bin";
+ OPTIMIZATION_CFLAGS = "";
+ OTHER_CFLAGS = "";
+ OTHER_LDFLAGS = "";
+ OTHER_REZFLAGS = "";
+ PREBINDING = NO;
+ PRODUCT_NAME = "t-vec";
+ SECTORDER_FLAGS = "";
+ WARNING_CFLAGS = (
+ "-Wmost",
+ "-Wno-four-char-constants",
+ "-Wno-unknown-pragmas",
+ );
+ };
+ name = Release;
+ };
+ 1D5D8E9508B3A839009C84F9 /* Default */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+ GCC_MODEL_TUNING = G5;
+ INSTALL_PATH = "$(HOME)/bin";
+ OPTIMIZATION_CFLAGS = "";
+ OTHER_CFLAGS = "";
+ OTHER_LDFLAGS = "";
+ OTHER_REZFLAGS = "";
+ PREBINDING = NO;
+ PRODUCT_NAME = "t-vec";
+ SECTORDER_FLAGS = "";
+ WARNING_CFLAGS = (
+ "-Wmost",
+ "-Wno-four-char-constants",
+ "-Wno-unknown-pragmas",
+ );
+ };
+ name = Default;
+ };
+ 1D5F0B7308B398A90048C9A2 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ COPY_PHASE_STRIP = NO;
+ EXECUTABLE_PREFIX = "";
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_ENABLE_FIX_AND_CONTINUE = YES;
+ GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
+ GCC_MODEL_TUNING = G5;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ INSTALL_PATH = /usr/local/lib;
+ LIBRARY_STYLE = STATIC;
+ PREBINDING = NO;
+ PRODUCT_NAME = libgfx;
+ ZERO_LINK = YES;
+ };
+ name = Debug;
+ };
+ 1D5F0B7408B398A90048C9A2 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ COPY_PHASE_STRIP = YES;
+ EXECUTABLE_PREFIX = "";
+ GCC_ENABLE_FIX_AND_CONTINUE = NO;
+ GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+ GCC_MODEL_TUNING = G5;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ INSTALL_PATH = /usr/local/lib;
+ LIBRARY_STYLE = STATIC;
+ PREBINDING = NO;
+ PRODUCT_NAME = libgfx;
+ ZERO_LINK = NO;
+ };
+ name = Release;
+ };
+ 1D5F0B7508B398A90048C9A2 /* Default */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ EXECUTABLE_PREFIX = "";
+ GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+ GCC_MODEL_TUNING = G5;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ INSTALL_PATH = /usr/local/lib;
+ LIBRARY_STYLE = STATIC;
+ PREBINDING = NO;
+ PRODUCT_NAME = libgfx;
+ };
+ name = Default;
+ };
+ 1D5F0B7708B398A90048C9A2 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ HAVE_CONFIG_H,
+ GFX_NAMESPACE,
+ );
+ HEADER_SEARCH_PATHS = ../include/;
+ };
+ name = Debug;
+ };
+ 1D5F0B7808B398A90048C9A2 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ HAVE_CONFIG_H,
+ GFX_NAMESPACE,
+ );
+ HEADER_SEARCH_PATHS = ../include/;
+ };
+ name = Release;
+ };
+ 1D5F0B7908B398A90048C9A2 /* Default */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ HAVE_CONFIG_H,
+ GFX_NAMESPACE,
+ );
+ HEADER_SEARCH_PATHS = ../include/;
+ };
+ name = Default;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 1D5D8DB008B3A0D0009C84F9 /* Build configuration list for PBXNativeTarget "t-gui" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 1D5D8DB108B3A0D0009C84F9 /* Debug */,
+ 1D5D8DB208B3A0D0009C84F9 /* Release */,
+ 1D5D8DB308B3A0D0009C84F9 /* Default */,
+ );
+ defaultConfigurationIsVisible = 0;
+ };
+ 1D5D8E9208B3A839009C84F9 /* Build configuration list for PBXNativeTarget "t-vec" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 1D5D8E9308B3A839009C84F9 /* Debug */,
+ 1D5D8E9408B3A839009C84F9 /* Release */,
+ 1D5D8E9508B3A839009C84F9 /* Default */,
+ );
+ defaultConfigurationIsVisible = 0;
+ };
+ 1D5F0B7208B398A90048C9A2 /* Build configuration list for PBXNativeTarget "libgfx" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 1D5F0B7308B398A90048C9A2 /* Debug */,
+ 1D5F0B7408B398A90048C9A2 /* Release */,
+ 1D5F0B7508B398A90048C9A2 /* Default */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Default;
+ };
+ 1D5F0B7608B398A90048C9A2 /* Build configuration list for PBXProject "libgfx" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 1D5F0B7708B398A90048C9A2 /* Debug */,
+ 1D5F0B7808B398A90048C9A2 /* Release */,
+ 1D5F0B7908B398A90048C9A2 /* Default */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Default;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 08FB7793FE84155DC02AAC07 /* Project object */;
+}
diff --git a/debian/fireflies/fireflies-2.08/libgfx/macos/t-gui-Info.plist b/debian/fireflies/fireflies-2.08/libgfx/macos/t-gui-Info.plist
new file mode 100644
index 00000000..9e05eeda
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/macos/t-gui-Info.plist
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleExecutable</key>
+ <string>t-gui</string>
+ <key>CFBundleIdentifier</key>
+ <string>com.yourcompany.t_gui</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleVersion</key>
+ <string>1.0</string>
+</dict>
+</plist>
diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/Makefile b/debian/fireflies/fireflies-2.08/libgfx/src/Makefile
new file mode 100644
index 00000000..7993f971
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/src/Makefile
@@ -0,0 +1,29 @@
+include ../gfx-config
+
+CXXFLAGS += -DGFX_NAMESPACE
+
+VEC_SRCS = mat2.cxx mat3.cxx mat4.cxx quat.cxx \
+ symmat2.cxx symmat3.cxx symmat4.cxx
+GEO_SRCS = geom3d.cxx
+IMG_SRCS = raster.cxx raster-pnm.cxx raster-tiff.cxx raster-jpeg.cxx \
+ raster-png.cxx
+MISC_SRCS = time.cxx script.cxx color.cxx
+GUI_SRCS = gui.cxx gltools.cxx baseball.cxx trackball.cxx arcball.cxx
+
+SRCS = $(VEC_SRCS) $(GEO_SRCS) $(IMG_SRCS) $(MISC_SRCS) $(GUI_SRCS)
+OBJS = $(SRCS:.cxx=.o)
+
+libgfx.a: $(OBJS)
+ $(AR) cru libgfx.a $(OBJS)
+ $(RANLIB) libgfx.a
+
+tags: $(SRCS) ../include/gfx/*.h
+ ctags $(SRCS) ../include/gfx/*.h
+
+clean:
+ -$(RM) $(OBJS) libgfx.a
+
+depend:
+ $(CXX_DEPEND) $(SRCS) > Makefile.dep
+
+-include Makefile.dep
diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/arcball.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/arcball.cxx
new file mode 100644
index 00000000..3eab9a29
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/src/arcball.cxx
@@ -0,0 +1,192 @@
+/************************************************************************
+
+ Arcball rotation control. See the original article
+
+ "Arcball Rotation Control"
+ by Ken Shoemake <[email protected]>
+ in "Graphics Gems IV", Academic Press, 1994.
+
+ for more details.
+
+ $Id: arcball.cxx 427 2004-09-27 04:45:31Z garland $
+
+ ************************************************************************/
+
+#include <gfx/arcball.h>
+#include <gfx/gl.h>
+#include <sstream>
+
+namespace gfx
+{
+
+// Converts a unit quaternion to two points on the unit sphere
+static void quat_to_sphere(const Quat& q, Vec3& from, Vec3& to)
+{
+ const Vec3& v = q.vector();
+
+ double s = sqrt(v[0]*v[0] + v[1]*v[1]);
+ if( s==0.0 )
+ from = Vec3(0.0, 1.0, 0.0);
+ else
+ from = Vec3(-v[1]/s, v[0]/s, 0.0);
+
+ to[0] = q.scalar()*from[0] - v[2]*from[1];
+ to[1] = q.scalar()*from[1] + v[2]*from[2];
+ to[2] = v[0]*from[1] - v[1]*from[0];
+
+ if(q.scalar() < 0.0) from = -from;
+}
+
+// Converts to points on unit sphere into a unit quaternion
+static Quat quat_from_sphere(const Vec3& from, const Vec3& to)
+{
+ Vec3 v;
+ v[0] = from[1]*to[2] - from[2]*to[1];
+ v[1] = from[2]*to[0] - from[0]*to[2];
+ v[2] = from[0]*to[1] - from[1]*to[0];
+
+ double s = from*to;
+
+ return Quat(v, s);
+}
+
+
+Vec3 Arcball::proj_to_sphere(const Vec2& mouse)
+{
+ Vec2 p = (mouse - ball_ctr) / ball_radius;
+ double mag = p*p;
+
+ if( mag > 1.0 )
+ {
+ double s = sqrt(mag);
+ return Vec3(p[0]/s, p[1]/s, 0.0);
+ }
+ else
+ {
+ return Vec3(p[0], p[1], sqrt(1-mag));
+ }
+}
+
+void Arcball::update()
+{
+ // constrain v_from & v_to to axes here, if necessary
+
+ if( is_dragging )
+ {
+ q_drag = quat_from_sphere(v_from, v_to);
+ q_now = q_drag * q_down;
+ }
+}
+
+Arcball::Arcball()
+{
+ ball_ctr = Vec2(0, 0);
+ ball_radius = 1.0;
+
+ q_now = Quat::ident();
+ q_down = Quat::ident();
+ q_drag = Quat::ident();
+
+ is_dragging = false;
+}
+
+bool Arcball::mouse_down(int *where, int which)
+{
+ float vp[4];
+ glGetFloatv(GL_VIEWPORT, vp);
+ float W=vp[2], H=vp[3];
+
+ if( which==1 )
+ {
+ is_dragging = true;
+ Vec2 v( (2.0 * where[0] - W)/W, (H - 2.0 * where[1])/H );
+ v_from = proj_to_sphere(v);
+ v_to = v_from;
+ }
+
+ return true;
+}
+
+bool Arcball::mouse_up(int *where, int which)
+{
+ is_dragging = false;
+ q_down = q_now;
+ q_drag = Quat::ident();
+
+ return false;
+}
+
+bool Arcball::mouse_drag(int *where, int *last, int which)
+{
+ float vp[4];
+ glGetFloatv(GL_VIEWPORT, vp);
+ float W=vp[2], H=vp[3];
+
+ float diam = 2*radius;
+
+ if( which==1 )
+ {
+ Vec2 v( (2.0 * where[0] - W)/W, (H - 2.0 * where[1])/H );
+ v_to = proj_to_sphere(v);
+ }
+ else if( which==2 )
+ {
+ trans[0] += diam * (where[0] - last[0]) / W;
+ trans[1] += diam * (last[1] - where[1]) / H;
+ }
+ else if( which==3 )
+ {
+ trans[2] += 0.02*diam*(where[1] - last[1]);
+ }
+ else
+ return false;
+
+ return true;
+}
+
+void Arcball::apply_transform()
+{
+ update();
+ curquat = conjugate(q_now);
+ Baseball::apply_transform();
+}
+
+
+void Arcball::update_animation()
+{
+}
+
+void Arcball::get_transform(Vec3 & c, Vec3 &t, Quat & q)
+{
+ c = ctr;
+ t = trans;
+ q = q_now;
+}
+
+void Arcball::set_transform(const Vec3 & c, const Vec3 &t, const Quat & q)
+{
+ ctr = c;
+ trans = t;
+ q_now = q;
+ q_down = q;
+ q_drag = q;
+}
+
+void Arcball::write(std::ostream& out)
+{
+ out << "arcball ";
+ out << ball_ctr << " " << ball_radius << " ";
+ out << q_now << " " << q_down << " " << q_drag << std::endl;
+ Baseball::write(out);
+}
+
+void Arcball::read(std::istream& in)
+{
+ std::string name;
+ in >> name;
+ in >> ball_ctr >> ball_radius;
+ in >> q_now >> q_down >> q_drag;
+ Baseball::read(in);
+}
+
+} // namespace gfx
diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/baseball.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/baseball.cxx
new file mode 100644
index 00000000..8a94cd3c
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/src/baseball.cxx
@@ -0,0 +1,59 @@
+/************************************************************************
+
+ Common code for ball-based rotation controllers.
+
+ $Id: baseball.cxx 427 2004-09-27 04:45:31Z garland $
+
+ ************************************************************************/
+
+#include <gfx/gfx.h>
+#include <gfx/gl.h>
+#include <gfx/baseball.h>
+#include <sstream>
+
+namespace gfx
+{
+
+Baseball::Baseball()
+{
+ curquat = Quat::ident();
+
+ trans=0.0;
+ ctr=0.0;
+ radius=1;
+}
+
+void Baseball::apply_transform()
+{
+ glMatrixMode(GL_MODELVIEW);
+ glPushMatrix();
+ glTranslated(trans[0], trans[1], trans[2]);
+ glTranslated(ctr[0], ctr[1], ctr[2]);
+
+ const Mat4 M=unit_quat_to_matrix(curquat);
+ glMultMatrixd(M);
+
+ glTranslated(-ctr[0], -ctr[1], -ctr[2]);
+}
+
+void Baseball::unapply_transform()
+{
+ glMatrixMode(GL_MODELVIEW);
+ glPopMatrix();
+}
+
+void Baseball::write(std::ostream& out)
+{
+ out << "baseball ";
+ out << curquat << " " << trans << " " << ctr << " " << radius << std::endl;
+}
+
+void Baseball::read(std::istream& in)
+{
+ std::string name;
+
+ in >> name;
+ in >> curquat >> trans >> ctr >> radius;
+}
+
+} // namespace gfx
diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/color.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/color.cxx
new file mode 100644
index 00000000..96fdba72
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/src/color.cxx
@@ -0,0 +1,128 @@
+#include <gfx/color.h>
+#include <gfx/mat3.h>
+
+namespace gfx
+{
+ //
+ // HSV conversion code based on Foley et al (2nd ed. in C, pp. 592-593)
+ //
+
+ static double max3(double x, double y, double z)
+ {
+ if( x>=y && x>=z ) return x;
+ else if( y>=x && y>=z ) return y;
+ else return z;
+ }
+
+ static double min3(double x, double y, double z)
+ {
+ if( x<=y && x<=z ) return x;
+ else if( y<=x && y<=z ) return y;
+ else return z;
+ }
+
+ hsvColor RGBtoHSV(const rgbColor& rgb)
+ {
+ double r=rgb[0], g=rgb[1], b=rgb[2];
+
+ double max = max3(r,g,b);
+ double min = min3(r,g,b);
+ double delta = max - min;
+
+ double h = -1; // undefined value for case where v outside [0,360]
+ double v = max;
+ double s = (max!=0) ? (delta/max) : 0;
+
+ if( s != 0 )
+ {
+ if( r==max ) h = (g-b)/delta;
+ else if( g==max ) h = 2 + (b-r)/delta;
+ else if( b==max ) h = 4 + (r-g)/delta;
+
+ h *= 60;
+ if( h<0 ) h+=360;
+ }
+
+ return hsvColor(h, s, v);
+ }
+
+ rgbColor HSVtoRGB(const hsvColor& hsv)
+ {
+ double h = hsv[0], s=hsv[1], v=hsv[2];
+
+ // Unsaturated means pure gray
+ if(s == 0) return rgbColor(v, v, v);
+
+ if( h==360.0 ) h=0.0; // these are equivalent hues
+ h /= 60.0; // convert to sector [0, 6)
+ int i = (int)floor( h ); // integral part of h
+ float f = h - i; // fractional part of h
+
+ // Compute RGB components
+ float p = v * ( 1 - s );
+ float q = v * ( 1 - s * f );
+ float t = v * ( 1 - s * ( 1 - f ) );
+
+ // Map PQT to RGB based on sector of the color cone
+ switch( i )
+ {
+ case 0: return rgbColor(v, t, p); break;
+ case 1: return rgbColor(q, v, p); break;
+ case 2: return rgbColor(p, v, t); break;
+ case 3: return rgbColor(p, q, v); break;
+ case 4: return rgbColor(t, p, v); break;
+ default: return rgbColor(v, p, q); break;
+ }
+ }
+
+ // Paul Haeberli's comments on luminance coefficients:
+ //
+ // Where rwgt is 0.3086, gwgt is 0.6094, and bwgt is 0.0820. This
+ // is the luminance vector. Notice here that we do not use the
+ // standard NTSC weights of 0.299, 0.587, and 0.114. The NTSC
+ // weights are only applicable to RGB colors in a gamma 2.2 color
+ // space. For linear RGB colors the values above are better.
+ //
+ // Grafica Obscura -- Matrix Operations for Image Processing
+ // http://www.sgi.com/misc/grafica/matrix/index.html
+ //
+ const rgbColor haeberli_factor(0.3086, 0.6094, 0.0820);
+ const rgbColor ntsc_factor(0.299, 0.587, 0.114);
+
+ float rgb_luminance_ntsc(const rgbColor& rgb) { return rgb*ntsc_factor; }
+ float rgb_luminance_alt(const rgbColor& rgb) { return rgb*haeberli_factor; }
+
+
+ const Mat3 M_yiq(ntsc_factor,
+ Vec3(0.596, -0.275, -0.321),
+ Vec3(0.212, -0.523, 0.311));
+
+ yiqColor RGBtoYIQ(const rgbColor& rgb)
+ {
+ return yiqColor(M_yiq * Vec3(rgb));
+ }
+
+ // Matrix conversions taken from the ColorFAQ by Charles Poynton
+ const Mat3 M_rgb(Vec3( 3.240479, -1.537150, -0.498535),
+ Vec3(-0.969256, 1.875992, 0.041556),
+ Vec3( 0.055648, -0.204043, 1.057311));
+
+ const Mat3 M_xyz(Vec3(0.412453, 0.357580, 0.180423),
+ Vec3(0.212671, 0.715160, 0.072169),
+ Vec3(0.019334, 0.119193, 0.950227));
+
+ // Derived from equations provided by EasyRGB:
+ // http://www.easyrgb.com/math.php
+ //
+ xyzColor RGBtoXYZ(const rgbColor& rgb)
+ { return xyzColor(M_xyz * Vec3(rgb)); }
+
+ rgbColor XYZtoRGB(const xyzColor& xyz)
+ { return rgbColor(M_rgb * Vec3(xyz)); }
+
+ xyChromaticity xyz_chromaticity(const xyzColor& xyz)
+ {
+ float w = xyz[0] + xyz[1] + xyz[2];
+ return xyChromaticity(xyz[0]/w, xyz[1]/w);
+ }
+}
diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/geom3d.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/geom3d.cxx
new file mode 100644
index 00000000..ff9e8e44
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/src/geom3d.cxx
@@ -0,0 +1,33 @@
+/************************************************************************
+
+ Handy 3D geometrical primitives
+
+ $Id: geom3d.cxx 427 2004-09-27 04:45:31Z garland $
+
+ ************************************************************************/
+
+#include <gfx/gfx.h>
+#include <gfx/geom3d.h>
+#include <gfx/mat4.h>
+
+namespace gfx
+{
+
+double tetrahedron_determinant(const Vec3& v0, const Vec3& v1,
+ const Vec3& v2, const Vec3& v3)
+{
+ Mat4 A( Vec4(v0, 1),
+ Vec4(v1, 1),
+ Vec4(v2, 1),
+ Vec4(v3, 1));
+
+ return det(A);
+}
+
+double tetrahedron_volume(const Vec3& v0, const Vec3& v1,
+ const Vec3& v2, const Vec3& v3)
+{
+ return fabs(tetrahedron_determinant(v0,v1,v2,v3)/6);
+}
+
+}
diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/geom4d.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/geom4d.cxx
new file mode 100644
index 00000000..2973f966
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/src/geom4d.cxx
@@ -0,0 +1,14 @@
+/************************************************************************
+
+ Handy 4D geometrical primitives
+
+ $Id: geom4d.cxx 427 2004-09-27 04:45:31Z garland $
+
+ ************************************************************************/
+
+#include <gfx/gfx.h>
+#include <gfx/geom4d.h>
+
+namespace gfx
+{
+}
diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/gltools.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/gltools.cxx
new file mode 100644
index 00000000..565a382e
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/src/gltools.cxx
@@ -0,0 +1,192 @@
+/************************************************************************
+
+ Handy functions for common OpenGL tasks
+
+ $Id: gltools.cxx 446 2005-06-18 13:58:15Z garland $
+
+ ************************************************************************/
+
+
+#include <gfx/gfx.h>
+
+#ifdef HAVE_OPENGL
+
+#include <gfx/gltools.h>
+
+#include <cassert>
+
+namespace gfx
+{
+
+using std::cerr;
+using std::endl;
+
+GLuint opengl_pick_nil = (~0);
+GLuint opengl_pick_zmax = (~0);
+
+void begin_opengl_pick(int *where, double radius, GLuint *buffer, int size)
+{
+ GLint vp[4];
+ glGetIntegerv(GL_VIEWPORT, vp);
+
+ glSelectBuffer(size, buffer);
+ glRenderMode(GL_SELECT);
+ glInitNames();
+ glPushName(opengl_pick_nil);
+
+ glMatrixMode(GL_PROJECTION);
+ glPushMatrix(); // Save the current transformation
+ glLoadIdentity();
+ gluPickMatrix(where[0], vp[3] - where[1], radius, radius, vp);
+}
+
+GLuint complete_opengl_pick(GLuint *buffer)
+{
+ glMatrixMode(GL_PROJECTION);
+ glPopMatrix(); // get rid of the pick matrix
+ glFlush();
+
+ GLint nhits = glRenderMode(GL_RENDER);
+ GLuint *hit = NULL;
+ GLuint hit_nnames = 0;
+ GLuint zmin = opengl_pick_zmax;
+ GLuint *ptr = buffer;
+
+ for(int i=0; i<nhits; i++)
+ {
+ GLuint nnames = *ptr++;
+ GLuint cur_zmin = *ptr++;
+ /* GLuint cur_zmax = */ *ptr++;
+
+ if( cur_zmin < zmin )
+ {
+ zmin = cur_zmin;
+ hit = ptr;
+ hit_nnames = nnames;
+ }
+ ptr+=nnames;
+ }
+
+
+ buffer[0] = hit_nnames;
+ if( hit )
+ {
+ for(int k=0; k<hit_nnames; k++)
+ buffer[k+1] = hit[k];
+
+ return *hit;
+ }
+ else
+ return opengl_pick_nil;
+}
+
+void report_opengl_stacks()
+{
+ GLint depth;
+
+ glGetIntegerv(GL_PROJECTION_STACK_DEPTH, &depth);
+ cerr << " Projection stack depth = " << depth;
+ glGetIntegerv(GL_MAX_PROJECTION_STACK_DEPTH, &depth);
+ cerr << " (" << depth << " max)" << endl;
+
+ glGetIntegerv(GL_MODELVIEW_STACK_DEPTH, &depth);
+ cerr << " ModelView stack depth = " << depth;
+ glGetIntegerv(GL_MAX_MODELVIEW_STACK_DEPTH, &depth);
+ cerr << " (" << depth << " max)" << endl;
+
+ glGetIntegerv(GL_TEXTURE_STACK_DEPTH, &depth);
+ cerr << " Texture stack depth = " << depth;
+ glGetIntegerv(GL_MAX_TEXTURE_STACK_DEPTH, &depth);
+ cerr << " (" << depth << " max)" << endl;
+}
+
+void check_opengl_errors(const char *msg)
+{
+ bool stack_error = false;
+
+ for(GLenum err=glGetError(); err!=GL_NO_ERROR; err=glGetError())
+ {
+ cerr << "GL ERROR ";
+ if( msg ) cerr << msg;
+ cerr << ": " << (const char *)gluErrorString(err) << endl;
+
+ if( err==GL_STACK_OVERFLOW || err==GL_STACK_UNDERFLOW )
+ stack_error = true;
+ }
+
+ if( stack_error ) report_opengl_stacks();
+}
+
+void camera_lookat(const Vec3& min, const Vec3& max, double aspect)
+{
+ Vec3 up(0, 1, 0);
+ double fovy = 60.0;
+
+ Vec3 at = (max + min)/2.0; // look at the center of the bbox
+ double radius = norm(max - at); // radius of a bounding sphere
+ double d = 3*radius / tan(fovy * M_PI/180.0);
+
+ Vec3 from = at;
+ from[2] += d;
+
+ double znear = d/20;
+ double zfar = 10*d;
+
+ glMatrixMode(GL_PROJECTION);
+ gluPerspective(fovy, aspect, znear, zfar);
+
+
+ glMatrixMode(GL_MODELVIEW);
+ gluLookAt(from[0], from[1], from[2],
+ at[0], at[1], at[2],
+ up[0], up[1], up[2]);
+}
+
+void ortho_camera_lookat(const Vec3& min, const Vec3& max, double aspect)
+{
+ Vec3 up(0, 1, 0);
+ double fovy = 60.0;
+
+ Vec3 at = (max + min)/2.0; // look at the center of the bbox
+ double radius = norm(max - at); // radius of a bounding sphere
+ double d = 3*radius / tan(fovy * M_PI/180.0);
+
+ Vec3 from = at;
+ from[2] += d;
+
+ Vec3 diag = max-min;
+ double width = MAX(diag[0], diag[1]); width=MAX(width, diag[2]);
+ width *= 1.1;
+
+ double znear = d/20;
+ double zfar = 10*d;
+ glMatrixMode(GL_PROJECTION);
+ glOrtho(-aspect/2*width, aspect/2*width, -0.5*width, 0.5*width, znear, zfar);
+
+ glMatrixMode(GL_MODELVIEW);
+ gluLookAt(from[0], from[1], from[2],
+ at[0], at[1], at[2],
+ up[0], up[1], up[2]);
+}
+
+int unproject_pixel(int *pixel, double *world, double z)
+{
+ GLdouble modelMatrix[16];
+ GLdouble projMatrix[16];
+ GLint viewport[4];
+
+ glGetDoublev(GL_PROJECTION_MATRIX, projMatrix);
+ glGetDoublev(GL_MODELVIEW_MATRIX, modelMatrix);
+ glGetIntegerv(GL_VIEWPORT, viewport);
+
+ // Notice that we have to correct the y pixel coordinate. GL
+ // assigns the origin to the lower left corner, while FLTK assigns
+ // the origin to the upper left corner.
+ return gluUnProject(pixel[0], viewport[3]-pixel[1], z,
+ modelMatrix, projMatrix, viewport,
+ world, world+1, world+2);
+}
+
+} // namespace gfx
+
+#endif /* HAVE_OPENGL */
diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/gui-mfc.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/gui-mfc.cxx
new file mode 100644
index 00000000..a9ab22e5
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/src/gui-mfc.cxx
@@ -0,0 +1,297 @@
+/************************************************************************
+
+ MxGUI-like emulation in MFC.
+
+ $Id: gui-mfc.cxx 427 2004-09-27 04:45:31Z garland $
+
+ ************************************************************************/
+
+#include <gfx/win/gui-mfc.h>
+
+namespace gfx
+{
+
+static inline MfcGUI *GuiGetApp() { return (MfcGUI *)AfxGetApp(); }
+
+MfcGUI::MfcGUI()
+{
+ canvas = NULL;
+ timer_id = 0;
+ default_fps = 24.0f;
+ target_fps = 0.0f;
+}
+
+void MfcGUI::status(const char *fmt, ...)
+{
+ va_list args;
+
+ va_start(args, fmt);
+ CString str;
+ str.FormatV(fmt, args);
+ va_end(args);
+
+ if( canvas && canvas->status_line )
+ canvas->status_line->SetPaneText(0, str);
+}
+
+static VOID CALLBACK cb_timeout(HWND w, UINT msg, UINT id, DWORD system_time)
+{
+ GuiGetApp()->update_animation();
+ GuiGetApp()->canvas->post_redraw();
+}
+
+void MfcGUI::animate(bool will)
+{
+ if( will )
+ {
+ target_fps = default_fps;
+
+ float millisecs = 1000 / target_fps;
+ timer_id = ::SetTimer(NULL, 0, (UINT)millisecs, cb_timeout);
+ }
+ else
+ {
+ target_fps = 0;
+ if( timer_id ) ::KillTimer(NULL, timer_id);
+ timer_id = 0;
+ }
+}
+
+BOOL MfcGUI::InitInstance()
+{
+ m_pMainWnd = canvas = new Canvas;
+ m_pMainWnd->ShowWindow(m_nCmdShow);
+ m_pMainWnd->UpdateWindow();
+ return TRUE;
+}
+
+
+
+BEGIN_MESSAGE_MAP(Canvas, CFrameWnd)
+ ON_WM_CREATE()
+ ON_WM_DESTROY()
+ ON_WM_SIZE()
+
+ //ON_WM_ACTIVATE()
+ ON_WM_PAINT()
+ ON_WM_ERASEBKGND()
+
+ ON_WM_LBUTTONDOWN()
+ ON_WM_LBUTTONUP()
+ ON_WM_RBUTTONDOWN()
+ ON_WM_RBUTTONUP()
+ ON_WM_MBUTTONDOWN()
+ ON_WM_MBUTTONUP()
+ ON_WM_MOUSEMOVE()
+ ON_WM_CHAR()
+END_MESSAGE_MAP()
+
+Canvas::Canvas()
+{
+ last_click[0] = last_click[1] = -1;
+ glcontext = NULL;
+ pixfmt = 0;
+
+
+ Create(NULL, "Sample Application");
+
+ CMenu menu;
+ menu.CreateMenu();
+
+ CMenu popup;
+ popup.CreatePopupMenu();
+ popup.AppendMenu(MF_STRING, 0, "&New\tCtrl+N");
+ menu.AppendMenu(MF_POPUP, (UINT)popup.Detach(), "&File");
+
+ SetMenu(&menu);
+ menu.Detach();
+
+ status_line = new CStatusBar();
+ status_line->Create(this);
+ UINT indicator = ID_SEPARATOR;
+ status_line->SetIndicators(&indicator, 1);
+}
+
+BOOL Canvas::PreCreateWindow(CREATESTRUCT &cs)
+{
+ // Need to set special style requirements for OpenGL windows
+ cs.style |= WS_CLIPSIBLINGS | WS_CLIPCHILDREN;
+ return CFrameWnd::PreCreateWindow(cs);
+}
+
+
+int Canvas::OnCreate(LPCREATESTRUCT lpcs)
+{
+ if( CFrameWnd::OnCreate(lpcs) == -1 ) return -1;
+
+ HWND wnd = GetSafeHwnd();
+ HDC dc = ::GetDC(wnd);
+
+ pixfmt = set_pixel_format(dc);
+ if( !pixfmt )
+ MessageBox("Failed to set up proper pixel format.");
+
+ glcontext = create_glcontext(dc);
+ if( !glcontext )
+ MessageBox("Failed to create GL context.");
+
+ return 0;
+}
+
+void Canvas::OnPaint()
+{
+ CPaintDC dc(this);
+
+ HDC hdc = dc.GetSafeHdc();
+ make_current(hdc);
+
+ GuiGetApp()->draw_contents();
+
+ finish(hdc);
+}
+
+void Canvas::OnDestroy()
+{
+ if( wglGetCurrentContext() )
+ wglMakeCurrent(NULL, NULL);
+
+ if( glcontext )
+ {
+ wglDeleteContext(glcontext);
+ glcontext = NULL;
+ }
+
+ CFrameWnd::OnDestroy();
+}
+
+void Canvas::OnSize(UINT type, int width, int height)
+{
+ CFrameWnd::OnSize(type, width, height);
+ glViewport(0, 0, width, height);
+ GuiGetApp()->setup_for_drawing();
+}
+
+BOOL Canvas::OnEraseBkgnd(CDC *dc)
+{
+ return FALSE; // Don't want background to be erased thank you
+}
+
+void Canvas::immediate_redraw()
+{
+ SendMessage(WM_PAINT);
+}
+
+void Canvas::post_redraw()
+{
+ InvalidateRect(NULL, FALSE);
+}
+
+int Canvas::decode_mouse_button(UINT flags, int which)
+{
+ if( which==0 )
+ {
+ if( flags&MK_MBUTTON ) which = 2;
+ else if( flags&MK_LBUTTON ) which = 1;
+ else if( flags&MK_RBUTTON ) which = 3;
+ }
+
+ // Emulate middle button by double click
+ if( flags&MK_LBUTTON && flags&MK_RBUTTON ) which = 2;
+
+ return which;
+}
+
+void Canvas::do_mouse_down(int which, UINT flags, CPoint point)
+{
+ which = decode_mouse_button(flags, which);
+
+ int where[2]; where[0]=point.x; where[1]=point.y;
+ last_click[0]=point.x; last_click[1]=point.y;
+
+ SetCapture();
+ if( GuiGetApp()->mouse_down(where, which) )
+ post_redraw();
+}
+
+void Canvas::do_mouse_up(int which, UINT flags, CPoint point)
+{
+ which = decode_mouse_button(flags, which);
+
+ int where[2]; where[0]=point.x; where[1]=point.y;
+
+ ReleaseCapture();
+ if( GuiGetApp()->mouse_up(where, which) )
+ post_redraw();
+}
+
+void Canvas::do_mouse_move(UINT flags, CPoint point)
+{
+ int which = decode_mouse_button(flags);
+
+ int where[2]; where[0]=point.x; where[1]=point.y;
+
+ if( GuiGetApp()->mouse_drag(where, last_click, which) )
+ post_redraw();
+
+ last_click[0]=point.x; last_click[1]=point.y;
+}
+
+// Each mouse handler is given a set of flags 'f' and a position 'p'
+void Canvas::OnLButtonDown(UINT f, CPoint p) { do_mouse_down(1, f, p); }
+void Canvas::OnRButtonDown(UINT f, CPoint p) { do_mouse_down(3, f, p); }
+void Canvas::OnMButtonDown(UINT f, CPoint p) { do_mouse_down(2, f, p); }
+void Canvas::OnLButtonUp(UINT f, CPoint p) { do_mouse_up(1, f, p); }
+void Canvas::OnRButtonUp(UINT f, CPoint p) { do_mouse_up(3, f, p); }
+void Canvas::OnMButtonUp(UINT f, CPoint p) { do_mouse_up(2, f, p); }
+void Canvas::OnMouseMove(UINT f, CPoint p) { do_mouse_move(f, p); }
+
+void Canvas::OnChar(UINT ch, UINT repcount, UINT flags)
+{
+ GuiGetApp()->key_press(ch);
+}
+
+#if 0
+void Canvas::OnActivate(UINT state, CWnd *other, BOOL is_minimized)
+{
+ if( state==WA_ACTIVE || state==WA_CLICKACTIVE )
+ {
+ wglMakeCurrent(dc, glcontext);
+ }
+}
+#endif
+
+
+
+/*****************************************
+
+NOTES:
+
+ AfxGetApp() returns a CWinApp* to the current application
+ AfxGetAppName() returns a const char* to application name
+
+
+ ****************************************/
+
+void MfcGUI::setup_for_drawing()
+{
+ status("Hello There");
+}
+
+void MfcGUI::draw_contents()
+{
+ glClearColor(0.8f, 0.2f, 0.2f, 0.0f);
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+}
+
+bool MfcGUI::mouse_down(int *where, int which) { return false; }
+
+bool MfcGUI::mouse_up(int *where, int which) { return false; }
+
+bool MfcGUI::mouse_drag(int *where, int *last, int which) { return false; }
+
+bool MfcGUI::key_press(int key) { return false; }
+
+void MfcGUI::update_animation() { }
+
+
+} // namespace gfx
diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/gui.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/gui.cxx
new file mode 100644
index 00000000..7102aed2
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/src/gui.cxx
@@ -0,0 +1,509 @@
+/************************************************************************
+
+ MxGUI
+
+ $Id: gui.cxx 447 2005-06-18 14:01:16Z garland $
+
+ ************************************************************************/
+
+#include <gfx/gfx.h>
+
+#ifdef HAVE_FLTK
+
+#include <gfx/gui.h>
+#include <gfx/raster.h>
+
+#include <FL/Fl_File_Chooser.H>
+#include <FL/fl_ask.H>
+
+#include <cstdio>
+#include <cstdarg>
+#include <fstream>
+
+namespace gfx
+{
+
+MxGUI *MxGUI::current = NULL;
+
+MxGLCanvas::MxGLCanvas(int x, int y, int w, int h, const char *l)
+ : Fl_Gl_Window(x, y, w, h, l)
+{
+ last_click[0] = last_click[1] = -1;
+ app = NULL;
+}
+
+void MxGLCanvas::attach_app(MxGUI *a)
+{
+ if( !app )
+ app = a;
+}
+
+void MxGLCanvas::resize(int x, int y, int w, int h)
+{
+ Fl_Gl_Window::resize(x, y, w, h);
+
+ if( shown() )
+ {
+ make_current();
+ glViewport(0, 0, w, h);
+ invalidate();
+ }
+}
+
+void MxGLCanvas::draw()
+{
+ if( !valid() )
+ {
+ valid(1);
+ if(app) app->setup_for_drawing();
+ }
+
+ if(app) app->draw_contents();
+}
+
+int MxGLCanvas::handle(int event)
+{
+ bool need_redraw = false;
+
+ int where[2]; where[0] = Fl::event_x(); where[1] = Fl::event_y();
+
+ // NOTE: Normally, we examine event_state() rather than
+ // event_button() because it is valid no matter what the generating
+ // event whereas event_button() is only valid for PUSH and RELEASE
+ // events. However, since event_state() only tells us what buttons
+ // are *pressed*, we need to revert to event_button() on RELEASE
+ // events.
+ //
+ int which = Fl::event_button();
+
+ if( event != FL_RELEASE )
+ {
+ if( Fl::event_state(FL_BUTTON1) )
+ {
+ // emulate middle button by combination of left & right buttons
+ if( Fl::event_state(FL_BUTTON3) ) which = 2;
+ else which = 1;
+ }
+ else if( Fl::event_state(FL_BUTTON2) ) which = 2;
+ else if( Fl::event_state(FL_BUTTON3) ) which = 3;
+ }
+
+ switch( event )
+ {
+ case FL_PUSH:
+ need_redraw = app && app->mouse_down(where, which);
+ last_click[0]=where[0]; last_click[1]=where[1];
+ break;
+
+ case FL_RELEASE:
+ need_redraw = app && app->mouse_up(where, which);
+ break;
+
+ case FL_DRAG:
+ need_redraw = app && app->mouse_drag(where, last_click, which);
+ last_click[0]=where[0]; last_click[1]=where[1];
+ break;
+
+ case FL_FOCUS:
+ case FL_UNFOCUS:
+ // Do nothing special
+ break;
+
+ case FL_KEYBOARD:
+ if( !app || !app->key_press(Fl::event_key()) )
+ return 0;
+ break;
+
+ default:
+ return Fl_Gl_Window::handle(event);
+ }
+
+ if( need_redraw )
+ redraw();
+
+ return 1;
+}
+
+////////////////////////////////////////////////////////////////////////
+//
+// Default menu system. Although the application can completely
+// override this, it's expected that most programs will just add their
+// own additional entries.
+//
+
+void MxGUI::cb_new() { }
+
+void MxGUI::cb_exit() { cleanup_for_exit(); exit(0); }
+
+void MxGUI::cb_animate(Fl_Menu_ *m)
+ { animate(m->mvalue()->value()!=0); }
+
+void MxGUI::cb_fps()
+{
+ // Convert default_fps to a string
+ static char fps[64]; sprintf(fps, "%.1f", default_fps);
+
+ const char *result = fl_input("Number of frames per second to draw", fps);
+ if( result )
+ {
+ default_fps = atof(result);
+ if( target_fps>0 ) target_fps=default_fps;
+ }
+}
+
+void MxGUI::cb_snapshot(int format)
+{
+ canvas->redraw(); // don't want to snap menu
+ snapshot_to_file(format); // snapshot what's drawn
+}
+
+void MxGUI::cb_vga_size(int xw)
+{
+ if( toplevel->resizable() )
+ resize_canvas(xw, (3*xw)/4);
+}
+
+void MxGUI::cb_hdtv_size(int xw)
+{
+ if( toplevel->resizable() )
+ MxGUI::current->resize_canvas(xw, (9*xw)/16);
+}
+
+void MxGUI::cb_dv_size(int xw)
+{
+ if( toplevel->resizable() )
+ MxGUI::current->resize_canvas(xw, (2*xw)/3);
+}
+
+void MxGUI::cb_toggle(Fl_Menu_ *m, bool *flag)
+{
+ *flag = m->mvalue()->value()!=0;
+ current->canvas->redraw();
+}
+
+void MxGUI::cb_save_view_to_file() { save_view_to_file(); }
+void MxGUI::cb_load_view_from_file() { load_view_from_file(); }
+
+bool MxGUI::save_view_to_file()
+{
+ fl_alert("This application has not defined a scheme for saving the view.");
+ return false;
+}
+
+bool MxGUI::load_view_from_file()
+{
+ fl_alert("This application has not defined a scheme for loading the view.");
+ return false;
+}
+
+int MxGUI::add_menu(const std::string& s, int key, Fl_Callback *cb, int flags)
+{
+ return menu_bar->add(s.c_str(), key, cb, this, flags);
+}
+
+int MxGUI::add_toggle_menu(const std::string& s, int key, bool& val, int flags)
+{
+ return menu_bar->add(s.c_str(), key, (Fl_Callback *)cb_toggle, &val,
+ FL_MENU_TOGGLE|(val?FL_MENU_VALUE:0)|flags);
+}
+
+////////////////////////////////////////////////////////////////////////
+
+#ifdef __CYGWIN__
+extern "C"{
+ extern int mainCRTStartup();
+ int WinMainCRTStartup() { mainCRTStartup(); return 1; }
+}
+#endif
+
+MxGUI::MxGUI()
+{
+ canvas = NULL;
+ status_line = NULL;
+ default_fps = 24.0f;
+ target_fps = 0.0f;
+ MxGUI::current = this;
+}
+
+Fl_Window *MxGUI::create_window(int xw, int yw, int pad)
+{
+ int yfill = 0;
+
+ Fl_Window *w = new Fl_Window(xw+2*pad, 0);
+ toplevel = w;
+ w->box(FL_UP_BOX);
+
+ menu_bar = new Fl_Menu_Bar(0, yfill, w->w(), 30);
+ menu_bar->menu(menu_layout);
+ yfill += menu_bar->h();
+
+ add_upper_controls(yfill, pad);
+
+ yfill += pad;
+ canvas = new MxGLCanvas(pad, yfill, xw, yw);
+ canvas->box(FL_DOWN_FRAME);
+ canvas->attach_app(this);
+
+ int glmode = 0;
+ if(canvas->can_do(FL_RGB8)) glmode|=FL_RGB8;
+ if(canvas->can_do(FL_DOUBLE)) glmode|=FL_DOUBLE;
+ if(canvas->can_do(FL_DEPTH)) glmode|=FL_DEPTH;
+ if(canvas->can_do(FL_ALPHA)) glmode|=FL_ALPHA;
+ if(glmode) canvas->mode(glmode);
+
+ yfill += canvas->h();
+
+ add_lower_controls(yfill, pad);
+
+ yfill += pad;
+ status_line = new Fl_Output(pad, yfill, xw, 25);
+ status_line->color(48);
+ status_line->labeltype(FL_NO_LABEL);
+ yfill += status_line->h();
+
+ w->end();
+
+ w->size(w->w(), yfill+pad); // adjust window height
+ w->resizable(*canvas); // resize canvas with window
+
+ // These are used by resize_canvas() to resize the window based on
+ // the target size of the canvas.
+ w_offset = w->w() - xw;
+ h_offset = w->h() - yw;
+
+ return w;
+}
+
+static
+int arg_redirect(int argc, char **argv, int& index)
+{
+ MxGUI *app = MxGUI::current;
+ return app?app->cmdline_option(argc, argv, index):0;
+}
+
+void MxGUI::initialize(int argc, char **argv, Fl_Menu_Item *m, int xw, int yw)
+{
+ Fl::visual(FL_RGB8);
+ menu_layout = m?m:NULL;
+
+ int index = 0;
+ if( argv )
+ Fl::args(argc, argv, index, arg_redirect);
+
+ create_window(xw, yw);
+ toplevel->label("Graphics Program");
+
+ // Add dynamic entries
+ typedef MxBinder<MxGUI> CB;
+ std::string snap = "&File/Snapshot to/";
+ std::string view = "&View/";
+ std::string size = "&View/Display &size/";
+
+ add_menu("&File/&New", FL_CTRL+'n', CB::to<&MxGUI::cb_new>);
+
+#if defined(HAVE_LIBPNG)
+ add_menu(snap+"&PNG",
+ FL_CTRL+'p', CB::to_arg<&MxGUI::cb_snapshot, IMG_PNG>);
+#endif
+#if defined(HAVE_LIBTIFF)
+ add_menu("&File/Snapshot to/&TIFF",
+ FL_CTRL+'P', CB::to_arg<&MxGUI::cb_snapshot, IMG_TIFF>);
+#endif
+#if defined(HAVE_LIBJPEG)
+ add_menu("&File/Snapshot to/&JPEG", 0, CB::to_arg<&MxGUI::cb_snapshot, IMG_JPEG>);
+#endif
+ add_menu("&File/Snapshot to/PP&M", 0, CB::to_arg<&MxGUI::cb_snapshot, IMG_PNM>);
+
+ add_menu("&File/E&xit", FL_CTRL+'q', CB::to<&MxGUI::cb_exit>);
+
+ add_menu(view+"Animation speed ...", FL_CTRL+'r', CB::to<&MxGUI::cb_fps>);
+ add_menu(view+"&Animate", FL_CTRL+'a', CB::to_menu<&MxGUI::cb_animate>, FL_MENU_TOGGLE);
+
+ add_menu(view+"Save view ...", 0, CB::to<&MxGUI::cb_save_view_to_file>);
+ add_menu(view+"Load view ...", 0, CB::to<&MxGUI::cb_load_view_from_file>);
+
+ add_menu(size+"320x240",0, CB::to_arg<&MxGUI::cb_vga_size, 320>);
+ add_menu(size+"640x480",0, CB::to_arg<&MxGUI::cb_vga_size, 640>);
+ add_menu(size+"800x600",0, CB::to_arg<&MxGUI::cb_vga_size, 800>);
+ add_menu(size+"1024x768",0,CB::to_arg<&MxGUI::cb_vga_size, 1024>,FL_MENU_DIVIDER);
+ add_menu(size+"720x480",0, CB::to_arg<&MxGUI::cb_dv_size, 720>,FL_MENU_DIVIDER);
+
+ add_menu(size+"480x270",0, CB::to_arg<&MxGUI::cb_hdtv_size, 480>);
+ add_menu(size+"960x540",0, CB::to_arg<&MxGUI::cb_hdtv_size, 960>);
+ add_menu(size+"1920x1080",0, CB::to_arg<&MxGUI::cb_hdtv_size, 1920>);
+
+ if( argv )
+ {
+ if( index==argc )
+ cmdline_file(NULL);
+ else
+ for(; index<argc; index++)
+ cmdline_file(argv[index]);
+ }
+}
+
+int MxGUI::run()
+{
+ toplevel->show();
+ return Fl::run();
+}
+
+static
+void cb_timeout(void *)
+{
+ MxGUI *app = MxGUI::current;
+
+ if(!app || app->target_fps==0.0f) return;
+
+ app->update_animation();
+ app->canvas->redraw();
+ Fl::repeat_timeout(1/app->target_fps, cb_timeout);
+}
+
+void MxGUI::animate(bool will)
+{
+ if( will )
+ {
+ target_fps = default_fps;
+ Fl::add_timeout(1/target_fps, cb_timeout);
+ }
+ else
+ target_fps = 0;
+}
+
+int MxGUI::status(const char *fmt, ...)
+{
+ static char strbuf[1000];
+
+ va_list args;
+ va_start(args, fmt);
+ int n = vsprintf(strbuf, fmt, args);
+
+ status_line->value(strbuf);
+ return n;
+}
+
+bool MxGUI::snapshot_to_file(int format, const char *filenamep)
+{
+ canvas->make_current();
+ Fl::flush();
+
+ GLint vp[4]; glGetIntegerv(GL_VIEWPORT, vp);
+
+ glPushAttrib(GL_PIXEL_MODE_BIT);
+ glReadBuffer(GL_FRONT);
+ glPixelStorei(GL_PACK_ALIGNMENT, 1);
+
+ int nchan = 3;
+ if( format==IMG_PNG || format==IMG_TIFF )
+ // Currently, only TIFF and PNG writers support the alpha channel
+ nchan = 4;
+
+ ByteRaster img(vp[2]-vp[0], vp[3]-vp[1], nchan);
+ glReadPixels(vp[0],vp[1],vp[2],vp[3],
+ nchan==4 ? GL_RGBA : GL_RGB,
+ GL_UNSIGNED_BYTE,img.head());
+
+ glPopAttrib();
+ img.vflip();
+
+ if ( filenamep == NULL )
+ {
+ char msg[80], pat[8], name[16];
+ sprintf(msg, "Save %s Snapshot", image_type_name(format));
+ sprintf(pat, "*.%s", image_type_ext(format));
+ sprintf(name, "snap.%s", image_type_ext(format));
+
+ filenamep = fl_file_chooser(msg, pat, name);
+ }
+
+ if( filenamep )
+ return write_image(filenamep, img, format);
+ else
+ return false;
+}
+
+void MxGUI::lock_size()
+{
+ toplevel->size_range(toplevel->w(), toplevel->h(),
+ toplevel->w(), toplevel->h());
+ toplevel->resizable(NULL);
+}
+
+void MxGUI::unlock_size()
+{
+ toplevel->resizable(*canvas);
+ toplevel->size_range(100, 100, 0, 0);
+}
+
+
+void MxGUI::resize_canvas(int width, int height)
+{
+ toplevel->size(width+w_offset, height+h_offset);
+ toplevel->redraw();
+}
+
+////////////////////////////////////////////////////////////////////////
+
+void MxGUI::setup_for_drawing()
+{
+ glClearColor(0.65f, 0.65f, 0.65f, 0.0f);
+
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ gluOrtho2D(-1.0, 1.0, -1.0, 1.0);
+}
+
+void MxGUI::draw_contents()
+{
+ glClear(GL_COLOR_BUFFER_BIT);
+
+ glMatrixMode(GL_MODELVIEW);
+ glPushMatrix();
+ glLoadIdentity();
+
+ glColor3f(0.0, 0.0, 0.0);
+ glBegin(GL_LINES);
+ glVertex2f(-1.0, 0.0); glVertex2f(1.0, 0.0);
+ glVertex2f(0.0, -1.0); glVertex2f(0.0, 1.0);
+ glEnd();
+
+ glPopMatrix();
+}
+
+void MxGUI::update_animation()
+{
+}
+
+bool MxGUI::mouse_down(int *where, int which)
+{
+ return false;
+}
+
+bool MxGUI::mouse_up(int *where, int which)
+{
+ return false;
+}
+
+bool MxGUI::mouse_drag(int *where, int *last, int which)
+{
+ return false;
+}
+
+bool MxGUI::key_press(int key)
+{
+ return false;
+}
+
+int MxGUI::cmdline_option(int argc, char **argv, int& index)
+{
+ return 0;
+}
+
+void MxGUI::cmdline_file(const char *file)
+{
+}
+
+} // namespace gfx
+
+#endif /* HAVE_FLTK */
diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/mat2.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/mat2.cxx
new file mode 100644
index 00000000..42ed3e1a
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/src/mat2.cxx
@@ -0,0 +1,89 @@
+/************************************************************************
+
+ 2x2 Matrix class
+
+ $Id: mat2.cxx 427 2004-09-27 04:45:31Z garland $
+
+ ************************************************************************/
+
+#include <gfx/gfx.h>
+#include <gfx/mat2.h>
+
+namespace gfx
+{
+
+Mat2 Mat2::I() { return Mat2(1,0, 0,1); }
+
+Mat2 &Mat2::diag(double d)
+{
+ row[0][0] = d; row[0][1] = 0;
+ row[1][0] = 0; row[1][1] = d;
+
+ return *this;
+}
+
+Mat2 operator*(const Mat2 &n, const Mat2& m)
+{
+ Mat2 A;
+ int i,j;
+
+ for(i=0;i<2;i++)
+ for(j=0;j<2;j++)
+ A(i,j) = n[i]*m.col(j);
+
+ return A;
+}
+
+double invert(Mat2 &inv, const Mat2 &m)
+{
+ double d = det(m);
+
+ if( d==0.0 )
+ return 0.0;
+
+ inv(0, 0) = m(1,1)/d;
+ inv(0, 1) = -m(0,1)/d;
+ inv(1, 0) = -m(1,0)/d;
+ inv(1, 1) = m(0,0)/d;
+
+ return d;
+}
+
+bool eigenvalues(const Mat2& M, Vec2& evals)
+{
+ double B = -M(0,0)-M(1,1);
+ double C = det(M);
+
+ double dis = B*B - 4.0*C;
+ if( dis<FEQ_EPS )
+ return false;
+ else
+ {
+ double s = sqrt(dis);
+
+ evals[0] = 0.5*(-B + s);
+ evals[1] = 0.5*(-B - s);
+ return true;
+ }
+}
+
+bool eigenvectors(const Mat2& M, const Vec2& evals, Vec2 evecs[2])
+{
+ evecs[0] = Vec2(-M(0,1), M(0,0)-evals[0]);
+ evecs[1] = Vec2(-M(0,1), M(0,0)-evals[1]);
+
+ unitize(evecs[0]);
+ unitize(evecs[1]);
+
+ return true;
+}
+
+bool eigen(const Mat2& M, Vec2& evals, Vec2 evecs[2])
+{
+ bool result = eigenvalues(M, evals);
+ if( result )
+ eigenvectors(M, evals, evecs);
+ return result;
+}
+
+} // namespace gfx
diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/mat3.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/mat3.cxx
new file mode 100644
index 00000000..eda9fe3c
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/src/mat3.cxx
@@ -0,0 +1,82 @@
+/************************************************************************
+
+ 3x3 Matrix class
+
+ $Id: mat3.cxx 427 2004-09-27 04:45:31Z garland $
+
+ ************************************************************************/
+
+#include <gfx/gfx.h>
+#include <gfx/mat3.h>
+
+namespace gfx
+{
+
+Mat3 Mat3::I() { return Mat3(Vec3(1,0,0), Vec3(0,1,0), Vec3(0,0,1)); }
+
+Mat3 &Mat3::diag(double d)
+{
+ *this = 0.0;
+ row[0][0] = row[1][1] = row[2][2] = d;
+ return *this;
+}
+
+Mat3 diag(const Vec3& v)
+{
+ return Mat3(Vec3(v[0],0,0), Vec3(0,v[1],0), Vec3(0,0,v[2]));
+}
+
+Mat3 Mat3::outer_product(const Vec3& v)
+{
+ Mat3 A;
+ double x=v[0], y=v[1], z=v[2];
+
+ A(0,0) = x*x; A(0,1) = x*y; A(0,2) = x*z;
+ A(1,0)=A(0,1); A(1,1) = y*y; A(1,2) = y*z;
+ A(2,0)=A(0,2); A(2,1)=A(1,2); A(2,2) = z*z;
+
+ return A;
+}
+
+Mat3 Mat3::outer_product(const Vec3& u, const Vec3& v)
+{
+ Mat3 A;
+
+ for(int i=0; i<3; i++)
+ for(int j=0; j<3; j++)
+ A(i, j) = u[i]*v[j];
+
+ return A;
+}
+
+Mat3 operator*(const Mat3& n, const Mat3& m)
+{
+ Mat3 A;
+
+ for(int i=0;i<3;i++)
+ for(int j=0;j<3;j++)
+ A(i,j) = n[i]*m.col(j);
+
+ return A;
+}
+
+Mat3 adjoint(const Mat3& m)
+{
+ return Mat3(m[1]^m[2],
+ m[2]^m[0],
+ m[0]^m[1]);
+}
+
+double invert(Mat3& inv, const Mat3& m)
+{
+ Mat3 A = adjoint(m);
+ double d = A[0] * m[0];
+
+ if( d==0.0 )
+ return 0.0;
+
+ inv = transpose(A) / d;
+ return d;
+}
+
+} // namespace gfx
diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/mat4.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/mat4.cxx
new file mode 100644
index 00000000..0ad2a271
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/src/mat4.cxx
@@ -0,0 +1,206 @@
+/************************************************************************
+
+ 4x4 Matrix class
+
+ $Id: mat4.cxx 427 2004-09-27 04:45:31Z garland $
+
+ ************************************************************************/
+
+#include <gfx/gfx.h>
+#include <gfx/mat4.h>
+
+namespace gfx
+{
+
+Mat4 Mat4::I()
+{
+ return Mat4(Vec4(1,0,0,0),Vec4(0,1,0,0),Vec4(0,0,1,0),Vec4(0,0,0,1));
+}
+
+Mat4 translation_matrix(const Vec3& d)
+{
+ return Mat4(Vec4(1, 0, 0, d[0]),
+ Vec4(0, 1, 0, d[1]),
+ Vec4(0, 0, 1, d[2]),
+ Vec4(0, 0, 0, 1));
+}
+
+Mat4 scaling_matrix(const Vec3& s)
+{
+ return Mat4(Vec4(s[0], 0, 0, 0),
+ Vec4(0, s[1], 0, 0),
+ Vec4(0, 0, s[2], 0),
+ Vec4(0, 0, 0, 1));
+}
+
+Mat4 rotation_matrix_rad(double theta, const Vec3& axis)
+{
+ double c=cos(theta), s=sin(theta),
+ xx=axis[0]*axis[0], yy=axis[1]*axis[1], zz=axis[2]*axis[2],
+ xy=axis[0]*axis[1], yz=axis[1]*axis[2], xz=axis[0]*axis[2];
+
+ double xs=axis[0]*s, ys=axis[1]*s, zs=axis[2]*s;
+
+ Mat4 M;
+ M(0,0)=xx*(1-c)+c; M(0,1)=xy*(1-c)-zs; M(0,2)=xz*(1-c)+ys; M(0,3) = 0;
+ M(1,0)=xy*(1-c)+zs; M(1,1)=yy*(1-c)+c; M(1,2)=yz*(1-c)-xs; M(1,3)=0;
+ M(2,0)=xz*(1-c)-ys; M(2,1)=yz*(1-c)+xs; M(2,2)=zz*(1-c)+c; M(2,3)=0;
+ M(3,0)=0; M(3,1)=0; M(3,2)=0; M(3,3)=1;
+
+ return M;
+}
+
+Mat4 perspective_matrix(double fovy, double aspect, double zmin, double zmax)
+{
+ double A, B;
+ Mat4 M;
+
+ if( zmax==0.0 )
+ {
+ A = B = 1.0;
+ }
+ else
+ {
+ A = (zmax+zmin)/(zmin-zmax);
+ B = (2*zmax*zmin)/(zmin-zmax);
+ }
+
+ double f = 1.0/tan(fovy*M_PI/180.0/2.0);
+ M(0,0) = f/aspect;
+ M(1,1) = f;
+ M(2,2) = A;
+ M(2,3) = B;
+ M(3,2) = -1;
+ M(3,3) = 0;
+
+ return M;
+}
+
+Mat4 lookat_matrix(const Vec3& from, const Vec3& at, const Vec3& v_up)
+{
+ Vec3 up = v_up; unitize(up);
+ Vec3 f = at - from; unitize(f);
+
+ Vec3 s=f^up;
+ Vec3 u=s^f;
+
+ // NOTE: These steps are left out of the GL man page!!
+ unitize(s);
+ unitize(u);
+
+ Mat4 M(Vec4(s, 0), Vec4(u, 0), Vec4(-f, 0), Vec4(0, 0, 0, 1));
+
+ return M * translation_matrix(-from);
+}
+
+Mat4 viewport_matrix(double w, double h)
+{
+ return scaling_matrix(Vec3(w/2.0, -h/2.0, 1)) *
+ translation_matrix(Vec3(1, -1, 0));
+}
+
+Mat4 operator*(const Mat4& n, const Mat4& m)
+{
+ Mat4 A;
+ int i,j;
+
+ for(i=0;i<4;i++)
+ for(j=0;j<4;j++)
+ A(i,j) = n[i]*m.col(j);
+
+ return A;
+}
+
+Mat4 adjoint(const Mat4& m)
+{
+ Mat4 A;
+
+ A[0] = cross( m[1], m[2], m[3]);
+ A[1] = cross(-m[0], m[2], m[3]);
+ A[2] = cross( m[0], m[1], m[3]);
+ A[3] = cross(-m[0], m[1], m[2]);
+
+ return A;
+}
+
+double invert_cramer(Mat4& inv, const Mat4& m)
+{
+ Mat4 A = adjoint(m);
+ double d = A[0] * m[0];
+
+ if( d==0.0 )
+ return 0.0;
+
+ inv = transpose(A) / d;
+ return d;
+}
+
+
+
+// Matrix inversion code for 4x4 matrices using Gaussian elimination
+// with partial pivoting. This is a specialized version of a
+// procedure originally due to Paul Heckbert <[email protected]>.
+//
+// Returns determinant of A, and B=inverse(A)
+// If matrix A is singular, returns 0 and leaves trash in B.
+//
+#define SWAP(a, b, t) {t = a; a = b; b = t;}
+double invert(Mat4& B, const Mat4& m)
+{
+ Mat4 A = m;
+ int i, j, k;
+ double max, t, det, pivot;
+
+ /*---------- forward elimination ----------*/
+
+ for (i=0; i<4; i++) /* put identity matrix in B */
+ for (j=0; j<4; j++)
+ B(i, j) = (double)(i==j);
+
+ det = 1.0;
+ for (i=0; i<4; i++) { /* eliminate in column i, below diag */
+ max = -1.;
+ for (k=i; k<4; k++) /* find pivot for column i */
+ if (fabs(A(k, i)) > max) {
+ max = fabs(A(k, i));
+ j = k;
+ }
+ if (max<=0.) return 0.; /* if no nonzero pivot, PUNT */
+ if (j!=i) { /* swap rows i and j */
+ for (k=i; k<4; k++)
+ SWAP(A(i, k), A(j, k), t);
+ for (k=0; k<4; k++)
+ SWAP(B(i, k), B(j, k), t);
+ det = -det;
+ }
+ pivot = A(i, i);
+ det *= pivot;
+ for (k=i+1; k<4; k++) /* only do elems to right of pivot */
+ A(i, k) /= pivot;
+ for (k=0; k<4; k++)
+ B(i, k) /= pivot;
+ /* we know that A(i, i) will be set to 1, so don't bother to do it */
+
+ for (j=i+1; j<4; j++) { /* eliminate in rows below i */
+ t = A(j, i); /* we're gonna zero this guy */
+ for (k=i+1; k<4; k++) /* subtract scaled row i from row j */
+ A(j, k) -= A(i, k)*t; /* (ignore k<=i, we know they're 0) */
+ for (k=0; k<4; k++)
+ B(j, k) -= B(i, k)*t;
+ }
+ }
+
+ /*---------- backward elimination ----------*/
+
+ for (i=4-1; i>0; i--) { /* eliminate in column i, above diag */
+ for (j=0; j<i; j++) { /* eliminate in rows above i */
+ t = A(j, i); /* we're gonna zero this guy */
+ for (k=0; k<4; k++) /* subtract scaled row i from row j */
+ B(j, k) -= B(i, k)*t;
+ }
+ }
+
+ return det;
+}
+
+} // namespace gfx
diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/quat.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/quat.cxx
new file mode 100644
index 00000000..a3db2a68
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/src/quat.cxx
@@ -0,0 +1,136 @@
+/************************************************************************
+
+ Quaternion class
+
+ $Id: quat.cxx 427 2004-09-27 04:45:31Z garland $
+
+ ************************************************************************/
+
+#include <gfx/quat.h>
+
+namespace gfx
+{
+
+// Based on code from the Appendix of
+// Quaternion Calculus for Computer Graphics, by Ken Shoemake
+// Computes the exponential of a quaternion, assuming scalar part w=0
+Quat exp(const Quat& q)
+{
+ double theta = norm(q.vector());
+ double c = cos(theta);
+
+ if( theta > FEQ_EPS )
+ {
+ double s = sin(theta) / theta;
+ return Quat( s*q.vector(), c);
+ }
+ else
+ return Quat(q.vector(), c);
+}
+
+// Based on code from the Appendix of
+// Quaternion Calculus for Computer Graphics, by Ken Shoemake
+// Computes the natural logarithm of a UNIT quaternion
+Quat log(const Quat& q)
+{
+ double scale = norm(q.vector());
+ double theta = atan2(scale, q.scalar());
+
+ if( scale > 0.0 ) scale=theta/scale;
+
+ return Quat(scale*q.vector(), 0.0);
+}
+
+Quat axis_to_quat(const Vec3& a, double phi)
+{
+ Vec3 u = a;
+ unitize(u);
+
+ double s = sin(phi/2.0);
+ return Quat(u[0]*s, u[1]*s, u[2]*s, cos(phi/2.0));
+}
+
+Mat4 quat_to_matrix(const Quat& q)
+{
+ Mat4 M;
+
+ const double x = q.vector()[0];
+ const double y = q.vector()[1];
+ const double z = q.vector()[2];
+ const double w = q.scalar();
+ const double s = 2/norm(q);
+
+ M(0,0)=1-s*(y*y+z*z); M(0,1)=s*(x*y-w*z); M(0,2)=s*(x*z+w*y); M(0,3)=0;
+ M(1,0)=s*(x*y+w*z); M(1,1)=1-s*(x*x+z*z); M(1,2)=s*(y*z-w*x); M(1,3)=0;
+ M(2,0)=s*(x*z-w*y); M(2,1)=s*(y*z+w*x); M(2,2)=1-s*(x*x+y*y); M(2,3)=0;
+ M(3,0)=0; M(3,1)=0; M(3,2)=0; M(3,3)=1;
+
+ return M;
+}
+
+Mat4 unit_quat_to_matrix(const Quat& q)
+{
+ Mat4 M;
+
+ const double x = q.vector()[0];
+ const double y = q.vector()[1];
+ const double z = q.vector()[2];
+ const double w = q.scalar();
+
+ M(0,0)=1-2*(y*y+z*z); M(0,1)=2*(x*y-w*z); M(0,2)=2*(x*z+w*y); M(0,3)=0;
+ M(1,0)=2*(x*y+w*z); M(1,1)=1-2*(x*x+z*z); M(1,2)=2*(y*z-w*x); M(1,3)=0;
+ M(2,0)=2*(x*z-w*y); M(2,1)=2*(y*z+w*x); M(2,2)=1-2*(x*x+y*y); M(2,3)=0;
+ M(3,0)=0; M(3,1)=0; M(3,2)=0; M(3,3)=1;
+
+ return M;
+}
+
+Quat slerp(const Quat& from, const Quat& to, double t)
+{
+ const Vec3& v_from = from.vector();
+ const Vec3& v_to = to.vector();
+ const double s_from = from.scalar();
+ const double s_to = to.scalar();
+
+ double cosine = v_from*v_to + s_from*s_to;
+
+ if( (1+cosine) < FEQ_EPS )
+ {
+ // The quaternions are (nearly) diametrically opposed. We
+ // treat this specially (based on suggestion in Watt & Watt).
+ //
+ double A = sin( (1-t)*M_PI/2.0 );
+ double B = sin( t*M_PI/2.0 );
+
+ return Quat( A*v_from[0] + B*(-v_from[1]),
+ A*v_from[1] + B*(v_from[0]),
+ A*v_from[2] + B*(-s_from),
+ A*s_from + B*(v_from[2]) );
+ }
+
+ double A, B;
+ if( (1-cosine) < FEQ_EPS )
+ {
+ // The quaternions are very close. Approximate with normal
+ // linear interpolation. This is cheaper and avoids division
+ // by very small numbers.
+ //
+ A = 1.0 - t;
+ B = t;
+ }
+ else
+ {
+ // This is the normal case. Perform SLERP.
+ //
+ double theta = acos(cosine);
+ double sine = sqrt(1 - cosine*cosine);
+
+ A = sin( (1-t)*theta ) / sine;
+ B = sin( t*theta ) / sine;
+
+ }
+
+ return Quat( A*v_from + B*v_to, A*s_from + B*s_to);
+}
+
+} // namespace gfx
diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/raster-jpeg.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/raster-jpeg.cxx
new file mode 100644
index 00000000..d6612ed4
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/src/raster-jpeg.cxx
@@ -0,0 +1,113 @@
+/************************************************************************
+
+ JPEG image file format support.
+
+ The I/O code in this file was originally based on the example.c
+ skeleton code distributed with the JPEG library (release 6b).
+
+ $Id: raster-jpeg.cxx 427 2004-09-27 04:45:31Z garland $
+
+ ************************************************************************/
+
+#include <gfx/gfx.h>
+#include <gfx/raster.h>
+
+namespace gfx {
+// Quality factors are expressed on a 0--100 scale
+int jpeg_output_quality = 100;
+}
+
+#ifdef HAVE_LIBJPEG
+
+#include <stdio.h>
+extern "C" {
+#include <jpeglib.h>
+}
+
+namespace gfx
+{
+
+bool write_jpeg_image(const char *filename, const ByteRaster& img)
+{
+ FILE *outfile = fopen(filename, "wb");
+ if( !outfile ) return false;
+
+ struct jpeg_compress_struct cinfo;
+ struct jpeg_error_mgr jerr;
+
+ cinfo.err = jpeg_std_error(&jerr);
+ jpeg_create_compress(&cinfo);
+ jpeg_stdio_dest(&cinfo, outfile);
+
+ cinfo.image_width = img.width();
+ cinfo.image_height = img.height();
+ cinfo.input_components = img.channels();
+
+ if(img.channels()==1) cinfo.in_color_space = JCS_GRAYSCALE;
+ else if(img.channels()==3) cinfo.in_color_space = JCS_RGB;
+ else cinfo.in_color_space = JCS_UNKNOWN;
+
+ jpeg_set_defaults(&cinfo);
+ jpeg_set_quality(&cinfo, jpeg_output_quality, TRUE);
+
+ jpeg_start_compress(&cinfo, TRUE);
+
+ int row_stride = img.width() * img.channels();
+ const unsigned char *scanline = img.head();
+ while( cinfo.next_scanline < cinfo.image_height )
+ {
+ (void) jpeg_write_scanlines(&cinfo, (JSAMPLE **)&scanline, 1);
+ scanline += row_stride;
+ }
+
+ jpeg_finish_compress(&cinfo);
+ jpeg_destroy_compress(&cinfo);
+ fclose(outfile);
+
+ return true;
+}
+
+ByteRaster *read_jpeg_image(const char *filename)
+{
+ FILE *infile = fopen(filename, "rb");
+ if( !infile ) return NULL;
+
+ struct jpeg_decompress_struct cinfo;
+ struct jpeg_error_mgr jerr;
+ cinfo.err = jpeg_std_error(&jerr);
+
+ jpeg_create_decompress(&cinfo);
+ jpeg_stdio_src(&cinfo, infile);
+
+ (void) jpeg_read_header(&cinfo, TRUE);
+ (void) jpeg_start_decompress(&cinfo);
+
+ ByteRaster *img = new ByteRaster(cinfo.output_width,
+ cinfo.output_height,
+ cinfo.output_components);
+
+ int row_stride = cinfo.output_width * cinfo.output_components;
+ unsigned char *scanline = img->head();
+ while( cinfo.output_scanline < cinfo.output_height)
+ {
+ (void) jpeg_read_scanlines(&cinfo, (JSAMPLE **)&scanline, 1);
+ scanline += row_stride;
+ }
+
+ (void) jpeg_finish_decompress(&cinfo);
+ jpeg_destroy_decompress(&cinfo);
+ fclose(infile);
+ return img;
+}
+
+} // namespace gfx
+
+#else
+
+namespace gfx
+{
+bool write_jpeg_image(const char *, const ByteRaster&) { return false; }
+ByteRaster *read_jpeg_image(const char *) { return NULL; }
+}
+
+#endif
diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/raster-png.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/raster-png.cxx
new file mode 100644
index 00000000..c98da9b1
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/src/raster-png.cxx
@@ -0,0 +1,180 @@
+/************************************************************************
+
+ PNG image file format support.
+
+ The I/O code in this file was originally based on the example.c
+ skeleton code distributed with the PNG library.
+
+ $Id: raster-png.cxx 427 2004-09-27 04:45:31Z garland $
+
+ ************************************************************************/
+
+#include <vector>
+#include <gfx/gfx.h>
+#include <gfx/raster.h>
+
+#ifdef HAVE_LIBPNG
+
+#include <png.h>
+
+namespace gfx
+{
+
+ByteRaster *read_png_image(const char *file_name)
+{
+ FILE *fp = fopen(file_name, "rb");
+ if( !fp ) return NULL;
+
+ // The last three arguments can be used to set up error handling callbacks.
+ png_structp png_ptr =
+ png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
+ if( !png_ptr ) { fclose(fp); return NULL; }
+
+ // Allocate required structure to hold memory information.
+ png_infop info_ptr = png_create_info_struct(png_ptr);
+ if( !info_ptr )
+ {
+ fclose(fp);
+ png_destroy_read_struct(&png_ptr, NULL, NULL);
+ return NULL;
+ }
+
+ // Because we didn't set up any error handlers, we need to be
+ // prepared to handle longjmps out of the library on error
+ // conditions.
+ if( setjmp(png_ptr->jmpbuf) )
+ {
+ png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+ fclose(fp);
+ return NULL;
+ }
+
+ png_init_io(png_ptr, fp);
+
+ // Read in all the image information
+ png_read_info(png_ptr, info_ptr);
+
+ // Get the header for the first image chunk
+ png_uint_32 width, height;
+ int bit_depth, color_type, interlace_type;
+
+ png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type,
+ &interlace_type, NULL, NULL);
+
+
+ ////////////////////////////////////////////////////////////////
+ // the following tell the PNG library how to transform the image
+ // during input
+
+ if( bit_depth == 16 )
+ // truncate 16 bits/pixel to 8 bits/pixel
+ png_set_strip_16(png_ptr);
+
+ if( color_type == PNG_COLOR_TYPE_PALETTE )
+ // expand paletted colors into RGB color values
+ png_set_expand(png_ptr);
+ else if( color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8 )
+ // expand grayscale images to full 8 bits/pixel
+ png_set_expand(png_ptr);
+
+ // Expand paletted or RGB images with transparency to full alpha
+ // channels so the data will be available as RGBA quartets.
+ if( png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS) )
+ png_set_expand(png_ptr);
+
+ // update the palette and info structure
+ png_read_update_info(png_ptr, info_ptr);
+
+
+ // read the image data
+ std::vector<png_bytep> row_pointers(height);
+ int row;
+ int nchan = png_get_channels(png_ptr, info_ptr);
+ int nbytes = png_get_rowbytes(png_ptr, info_ptr);
+
+ for (row = 0; row < height; row++)
+ row_pointers[row] = (png_bytep)malloc(nbytes);
+
+ png_read_image(png_ptr, &row_pointers.front());
+ png_read_end(png_ptr, info_ptr);
+
+ // Read it into a ByteRaster structure
+ ByteRaster *img = new ByteRaster(width, height, nchan);
+
+ unsigned char *pixel = img->pixel(0,0);
+ for(row=0; row<height; row++)
+ {
+ memcpy(pixel, row_pointers[row], nbytes);
+ pixel += nbytes;
+ }
+
+ png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+ for(row=0; row<height; row++) free(row_pointers[row]);
+
+ fclose(fp);
+ return img;
+}
+
+bool write_png_image(const char *file_name, const ByteRaster& img)
+{
+ FILE *fp = fopen(file_name, "wb");
+ if( !fp ) return false;
+
+ png_structp png_ptr =
+ png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
+ if( !png_ptr ) { fclose(fp); return false; }
+
+ png_infop info_ptr = png_create_info_struct(png_ptr);
+ if( !info_ptr )
+ {
+ fclose(fp);
+ png_destroy_write_struct(&png_ptr, (png_infopp)NULL);
+ return false;
+ }
+
+ if( setjmp(png_ptr->jmpbuf) )
+ {
+ fclose(fp);
+ png_destroy_write_struct(&png_ptr, (png_infopp)NULL);
+ return false;
+ }
+
+ png_init_io(png_ptr, fp);
+
+ int img_type = PNG_COLOR_TYPE_RGB;
+ switch( img.channels() )
+ {
+ case 1: img_type=PNG_COLOR_TYPE_GRAY; break;
+ case 2: img_type=PNG_COLOR_TYPE_GRAY_ALPHA; break;
+ case 4: img_type=PNG_COLOR_TYPE_RGB_ALPHA; break;
+ }
+
+ png_set_IHDR(png_ptr, info_ptr,
+ img.width(), img.height(), 8, img_type, PNG_INTERLACE_NONE,
+ PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE);
+
+ png_write_info(png_ptr, info_ptr);
+
+ std::vector<png_bytep> row_pointers(img.height());
+ for(int k=0; k<img.height(); k++)
+ row_pointers[k] = (png_bytep)img.head() +k*img.width()*img.channels();
+
+ png_write_image(png_ptr, &row_pointers.front());
+ png_write_end(png_ptr, info_ptr);
+
+ png_destroy_write_struct(&png_ptr, (png_infopp)NULL);
+ fclose(fp);
+ return true;
+}
+
+} // namespace gfx
+
+#else
+
+namespace gfx
+{
+bool write_png_image(const char *, const ByteRaster&) { return false; }
+ByteRaster *read_png_image(const char *) { return NULL; }
+} // namespace gfx
+
+#endif
diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/raster-pnm.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/raster-pnm.cxx
new file mode 100644
index 00000000..75a88990
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/src/raster-pnm.cxx
@@ -0,0 +1,174 @@
+/************************************************************************
+
+ PNM image file format support
+
+ $Id: raster-pnm.cxx 427 2004-09-27 04:45:31Z garland $
+
+ ************************************************************************/
+
+#include <gfx/gfx.h>
+#include <gfx/raster.h>
+
+#include <fstream>
+
+namespace gfx
+{
+
+using namespace std;
+
+bool will_write_raw_pnm = true;
+
+////////////////////////////////////////////////////////////////////////
+//
+// PNM output routine
+//
+
+bool write_pnm_image(const char *filename, const ByteRaster& img)
+{
+ ofstream out(filename, ios::out|ios::binary);
+ if( !out.good() ) return false;
+
+ bool is_raw = will_write_raw_pnm;
+
+ //
+ // First, write the PNM header.
+ //
+ char magic;
+ if(img.channels() == 1) magic = is_raw ? '5':'2'; // PGM
+ else if(img.channels() < 3) return false; // unsupported
+ else magic = is_raw ? '6':'3'; // truncate to PPM
+
+ out << "P" << magic << " "
+ << img.width() << " " << img.height() << " 255" << endl;
+
+ //
+ // Now, write the PNM data. If there are more than 3 channels,
+ // we'll just write out the first 3 as RGB and ignore the rest.
+ //
+ if( is_raw )
+ {
+ if( img.channels() > 3 )
+ for(int i=0; i<img.length(); i+=img.channels())
+ out.write((const char *)img.pixel(0,0)+i, 3);
+ else
+ out.write((const char *)img.pixel(0,0), img.length());
+ }
+ else
+ {
+ for(int i=0; i<img.length(); i+=img.channels())
+ {
+ out << (int)(img[i]) << " "
+ << (int)(img[i+1]) << " "
+ << (int)(img[i+2]) << endl;
+ }
+ }
+
+ return true;
+}
+
+////////////////////////////////////////////////////////////////////////
+//
+// PNM input routines
+//
+
+static
+istream& pnm_skip(istream& in)
+{
+ for(;;)
+ {
+ in >> ws;
+ if( in.peek() == '#' )
+ in.ignore(65535, '\n');
+ else
+ return in;
+ }
+}
+
+static
+void pnm_read_ascii(istream& in, ByteRaster& img)
+{
+ unsigned char *current = img.head();
+ int val;
+
+ for(int j=0; j<img.height(); j++) for(int i=0; i<img.width(); i++)
+ for(int k=0; k<img.channels(); k++)
+ {
+ pnm_skip(in) >> val;
+ *current++ = (unsigned char)val;
+ }
+}
+
+static
+void pnm_read_ascii(istream& in, ByteRaster& img, float scale)
+{
+ unsigned char *current = img.head();
+ float val;
+
+ for(int j=0; j<img.height(); j++) for(int i=0; i<img.width(); i++)
+ for(int k=0; k<img.channels(); k++)
+ {
+ pnm_skip(in) >> val;
+ *current++ = (unsigned char)(val*scale);
+ }
+}
+
+static
+void pnm_read_raw(istream& in, ByteRaster& img)
+{
+ char c; in.get(c); // extract 1 whitespace character
+
+ //
+ // Is this guaranteed to read all the requested bytes?
+ //
+ in.read((char *)img.head(), img.length());
+}
+
+ByteRaster *read_pnm_image(const char *filename)
+{
+ ifstream in(filename, ios::in|ios::binary);
+ if( !in.good() ) return NULL;
+
+ //
+ // Read the PNM header and allocate and appropriate raster.
+ //
+
+ unsigned char P, N;
+ in >> P >> N;
+
+ if( P!='P' ) return NULL;
+
+ int width, height, maxval;
+ pnm_skip(in) >> width;
+ pnm_skip(in) >> height;
+ pnm_skip(in) >> maxval;
+
+ int magic = N - '0';
+ bool is_raw = magic > 3;
+
+ int channels = 1;
+ if( magic==3 || magic==6 )
+ channels = 3;
+
+ ByteRaster *img = new ByteRaster(width, height, channels);
+
+ //
+ // Read the image data into the raster
+ //
+
+ if( is_raw )
+ {
+ if( maxval>255 ) return NULL;
+
+ // BUG: We ignore the scaling implied by maxval<255
+
+ pnm_read_raw(in, *img);
+ }
+ else if( maxval==255 )
+ pnm_read_ascii(in, *img);
+ else
+ pnm_read_ascii(in, *img, 255.0f/(float)maxval);
+
+ return img;
+}
+
+} // namespace gfx
diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/raster-tiff.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/raster-tiff.cxx
new file mode 100644
index 00000000..a0005849
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/src/raster-tiff.cxx
@@ -0,0 +1,158 @@
+/************************************************************************
+
+ TIFF image file format support.
+
+ $Id: raster-tiff.cxx 427 2004-09-27 04:45:31Z garland $
+
+ ************************************************************************/
+
+#include <gfx/gfx.h>
+#include <gfx/raster.h>
+#include <cstring>
+
+#ifdef HAVE_LIBTIFF
+#include <tiffio.h>
+
+namespace gfx
+{
+
+////////////////////////////////////////////////////////////////////////
+//
+// TIFF output
+//
+static
+bool __tiff_write(TIFF *tif, const ByteRaster& img)
+{
+ TIFFSetField(tif, TIFFTAG_IMAGEWIDTH, img.width());
+ TIFFSetField(tif, TIFFTAG_IMAGELENGTH, img.height());
+
+ TIFFSetField(tif, TIFFTAG_ORIENTATION, ORIENTATION_TOPLEFT);
+ TIFFSetField(tif, TIFFTAG_SAMPLESPERPIXEL, img.channels());
+ TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, 8);
+ TIFFSetField(tif, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);
+ TIFFSetField(tif, TIFFTAG_PHOTOMETRIC,
+ img.channels()==1 ? PHOTOMETRIC_MINISBLACK : PHOTOMETRIC_RGB);
+
+#ifdef HAVE_LIBTIFF_LZW
+ //
+ // LZW compression is problematic because it is patented by Unisys.
+ TIFFSetField(tif, TIFFTAG_COMPRESSION, COMPRESSION_LZW);
+ //
+ // Predictors:
+ // 1 (default) -- No predictor
+ // 2 -- Horizontal differencing
+ TIFFSetField(tif, TIFFTAG_PREDICTOR, 2);
+#endif
+
+ uint32 scanline_size = img.channels() * img.width();
+ if( TIFFScanlineSize(tif) != scanline_size )
+ // ??BUG: Can this mismatch of scanline sizes every occur?
+ return false;
+
+
+ TIFFSetField(tif, TIFFTAG_ROWSPERSTRIP, TIFFDefaultStripSize(tif, 0));
+
+ char *scanline_buf = new char[scanline_size];
+
+ const unsigned char *scanline = img.head();
+ for(int y=0; y<img.height(); y++)
+ {
+ memcpy(scanline_buf, scanline, scanline_size);
+ // NOTE: TIFFWriteScanline modifies the buffer you pass it.
+ // Thus, we need to copy stuff out of the raster first.
+ TIFFWriteScanline(tif, scanline_buf, y, 0);
+ scanline += scanline_size;
+ }
+ delete[] scanline_buf;
+
+ return true;
+}
+
+bool write_tiff_image(const char *filename, const ByteRaster& img)
+{
+ TIFF *tif = TIFFOpen(filename, "w");
+ if( !tif ) return false;
+
+ bool result = __tiff_write(tif, img);
+
+ TIFFClose(tif);
+
+ return result;
+}
+
+////////////////////////////////////////////////////////////////////////
+//
+// TIFF input
+//
+static
+void unpack_tiff_raster(uint32 *raster, ByteRaster *img, int npixels)
+{
+ unsigned char *pix = img->head();
+
+ for(int i=0; i<npixels; i++)
+ {
+ *pix++ = TIFFGetR(raster[i]);
+ if( img->channels() >= 3 )
+ {
+ *pix++ = TIFFGetG(raster[i]);
+ *pix++ = TIFFGetB(raster[i]);
+ if( img->channels() == 4 )
+ *pix++ = TIFFGetA(raster[i]);
+ }
+ }
+}
+
+static
+ByteRaster *__tiff_read(TIFF *tif)
+{
+ uint32 w, h;
+ uint16 nchan;
+ TIFFGetField(tif, TIFFTAG_IMAGEWIDTH, &w);
+ TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &h);
+ TIFFGetField(tif, TIFFTAG_SAMPLESPERPIXEL, &nchan);
+
+ int npixels = w*h;
+
+ uint32 *raster = (uint32 *)_TIFFmalloc(npixels * sizeof(uint32));
+ if( !raster ) return NULL;
+
+ TIFFReadRGBAImage(tif, w, h, raster, true);
+
+ ByteRaster *img = new ByteRaster(w, h, nchan);
+ unpack_tiff_raster(raster, img, npixels);
+ //
+ // libtiff returned the pixels with the origin in the lower left
+ // rather than the upper left corner. We fix that by flipping the
+ // pixels.
+ //
+ img->vflip();
+
+
+ _TIFFfree(raster);
+
+ return img;
+}
+
+ByteRaster *read_tiff_image(const char *filename)
+{
+ TIFF *tif = TIFFOpen(filename, "r");
+ if( !tif ) return NULL;
+
+ ByteRaster *img = __tiff_read(tif);
+
+ TIFFClose(tif);
+
+ return img;
+}
+
+} // namespace gfx
+
+#else
+
+namespace gfx
+{
+bool write_tiff_image(const char *, const ByteRaster&) { return false; }
+ByteRaster *read_tiff_image(const char *) { return NULL; }
+}
+
+#endif
diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/raster.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/raster.cxx
new file mode 100644
index 00000000..e5a15228
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/src/raster.cxx
@@ -0,0 +1,113 @@
+/************************************************************************
+
+ Raster image support.
+
+ $Id: raster.cxx 427 2004-09-27 04:45:31Z garland $
+
+ ************************************************************************/
+
+#include <gfx/gfx.h>
+#include <gfx/raster.h>
+
+#include <string>
+#include <cctype>
+#include <cstring>
+
+namespace gfx
+{
+
+ByteRaster::ByteRaster(const ByteRaster &img)
+ : Raster<unsigned char>(img.width(), img.height(), img.channels())
+{
+ memcpy(head(), img.head(), img.length()*sizeof(unsigned char));
+}
+
+ByteRaster::ByteRaster(const FloatRaster &img)
+ : Raster<unsigned char>(img.width(), img.height(), img.channels())
+{
+ for(int i=0; i<length(); i++ )
+ (*this)[i] = (unsigned char) (255.0f * img[i]);
+}
+
+FloatRaster::FloatRaster(const ByteRaster &img)
+ : Raster<float>(img.width(), img.height(), img.channels())
+{
+ for(int i=0; i<length(); i++)
+ (*this)[i] = (float)img[i] / 255.0f;
+}
+
+FloatRaster::FloatRaster(const FloatRaster &img)
+ : Raster<float>(img.width(), img.height(), img.channels())
+{
+ memcpy(head(), img.head(), img.length()*sizeof(float));
+}
+
+////////////////////////////////////////////////////////////////////////
+//
+// Table of supported formats
+//
+
+
+
+static char *img_names[] = {"PPM", "PNG", "TIFF", "JPEG"};
+static char *img_ext[] = {"ppm", "png", "tif", "jpg"};
+
+const char *image_type_name(int type)
+ { return type>=IMG_LIMIT ? NULL : img_names[type]; }
+
+const char *image_type_ext(int type)
+ { return type>=IMG_LIMIT ? NULL : img_ext[type]; }
+
+
+int infer_image_type(const char *filename)
+{
+ const char *ext = strrchr(filename, '.');
+ if( !ext ) return -1;
+
+ // Make sure extension is lower case
+ std::string lo(ext+1);
+ for(int i=0; i<lo.length(); i++) lo[i] = tolower(lo[i]);
+
+ // Search for extension in the table
+ for(int typ=0; typ<IMG_LIMIT; typ++)
+ if(lo == img_ext[typ]) return typ;
+
+ // Test for alternatives
+ if(lo=="tiff") return IMG_TIFF;
+
+ // Unknown type
+ return -1;
+}
+
+
+bool write_image(const char *filename, const ByteRaster& img, int type)
+{
+ if( type<0 )
+ type = infer_image_type(filename);
+
+ switch( type )
+ {
+ case IMG_PNM: return write_pnm_image(filename, img);
+ case IMG_PNG: return write_png_image(filename, img);
+ case IMG_TIFF: return write_tiff_image(filename, img);
+ case IMG_JPEG: return write_jpeg_image(filename, img);
+ default: return false;
+ }
+}
+
+ByteRaster *read_image(const char *filename, int type)
+{
+ if( type<0 )
+ type = infer_image_type(filename);
+
+ switch( type )
+ {
+ case IMG_PNM: return read_pnm_image(filename);
+ case IMG_PNG: return read_png_image(filename);
+ case IMG_TIFF: return read_tiff_image(filename);
+ case IMG_JPEG: return read_jpeg_image(filename);
+ default: return NULL;
+ }
+}
+
+} // namespace gfx
diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/script.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/script.cxx
new file mode 100644
index 00000000..5f1bdff2
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/src/script.cxx
@@ -0,0 +1,295 @@
+#include <gfx/script.h>
+#include <fstream>
+
+#if !defined(HAVE_SSTREAM) && defined(HAVE_STRSTREAM)
+# include <strstream>
+typedef istrstream istringstream;
+#else
+# include <sstream>
+#endif
+
+#ifdef HAVE_GZSTREAM
+# include <gzstream.h>
+#endif
+
+namespace gfx
+{
+
+using namespace std;
+
+
+////////////////////////////////////////////////////////////////////////
+//
+// CmdLine methods -- These implement all the basic line manipulations
+//
+
+string CmdLine::token_to_string(int i) const { return substr(tokens[i]); }
+
+string CmdLine::rest_to_string(int i) const
+{
+ return line.substr(tokens[i].first);
+}
+
+double CmdLine::token_to_double(int i) const
+ { string str = substr(tokens[i]); return atof(str.c_str()); }
+
+float CmdLine::token_to_float(int i) const
+ { string str = substr(tokens[i]); return atof(str.c_str()); }
+
+int CmdLine::token_to_int(int i) const
+ { string str = substr(tokens[i]); return atoi(str.c_str()); }
+
+string CmdLine::argline() const
+{
+ if( argcount() == 0 ) return "";
+
+ index_type start = tokens.front().first;
+ index_type end = tokens.back().second;
+ return substr(range_type(start, end));
+}
+
+int CmdLine::collect_as_strings(vector<string> &v, int offset) const
+{
+ for(int i=offset; i<tokens.size(); i++)
+ v.push_back( substr(tokens[i]) );
+ return tokens.size();
+}
+
+int CmdLine::collect_as_numbers(vector<double> &v, int offset) const
+{
+ for(int i=offset; i<tokens.size(); i++)
+ v.push_back(token_to_double(i));
+ return tokens.size();
+}
+
+int CmdLine::collect_as_numbers(vector<int> &v, int offset) const
+{
+ for(int i=offset; i<tokens.size(); i++)
+ v.push_back(token_to_int(i));
+ return tokens.size();
+}
+
+int CmdLine::collect_as_numbers(double *v, int size, int offset) const
+{
+ int i;
+ for(i=0; (i+offset)<tokens.size() && i<size; i++)
+ v[i] = token_to_double(i+offset);
+ return i;
+}
+
+int CmdLine::collect_as_numbers(float *v, int size, int offset) const
+{
+ int i;
+ for(i=0; (i+offset)<tokens.size() && i<size; i++)
+ v[i] = token_to_float(i+offset);
+ return i;
+}
+
+int CmdLine::collect_as_numbers(int *v, int size, int offset) const
+{
+ int i;
+ for(i=0; (i+offset)<tokens.size() && i<size; i++)
+ v[i] = token_to_int(i+offset);
+ return i;
+}
+
+////////////////////////////////////////////////////////////////////////
+//
+// CmdEnv methods -- Minimal interface supported by all environments
+//
+
+void CmdEnv::register_command(const std::string& name, CmdObject *fn)
+{
+ script_commands[name] = fn;
+}
+
+void CmdEnv::register_command(const std::string& name, CmdHandler proc)
+{
+ register_command(name, new CmdFunction(proc));
+}
+
+CmdObject *CmdEnv::lookup_command(const std::string& name)
+{
+ CmdTable::const_iterator iter = script_commands.find(name);
+
+ return iter!=script_commands.end() ? iter->second : NULL;
+}
+
+static int ignored(const CmdLine& line) { return SCRIPT_OK; }
+
+void CmdEnv::ignore_command(const std::string& name)
+{
+ register_command(name, ignored);
+}
+
+void CmdEnv::register_vocabulary(const std::string& name, CmdEnv *env)
+{
+ register_method(name, env, &CmdEnv::script_eval);
+}
+
+CmdEnv::CmdEnv()
+{
+ register_method("include", this, &CmdEnv::script_include);
+ register_method("ignore", this, &CmdEnv::script_ignore);
+ register_method("end", this, &CmdEnv::script_end);
+}
+
+CmdEnv::~CmdEnv()
+{
+ // Free all the CmdObject's held by script_commands
+ //
+ for(CmdTable::iterator i = script_commands.begin();
+ i != script_commands.end(); ++i)
+ {
+ CmdObject *obj = i->second;
+ delete obj;
+ }
+}
+
+int CmdEnv::script_include(const CmdLine& cmd)
+{
+ if( cmd.argcount() != 1 ) return SCRIPT_ERR_SYNTAX;
+
+ string filename = cmd.token_to_string(0);
+ return do_file(cmd.token_to_string(0));
+}
+
+int CmdEnv::script_ignore(const CmdLine& cmd)
+{
+ for(int i=0; i<cmd.argcount(); ++i)
+ {
+ string name = cmd.token_to_string(i);
+ ignore_command(name);
+ }
+
+ return SCRIPT_OK;
+}
+
+int CmdEnv::script_end(const CmdLine& cmd)
+{
+ return SCRIPT_END;
+}
+
+int CmdEnv::script_eval(const CmdLine& cmd)
+{
+ return do_line(cmd.argline());
+}
+
+void CmdEnv::begin_scope(CmdEnv *sub) { scopes.push_back(sub); }
+
+void CmdEnv::end_scope()
+{
+ if( scopes.size() > 0 )
+ {
+ CmdEnv *sub = scopes.back();
+ scopes.pop_back();
+ delete sub;
+ }
+}
+
+////////////////////////////////////////////////////////////////////////
+//
+// Toplevel functions -- extract and execute scripting commands
+//
+
+int CmdEnv::do_line(const string &line)
+{
+ CmdEnv& env = *this;
+
+ // Pass this line off to the sub-scope (if any)
+ if( scopes.size() > 0 && scopes.back() )
+ {
+ int rc = scopes.back()->do_line(line);
+ if( rc==SCRIPT_END )
+ {
+ end_scope();
+ rc = SCRIPT_OK;
+ }
+ return rc;
+ }
+
+ const char *ws = " \t\n\r";
+ string::size_type start, end;
+
+ // First, process the initial (command) token
+ start = line.find_first_not_of(ws);
+
+ // Only continue processing if line is a non-empty, non-comment line
+ if( start!=string::npos && line[start]!='#' )
+ {
+ end = line.find_first_of(ws, start);
+ string op = line.substr(start, end-start);
+
+ CmdObject *fn = env.lookup_command(op);
+ if( !fn ) return SCRIPT_ERR_UNDEF;
+
+ CmdLine argv(line);
+ argv.op = CmdLine::range_type(start, end);
+
+ while(1)
+ {
+ start = line.find_first_not_of(ws, end);
+ if( start==string::npos ) break;
+ end = line.find_first_of(ws, start);
+
+ argv.tokens.push_back( CmdLine::range_type(start, end) );
+ }
+
+ return (*fn)(argv);
+ }
+
+ return SCRIPT_OK;
+}
+
+int CmdEnv::do_stream(istream &in)
+{
+ string line;
+
+ while( !in.eof() )
+ {
+ getline(in, line);
+ if( in.fail() ) break;
+
+ int rc = do_line(line);
+ if( rc != SCRIPT_OK )
+ {
+ cerr << "Script Error: " << line << endl;
+ return rc;
+ }
+ }
+
+ return SCRIPT_OK;
+}
+
+int CmdEnv::do_file(const std::string& filename)
+{
+#ifdef HAVE_GZSTREAM
+ if( !filename.compare(filename.size()-3, 3, ".gz") ||
+ !filename.compare(filename.size()-2, 2, ".z") ||
+ !filename.compare(filename.size()-2, 2, ".Z") )
+ {
+ igzstream in(filename.c_str());
+ if( in.good() ) return do_stream(in);
+ else return SCRIPT_ERR_NOFILE;
+ }
+ else
+ {
+ ifstream in(filename.c_str());
+ if( in.good() ) return do_stream(in);
+ else return SCRIPT_ERR_NOFILE;
+ }
+#else
+ ifstream in(filename.c_str());
+ if( in.good() ) return do_stream(in);
+ else return SCRIPT_ERR_NOFILE;
+#endif
+}
+
+int CmdEnv::do_string(const std::string& str)
+{
+ istringstream in(str.c_str());
+ if( in.good() ) return CmdEnv::do_stream(in);
+ else return SCRIPT_ERR_NOFILE;
+}
+
+} // namespace gfx
diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/symmat2.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/symmat2.cxx
new file mode 100644
index 00000000..df923f33
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/src/symmat2.cxx
@@ -0,0 +1,61 @@
+#include <gfx/gfx.h>
+#include <gfx/symmat2.h>
+
+namespace gfx
+{
+
+SymMat2 SymMat2::I()
+{
+ SymMat2 A;
+ A(0,0) = A(1,1) = 1;
+ return A;
+}
+
+Mat2 SymMat2::fullmatrix() const
+{
+ Mat2 A;
+
+ for(int i=0; i<A.dim(); i++)
+ for(int j=0; j<A.dim(); j++)
+ A(i, j) = (*this)(i,j);
+
+ return A;
+}
+
+SymMat2 operator*(const SymMat2& n, const SymMat2& m)
+{
+ SymMat2 A;
+ for(int i=0; i<2; i++) for(int j=i; j<2; j++)
+ A(i,j) = n.row(i)*m.col(j);
+ return A;
+}
+
+std::ostream &operator<<(std::ostream &out, const SymMat2& M)
+{
+ for(int i=0; i<M.dim(); i++)
+ {
+ for(int j=0; j<M.dim(); j++)
+ out << M(i, j) << " ";
+ out << std::endl;
+ }
+
+ return out;
+}
+
+SymMat2 SymMat2::outer_product(const Vec2& v)
+{
+ SymMat2 A;
+
+ for(int i=0; i<A.dim(); i++)
+ for(int j=i; j<A.dim(); j++)
+ A(i, j) = v[i]*v[j];
+
+ return A;
+}
+
+double invert(Mat2& m_inv, const SymMat2& m)
+{
+ return invert(m_inv, m.fullmatrix());
+}
+
+} // namespace gfx
diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/symmat3.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/symmat3.cxx
new file mode 100644
index 00000000..36c684e3
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/src/symmat3.cxx
@@ -0,0 +1,61 @@
+#include <gfx/gfx.h>
+#include <gfx/symmat3.h>
+
+namespace gfx
+{
+
+SymMat3 SymMat3::I()
+{
+ SymMat3 A;
+ A(0,0) = A(1,1) = A(2,2) = 1;
+ return A;
+}
+
+Mat3 SymMat3::fullmatrix() const
+{
+ Mat3 A;
+
+ for(int i=0; i<A.dim(); i++)
+ for(int j=0; j<A.dim(); j++)
+ A(i, j) = (*this)(i,j);
+
+ return A;
+}
+
+SymMat3 operator*(const SymMat3& n, const SymMat3& m)
+{
+ SymMat3 A;
+ for(int i=0; i<3; i++) for(int j=i; j<3; j++)
+ A(i,j) = n.row(i)*m.col(j);
+ return A;
+}
+
+std::ostream &operator<<(std::ostream &out, const SymMat3& M)
+{
+ for(int i=0; i<M.dim(); i++)
+ {
+ for(int j=0; j<M.dim(); j++)
+ out << M(i, j) << " ";
+ out << std::endl;
+ }
+
+ return out;
+}
+
+SymMat3 SymMat3::outer_product(const Vec3& v)
+{
+ SymMat3 A;
+
+ for(int i=0; i<A.dim(); i++)
+ for(int j=i; j<A.dim(); j++)
+ A(i, j) = v[i]*v[j];
+
+ return A;
+}
+
+double invert(Mat3& m_inv, const SymMat3& m)
+{
+ return invert(m_inv, m.fullmatrix());
+}
+
+} // namespace gfx
diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/symmat4.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/symmat4.cxx
new file mode 100644
index 00000000..d8483017
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/src/symmat4.cxx
@@ -0,0 +1,52 @@
+/************************************************************************
+
+ 4X4 Symmetric Matrix class
+
+ $Id: symmat4.cxx 427 2004-09-27 04:45:31Z garland $
+
+ ************************************************************************/
+#include <gfx/symmat4.h>
+
+namespace gfx
+{
+
+SymMat4 SymMat4::I()
+{
+ SymMat4 A;
+ A(0,0) = A(1,1) = A(2,2) = A(3,3) = 1;
+ return A;
+}
+
+Mat4 SymMat4::fullmatrix() const
+{
+ Mat4 temp;
+ for (int i=0; i<4; i++)
+ for (int j=0; j<4; j++)
+ temp(i,j) = (*this) (i,j);
+ return temp;
+}
+
+SymMat4 SymMat4::outer_product(const Vec4& v)
+{
+ SymMat4 tmp;
+ for(int i=0; i<4; i++)
+ for(int j=0; j<4; j++)
+ tmp(i,j)=v[i]*v[j];
+ return tmp;
+}
+
+SymMat4 operator* (const SymMat4& n, const SymMat4& m)
+{
+ SymMat4 temp;
+ for (int i=0; i<4; i++)
+ for(int j=0; j<4; j++)
+ temp(i,j)=n.row(i) * m.col(j);
+ return temp;
+}
+
+double invert(Mat4& m_inv, const SymMat4& m)
+{
+ return invert(m_inv, m.fullmatrix());
+}
+
+} // namespace gfx
diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/time.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/time.cxx
new file mode 100644
index 00000000..cbbea1c5
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/src/time.cxx
@@ -0,0 +1,86 @@
+/************************************************************************
+
+ Routines for measuring time.
+
+ $Id: time.cxx 427 2004-09-27 04:45:31Z garland $
+
+ ************************************************************************/
+
+#include <gfx/gfx.h>
+
+#if defined(WIN32)
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+
+namespace gfx
+{
+// Only Windows NT supports getting proper time usage information.
+// In Windows 95, we have to settle for measuring real time.
+double get_cpu_time()
+{
+ FILETIME start, end, kernel, user;
+
+ if( !GetThreadTimes(GetCurrentThread(), &start, &end, &kernel, &user) )
+ {
+ // We're running under Windows 95 instead of NT.
+ // Just get the current time and be done with it.
+ SYSTEMTIME now;
+ GetSystemTime(&now);
+ SystemTimeToFileTime(&now, &user);
+ }
+
+ // Convert into something we can do math on
+ LARGE_INTEGER i;
+ i.LowPart = user.dwLowDateTime;
+ i.HighPart = user.dwHighDateTime;
+
+#ifdef __GNUC__
+
+ // The Win32 headers shipped with GCC don't define the QuadPart
+ // accessor for the LARGE_INTEGER type. So we have to build it
+ // directly.
+ long long quad = i.HighPart;
+ quad = (quad << 32) + i.LowPart;
+ return (double)quad / 1e7;
+#else
+ // Convert to seconds and return
+ return (double)(i.QuadPart) / 1e7;
+#endif
+}
+}
+
+#elif defined(HAVE_GETRUSAGE)
+#include <sys/time.h>
+#include <sys/resource.h>
+
+namespace gfx
+{
+double get_cpu_time()
+{
+ struct rusage t;
+
+ getrusage(RUSAGE_SELF, &t);
+
+ return (double)t.ru_utime.tv_sec + (double)t.ru_utime.tv_usec/1000000;
+}
+}
+
+#elif defined(HAVE_TIMES)
+
+namespace gfx
+{
+double get_cpu_time()
+{
+ struct tms t;
+
+ times(&t);
+
+ return (double)(t.tms_utime) / (double)CLK_TCK;
+}
+}
+
+#else
+
+#error "No supported timing mechanism available."
+
+#endif
diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/trackball.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/trackball.cxx
new file mode 100644
index 00000000..40615660
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/src/trackball.cxx
@@ -0,0 +1,153 @@
+/************************************************************************
+
+ Virtual Trackball for manipulating objects on the screen.
+
+ This code is based on the virtual trackball mechanism developed by
+ Gavin Bell of Silicon Graphics.
+
+ $Id: trackball.cxx 427 2004-09-27 04:45:31Z garland $
+
+ ************************************************************************/
+
+#include <gfx/gfx.h>
+#include <gfx/gl.h>
+#include <gfx/trackball.h>
+
+namespace gfx
+{
+
+static
+float proj_to_sphere(float r, float x, float y)
+{
+ // This is a magic number taken from the SGI trackball.
+ //
+ const float MAGIC_RLIMIT = 0.70710678118654752440f;
+
+ // Project (x,y) onto a sphere of radius r or a hyperbolic sheet
+ // if the point is far enough away from the origin.
+ //
+ float d = sqrt(x*x + y*y);
+ if (d < r * MAGIC_RLIMIT )
+ {
+ // Inside sphere
+ return sqrt(r*r - d*d);
+ }
+ else
+ {
+ // On hyperbola
+ float t = r * MAGIC_RLIMIT;
+ return t*t / d;
+ }
+}
+
+//
+// This is the core routine that actually simulates the action of the
+// trackball. It projects the given coordinates onto the trackball
+// surface, and computes an appropriate rotation.
+//
+// NOTE: This uses the combined spherical/hyperbolic trackball surface
+// used in the SGI trackball.
+//
+void trackball(Quat& q, float p1x, float p1y, float p2x, float p2y)
+{
+ if (p1x == p2x && p1y == p2y)
+ {
+ q = Quat::ident();
+ return;
+ }
+
+ // This is a magic number taken from the SGI trackball source.
+ // Here is the original explanation of this constant:
+ //
+ // This size should really be based on the distance from the
+ // center of rotation to the point on the object underneath
+ // the mouse. That point would then track the mouse as
+ // closely as possible. This is a simple example, though, so
+ // that is left as an Exercise for the Programmer.
+ //
+ const float TRACKBALLSIZE = 0.8f;
+
+ // Project the window coordinates onto the trackball surface.
+ //
+ Vec3 p1(p1x,p1y,proj_to_sphere(TRACKBALLSIZE,p1x,p1y));
+ Vec3 p2(p2x,p2y,proj_to_sphere(TRACKBALLSIZE,p2x,p2y));
+
+ // And how much do we rotate?
+ //
+ float t = norm(p1-p2) / (2.0*TRACKBALLSIZE);
+ if (t > 1.0) t = 1.0;
+ if (t < -1.0) t = -1.0;
+
+ // Convert this axis/angle rotation to a quaternion.
+ //
+ q = axis_to_quat(p2^p1, 2.0*asin(t));
+}
+
+static
+void add_quats(const Quat& q1, const Quat& q2, Quat& dest)
+{
+ dest = q2*q1;
+ unitize(dest);
+}
+
+////////////////////////////////////////////////////////////////////////
+//
+// Encapsulate the standard interface of the trackball to simplify
+// its use in most applications.
+//
+
+Trackball::Trackball()
+{
+}
+
+void Trackball::update_animation()
+{
+ add_quats(lastquat, curquat, curquat);
+}
+
+bool Trackball::mouse_up(int *where, int which)
+{
+ return false;
+}
+
+bool Trackball::mouse_down(int *where, int which)
+{
+ if( which==1 )
+ lastquat = Quat::ident();
+
+ return false;
+}
+
+bool Trackball::mouse_drag(int *where, int *last, int which)
+{
+ float vp[4];
+ glGetFloatv(GL_VIEWPORT, vp);
+ float W=vp[2], H=vp[3];
+
+ float diam = 2*radius;
+
+ if( which==1 )
+ {
+ trackball(lastquat,
+ (2.0 * last[0] - W)/W,
+ (H - 2.0 * last[1])/H,
+ (2.0 * where[0] - W)/W,
+ (H - 2.0 * where[1])/H);
+ add_quats(lastquat, curquat, curquat);
+ }
+ else if( which==2 )
+ {
+ trans[0] += diam * (where[0] - last[0]) / W;
+ trans[1] += diam * (last[1] - where[1]) / H;
+ }
+ else if( which==3 )
+ {
+ trans[2] += 0.02*diam*(where[1] - last[1]);
+ }
+ else
+ return false;
+
+ return true;
+}
+
+} // namespace gfx
diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/wintools.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/wintools.cxx
new file mode 100644
index 00000000..dc4fae15
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/src/wintools.cxx
@@ -0,0 +1,88 @@
+/************************************************************************
+
+ Support code for handling various tasks under Win32
+
+ $Id: wintools.cxx 427 2004-09-27 04:45:31Z garland $
+
+ ************************************************************************/
+
+#include <gfx/win/wintools.h>
+
+namespace gfx
+{
+
+HGLRC create_glcontext(HDC dc)
+{
+ HGLRC context = wglCreateContext(dc);
+ if( context )
+ {
+ if( !wglMakeCurrent(dc, context) )
+ {
+ // Destroy context if it fails to bind
+ wglDeleteContext(context);
+ context = NULL;
+ }
+ }
+
+ return context;
+}
+
+int set_pixel_format(HDC dc)
+{
+ PIXELFORMATDESCRIPTOR pixelDesc;
+
+ //
+ // These are the important fields of the PFD
+ //
+ pixelDesc.nSize = sizeof(PIXELFORMATDESCRIPTOR);
+ pixelDesc.nVersion = 1;
+
+ pixelDesc.dwFlags =
+ PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL |
+ PFD_DOUBLEBUFFER | PFD_STEREO_DONTCARE;
+ pixelDesc.iPixelType = PFD_TYPE_RGBA;
+ pixelDesc.cColorBits = 24;
+ pixelDesc.iLayerType = PFD_MAIN_PLANE;
+
+ //
+ // According to the docs, these can be/are ignored.
+ //
+ pixelDesc.cRedBits = 8;
+ pixelDesc.cRedShift = 16;
+ pixelDesc.cGreenBits = 8;
+ pixelDesc.cGreenShift = 8;
+ pixelDesc.cBlueBits = 8;
+ pixelDesc.cBlueShift = 0;
+ pixelDesc.cAlphaBits = 0;
+ pixelDesc.cAlphaShift = 0;
+ pixelDesc.cAccumBits = 0;
+ pixelDesc.cAccumRedBits = 0;
+ pixelDesc.cAccumGreenBits = 0;
+ pixelDesc.cAccumBlueBits = 0;
+ pixelDesc.cAccumAlphaBits = 0;
+ pixelDesc.cDepthBits = 32;
+ pixelDesc.cStencilBits = 0;
+ pixelDesc.cAuxBuffers = 0;
+ pixelDesc.bReserved = 0;
+ pixelDesc.dwLayerMask = 0;
+ pixelDesc.dwVisibleMask = 0;
+ pixelDesc.dwDamageMask = 0;
+
+
+ int pixel_format = ChoosePixelFormat(dc, &pixelDesc);
+ if( !pixel_format )
+ {
+ // Try and guess a decent default pixel format
+ pixel_format = 1;
+ if( !DescribePixelFormat(dc, pixel_format,
+ sizeof(PIXELFORMATDESCRIPTOR), &pixelDesc) )
+ return NULL;
+ }
+
+ if( !SetPixelFormat(dc, pixel_format, &pixelDesc) )
+ return NULL;
+
+ return pixel_format;
+}
+
+} // namespace gfx
diff --git a/debian/fireflies/fireflies-2.08/libgfx/tests/Makefile b/debian/fireflies/fireflies-2.08/libgfx/tests/Makefile
new file mode 100644
index 00000000..f3386fab
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/tests/Makefile
@@ -0,0 +1,42 @@
+# Include the 'gfx-config' file to get all the correct build settings
+include ../gfx-config
+
+SRCS = t-vec.cxx t-img.cxx t-gui.cxx t-glimg.cxx t-script.cxx t-glext.cxx
+ALL = $(SRCS:.cxx=)
+
+all: $(ALL)
+
+t-vec: t-vec.cxx
+ $(CXX) -o $@ $^ $(CXXFLAGS) $(LDFLAGS) -lgfx -lm
+
+t-script: t-script.cxx
+ $(CXX) -o $@ $^ $(CXXFLAGS) $(LDFLAGS) -lgfx -lm
+
+t-img: t-img.cxx
+ $(CXX) -o $@ $^ $(CXXFLAGS) $(LDFLAGS) -lgfx $(IMG_LIBS) -lm
+
+#
+# GUI programs should make the appropriate post-build call to
+# $(FLTKCONFIG). On most platforms, this does nothing, but under
+# Mac OS X, it is essential to make GUI programs launch correctly.
+#
+
+t-gui: t-gui.cxx
+ $(CXX) -o $@ $^ $(CXXFLAGS) $(LDFLAGS) -lgfx $(GUI_LIBS) -lm
+ $(FLTKCONFIG) --post $@
+
+t-glext: t-glext.cxx
+ $(CXX) -o $@ $^ $(CXXFLAGS) $(LDFLAGS) -lgfx $(GUI_LIBS) -lm
+ $(FLTKCONFIG) --post $@
+
+t-glimg: t-glimg.cxx
+ $(CXX) -o $@ $^ $(CXXFLAGS) $(LDFLAGS) -lgfx $(GUI_LIBS) -lm
+ $(FLTKCONFIG) --post $@
+
+# This is just a standard mechanism to correctly track the dependencies
+# of the source files.
+#
+depend:
+ $(CXX_DEPEND) $(SRCS) > Makefile.dep
+
+-include Makefile.dep
diff --git a/debian/fireflies/fireflies-2.08/libgfx/tests/t-glext.cxx b/debian/fireflies/fireflies-2.08/libgfx/tests/t-glext.cxx
new file mode 100644
index 00000000..82b40000
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/tests/t-glext.cxx
@@ -0,0 +1,82 @@
+/************************************************************************
+
+ Test the availability of various OpenGL extensions
+
+ by Michael Garland, 2001.
+
+ $Id: t-glext.cxx 426 2004-09-27 04:34:55Z garland $
+
+ ************************************************************************/
+
+#include <gfx/gui.h>
+#include <gfx/glext.h>
+#include <string>
+#include <fstream>
+
+using namespace std;
+
+class GUI : public MxGUI
+{
+public:
+
+ virtual void setup_for_drawing();
+};
+
+GUI gui;
+
+static void dump_string(ostream &out, const string& str)
+{
+ const char *ws = " \t\n\r";
+ string::size_type start, end;
+
+ start = 0;
+ end = str.find_first_of(ws, start);
+
+ while( end!=string::npos )
+ {
+ out << " " << str.substr(start, end-start) << endl;
+ start = str.find_first_not_of(ws, end);
+ end = str.find_first_of(ws, start);
+ }
+}
+
+void GUI::setup_for_drawing()
+{
+ ofstream log("glext.txt");
+
+ string gl_extensions = (char *)glGetString(GL_EXTENSIONS);
+
+ log << "OpenGL extensions" << endl
+ << "-----------------" << endl;
+ dump_string(log, gl_extensions);
+ log << endl << endl;
+
+
+#ifdef HAVE_GL_WGLEXT_H
+ PFNWGLGETEXTENSIONSSTRINGARBPROC wglGetExtensionsStringARB =
+ (PFNWGLGETEXTENSIONSSTRINGARBPROC)
+ wglGetProcAddress("wglGetExtensionsStringARB");
+
+ if( !wglGetExtensionsStringARB )
+ {
+ log << "Couldn't find wglGetExtensionsStringARB." << endl;
+ exit(-1);
+ }
+ else
+ {
+ string wgl_extensions = wglGetExtensionsStringARB(wglGetCurrentDC());
+
+ log << "WGL extensions" << endl
+ << "--------------" << endl;
+ dump_string(log, wgl_extensions);
+ }
+#endif
+
+ exit(0);
+}
+
+int main(int argc, char **argv)
+{
+ gui.initialize(argc, argv);
+ return gui.run();
+}
diff --git a/debian/fireflies/fireflies-2.08/libgfx/tests/t-glimg.cxx b/debian/fireflies/fireflies-2.08/libgfx/tests/t-glimg.cxx
new file mode 100644
index 00000000..706441c2
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/tests/t-glimg.cxx
@@ -0,0 +1,149 @@
+/************************************************************************
+
+ This is a very simplistic image viewer. It uses libgfx routines to
+ read a set of image files specified on the command line. These images
+ are then displayed in a window using OpenGL image operations.
+
+ by Michael Garland, 2000.
+
+ $Id: t-glimg.cxx 426 2004-09-27 04:34:55Z garland $
+
+ ************************************************************************/
+
+#include <gfx/gfx.h>
+#include <gfx/gui.h>
+#include <gfx/raster.h>
+
+#include <string>
+#include <vector>
+#include <FL/filename.H>
+
+class GUI : public MxGUI
+{
+public:
+ std::vector<ByteRaster *> images;
+ std::vector<std::string> image_names;
+ int current_image;
+
+ virtual ~GUI();
+
+ virtual void update_animation();
+ virtual void cmdline_file(const char *file);
+ virtual void setup_for_drawing();
+ virtual void draw_contents();
+
+ void set_image(int i);
+};
+
+GUI gui;
+
+GUI::~GUI()
+{
+ for(int i=0; i<images.size(); i++)
+ if( images[i] )
+ delete images[i];
+}
+
+static void cb_image(Fl_Widget *, long i)
+ { gui.set_image(i); gui.canvas->redraw(); }
+
+void GUI::set_image(int i)
+{
+ current_image = i;
+
+ if(current_image<0 || current_image>=images.size()) return;
+ ByteRaster *img = images[current_image];
+
+ int width = img->width();
+ int height = img->height();
+
+ gui.status(image_names[current_image].c_str());
+
+ if( width!=canvas->w() || height!=canvas->h() )
+ {
+ unlock_size();
+ resize_canvas(width, height);
+ lock_size();
+ }
+}
+
+void GUI::cmdline_file(const char *namestring)
+{
+ if(!namestring) return; // Don't support reading from stdin
+
+ static std::string img_menu("&Images/");
+ std::string filename(fl_filename_name(namestring)); // Strip directories
+
+ ByteRaster *img = read_image(namestring);
+ if( img )
+ {
+ int id = images.size();
+ images.push_back(img);
+ image_names.push_back(namestring);
+
+ int key = id<9 ? FL_CTRL+'1'+id : 0;
+
+
+ gui.menu_bar->add((img_menu+filename).c_str(), key,
+ (Fl_Callback *)cb_image, (void *)id, FL_MENU_RADIO);
+ }
+}
+
+void GUI::update_animation()
+{
+ set_image((current_image+1) % images.size());
+}
+
+void GUI::setup_for_drawing()
+{
+ glClearColor(0.9f, 0.0f, 0.0f, 0.0f);
+ glDisable(GL_DEPTH_TEST);
+ glDisable(GL_LIGHTING);
+ glPixelZoom(1.0f, -1.0f);
+
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+}
+
+static void draw_image(const ByteRaster *img)
+{
+ GLenum format;
+ if(img->channels()==1) format = GL_LUMINANCE;
+ else if(img->channels()==3) format = GL_RGB;
+ else if(img->channels()==4) format = GL_RGBA;
+ else return; // Don't draw unsupported formats
+
+ glPushAttrib(GL_PIXEL_MODE_BIT);
+ glRasterPos2f(0, img->height());
+ glDrawPixels(img->width(), img->height(),
+ format, GL_UNSIGNED_BYTE, img->head());
+ glPopAttrib();
+
+}
+
+void GUI::draw_contents()
+{
+ glClear(GL_COLOR_BUFFER_BIT);
+
+ if(current_image<0 || current_image>=images.size()) return;
+ ByteRaster *img = images[current_image];
+
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ gluOrtho2D(0, img->width(), 0, img->height());
+
+ draw_image(img);
+}
+
+int main(int argc, char **argv)
+{
+ gui.initialize(argc, argv);
+ if(gui.images.size() == 0) return 0; // Exit if no images read
+
+ gui.title("OpenGL Image Viewer");
+
+ gui.default_fps = 1.0f;
+ gui.set_image(0);
+
+ return gui.run();
+}
diff --git a/debian/fireflies/fireflies-2.08/libgfx/tests/t-gui.cxx b/debian/fireflies/fireflies-2.08/libgfx/tests/t-gui.cxx
new file mode 100644
index 00000000..296fe3b2
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/tests/t-gui.cxx
@@ -0,0 +1,130 @@
+/************************************************************************
+
+ This is a simple program which demonstrates the use of the MxGUI
+ minimalist GUI framework. The application presents a window with a
+ rotating square that can be moved around with the mouse.
+
+ by Michael Garland, 1999.
+
+ $Id: t-gui.cxx 400 2004-02-16 16:31:35Z garland $
+
+ ************************************************************************/
+
+#include <gfx/gfx.h>
+#include <gfx/gui.h>
+#include <gfx/gltools.h>
+
+class GUI : public MxGUI
+{
+public:
+ float angle, opt_theta, center[2];
+ bool dragging;
+
+public:
+ virtual void setup_for_drawing();
+ virtual void draw_contents();
+ virtual void update_animation();
+
+ virtual bool mouse_down(int *where, int which);
+ virtual bool mouse_up(int *where, int which);
+ virtual bool mouse_drag(int *where, int *last, int which);
+};
+
+GUI gui;
+
+void GUI::setup_for_drawing()
+{
+ glClearColor(0.65f, 0.65f, 0.65f, 0.0f);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+
+ glMatrixMode(GL_PROJECTION);
+ gluOrtho2D(-1.0, 1.0, -1.0, 1.0);
+}
+
+void GUI::draw_contents()
+{
+ glClear(GL_COLOR_BUFFER_BIT);
+
+ glMatrixMode(GL_MODELVIEW);
+ glPushMatrix();
+ glLoadIdentity();
+
+ glColor3f(0.0, 0.0, 0.0);
+ glBegin(GL_LINES);
+ glVertex2f(-1.0, 0.0);
+ glVertex2f(1.0, 0.0);
+ glVertex2f(0.0, -1.0);
+ glVertex2f(0.0, 1.0);
+ glEnd();
+
+ glTranslatef(center[0], center[1], 0);
+ glRotatef(angle, 0, 0, 1);
+
+ glEnable(GL_BLEND);
+ glColor4d(0.8, 0.15, 0.15, 0.85);
+ glBegin(dragging?GL_LINE_LOOP:GL_POLYGON);
+ glBegin(GL_POLYGON);
+ glVertex2f(-0.5, -0.5);
+ glVertex2f(-0.5, 0.5);
+ glVertex2f(0.5, 0.5);
+ glVertex2f(0.5, -0.5);
+ glEnd();
+ glDisable(GL_BLEND);
+
+ glPopMatrix();
+}
+
+void GUI::update_animation()
+{
+ angle += opt_theta;
+}
+
+static
+bool center_on_click(float *ctr, int *where)
+{
+ double world[3];
+
+ unproject_pixel(where, world);
+ ctr[0] = (float)world[0];
+ ctr[1] = (float)world[1];
+
+ return true;
+}
+
+bool GUI::mouse_down(int *where, int which)
+{
+ status("Clicked mouse %d at %d,%d", which, where[0], where[1]);
+ if( which==1 )
+ {
+ dragging = true;
+ return center_on_click(center, where);
+ }
+ else return false;
+}
+
+bool GUI::mouse_up(int *where, int which)
+{
+ status("Released mouse %d at %d,%d", which, where[0], where[1]);
+ dragging = false;
+ return (which==1);
+}
+
+bool GUI::mouse_drag(int *where, int *last, int which)
+{
+ if( which==1 )
+ return center_on_click(center, where);
+ else
+ return false;
+}
+
+int main(int argc, char **argv)
+{
+ gui.opt_theta = 10.0f;
+ gui.angle = 0.0f;
+ gui.dragging = false;
+ gui.center[0] = gui.center[1] = 0.0f;
+
+ gui.initialize(argc, argv);
+ gui.toplevel->label("Simple GUI Example");
+ return gui.run();
+}
diff --git a/debian/fireflies/fireflies-2.08/libgfx/tests/t-img.cxx b/debian/fireflies/fireflies-2.08/libgfx/tests/t-img.cxx
new file mode 100644
index 00000000..113cea8c
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/tests/t-img.cxx
@@ -0,0 +1,82 @@
+/************************************************************************
+
+ The images produced by this test are checkboard gradients. They
+ ramp from black in the upper left corner to full color in the lower
+ right corner.
+
+ by Michael Garland, 1999.
+
+ $Id: t-img.cxx 426 2004-09-27 04:34:55Z garland $
+
+ ************************************************************************/
+
+#include <gfx/gfx.h>
+#include <gfx/raster.h>
+
+static
+void grayscale_test()
+{
+ ByteRaster img(256, 256, 1);
+
+ int i, j, c;
+
+ for(i=0; i<img.height(); i++) for(j=0; j<img.width(); j++)
+ {
+ c = ((((i&0x8)==0)^((j&0x8))==0))*(i+j)/2;
+ img.pixel(j,i)[0] = c;
+ }
+
+ write_pnm_image("chex1.pgm", img);
+ write_tiff_image("chex1.tif", img);
+ write_png_image("chex1.png", img);
+ write_jpeg_image("chex1.jpg", img);
+
+ ByteRaster *pgm = read_pnm_image("chex1.pgm");
+ ByteRaster *tif = read_tiff_image("chex1.tif");
+ ByteRaster *png = read_png_image("chex1.png");
+ ByteRaster *jpg = read_jpeg_image("chex1.jpg");
+
+ if( pgm ) write_pnm_image("chex1-dup.pgm", *pgm);
+ if( tif ) write_tiff_image("chex1-dup.tif", *tif);
+ if( png ) write_png_image("chex1-dup.png", *png);
+ if( jpg ) write_jpeg_image("chex1-dup.jpg", *jpg);
+}
+
+static
+void rgb_test()
+{
+ ByteRaster img(256, 256, 3);
+
+ int i, j, c;
+
+ for(i=0; i<img.height(); i++) for(j=0; j<img.width(); j++)
+ {
+ c = ((((i&0x8)==0)^((j&0x8))==0))*(i+j)/2;
+ img.pixel(j,i)[0] = c;
+ img.pixel(j,i)[1] = c/2;
+ img.pixel(j,i)[2] = c/4;
+ }
+
+ write_pnm_image("chex3.ppm", img);
+ write_tiff_image("chex3.tif", img);
+ write_png_image("chex3.png", img);
+ write_jpeg_image("chex3.jpg", img);
+
+ ByteRaster *ppm = read_pnm_image("chex3.ppm");
+ ByteRaster *tif = read_tiff_image("chex3.tif");
+ ByteRaster *png = read_png_image("chex3.png");
+ ByteRaster *jpg = read_jpeg_image("chex3.jpg");
+
+ if( ppm ) write_pnm_image("chex3-dup.ppm", *ppm);
+ if( tif ) write_tiff_image("chex3-dup.tif", *tif);
+ if( png ) write_png_image("chex3-dup.png", *png);
+ if( jpg ) write_jpeg_image("chex3-dup.jpg", *jpg);
+}
+
+int main()
+{
+ grayscale_test();
+ rgb_test();
+
+ return 0;
+}
diff --git a/debian/fireflies/fireflies-2.08/libgfx/tests/t-script.cxx b/debian/fireflies/fireflies-2.08/libgfx/tests/t-script.cxx
new file mode 100644
index 00000000..42b9ad83
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/tests/t-script.cxx
@@ -0,0 +1,74 @@
+/************************************************************************
+
+ Test the libgfx scripting facility.
+
+ by Michael Garland, 2000.
+
+ $Id: t-script.cxx 426 2004-09-27 04:34:55Z garland $
+
+ ************************************************************************/
+
+#include <gfx/gfx.h>
+#include <gfx/script.h>
+#include <gfx/vec3.h>
+
+using namespace std;
+
+// usage: add <x>*
+// Adds all numbers listed on the line and prints the result
+//
+// usage: avg <x>*
+// Averages all numbers listed on the line and prints the result
+//
+int proc_add(const CmdLine &cmd)
+{
+ std::vector<double> values;
+ double sum = 0.0;
+
+ cmd.collect_as_numbers(values);
+ std::vector<double>::size_type count;
+ for(count=0; count<values.size(); count++)
+ sum += values[count];
+
+ if( cmd.opname() == "avg" && count>0 )
+ sum /= (double)count;
+
+ cout << sum << endl;
+ return SCRIPT_OK;
+}
+
+// usage: vec3 <x> <y> <z>
+// Constructs a 3-vector and prints the result
+int proc_vec3(const CmdLine &cmd)
+{
+ if( cmd.argcount() != 3 ) return SCRIPT_ERR_SYNTAX;
+
+ Vec3 v;
+ cmd.collect_as_numbers(v, 3);
+
+ cout << v << endl;
+ return SCRIPT_OK;
+}
+
+// usage: echo <msg>
+// Prints all the text following the command name verbatim
+int proc_echo(const CmdLine &cmd)
+{
+ cout << cmd.argline() << endl;
+ return SCRIPT_OK;
+}
+
+int main(int argc, char *argv[])
+{
+ CmdEnv env;
+
+ env.register_command("add", proc_add);
+ env.register_command("avg", proc_add);
+ env.register_command("echo", proc_echo);
+ env.register_command("vec3", proc_vec3);
+
+ for(int i=1; i<argc; i++)
+ env.do_file(argv[i]);
+
+ return 0;
+}
diff --git a/debian/fireflies/fireflies-2.08/libgfx/tests/t-vec.cxx b/debian/fireflies/fireflies-2.08/libgfx/tests/t-vec.cxx
new file mode 100644
index 00000000..434c97d3
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/tests/t-vec.cxx
@@ -0,0 +1,78 @@
+/************************************************************************
+
+ Test various vector math facilities provided by libgfx.
+
+ by Michael Garland, 2000.
+
+ $Id: t-vec.cxx 426 2004-09-27 04:34:55Z garland $
+
+ ************************************************************************/
+
+#include <gfx/gfx.h>
+
+#include <gfx/vec2.h>
+#include <gfx/vec3.h>
+#include <gfx/vec4.h>
+#include <gfx/intvec.h>
+
+using namespace std;
+
+void test_intvec()
+{
+ cout << "Testing IntVec types" << endl;
+
+ class Normal : public IntVec<short, SHRT_MAX, 3>
+ {
+ public:
+ Normal(const Vec3& v) { (*this) = v; }
+
+ Vec3 unpack() const { return Vec3((*this)[0],(*this)[1],(*this)[2]); }
+ void pack(const Vec3& v)
+ { set(0, v[0]); set(1, v[1]); set(2, v[2]); }
+
+ Normal& operator=(const Vec3& v) { pack(v); return *this; }
+ };
+
+ Normal n = Vec3(1.0, 0.4, -1.0);
+ cout << " n = " << n.unpack() << endl;
+
+ n.set(0, -1.0); n.set(1, 0.4); n.set(2, 1);
+ cout << " n = " << n[0] << " " << n[1] << " " << n[2] << endl;
+
+
+ typedef IntVec3<unsigned char, UCHAR_MAX> byteColor;
+ byteColor rgb(0.8, 0.2, 0.2);
+ cout << " rgb = " << rgb.unpack() << endl;
+}
+
+template<class Vec>
+void test_vector()
+{
+ Vec u = 0;
+ Vec v = 0;
+
+ u[0] = 1;
+ v[1] = 1;
+
+ Vec x = u * 2.0;
+ Vec y = v / 2.0;
+
+ cout << " x = " << x << endl;
+ cout << " y = " << y << endl;
+}
+
+int main()
+{
+ cout << "+ Testing class Vec2" << endl;
+ test_vector<Vec2>();
+
+ cout << "+ Testing class Vec3" << endl;
+ test_vector<Vec3>();
+
+ cout << "+ Testing class Vec4" << endl;
+ test_vector<Vec4>();
+
+ test_intvec();
+
+ return 0;
+}
diff --git a/debian/fireflies/fireflies-2.08/libgfx/tests/test1.sc b/debian/fireflies/fireflies-2.08/libgfx/tests/test1.sc
new file mode 100644
index 00000000..489f8cb5
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/tests/test1.sc
@@ -0,0 +1,17 @@
+# This is a test script meant to be fed to t-script. It is not meant as an
+# exhaustive test, but mainly as a demonstration.
+#
+# $Id: test1.sc 170 2000-09-06 21:43:25Z garland $
+#
+
+echo The following sum should be 15
+add 1 2 3 4 5
+
+echo
+echo The following average should be 3.5
+avg 3 8 2 1
+
+echo
+echo The following is the vector [1 0 0]
+vec3 1 0 0
+
diff --git a/debian/fireflies/fireflies-2.08/libgfx/vc6/libgfx.dsw b/debian/fireflies/fireflies-2.08/libgfx/vc6/libgfx.dsw
new file mode 100644
index 00000000..3e8d4588
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/vc6/libgfx.dsw
@@ -0,0 +1,89 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "libgfx"=.\libgfx\libgfx.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "tglimg"=.\tglimg\tglimg.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name libgfx
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "tgui"=.\tgui\tgui.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name libgfx
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "tscript"=.\tscript\tscript.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name libgfx
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "tvec"=.\tvec\tvec.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name libgfx
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/debian/fireflies/fireflies-2.08/libgfx/vc6/libgfx/libgfx.dsp b/debian/fireflies/fireflies-2.08/libgfx/vc6/libgfx/libgfx.dsp
new file mode 100644
index 00000000..d2200d55
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/vc6/libgfx/libgfx.dsp
@@ -0,0 +1,236 @@
+# Microsoft Developer Studio Project File - Name="libgfx" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=libgfx - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "libgfx.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "libgfx.mak" CFG="libgfx - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "libgfx - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "libgfx - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "libgfx - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /I "../../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE RSC /l 0x409
+# ADD RSC /l 0x409
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "libgfx - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /Z7 /Od /I "../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE RSC /l 0x409
+# ADD RSC /l 0x409
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "libgfx - Win32 Release"
+# Name "libgfx - Win32 Debug"
+# Begin Group "Header Files"
+
+# PROP Default_Filter "*.h"
+# Begin Source File
+
+SOURCE=..\..\include\gfx\arcball.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\array.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\baseball.h
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\include\gfx\config-vc.h"
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\geom3d.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\gfx.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\gl.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\gltools.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\gui.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\intvec.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\mat2.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\mat3.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\mat4.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\quat.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\raster.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\script.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\trackball.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\vec2.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\vec3.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\vec4.h
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=..\..\src\arcball.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\baseball.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\geom3d.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\gltools.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\gui.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\mat2.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\mat3.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\mat4.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\quat.cxx
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\src\raster-jpeg.cxx"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\src\raster-png.cxx"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\src\raster-pnm.cxx"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\src\raster-tiff.cxx"
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\raster.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\script.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\time.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\trackball.cxx
+# End Source File
+# End Target
+# End Project
diff --git a/debian/fireflies/fireflies-2.08/libgfx/vc6/libgfxmfc/libgfx.dsp b/debian/fireflies/fireflies-2.08/libgfx/vc6/libgfxmfc/libgfx.dsp
new file mode 100644
index 00000000..ac91f0c3
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/vc6/libgfxmfc/libgfx.dsp
@@ -0,0 +1,252 @@
+# Microsoft Developer Studio Project File - Name="libgfxmfc" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=libgfxmfc - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "libgfx.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "libgfx.mak" CFG="libgfxmfc - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "libgfxmfc - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "libgfxmfc - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "libgfxmfc - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE RSC /l 0x409
+# ADD RSC /l 0x409
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "libgfxmfc - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE RSC /l 0x409
+# ADD RSC /l 0x409
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "libgfxmfc - Win32 Release"
+# Name "libgfxmfc - Win32 Debug"
+# Begin Group "Header Files"
+
+# PROP Default_Filter "*.h"
+# Begin Source File
+
+SOURCE=..\..\include\gfx\arcball.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\array.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\baseball.h
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\include\gfx\config-vc.h"
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\geom3d.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\gfx.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\gl.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\gltools.h
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\include\gfx\gui-mfc.h"
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\gui.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\intvec.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\mat2.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\mat3.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\mat4.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\mfc.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\quat.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\raster.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\script.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\trackball.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\vec2.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\vec3.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\vec4.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\wintools.h
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=..\..\src\arcball.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\baseball.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\geom3d.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\gltools.cxx
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\src\gui-mfc.cxx"
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\mat2.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\mat3.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\mat4.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\quat.cxx
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\src\raster-jpeg.cxx"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\src\raster-png.cxx"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\src\raster-pnm.cxx"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\src\raster-tiff.cxx"
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\raster.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\script.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\time.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\trackball.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\wintools.cxx
+# End Source File
+# End Target
+# End Project
diff --git a/debian/fireflies/fireflies-2.08/libgfx/vc6/tglimg/tglimg.dsp b/debian/fireflies/fireflies-2.08/libgfx/vc6/tglimg/tglimg.dsp
new file mode 100644
index 00000000..e656e067
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/vc6/tglimg/tglimg.dsp
@@ -0,0 +1,95 @@
+# Microsoft Developer Studio Project File - Name="tglimg" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Application" 0x0101
+
+CFG=tglimg - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "tglimg.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "tglimg.mak" CFG="tglimg - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "tglimg - Win32 Release" (based on "Win32 (x86) Application")
+!MESSAGE "tglimg - Win32 Debug" (based on "Win32 (x86) Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "tglimg - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /I "../../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
+# ADD LINK32 fltk.lib fltkgl.lib libtiff.lib libjpeg.lib libpng.lib zlib.lib opengl32.lib glu32.lib wsock32.lib comctl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
+
+!ELSEIF "$(CFG)" == "tglimg - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 fltk_d.lib fltkgl_d.lib libtiff_d.lib libjpeg_d.lib libpng_d.lib zlib_d.lib opengl32.lib glu32.lib wsock32.lib comctl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
+
+!ENDIF
+
+# Begin Target
+
+# Name "tglimg - Win32 Release"
+# Name "tglimg - Win32 Debug"
+# Begin Source File
+
+SOURCE="..\..\tests\t-glimg.cxx"
+# End Source File
+# End Target
+# End Project
diff --git a/debian/fireflies/fireflies-2.08/libgfx/vc6/tgui/tgui.dsp b/debian/fireflies/fireflies-2.08/libgfx/vc6/tgui/tgui.dsp
new file mode 100644
index 00000000..9998e23d
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/vc6/tgui/tgui.dsp
@@ -0,0 +1,95 @@
+# Microsoft Developer Studio Project File - Name="tgui" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Application" 0x0101
+
+CFG=tgui - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "tgui.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "tgui.mak" CFG="tgui - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "tgui - Win32 Release" (based on "Win32 (x86) Application")
+!MESSAGE "tgui - Win32 Debug" (based on "Win32 (x86) Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "tgui - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /I "../../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
+# ADD LINK32 fltk.lib fltkgl.lib libtiff.lib libjpeg.lib libpng.lib zlib.lib opengl32.lib glu32.lib wsock32.lib comctl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
+
+!ELSEIF "$(CFG)" == "tgui - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 fltk_d.lib fltkgl_d.lib libtiff_d.lib libjpeg_d.lib libpng_d.lib zlib_d.lib opengl32.lib glu32.lib wsock32.lib comctl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
+
+!ENDIF
+
+# Begin Target
+
+# Name "tgui - Win32 Release"
+# Name "tgui - Win32 Debug"
+# Begin Source File
+
+SOURCE="..\..\tests\t-gui.cxx"
+# End Source File
+# End Target
+# End Project
diff --git a/debian/fireflies/fireflies-2.08/libgfx/vc6/tmfc/tmfc.dsp b/debian/fireflies/fireflies-2.08/libgfx/vc6/tmfc/tmfc.dsp
new file mode 100644
index 00000000..5be064ef
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/vc6/tmfc/tmfc.dsp
@@ -0,0 +1,116 @@
+# Microsoft Developer Studio Project File - Name="tmfc" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Application" 0x0101
+
+CFG=tmfc - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "tmfc.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "tmfc.mak" CFG="tmfc - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "tmfc - Win32 Release" (based on "Win32 (x86) Application")
+!MESSAGE "tmfc - Win32 Debug" (based on "Win32 (x86) Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "tmfc - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 2
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_AFXDLL" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
+# ADD LINK32 opengl32.lib glu32.lib /nologo /subsystem:windows /machine:I386
+
+!ELSEIF "$(CFG)" == "tmfc - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 2
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_AFXDLL" /YX /FD /GZ /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 opengl32.lib glu32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
+
+!ENDIF
+
+# Begin Target
+
+# Name "tmfc - Win32 Release"
+# Name "tmfc - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cxx;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE="..\..\tests\t-mfc.cxx"
+
+!IF "$(CFG)" == "tmfc - Win32 Release"
+
+!ELSEIF "$(CFG)" == "tmfc - Win32 Debug"
+
+# ADD CPP /MLd
+
+!ENDIF
+
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project
diff --git a/debian/fireflies/fireflies-2.08/libgfx/vc6/tscript/tscript.dsp b/debian/fireflies/fireflies-2.08/libgfx/vc6/tscript/tscript.dsp
new file mode 100644
index 00000000..7cd3d363
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/vc6/tscript/tscript.dsp
@@ -0,0 +1,88 @@
+# Microsoft Developer Studio Project File - Name="tscript" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=tscript - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "tscript.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "tscript.mak" CFG="tscript - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "tscript - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "tscript - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "tscript - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /I "../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+
+!ELSEIF "$(CFG)" == "tscript - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+
+!ENDIF
+
+# Begin Target
+
+# Name "tscript - Win32 Release"
+# Name "tscript - Win32 Debug"
+# Begin Source File
+
+SOURCE="..\..\tests\t-script.cxx"
+# End Source File
+# End Target
+# End Project
diff --git a/debian/fireflies/fireflies-2.08/libgfx/vc6/tvec/tvec.dsp b/debian/fireflies/fireflies-2.08/libgfx/vc6/tvec/tvec.dsp
new file mode 100644
index 00000000..81c3cd1c
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/vc6/tvec/tvec.dsp
@@ -0,0 +1,88 @@
+# Microsoft Developer Studio Project File - Name="tvec" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=tvec - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "tvec.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "tvec.mak" CFG="tvec - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "tvec - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "tvec - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "tvec - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /I "../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+
+!ELSEIF "$(CFG)" == "tvec - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+
+!ENDIF
+
+# Begin Target
+
+# Name "tvec - Win32 Release"
+# Name "tvec - Win32 Debug"
+# Begin Source File
+
+SOURCE="..\..\tests\t-vec.cxx"
+# End Source File
+# End Target
+# End Project
diff --git a/debian/fireflies/fireflies-2.08/libgfx/vc7/libgfx.sln b/debian/fireflies/fireflies-2.08/libgfx/vc7/libgfx.sln
new file mode 100644
index 00000000..e9c0bf09
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/vc7/libgfx.sln
@@ -0,0 +1,57 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libgfx", "libgfx\libgfx.vcproj", "{81A1BD6D-E2F6-4CCB-90C6-B4DCED78E38B}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tglimg", "tglimg\tglimg.vcproj", "{EC337A90-E000-4154-A535-43E385E3332E}"
+ ProjectSection(ProjectDependencies) = postProject
+ {81A1BD6D-E2F6-4CCB-90C6-B4DCED78E38B} = {81A1BD6D-E2F6-4CCB-90C6-B4DCED78E38B}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tgui", "tgui\tgui.vcproj", "{213DD15E-5BC0-401D-B213-9EDBBD632EE0}"
+ ProjectSection(ProjectDependencies) = postProject
+ {81A1BD6D-E2F6-4CCB-90C6-B4DCED78E38B} = {81A1BD6D-E2F6-4CCB-90C6-B4DCED78E38B}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tscript", "tscript\tscript.vcproj", "{16EBB0D5-45C6-4E81-AFD1-29F73C5CB877}"
+ ProjectSection(ProjectDependencies) = postProject
+ {81A1BD6D-E2F6-4CCB-90C6-B4DCED78E38B} = {81A1BD6D-E2F6-4CCB-90C6-B4DCED78E38B}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tvec", "tvec\tvec.vcproj", "{8AC9018F-D751-490B-84E0-118E30F50058}"
+ ProjectSection(ProjectDependencies) = postProject
+ {81A1BD6D-E2F6-4CCB-90C6-B4DCED78E38B} = {81A1BD6D-E2F6-4CCB-90C6-B4DCED78E38B}
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ Debug = Debug
+ Release = Release
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {81A1BD6D-E2F6-4CCB-90C6-B4DCED78E38B}.Debug.ActiveCfg = Debug|Win32
+ {81A1BD6D-E2F6-4CCB-90C6-B4DCED78E38B}.Debug.Build.0 = Debug|Win32
+ {81A1BD6D-E2F6-4CCB-90C6-B4DCED78E38B}.Release.ActiveCfg = Release|Win32
+ {81A1BD6D-E2F6-4CCB-90C6-B4DCED78E38B}.Release.Build.0 = Release|Win32
+ {EC337A90-E000-4154-A535-43E385E3332E}.Debug.ActiveCfg = Debug|Win32
+ {EC337A90-E000-4154-A535-43E385E3332E}.Debug.Build.0 = Debug|Win32
+ {EC337A90-E000-4154-A535-43E385E3332E}.Release.ActiveCfg = Release|Win32
+ {EC337A90-E000-4154-A535-43E385E3332E}.Release.Build.0 = Release|Win32
+ {213DD15E-5BC0-401D-B213-9EDBBD632EE0}.Debug.ActiveCfg = Debug|Win32
+ {213DD15E-5BC0-401D-B213-9EDBBD632EE0}.Debug.Build.0 = Debug|Win32
+ {213DD15E-5BC0-401D-B213-9EDBBD632EE0}.Release.ActiveCfg = Release|Win32
+ {213DD15E-5BC0-401D-B213-9EDBBD632EE0}.Release.Build.0 = Release|Win32
+ {16EBB0D5-45C6-4E81-AFD1-29F73C5CB877}.Debug.ActiveCfg = Debug|Win32
+ {16EBB0D5-45C6-4E81-AFD1-29F73C5CB877}.Debug.Build.0 = Debug|Win32
+ {16EBB0D5-45C6-4E81-AFD1-29F73C5CB877}.Release.ActiveCfg = Release|Win32
+ {16EBB0D5-45C6-4E81-AFD1-29F73C5CB877}.Release.Build.0 = Release|Win32
+ {8AC9018F-D751-490B-84E0-118E30F50058}.Debug.ActiveCfg = Debug|Win32
+ {8AC9018F-D751-490B-84E0-118E30F50058}.Debug.Build.0 = Debug|Win32
+ {8AC9018F-D751-490B-84E0-118E30F50058}.Release.ActiveCfg = Release|Win32
+ {8AC9018F-D751-490B-84E0-118E30F50058}.Release.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
diff --git a/debian/fireflies/fireflies-2.08/libgfx/vc7/libgfx/libgfx.vcproj b/debian/fireflies/fireflies-2.08/libgfx/vc7/libgfx/libgfx.vcproj
new file mode 100644
index 00000000..54e73131
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/vc7/libgfx/libgfx.vcproj
@@ -0,0 +1,505 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="libgfx"
+ SccProjectName=""
+ SccLocalPath="">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\Debug"
+ IntermediateDirectory=".\Debug"
+ ConfigurationType="4"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Debug/libgfx.pch"
+ AssemblerListingLocation=".\Debug/"
+ ObjectFile=".\Debug/"
+ ProgramDataBaseFileName=".\Debug/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="1"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile=".\Debug\libgfx.lib"
+ SuppressStartupBanner="TRUE"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\Release"
+ IntermediateDirectory=".\Release"
+ ConfigurationType="4"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="../../include"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Release/libgfx.pch"
+ AssemblerListingLocation=".\Release/"
+ ObjectFile=".\Release/"
+ ProgramDataBaseFileName=".\Release/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile=".\Release\libgfx.lib"
+ SuppressStartupBanner="TRUE"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Header Files"
+ Filter="*.h">
+ <File
+ RelativePath="..\..\include\gfx\arcball.h">
+ </File>
+ <File
+ RelativePath="..\..\include\gfx\array.h">
+ </File>
+ <File
+ RelativePath="..\..\include\gfx\baseball.h">
+ </File>
+ <File
+ RelativePath="..\..\include\gfx\config-vc.h">
+ </File>
+ <File
+ RelativePath="..\..\include\gfx\geom3d.h">
+ </File>
+ <File
+ RelativePath="..\..\include\gfx\gfx.h">
+ </File>
+ <File
+ RelativePath="..\..\include\gfx\gl.h">
+ </File>
+ <File
+ RelativePath="..\..\include\gfx\gltools.h">
+ </File>
+ <File
+ RelativePath="..\..\include\gfx\gui.h">
+ </File>
+ <File
+ RelativePath="..\..\include\gfx\intvec.h">
+ </File>
+ <File
+ RelativePath="..\..\include\gfx\mat2.h">
+ </File>
+ <File
+ RelativePath="..\..\include\gfx\mat3.h">
+ </File>
+ <File
+ RelativePath="..\..\include\gfx\mat4.h">
+ </File>
+ <File
+ RelativePath="..\..\include\gfx\quat.h">
+ </File>
+ <File
+ RelativePath="..\..\include\gfx\raster.h">
+ </File>
+ <File
+ RelativePath="..\..\include\gfx\script.h">
+ </File>
+ <File
+ RelativePath="..\..\include\gfx\trackball.h">
+ </File>
+ <File
+ RelativePath="..\..\include\gfx\vec2.h">
+ </File>
+ <File
+ RelativePath="..\..\include\gfx\vec3.h">
+ </File>
+ <File
+ RelativePath="..\..\include\gfx\vec4.h">
+ </File>
+ </Filter>
+ <File
+ RelativePath="..\..\src\arcball.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\src\baseball.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\src\geom3d.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\src\gltools.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\src\gui.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\src\mat2.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\src\mat3.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\src\mat4.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\src\quat.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\src\raster-jpeg.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\src\raster-png.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\src\raster-pnm.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\src\raster-tiff.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\src\raster.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\src\script.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\src\time.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\src\trackball.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/debian/fireflies/fireflies-2.08/libgfx/vc7/tglimg/tglimg.vcproj b/debian/fireflies/fireflies-2.08/libgfx/vc7/tglimg/tglimg.vcproj
new file mode 100644
index 00000000..d826f12d
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/vc7/tglimg/tglimg.vcproj
@@ -0,0 +1,166 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="tglimg"
+ SccProjectName=""
+ SccLocalPath="">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\Debug"
+ IntermediateDirectory=".\Debug"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Debug/tglimg.pch"
+ AssemblerListingLocation=".\Debug/"
+ ObjectFile=".\Debug/"
+ ProgramDataBaseFileName=".\Debug/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="4"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="fltk_d.lib fltkgl_d.lib libtiff_d.lib libjpeg_d.lib libpng_d.lib zlib_d.lib opengl32.lib glu32.lib wsock32.lib comctl32.lib odbc32.lib odbccp32.lib"
+ OutputFile=".\Debug/tglimg.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\Debug/tglimg.pdb"
+ SubSystem="2"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="_DEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Debug/tglimg.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\Release"
+ IntermediateDirectory=".\Release"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="../../include"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Release/tglimg.pch"
+ AssemblerListingLocation=".\Release/"
+ ObjectFile=".\Release/"
+ ProgramDataBaseFileName=".\Release/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="fltk.lib fltkgl.lib libtiff.lib libjpeg.lib libpng.lib zlib.lib opengl32.lib glu32.lib wsock32.lib comctl32.lib odbc32.lib odbccp32.lib"
+ OutputFile=".\Release/tglimg.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ ProgramDatabaseFile=".\Release/tglimg.pdb"
+ SubSystem="2"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Release/tglimg.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\..\tests\t-glimg.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/debian/fireflies/fireflies-2.08/libgfx/vc7/tgui/tgui.vcproj b/debian/fireflies/fireflies-2.08/libgfx/vc7/tgui/tgui.vcproj
new file mode 100644
index 00000000..9fe715b4
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/vc7/tgui/tgui.vcproj
@@ -0,0 +1,166 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="tgui"
+ SccProjectName=""
+ SccLocalPath="">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\Release"
+ IntermediateDirectory=".\Release"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="../../include"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Release/tgui.pch"
+ AssemblerListingLocation=".\Release/"
+ ObjectFile=".\Release/"
+ ProgramDataBaseFileName=".\Release/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="fltk.lib fltkgl.lib libtiff.lib libjpeg.lib libpng.lib zlib.lib opengl32.lib glu32.lib wsock32.lib comctl32.lib odbc32.lib odbccp32.lib"
+ OutputFile=".\Release/tgui.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ ProgramDatabaseFile=".\Release/tgui.pdb"
+ SubSystem="2"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Release/tgui.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\Debug"
+ IntermediateDirectory=".\Debug"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Debug/tgui.pch"
+ AssemblerListingLocation=".\Debug/"
+ ObjectFile=".\Debug/"
+ ProgramDataBaseFileName=".\Debug/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="4"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="fltk_d.lib fltkgl_d.lib libtiff_d.lib libjpeg_d.lib libpng_d.lib zlib_d.lib opengl32.lib glu32.lib wsock32.lib comctl32.lib odbc32.lib odbccp32.lib"
+ OutputFile=".\Debug/tgui.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\Debug/tgui.pdb"
+ SubSystem="2"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="_DEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Debug/tgui.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\..\tests\t-gui.cxx">
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/debian/fireflies/fireflies-2.08/libgfx/vc7/tscript/tscript.vcproj b/debian/fireflies/fireflies-2.08/libgfx/vc7/tscript/tscript.vcproj
new file mode 100644
index 00000000..2b918e7d
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/vc7/tscript/tscript.vcproj
@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="tscript"
+ SccProjectName=""
+ SccLocalPath="">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\Debug"
+ IntermediateDirectory=".\Debug"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Debug/tscript.pch"
+ AssemblerListingLocation=".\Debug/"
+ ObjectFile=".\Debug/"
+ ProgramDataBaseFileName=".\Debug/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="4"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile=".\Debug/tscript.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\Debug/tscript.pdb"
+ SubSystem="1"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName=".\Debug/tscript.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\Release"
+ IntermediateDirectory=".\Release"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="../../include"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Release/tscript.pch"
+ AssemblerListingLocation=".\Release/"
+ ObjectFile=".\Release/"
+ ProgramDataBaseFileName=".\Release/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile=".\Release/tscript.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ ProgramDatabaseFile=".\Release/tscript.pdb"
+ SubSystem="1"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName=".\Release/tscript.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\..\tests\t-script.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/debian/fireflies/fireflies-2.08/libgfx/vc7/tvec/tvec.vcproj b/debian/fireflies/fireflies-2.08/libgfx/vc7/tvec/tvec.vcproj
new file mode 100644
index 00000000..26818d2f
--- /dev/null
+++ b/debian/fireflies/fireflies-2.08/libgfx/vc7/tvec/tvec.vcproj
@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="tvec"
+ SccProjectName=""
+ SccLocalPath="">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\Debug"
+ IntermediateDirectory=".\Debug"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Debug/tvec.pch"
+ AssemblerListingLocation=".\Debug/"
+ ObjectFile=".\Debug/"
+ ProgramDataBaseFileName=".\Debug/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="4"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile=".\Debug/tvec.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\Debug/tvec.pdb"
+ SubSystem="1"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName=".\Debug/tvec.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\Release"
+ IntermediateDirectory=".\Release"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="../../include"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Release/tvec.pch"
+ AssemblerListingLocation=".\Release/"
+ ObjectFile=".\Release/"
+ ProgramDataBaseFileName=".\Release/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile=".\Release/tvec.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ ProgramDatabaseFile=".\Release/tvec.pdb"
+ SubSystem="1"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName=".\Release/tvec.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\..\tests\t-vec.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>