diff --git a/Makefile.am b/Makefile.am
index 8df03fd9..f5d800b3 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -8,3 +8,4 @@ SUBDIRS = libsrc ng tutorials doc windows nglib
+
diff --git a/configure.ac b/configure.ac
index 7aa25f86..72542762 100644
--- a/configure.ac
+++ b/configure.ac
@@ -239,14 +239,15 @@ AM_CONDITIONAL([NGPYTHON], [test x$pythonon = xtrue])
# echo "libs = $LIBS"
# echo "TOGL_LIB = $MYTOGL_LIB"
+AC_CONFIG_SUBDIRS([ng/Togl-1.7])
AC_CONFIG_FILES(Makefile libsrc/Makefile libsrc/csg/Makefile
libsrc/general/Makefile libsrc/geom2d/Makefile libsrc/gprim/Makefile
libsrc/include/Makefile libsrc/interface/Makefile
libsrc/linalg/Makefile libsrc/meshing/Makefile libsrc/occ/Makefile
- libsrc/stlgeom/Makefile
- libsrc/visualization/Makefile ng/Makefile nglib/Makefile
- tutorials/Makefile doc/Makefile windows/Makefile )
+libsrc/stlgeom/Makefile
+libsrc/visualization/Makefile ng/Makefile nglib/Makefile
+tutorials/Makefile doc/Makefile windows/Makefile )
AC_OUTPUT
diff --git a/ng/Makefile.am b/ng/Makefile.am
index c771a144..913e681f 100644
--- a/ng/Makefile.am
+++ b/ng/Makefile.am
@@ -2,6 +2,7 @@ include_HEADERS =
AM_CPPFLAGS = -I$(top_srcdir)/libsrc/include -I$(top_srcdir)/libsrc/interface -DOPENGL -D$(TOGL_WINDOWINGSYSTEM) $(TCL_INCLUDES) $(MPI_INCLUDES) $(FFMPEG_INCLUDES) $(JPEGLIB_INCLUDES)
+SUBDIRS = Togl-1.7
if NGGUI
bin_PROGRAMS = netgen
diff --git a/ng/Togl-1.7/.indent.pro b/ng/Togl-1.7/.indent.pro
new file mode 100644
index 00000000..365338e4
--- /dev/null
+++ b/ng/Togl-1.7/.indent.pro
@@ -0,0 +1,72 @@
+--blank-before-sizeof
+--blank-lines-after-declarations
+--blank-lines-after-procedures
+--blank-lines-before-block-comments
+--braces-after-struct-decl-line
+--braces-on-if-line
+--break-before-boolean-operator
+--case-brace-indentation0
+--case-indentation2
+--comment-line-length80
+--continuation-indentation8
+--cuddle-do-while
+--cuddle-else
+--declaration-indentation8
+--dont-line-up-parentheses
+--format-all-comments
+--format-first-column-comments
+--indent-level4
+--leave-optional-blank-lines
+--line-length80
+--no-space-after-function-call-names
+--no-space-after-parentheses
+--no-tabs
+--parameter-indentation8
+--preprocessor-indentation2
+--procnames-start-lines
+--space-after-cast
+--space-after-for
+--space-after-if
+--space-after-while
+--space-special-semicolon
+--start-left-side-of-comments
+--struct-brace-indentation0
+--tab-size8
+-T AGLContext
+-T CALLBACK
+-T ClientData
+-T Colormap
+-T Display
+-T GLXContext
+-T GLbitfield
+-T GLboolean
+-T GLenum
+-T GLfloat
+-T GLint
+-T GLuint
+-T HDC
+-T HGLRC
+-T HWND
+-T LPARAM
+-T PIXELFORMATDESCRIPTOR
+-T Tcl_Command
+-T Tcl_Interp
+-T TkClassCreateProc
+-T TkClassGeometryProc
+-T TkClassModalProc
+-T TkClassProcs
+-T TkWinColormap
+-T Tk_ConfigSpec
+-T Tk_Cursor
+-T Tk_Window
+-T Togl_Callback
+-T Togl_CmdProc
+-T UINT
+-T WPARAM
+-T WinFont
+-T Window
+-T XColor
+-T XEvent
+-T XVisualInfo
+-T TOGL_EXTERN
+-T Togl
diff --git a/ng/Togl-1.7/LICENSE b/ng/Togl-1.7/LICENSE
new file mode 100644
index 00000000..e9badb74
--- /dev/null
+++ b/ng/Togl-1.7/LICENSE
@@ -0,0 +1,27 @@
+This software is copyrighted by Brian Paul (brian@mesa3d.org)
+and Benjamin Bederson (bederson@cs.umd.edu). The following
+terms apply to all files associated with the software unless explicitly
+disclaimed in individual files.
+
+The authors hereby grant permission to use, copy, modify, distribute,
+and license this software and its documentation for any purpose, provided
+that existing copyright notices are retained in all copies and that this
+notice is included verbatim in any distributions. No written agreement,
+license, or royalty fee is required for any of the authorized uses.
+Modifications to this software may be copyrighted by their authors
+and need not follow the licensing terms described here, provided that
+the new terms are clearly indicated on the first page of each file where
+they apply.
+
+IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
+FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
+ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
+DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE
+IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
+NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
+MODIFICATIONS.
diff --git a/ng/Togl-1.7/Makefile.in b/ng/Togl-1.7/Makefile.in
new file mode 100644
index 00000000..5c9d99de
--- /dev/null
+++ b/ng/Togl-1.7/Makefile.in
@@ -0,0 +1,471 @@
+# Makefile.in --
+#
+# This file is a Makefile for Sample TEA Extension. If it has the name
+# "Makefile.in" then it is a template for a Makefile; to generate the
+# actual Makefile, run "./configure", which is a configuration script
+# generated by the "autoconf" program (constructs like "@foo@" will get
+# replaced in the actual Makefile.
+#
+# Copyright (c) 1999 Scriptics Corporation.
+# Copyright (c) 2002-2005 ActiveState Corporation.
+#
+# See the file "license.terms" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+#
+# RCS: @(#) $Id: Makefile.in,v 1.7 2006/01/06 00:09:00 gregcouch Exp $
+
+#========================================================================
+# Add additional lines to handle any additional AC_SUBST cases that
+# have been added in a customized configure script.
+#========================================================================
+
+#SAMPLE_NEW_VAR = @SAMPLE_NEW_VAR@
+SHLIB_SUFFIX = @SHLIB_SUFFIX@
+MATH_LIBS = @MATH_LIBS@
+LIBGLU = @LIBGLU@
+
+DEMO_SRCS = double.c gears.c index.c overlay.c stereo.c texture.c
+DEMO_OBJS = $(DEMO_SRCS:.c=.$(OBJEXT))
+DEMO_SHLIBS = $(DEMO_SRCS:.c=$(SHLIB_SUFFIX))
+
+#========================================================================
+# Nothing of the variables below this line should need to be changed.
+# Please check the TARGETS section below to make sure the make targets
+# are correct.
+#========================================================================
+
+#========================================================================
+# The names of the source files is defined in the configure script.
+# The object files are used for linking into the final library.
+# This will be used when a dist target is added to the Makefile.
+# It is not important to specify the directory, as long as it is the
+# $(srcdir) or in the generic, win or unix subdirectory.
+#========================================================================
+
+PKG_SOURCES = @PKG_SOURCES@
+PKG_OBJECTS = @PKG_OBJECTS@
+
+PKG_STUB_SOURCES = @PKG_STUB_SOURCES@
+PKG_STUB_OBJECTS = @PKG_STUB_OBJECTS@
+
+#========================================================================
+# PKG_TCL_SOURCES identifies Tcl runtime files that are associated with
+# this package that need to be installed, if any.
+#========================================================================
+
+PKG_TCL_SOURCES = @PKG_TCL_SOURCES@
+
+#========================================================================
+# This is a list of public header files to be installed, if any.
+#========================================================================
+
+PKG_HEADERS = @PKG_HEADERS@ togl_ws.h
+
+#========================================================================
+# "PKG_LIB_FILE" refers to the library (dynamic or static as per
+# configuration options) composed of the named objects.
+#========================================================================
+
+PKG_LIB_FILE = @PKG_LIB_FILE@
+PKG_STUB_LIB_FILE = @PKG_STUB_LIB_FILE@
+
+lib_BINARIES = $(PKG_LIB_FILE)
+BINARIES = $(lib_BINARIES)
+
+SHELL = @SHELL@
+
+srcdir = @srcdir@
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+
+bindir = @bindir@
+libdir = @libdir@
+datadir = @datadir@
+mandir = @mandir@
+includedir = @includedir@
+
+DESTDIR =
+
+PKG_DIR = $(PACKAGE_NAME)$(PACKAGE_VERSION)
+pkgdatadir = $(datadir)/$(PKG_DIR)
+pkglibdir = $(libdir)/$(PKG_DIR)
+pkgincludedir = $(includedir)/$(PKG_DIR)
+
+top_builddir = .
+
+INSTALL = @INSTALL@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+CC = @CC@
+CFLAGS_DEFAULT = @CFLAGS_DEFAULT@
+CFLAGS_WARNING = @CFLAGS_WARNING@
+CLEANFILES = @CLEANFILES@ $(DEMO_OBJS) $(DEMO_SHLIBS)
+EXEEXT = @EXEEXT@
+LDFLAGS_DEFAULT = @LDFLAGS_DEFAULT@
+MAKE_LIB = @MAKE_LIB@
+MAKE_SHARED_LIB = @MAKE_SHARED_LIB@
+MAKE_STATIC_LIB = @MAKE_STATIC_LIB@
+MAKE_STUB_LIB = @MAKE_STUB_LIB@
+OBJEXT = @OBJEXT@
+RANLIB = @RANLIB@
+RANLIB_STUB = @RANLIB_STUB@
+SHLIB_CFLAGS = @SHLIB_CFLAGS@
+SHLIB_LD = @SHLIB_LD@
+SHLIB_LD_LIBS = @SHLIB_LD_LIBS@
+STLIB_LD = @STLIB_LD@
+#TCL_DEFS = @TCL_DEFS@
+TCL_BIN_DIR = @TCL_BIN_DIR@
+TCL_SRC_DIR = @TCL_SRC_DIR@
+#TK_BIN_DIR = @TK_BIN_DIR@
+#TK_SRC_DIR = @TK_SRC_DIR@
+
+# Not used, but retained for reference of what libs Tcl required
+#TCL_LIBS = @TCL_LIBS@
+
+#========================================================================
+# TCLLIBPATH seeds the auto_path in Tcl's init.tcl so we can test our
+# package without installing. The other environment variables allow us
+# to test against an uninstalled Tcl. Add special env vars that you
+# require for testing here (like TCLX_LIBRARY).
+#========================================================================
+
+#EXTRA_PATH = $(top_builddir):$(TCL_BIN_DIR)
+EXTRA_PATH = $(top_builddir):$(TCL_BIN_DIR):$(TK_BIN_DIR)
+TCLLIBPATH = $(top_builddir)
+TCLSH_ENV = TCL_LIBRARY=`@CYGPATH@ $(TCL_SRC_DIR)/library` \
+ @LD_LIBRARY_PATH_VAR@="$(EXTRA_PATH):$(@LD_LIBRARY_PATH_VAR@)" \
+ PATH="$(EXTRA_PATH):$(PATH)" \
+ TCLLIBPATH="$(TCLLIBPATH)"
+# TK_LIBRARY=`@CYGPATH@ $(TK_SRC_DIR)/library`
+
+TCLSH_PROG = @TCLSH_PROG@
+TCLSH = $(TCLSH_ENV) $(TCLSH_PROG)
+
+WISH_PROG = @WISH_PROG@
+WISH = $(TCLSH_ENV) $(WISH_PROG)
+
+
+SHARED_BUILD = @SHARED_BUILD@
+
+#INCLUDES = @PKG_INCLUDES@ @TCL_INCLUDES@
+INCLUDES = @PKG_INCLUDES@ @TCL_INCLUDES@ @TK_INCLUDES@ @TK_XINCLUDES@
+
+PKG_CFLAGS = @PKG_CFLAGS@
+
+# TCL_DEFS is not strictly need here, but if you remove it, then you
+# must make sure that configure.in checks for the necessary components
+# that your library may use. TCL_DEFS can actually be a problem if
+# you do not compile with a similar machine setup as the Tcl core was
+# compiled with.
+#DEFS = $(TCL_DEFS) @DEFS@ $(PKG_CFLAGS)
+DEFS = @DEFS@ $(PKG_CFLAGS)
+
+CONFIG_CLEAN_FILES = Makefile
+
+CPPFLAGS = @CPPFLAGS@
+LIBS = @PKG_LIBS@ @LIBS@
+AR = @AR@
+CFLAGS = @CFLAGS@
+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+
+#========================================================================
+# Start of user-definable TARGETS section
+#========================================================================
+
+#========================================================================
+# TEA TARGETS. Please note that the "libraries:" target refers to platform
+# independent files, and the "binaries:" target inclues executable programs and
+# platform-dependent libraries. Modify these targets so that they install
+# the various pieces of your package. The make and install rules
+# for the BINARIES that you specified above have already been done.
+#========================================================================
+
+all: binaries libraries doc
+
+#========================================================================
+# The binaries target builds executable programs, Windows .dll's, unix
+# shared/static libraries, and any other platform-dependent files.
+# The list of targets to build for "binaries:" is specified at the top
+# of the Makefile, in the "BINARIES" variable.
+#========================================================================
+
+binaries: $(BINARIES)
+
+libraries:
+
+
+#========================================================================
+# Demo section. These are binaries because we don't want to install them.
+# And they're not tests because we currently have no automatic way to see
+# if they work.
+#========================================================================
+
+demos: $(DEMO_SHLIBS)
+
+double$(SHLIB_SUFFIX): double.$(OBJEXT) togl.$(OBJEXT)
+ $(SHLIB_LD) -o $@ double.$(OBJEXT) togl.$(OBJEXT) $(SHLIB_LD_LIBS)
+
+gears$(SHLIB_SUFFIX): gears.$(OBJEXT) togl.$(OBJEXT)
+ $(SHLIB_LD) -o $@ gears.$(OBJEXT) togl.$(OBJEXT) $(SHLIB_LD_LIBS) $(MATH_LIBS)
+
+index$(SHLIB_SUFFIX): index.$(OBJEXT) togl.$(OBJEXT)
+ $(SHLIB_LD) -o $@ index.$(OBJEXT) togl.$(OBJEXT) $(SHLIB_LD_LIBS)
+
+overlay$(SHLIB_SUFFIX): overlay.$(OBJEXT) togl.$(OBJEXT)
+ $(SHLIB_LD) -o $@ overlay.$(OBJEXT) togl.$(OBJEXT) $(SHLIB_LD_LIBS)
+
+stereo$(SHLIB_SUFFIX): stereo.$(OBJEXT) togl.$(OBJEXT)
+ $(SHLIB_LD) -o $@ stereo.$(OBJEXT) togl.$(OBJEXT) $(SHLIB_LD_LIBS)
+
+texture$(SHLIB_SUFFIX): texture.$(OBJEXT) image.$(OBJEXT) togl.$(OBJEXT)
+ $(SHLIB_LD) -o $@ texture.$(OBJEXT) image.$(OBJEXT) \
+ togl.$(OBJEXT) $(LIBGLU) $(SHLIB_LD_LIBS)
+
+#========================================================================
+# Your doc target should differentiate from doc builds (by the developer)
+# and doc installs (see install-doc), which just install the docs on the
+# end user machine when building from source.
+#========================================================================
+
+doc:
+# @echo "If you have documentation to create, place the commands to"
+# @echo "build the docs in the 'doc:' target. For example:"
+# @echo " xml2nroff sample.xml > sample.n"
+# @echo " xml2html sample.xml > sample.html"
+
+install: all install-binaries install-libraries install-doc
+
+install-binaries: binaries install-lib-binaries install-bin-binaries
+
+#========================================================================
+# This rule installs platform-independent files, such as header files.
+# The list=...; for p in $$list handles the empty list case x-platform.
+#========================================================================
+
+install-libraries: libraries
+ @mkdir -p $(DESTDIR)$(includedir)
+ @echo "Installing header files in $(DESTDIR)$(includedir)"
+ @list='$(PKG_HEADERS)'; for i in $$list; do \
+ echo "Installing $(srcdir)/$$i" ; \
+ $(INSTALL_DATA) $(srcdir)/$$i $(DESTDIR)$(includedir) ; \
+ done;
+
+#========================================================================
+# Install documentation. Unix manpages should go in the $(mandir)
+# directory.
+#========================================================================
+
+install-doc: doc
+# @mkdir -p $(DESTDIR)$(mandir)/mann
+# @echo "Installing documentation in $(DESTDIR)$(mandir)"
+# @list='$(srcdir)/doc/*.n'; for i in $$list; do \
+# echo "Installing $$i"; \
+# rm -f $(DESTDIR)$(mandir)/mann/`basename $$i`; \
+# $(INSTALL_DATA) $$i $(DESTDIR)$(mandir)/mann ; \
+# done
+
+test: binaries libraries
+ $(TCLSH) `@CYGPATH@ $(srcdir)/tests/all.tcl` $(TESTFLAGS)
+
+shell: binaries libraries
+ @$(TCLSH) $(SCRIPT)
+
+gdb:
+ $(TCLSH_ENV) gdb $(TCLSH_PROG) $(SCRIPT)
+
+depend:
+
+#========================================================================
+# $(PKG_LIB_FILE) should be listed as part of the BINARIES variable
+# mentioned above. That will ensure that this target is built when you
+# run "make binaries".
+#
+# The $(PKG_OBJECTS) objects are created and linked into the final
+# library. In most cases these object files will correspond to the
+# source files above.
+#========================================================================
+
+$(PKG_LIB_FILE): $(PKG_OBJECTS)
+ -rm -f $(PKG_LIB_FILE)
+ ${MAKE_LIB}
+ $(RANLIB) $(PKG_LIB_FILE)
+
+$(PKG_STUB_LIB_FILE): $(PKG_STUB_OBJECTS)
+ -rm -f $(PKG_STUB_LIB_FILE)
+ ${MAKE_STUB_LIB}
+ $(RANLIB_STUB) $(PKG_STUB_LIB_FILE)
+
+#========================================================================
+# We need to enumerate the list of .c to .o lines here.
+#
+# In the following lines, $(srcdir) refers to the toplevel directory
+# containing your extension. If your sources are in a subdirectory,
+# you will have to modify the paths to reflect this:
+#
+# sample.$(OBJEXT): $(srcdir)/generic/sample.c
+# $(COMPILE) -c `@CYGPATH@ $(srcdir)/generic/sample.c` -o $@
+#
+# Setting the VPATH variable to a list of paths will cause the makefile
+# to look into these paths when resolving .c to .obj dependencies.
+# As necessary, add $(srcdir):$(srcdir)/compat:....
+#========================================================================
+
+VPATH = $(srcdir):$(srcdir)/generic:$(srcdir)/unix:$(srcdir)/win
+
+.c.@OBJEXT@:
+ $(COMPILE) -c `@CYGPATH@ $<` -o $@
+
+#========================================================================
+# Distribution creation
+# You may need to tweak this target to make it work correctly.
+#========================================================================
+
+#COMPRESS = tar cvf $(PKG_DIR).tar $(PKG_DIR); compress $(PKG_DIR).tar
+COMPRESS = gtar zcvf $(PKG_DIR).tar.gz $(PKG_DIR)
+DIST_ROOT = /tmp/dist
+DIST_DIR = $(DIST_ROOT)/$(PKG_DIR)
+
+dist-clean:
+ rm -rf $(DIST_DIR) $(DIST_ROOT)/$(PKG_DIR).tar.*
+
+dist: dist-clean
+ mkdir -p $(DIST_DIR)
+ cp -p $(srcdir)/ChangeLog $(srcdir)/README* $(srcdir)/license* \
+ $(srcdir)/aclocal.m4 $(srcdir)/configure $(srcdir)/*.in \
+ $(DIST_DIR)/
+ chmod 664 $(DIST_DIR)/Makefile.in $(DIST_DIR)/aclocal.m4
+ chmod 775 $(DIST_DIR)/configure $(DIST_DIR)/configure.in
+
+ for i in $(srcdir)/*.[ch]; do \
+ if [ -f $$i ]; then \
+ cp -p $$i $(DIST_DIR)/ ; \
+ fi; \
+ done;
+
+ mkdir $(DIST_DIR)/tclconfig
+ cp $(srcdir)/tclconfig/install-sh $(srcdir)/tclconfig/tcl.m4 \
+ $(DIST_DIR)/tclconfig/
+ chmod 664 $(DIST_DIR)/tclconfig/tcl.m4
+ chmod +x $(DIST_DIR)/tclconfig/install-sh
+
+ list='demos doc generic library mac tests unix win'; \
+ for p in $$list; do \
+ if test -d $(srcdir)/$$p ; then \
+ mkdir $(DIST_DIR)/$$p; \
+ cp -p $(srcdir)/$$p/*.* $(DIST_DIR)/$$p/; \
+ fi; \
+ done
+
+ (cd $(DIST_ROOT); $(COMPRESS);)
+
+#========================================================================
+# End of user-definable section
+#========================================================================
+
+#========================================================================
+# Don't modify the file to clean here. Instead, set the "CLEANFILES"
+# variable in configure.in
+#========================================================================
+
+clean:
+ -test -z "$(BINARIES)" || rm -f $(BINARIES)
+ -rm -f *.$(OBJEXT) core *.core
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean: clean
+ -rm -f *.tab.c
+ -rm -f $(CONFIG_CLEAN_FILES)
+ -rm -f config.cache config.log config.status
+
+#========================================================================
+# Install binary object libraries. On Windows this includes both .dll and
+# .lib files. Because the .lib files are not explicitly listed anywhere,
+# we need to deduce their existence from the .dll file of the same name.
+# Library files go into the lib directory.
+# In addition, this will generate the pkgIndex.tcl
+# file in the install location (assuming it can find a usable tclsh shell)
+#
+# You should not have to modify this target.
+#========================================================================
+
+install-lib-binaries: binaries
+ @mkdir -p $(DESTDIR)$(pkglibdir)
+ @list='$(lib_BINARIES)'; for p in $$list; do \
+ if test -f $$p; then \
+ echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(pkglibdir)/$$p"; \
+ $(INSTALL_PROGRAM) $$p $(DESTDIR)$(pkglibdir)/$$p; \
+ stub=`echo $$p|sed -e "s/.*\(stub\).*/\1/"`; \
+ if test "x$$stub" = "xstub"; then \
+ echo " $(RANLIB_STUB) $(DESTDIR)$(pkglibdir)/$$p"; \
+ $(RANLIB_STUB) $(DESTDIR)$(pkglibdir)/$$p; \
+ else \
+ echo " $(RANLIB) $(DESTDIR)$(pkglibdir)/$$p"; \
+ $(RANLIB) $(DESTDIR)$(pkglibdir)/$$p; \
+ fi; \
+ ext=`echo $$p|sed -e "s/.*\.//"`; \
+ if test "x$$ext" = "xdll"; then \
+ lib=`basename $$p|sed -e 's/.[^.]*$$//'`.lib; \
+ if test -f $$lib; then \
+ echo " $(INSTALL_DATA) $$lib $(DESTDIR)$(pkglibdir)/$$lib"; \
+ $(INSTALL_DATA) $$lib $(DESTDIR)$(pkglibdir)/$$lib; \
+ fi; \
+ fi; \
+ fi; \
+ done
+ @list='$(PKG_TCL_SOURCES)'; for p in $$list; do \
+ if test -f $(srcdir)/$$p; then \
+ destp=`basename $$p`; \
+ echo " Install $$destp $(DESTDIR)$(pkglibdir)/$$destp"; \
+ $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(pkglibdir)/$$destp; \
+ fi; \
+ done
+ @if test "x$(SHARED_BUILD)" = "x1"; then \
+ echo " Install pkgIndex.tcl $(DESTDIR)$(pkglibdir)"; \
+ $(INSTALL_DATA) pkgIndex.tcl $(DESTDIR)$(pkglibdir); \
+ fi
+
+#========================================================================
+# Install binary executables (e.g. .exe files and dependent .dll files)
+# This is for files that must go in the bin directory (located next to
+# wish and tclsh), like dependent .dll files on Windows.
+#
+# You should not have to modify this target, except to define bin_BINARIES
+# above if necessary.
+#========================================================================
+
+install-bin-binaries: binaries
+ @mkdir -p $(DESTDIR)$(bindir)
+ @list='$(bin_BINARIES)'; for p in $$list; do \
+ if test -f $$p; then \
+ echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/$$p"; \
+ $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/$$p; \
+ fi; \
+ done
+
+.SUFFIXES: .c .$(OBJEXT)
+
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) \
+ && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+uninstall-binaries:
+ list='$(lib_BINARIES)'; for p in $$list; do \
+ rm -f $(DESTDIR)$(pkglibdir)/$$p; \
+ done
+ list='$(PKG_TCL_SOURCES)'; for p in $$list; do \
+ p=`basename $$p`; \
+ rm -f $(DESTDIR)$(pkglibdir)/$$p; \
+ done
+ list='$(bin_BINARIES)'; for p in $$list; do \
+ rm -f $(DESTDIR)$(bindir)/$$p; \
+ done
+
+.PHONY: all binaries clean depend distclean doc install libraries test
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/ng/Togl-1.7/README.stubs b/ng/Togl-1.7/README.stubs
new file mode 100644
index 00000000..2950a981
--- /dev/null
+++ b/ng/Togl-1.7/README.stubs
@@ -0,0 +1,21 @@
+This version of Togl is entirely free from
+dependencies on Tcl/Tk's internal functions. It uses the public stubs
+interface, witch means that the same binary works with any stubs-aware
+wish (i.e. version >= 8.1)
+
+It has been tested on Windows NT/2000 and Linux for several Tcl/Tk versions up
+to 8.4a3. I haven't been able to test the Mac port, it propably needs mending
+but I can't see why it shouldn't work in principle.
+
+Implementation wise, what differs from Togl 1.5 is that Togl_MakeWindowExist()
+is replaced by Togl_CreateWindow(), a function that gets registered in Tk as a callback for window creation. In Tk/Tk 8.4a3, there is a new public API call
+Tk_SetClassProcs() to register this callback, but for earlier versions of Tk
+one needs to do this using some pointer magic.
+There is a run-time check to determine which method to use, hence the
+same binary runs on all versions of Wish from 8.1 and up. For this to
+work you need to compile against the headers from Tcl/Tk 8.4a3 or later, or
+the binary will only work for Tcl/Tk 8.1-8.4a2.
+The tk8.4a3 public headers (tk8.4a3.h + tkDecls.h) are included for
+conveniance, and they are used if the flag -DUSE_LOCAL_TK_H is specified.
+
+Jonas Beskow, December 2001
\ No newline at end of file
diff --git a/ng/Togl-1.7/TODO b/ng/Togl-1.7/TODO
new file mode 100644
index 00000000..26c734d6
--- /dev/null
+++ b/ng/Togl-1.7/TODO
@@ -0,0 +1,20 @@
+In no particular order:
+-----------------------
+
+stubify C API.
+
+replace EPS support with TK photo image support
+
+Add command arguments for create, destroy, etc. so there would be a
+-createcommand option to the togl command (etc.) (and phase out
+Togl_*Func from the C API)
+
+multisampling support (can be worked-around by passing in a pixelformat)
+
+add vertical sync control
+
+update documention
+ - update build instructions
+ - update stereo documentation
+ - separate Tcl API from C API
+ - say togl hides window system dependent (glX/wgl/agl) calls
diff --git a/ng/Togl-1.7/Togl.html b/ng/Togl-1.7/Togl.html
new file mode 100644
index 00000000..53de3e58
--- /dev/null
+++ b/ng/Togl-1.7/Togl.html
@@ -0,0 +1,1081 @@
+
+
+
+
+
+
+ Togl
+
+
+
+
+
+ Togl — a Tk OpenGL widget
+ Copyright (C) 1996-2002 Brian Paul and Ben Bederson
+
+
+
+
+ Contents
+
+
+
+
+
+
+
+ Togl is a Tk widget for OpenGL rendering.
+ Togl was originally based on OGLTK, written by Benjamin Bederson at
+ the University of New Mexico.
+ Togl adds the new features:
+
+
+ color-index mode support including color allocation functions
+ support for requesting stencil, accumulation, alpha buffers, etc
+ multiple OpenGL drawing widgets
+ OpenGL extension testing from Tcl
+ simple, portable font support
+ overlay plane support
+
+
+
+ Togl allows one to create and manage a special Tk/OpenGL widget
+ with Tcl and render into it with a C program. That is,
+ a typical Togl program will have Tcl code for managing the user interface
+ and a C program for computations and OpenGL rendering.
+
+
+ Togl is copyrighted by
+ Brian Paul
+ (brian_e_paul@yahoo.com) and
+ Benjamin Bederson
+ (bederson@cs.umd.edu) .
+ See the LICENSE file for details.
+
+
+ The
+ Togl project and
+ home page are
+ hosted by SourceForge .
+
+
+
+
+
+
+ You should have
+ Tcl and Tk
+ installed on your computer. Togl works with Tcl/Tk
+ version 8.0 and up. The Mac OS X version requires version 8.4.
+
+
+ You must also have
+ OpenGL or
+ Mesa
+ (a free alternative to OpenGL) installed on your computer.
+
+
+ One should be familiar with Tcl, Tk, OpenGL, and C programming to use Togl
+ effectively.
+
+
+
+
+
+
+ The current version of Togl is 1.7.
+ Togl can be downloaded from
+
+ SourceForge .
+
+
+
+
+
+
+ See the
+ Togl project at SourceForge for mailing list information.
+
+
+
+
+
+
+ There are basically two ways of using Togl with your application:
+
+
+ Link or "compile in" Togl with your executable or shared library. In this
+ case you must call Togl_Init() from your C code to initialize Togl. This
+ is the way the included Togl examples are built.
+
+
+ Install the Togl shared library and pkgIndex.tcl file
+ (using make install ) and then load it into wish using
+ package require Togl .
+ Then, before creating the Togl widget, call functions in your application
+ code (also a compiled into a shared library and loaded into wish )
+ to setup the Togl widget for the OpenGL rendering.
+ Create the blank Togl widget,
+ and then you're managing redraws and buffer swapping from the Tcl level.
+
+ Since Togl is compiled into a shared library using the Tcl/Tk stubs-interface,
+ the same binary can be used with any version of Tck/Tk from 8.06 and up.
+ See README.stubs
for more info.
+
+ Unix/X11 usage
+
+
+ Unix/X systems only need the togl.c
, togl.h
+ and the public Tcl/Tk include files.
+
+
Windows 95/NT/2000/XP usage
+
+
+ Windows platforms need tkWinInt.h
+ and other internal Tk header files. So you need a Tcl/Tk
+ source distribution in addition to the Togl distribution
+ (or copy over the various include files).
+
+ Here's the minimal way to build Togl with Tcl/Tk
+ using the gcc that is distributed
+ as part of the cygwin tools
+ (Microsoft 's compilers work too):
+
+VER=8.4.12
+SRCDIR=`pwd`
+
+cd $SRCDIR/tcl$VER/win
+env 'CC=gcc -mno-cygwin' ./configure --enable-threads
+make libtclstub84.a
+
+cd $SRCDIR/tk$VER/win
+env 'CC=gcc -mno-cygwin' ./configure --enable-threads
+make libtkstub84.a
+
+cd $SRCDIR/Togl
+env 'CC=gcc -mno-cygwin' ./configure --with-tcl=../tcl$VER/win --with-tk=../tk$VER/win
+
+make
+
+ The resulting Togl17.dll
and pkgIndex.tcl
+ should be installed into your Tcl distribution just like any other package.
+
+ Mac OS X usage
+
+
+ These special instructions are for building the Aqua version of Togl.
+ Mac OS X needs tkMacOSXInt.h
+ and other internal Tk header files. Unfortunately, the Tcl and Tk
+ frameworks that Apple distributes are missing the internal headers.
+ So you need a Tcl/Tk source distribution in addition to the Togl
+ distribution (or copy over the various include files).
+ You would probably want a newer version of Tcl and Tk anyway
+ because each minor revision of 8.4 has many Aqua bug fixes.
+
+ Here's one way to build Tcl, Tk, and Togl on Mac OS X (assuming they
+ are all in the same directory) to install in your home directory:
+
+VER=8.4.12
+
+mkdir -p ~/bin
+make -C tcl$VER/macosx install PREFIX="${HOME}" INSTALL_PATH="${HOME}/Library/Frameworks"
+make -C tk$VER/macosx install PREFIX="${HOME}" INSTALL_PATH="${HOME}/Library/Frameworks"
+
+(cd Togl; ./configure --prefix="${HOME}")
+make -C Togl install
+
+
+
+
+
+
+
+ These are the Togl functions one may call from a C program.
+
+
+
+ #include "togl.h"
+
+
+
+
+ For portability, you should include the togl.h header
+ before any other OpenGL header so that various
+ Windows 95/NT/2000/XP stuff falls into place.
+
+
+
Setup and Initialization Functions
+
+
+ int Togl_Init(Tcl_Interp *interp)
+
+ Initializes the Togl module. This is typically called from the
+ Tk_Main() function
+ or via Tcl's package require
command.
+
+
+
+ void Togl_CreateFunc(Togl_Callback *proc)
+
+ void Togl_DisplayFunc(Togl_Callback *proc)
+
+ void Togl_ReshapeFunc(Togl_Callback *proc)
+
+ void Togl_DestroyFunc(Togl_Callback *proc)
+
+
+ Register C functions to be called by Tcl/Tk when a widget is realized,
+ must be redrawn, is resized, or is destroyed respectively.
+
+ Each C callback must be of the form:
+
+ void callback(Togl *togl)
+ {
+ ...your code...
+ }
+
+
+
+
+ void Togl_TimerFunc(Togl_Callback *proc)
+
+ Register a C timer callback function which will be called every
+ n milliseconds. The interval n is specified
+ by the -time
option to the Togl Tcl command.
+
+ The C callback must be of the form:
+
+ void my_timer_callback(Togl *togl)
+ {
+ ...your code...
+ }
+
+
+
+
+ void Togl_ResetDefaultCallbacks(void)
+
+ Reset all default callback pointers to NULL.
+
+
+
+ void Togl_CreateCommand(char *cmd_name, Togl_CmdProc *cmd_proc)
+
+ Used to create a new Togl sub-command. The C function which implements
+ the command must be of the form:
+
+
+ int callback(Togl *togl, int argc, char *argv[])
+ {
+ ...your code...
+ return TCL_OK or TCL_ERROR;
+ }
+
+
+
+ Drawing-related Commands
+
+
+ void Togl_PostRedisplay(Togl *togl)
+
+ Signals that the widget should be redrawn. When Tk is next idle the
+ user's C render callback will be invoked. This is typically called
+ from within a Togl sub-command which was registered with
+ Togl_CreateCommand().
+
+
+
+ void Togl_SwapBuffers(const Togl *togl)
+
+ Swaps the front and back color buffers for a double-buffered widget.
+ glFlush() is executed if the window is single-buffered. This is
+ typically called in the rendering function which was registered with
+ Togl_DisplayFunc().
+
+
+
+ void Togl_MakeCurrent(const Togl *togl)
+
+ Sets the current rendering context to the given widget. This is done
+ automatically before the Togl callback functions are called. So the
+ call is only needed if you have multiple widgets with separate OpenGL
+ contexts. If the argument is NULL, then the rendering context is cleared
+ and subsequent OpenGL commands will fail.
+
+
+ Query Functions
+
+
+ char *Togl_Ident(const Togl *togl)
+
+ Returns a pointer to the identification string associated with a Togl
+ widget or NULL if there's no identifier string.
+
+
+
+ int Togl_Width(const Togl *togl)
+
+ Returns the width of the given Togl widget. Typically called in the
+ function registered with Togl_ReshapeFunc().
+
+
+
+ int Togl_Height(const Togl *togl)
+
+ Returns the height of the given Togl widget. Typically called in the
+ function registered with Togl_ReshapeFunc().
+
+
+
+ Tcl_Interp *Togl_Interp(const Togl *togl)
+
+ Returns the Tcl interpreter associated with the given Togl widget.
+
+
+
+ Tk_Window Togl_TkWin(const Togl *togl)
+
+ Returns the Tk window associated with the given Togl widget.
+
+
+ Color Index Mode Functions
+
+
+ These functions are only used for color index mode.
+
+
+ unsigned long Togl_AllocColor(Togl *togl, float red, float green, float blue)
+
+ Allocate a color from a read-only colormap. Given a color specified
+ by red, green, and blue return a colormap index (aka pixel value)
+ whose entry most closely matches the red, green, blue color. Red,
+ green, and blue are values in [0,1]. This function is only used in
+ color index mode when the -privatecmap
option is false.
+
+
+
+ void Togl_FreeColor(Togl *togl, unsigned long index)
+
+ Free a color in a read-only colormap. Index is a value which was
+ returned by the Togl_AllocColor() function. This function is only
+ used in color index mode when the -privatecmap
option
+ is false.
+
+
+
+ void Togl_SetColor(Togl *togl,
+ int index, float red, float green, float blue)
+
+ Load the colormap entry specified by index with the given red, green
+ and blue values. Red, green, and blue are values in [0,1]. This
+ function is only used in color index mode when the
+ -privatecmap
option is true.
+
+
+
+ Font Functions
+
+
+ GLuint Togl_LoadBitmapFont(Togl *togl,
+ const char *fontname)
+
+ Load the named font as a set of glBitmap display lists.
+ fontname may be one of
+
+
+ TOGL_BITMAP_8_BY_13
+ TOGL_BITMAP_9_BY_15
+ TOGL_BITMAP_TIMES_ROMAN_10
+ TOGL_BITMAP_TIMES_ROMAN_24
+ TOGL_BITMAP_HELVETICA_10
+ TOGL_BITMAP_HELVETICA_12
+ TOGL_BITMAP_HELVETICA_18
+
+ or any X11 font name
+
+ Zero is returned if this function fails.
+
+ After Togl_LoadBitmapFont() has been called, returning fontbase ,
+ you can render a string s with:
+
+
+ glListBase(fontbase);
+
+ glCallLists(strlen(s), GL_BYTE, s);
+
+
+ To maximize the portability of your application it is best to use one
+ of the predefined TOGL_BITMAP_* fonts.
+
+
+
+ void Togl_UnloadBitmapFont(Togl *togl, GLuint fontbase)
+
+
+ Destroys the bitmap display lists created by by Togl_LoadBitmapFont().
+
+
+ Client Data Functions
+
+
+ void Togl_SetClientData(Togl *togl, ClientData clientData)
+
+ clientData is a pointer to an arbitrary user data structure.
+ Each Togl struct has such a pointer.
+ This function sets the Togl widget's client data pointer.
+
+
+
+ ClientData Togl_GetClientData(const Togl *togl)
+
+ clientData is a pointer to an arbitrary user data structure.
+ Each Togl struct has such a pointer.
+ This function returns the Togl widget's client data pointer.
+
+
+
+ void Togl_ClientData(ClientData clientData)
+
+ clientData is a pointer to an arbitrary user data structure.
+ Set default client data pointer for subsequent new Togl widgets.
+ Default value is NULL.
+
+
+
+ Overlay Functions
+
+
+ These functions are modelled after GLUT's overlay sub-API.
+
+
+ void Togl_UseLayer(Togl *togl, int layer)
+
+ Select the layer into which subsequent OpenGL rendering will be
+ directed. layer may be either TOGL_OVERLAY or
+ TOGL_NORMAL .
+
+
+
+ void Togl_ShowOverlay(Togl *togl)
+
+ Display the overlay planes, if any.
+
+
+
+ void Togl_HideOverlay(Togl *togl)
+
+ Hide the overlay planes, if any.
+
+
+
+ void Togl_PostOverlayRedisplay(Togl *togl)
+
+ Signal that the overlay planes should be redraw.
+ When Tk is next idle the user's C overlay display callback will be invoked.
+ This is typically called from within a Togl sub-command which was
+ registered with Togl_CreateCommand().
+
+
+
+ void Togl_OverlayDisplayFunc(Togl_Callback *proc)
+
+ Registers the C callback function which should be called to redraw the
+ overlay planes. This is the function which will be called in
+ response to Togl_PostOverlayRedisplay().
+ The callback must be of the form:
+
+
+ void RedrawOverlay(Togl *togl)
+ {
+ ...your code...
+ }
+
+
+
+
+ int Togl_ExistsOverlay(Togl *togl)
+
+ Returns 1 if overlay planes exist, 0 otherwise.
+
+
+
+ int Togl_GetOverlayTransparentValue(const Togl *togl)
+
+ Returns the color index of the overlay's transparent pixel value.
+
+
+
+ int Togl_IsMappedOverlay(const Togl *togl)
+
+ Returns 1 if the overlay planes are currently displayed, 0 otherwise.
+
+
+
+ unsigned long Togl_AllocColorOverlay(const Togl *togl,
+ float red, float green, float blue)
+
+ Allocate a color in the overlay planes. Red, green, and blue are
+ values in [0,1]. Return the color index or -1 if the allocation
+ fails.
+
+
+
+ void Togl_FreeColorOverlay(const Togl *togl, unsigned long index)
+
+ Free a color which was allocated with Togl_AllocColorOverlay().
+
+
+
+ X11-only Functions
+
+
+ These functions are only implemented on systems using the X Window System.
+ We recommend that you avoid using these functions in your application since
+ they are not portable to other operating/window systems
+ (use Togl_TkWin()
and normal Tk functions instead).
+
+
+
+ Display *Togl_Display(const Togl *togl)
+
+ Returns the X Display of a Togl widget.
+
+
+
+ Screen *Togl_Screen(const Togl *togl)
+
+ Returns the X Screen of a Togl widget.
+
+
+
+ int Togl_ScreenNumber(const Togl *togl)
+
+ Returns the X screen number of a Togl widget.
+
+
+
+ Colormap Togl_Colormap(const Togl *togl)
+
+ Returns the X Colormap used by a Togl widget.
+
+
+
+ Postscript Output
+
+
+
+ int Togl_DumpToEpsFile(const Togl *togl,
+ const char *filename, int rgbFlag, void (*user_redraw)())
+
+ Generate an encapsulated Postscript file of the image in a Togl widget.
+ filename is the name of the file to generate.
+ If rgbFlag is non-zero then an RGB image file is written,
+ else a grayscale image file is written.
+ user_redraw is a pointer to the function which will render the
+ desired image. This will typically be the same as the function passed
+ to Togl_DisplayFunc().
+
+
+
+
+
+
+
+ These are the Togl commands one may call from a Tcl program.
+
+
+ togl pathName [options]
+
+ Creates a new togl widget with name pathName and
+ an optional list of configuration options. Options include:
+
+
+
+
+
+
+
+
+ Option Default Comments
+
+
+ -width
400
+ Width of widget in pixels.
+
+
+ -height
400
+ Height of widget in pixels.
+
+
+
+
+ -ident
""
+ A user identification string. This is used match widgets
+ for the -sharecontext
+ and the -sharelist
options (see below).
+ This is also useful in your callback functions
+ to determine which Togl widget is the caller.
+
+
+
+
+
+ -rgba
true
+ If true, use RGB(A) mode, otherwise use Color Index mode.
+
+
+ -redsize
1
+ Minimum number of bits in red component.
+
+
+ -greensize
1
+ Minimum number of bits in green component.
+
+
+ -bluesize
1
+ Minimum number of bits in blue component.
+
+
+ -alpha
1
+ If true and -rgba
is true, request an alpha channel.
+
+
+ -alphasize
1
+ Minimum number of bits in alpha component.
+
+
+
+
+ -double
false
+ If true, request a double-buffered window, otherwise
+ request a single-buffered window.
+
+
+
+
+ -depth
false
+ If true, request a depth buffer.
+
+
+ -depthsize
1
+ Minimum number of bits in depth buffer.
+
+
+
+
+ -accum
false
+ If true, request an accumulation buffer.
+
+
+ -accumredsize
1
+ Minimum number of bits in accumulation buffer red component.
+
+
+ -accumgreensize
1
+ Minimum number of bits in accumulation buffer green component.
+
+
+ -accumbluesize
1
+ Minimum number of bits in accumulation buffer blue component.
+
+
+ -accumalphasize
1
+ Minimum number of bits in accumulation buffer alpha component.
+
+
+
+
+ -stencil
false
+ If true, request a stencil buffer.
+
+
+ -stencilsize
1
+ Minimum number of bits in stencil component.
+
+
+
+
+ -auxbuffers
0
+ Desired number of auxiliary buffers.
+
+
+
+
+ -privatecmap
false
+ Only applicable in color index mode.
+ If false, use a shared read-only colormap.
+ If true, use a private read/write colormap.
+
+
+
+
+
+ -overlay
false
+ If true, request overlay planes.
+
+
+
+
+ -stereo
false
+ If true, request a stereo-capable window.
+
+
+ -oldstereo
false
+ On SGI workstations only: if true, request divided-screen stereo.
+
+
+
+
+
+ -time
1
+ Specifies the interval, in milliseconds, for
+ calling the C timer callback function which
+ was registered with Togl_TimerFunc.
+
+
+
+
+ -sharelist
""
+ Name of an existing Togl widget with which to
+ share display lists.
+
+
+
+ -sharecontext
""
+ Name of an existing Togl widget with which to
+ share the OpenGL context. NOTE: most other
+ attributes such as double buffering, RGBA vs CI,
+ ancillary buffer specs, etc are then ignored.
+
+
+
+
+
+ -indirect
false
+ If present, request an indirect rendering context.
+ A direct rendering context is normally requested.
+ Only significant on Unix/X11.
+
+
+
+
+
+ -cursor
""
+ Set the cursor in the widget window.
+
+
+
+
+ -pixelformat
0
+ Set the pixel format to the (platform-dependent) given value.
+
+
+
+
+
+
+
+ pathName configure
+
+ Returns all configuration records for the named togl widget.
+
+
+
+ pathName configure -option
+
+ Returns configuration information for the specifed option
+ which may be one of:
+
+ -width
+
+ Returns the width configuration of the widget in the form:
+
+ -width width Width W w
+
+ where W is the default width in pixels
+ and w is the current width in pixels
+
+
+ -height
+
+ Returns the height configuration of the widget in the form:
+
+ -height height Height H h
+
+ where H is the default height in pixels
+ and h is the current height in pixels
+
+
+ -extensions
+
+ Returns a list of OpenGL extensions available. For example:
+ GL_EXT_polygon_offset GL_EXT_vertex_array
+
+
+
+
+ pathName configure -option value
+
+ Reconfigure a Togl widget. option may be any one of the
+ options listed in the togl
command above.
+
+
+
+ pathName render
+
+ Causes the render callback function to be called for pathName .
+
+
+
+ pathName swapbuffers
+
+ Causes front/back buffers to be swapped if in double buffer mode.
+ And flushs the OpenGL command buffer if in single buffer mode.
+ (So this is appropriate to call after every frame is drawn.)
+
+
+
+ pathName makecurrent
+
+ Make the widget specified by pathName and its OpenGL context
+ the current ones.
+
+
+
+
+
+
+
+ There are six demo programs:
+
+
+
+
+
+
+
+
+ double.tcl
+ — compares single vs double buffering with two Togl widgets
+
+
+ texture.tcl
+ — lets you play with texture mapping options
+
+
+ index.tcl
+ — demo of using color index mode
+
+
+ overlay.tcl
+ — example of using overlay planes (requires overlay hardware)
+
+
+ stereo.tcl
+ — stereo example
+
+
+ gears.tcl
+ — spinning gears demo
+
+
+
+
+
+ To compile the demos, edit the Makefile to suit your system, then
+ type make demos
.
+ The demos are compiled into shared libraries,
+ that can are loaded into the Tcl interpreter as Tcl/Tk-extensions.
+ Demos are started by running the corrsponding Tcl script.
+ To run a demo just type ./double.tcl
or ./texture.tcl
etc.
+
+
+
+
+
+
+ Quad-buffered stereo-in-a-window is supported. Quad-buffer stereo
+ is only available on workstation-class graphics cards
+ (3Dlabs Wildcat series,
+ ATI FireGL series,
+ NVidia Quadro series,
+ and SGI workstations).
+ Legacy support for divided-screen stereo on SGI workstations is
+ available via the -oldstereo
option.
+ Developers for SGI workstations might also like the
+
+ autostereo package to automatically switch the display
+ in and out of stereo (other systems already do it automatically).
+
+ Full-screen stereo that gaming graphics cards support (ATI Radeon,
+ NVidia GeForce) is not supported.
+
+
+
+
+
+ If you have something to add to this section please let us know.
+
+
Bad Match X errors on Sun systems
+
+ There's a bug in Sun's XmuLookupStandardColormap X library function.
+ If you compile togl.c with the SOLARIS_BUG symbol defined (-DSOLARIS_BUG)
+ this function call will be omitted.
+
+
+
+
+
+
+ There is a bug database on the
+ Togl Project Page .
+ You may also discuss bugs on the mailing list.
+
+ When reporting bugs please provide as much information as possible.
+ Also, it's very helpful to us if you can provide an example program
+ which demonstrates the problem.
+
+
+
+
+
+ Version 1.0 — March, 1996
+
+
+ Version 1.1 (never officially released)
+
+ Added Togl_LoadBitmapFont function
+ Fixed a few bugs
+
+
+ Version 1.2 — November, 1996
+
+ added swapbuffers and makecurrent Tcl commands
+ More bug fixes
+ Upgraded to suport Tcl 7.6 and Tk 4.2
+ Added stereo and overlay plane support
+ Added Togl_Get/SetClientData() functions
+ Added Togl_DestroyFunc()
+
+
+ Version 1.3 — May 2, 1997
+
+ fixed a bug in Togl_Configure()
+ fixed a compilation problem in using Tcl_PkgProvide() with Tcl < 7.4
+ new overlay functions: Togl_ExistsOverlay, Togl_GetOverlayTransparentValue,
+ Togl_IsMappedOverlay, Togl_AllocColorOverlay, Togl_FreeColorOverlay
+ added X11 functions: Togl_Display, Togl_Screen, Togl_ScreenNumber,
+ Togl_Colormap
+ added Togl_DumpToEpsFile function
+ fixed a C++ compilation problem
+ more robust overlay code
+ added timers (Togl_TimerFunc) from Peter Dern and Elmar Gerwalin
+
+
+ Version 1.4 — September 17, 1997
+
+ Ported to Windows NT (Robert Casto)
+ Updated for Tcl/Tk 8.0
+ Added many config flags (-redsize, -depthsize, etc) (Matthias Ott)
+ Added Togl_Set*Func() functions to reassign callback functions (Matthias Ott)
+ Added Togl_ResetDefaultCallbacks() and Togl_ClientData() functions (Greg Couch)
+
+
+ Version 1.5 — September 18, 1998
+
+ Fixed a few Unix and Windows compilation bugs
+ Added Ben Evan's SGI stereo functions
+ Multiple expose events now reduced to one redraw
+ Destroying Togl widgets caused problems, patched by Adrian J. Chung
+ Added Togl_TkWin() function
+ Updated for Tcl/Tk 8.0p2
+ Added gears demo from Philip Quaife
+ Added -sharelist
and -sharecontext
config flags
+ Fixed a few overlay update bugs
+ Added -indirect
config flag
+
+
+ Version 1.6 — May 7, 2003
+
+ Added Togl_SetTimerFunc function
+ Updated for Tcl/Tk 8.0.5 and 8.1
+ Context sharing added for Windows
+ Macintosh support (by Paul Thiessen)
+ Tcl/Tk stubs support — see README.tcl (by Jonas Beskow)
+
+
+ Version 1.7 — Jan 2006
+
+ Added Mac OS X support
+ Enabled asking for quad-buffered stereo pixel formats on all platforms
+ (use -oldstereo on SGIs for splitscreen stereo — C API changed too)
+ Configuring the cursor is no longer slow
+ Added -pixelformat
config flag
+ Added setgrid support (unfortunately many window managers can't cope with 1x1 pixel grid)
+ Only free context when last reference is gone
+ Switched to TEA-based configure (instead of editting make files)
+
+
+ Version 2.0 — ??? 2006
+
+
+
+ Future plans
+
+ add callback command options for create/display/reshape/destroy
+ add vertical sync control
+ multisampling support (can be worked-around by passing in a pixelformat)
+ replace EPS support with TK photo image support
+ simplify C API by requiring callback command options
+ stubify C API
+ Use Tcl object interface for callbacks
+ allow (require?) private colormap to given with TK photo image
+
+
+
+
+
+
+
+ Several people have contributed new features to Togl. Among them are:
+
+
+ Ramon Ramsan — overlay plane support
+ Miguel A. De Riera Pasenau — more overlay functions, X11 functions
+ and EPS output
+ Peter Dern and Elmar Gerwalin — Togl_TimerFunc and related code
+ Robert Casto — Windows NT port
+ Geza Groma — Windows 95/NT patches
+ Ben Evans — SGI stereo support
+ Paul Thiessen — Macintosh support
+ Jonas Beskow — Tcl/Tk stubs support
+ Paul Kienzle — TEA debugging and patches
+ Greg Couch — version 1.7
+
+
+ Many others have contributed bug fixes. Thanks for your contributions!
+
+
+
+ Last edited on 25 October 2005 by Greg Couch.
+
+
+
diff --git a/ng/Togl-1.7/aclocal.m4 b/ng/Togl-1.7/aclocal.m4
new file mode 100644
index 00000000..0b057391
--- /dev/null
+++ b/ng/Togl-1.7/aclocal.m4
@@ -0,0 +1,9 @@
+#
+# Include the TEA standard macro set
+#
+
+builtin(include,tclconfig/tcl.m4)
+
+#
+# Add here whatever m4 macros you want to define for your package
+#
diff --git a/ng/Togl-1.7/ben.rgb b/ng/Togl-1.7/ben.rgb
new file mode 100644
index 00000000..4eb067a2
Binary files /dev/null and b/ng/Togl-1.7/ben.rgb differ
diff --git a/ng/Togl-1.7/configure b/ng/Togl-1.7/configure
new file mode 100755
index 00000000..531e796b
--- /dev/null
+++ b/ng/Togl-1.7/configure
@@ -0,0 +1,9300 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.68 for Togl 1.7.
+#
+#
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 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 more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in #(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+as_myself=
+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
+IFS=$as_save_IFS
+
+ ;;
+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
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test "x$CONFIG_SHELL" = x; then
+ as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '\${1+\"\$@\"}'='\"\$@\"'
+ setopt NO_GLOB_SUBST
+else
+ case \`(set -o) 2>/dev/null\` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+"
+ as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+ exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1"
+ as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+ as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+ eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+ test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+ if (eval "$as_required") 2>/dev/null; then :
+ as_have_required=yes
+else
+ as_have_required=no
+fi
+ if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ as_found=:
+ case $as_dir in #(
+ /*)
+ for as_base in sh bash ksh sh5; do
+ # Try only shells that exist, to save several forks.
+ as_shell=$as_dir/$as_base
+ if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ CONFIG_SHELL=$as_shell as_have_required=yes
+ if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ break 2
+fi
+fi
+ done;;
+ esac
+ as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+ CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+ if test "x$CONFIG_SHELL" != x; then :
+ # We cannot yet assume a decent shell, so we have to provide a
+ # neutralization value for shells without unset; and this also
+ # works around shells that cannot unset nonexistent variables.
+ # Preserve -v and -x to the replacement shell.
+ BASH_ENV=/dev/null
+ ENV=/dev/null
+ (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+ export CONFIG_SHELL
+ case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+ esac
+ exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
+fi
+
+ if test x$as_have_required = xno; then :
+ $as_echo "$0: This script requires a shell more modern than all"
+ $as_echo "$0: the shells that I found on your system."
+ if test x${ZSH_VERSION+set} = xset ; then
+ $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+ $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+ else
+ $as_echo "$0: Please tell bug-autoconf@gnu.org about your system,
+$0: including any error possibly output before this
+$0: message. Then install a modern shell, or manually run
+$0: the script under such a shell if you do have one."
+ fi
+ exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$1; test $as_status -eq 0 && as_status=1
+ if test "$4"; then
+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ fi
+ $as_echo "$as_me: error: $2" >&2
+ as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; 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
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# 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
+
+
+ as_lineno_1=$LINENO as_lineno_1a=$LINENO
+ as_lineno_2=$LINENO as_lineno_2a=$LINENO
+ eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+ test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+ # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
+ sed -n '
+ p
+ /[$]LINENO/=
+ ' <$as_myself |
+ sed '
+ s/[$]LINENO.*/&-/
+ t lineno
+ b
+ :lineno
+ N
+ :loop
+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+ s/-\n.*//
+ ' >$as_me.lineno &&
+ chmod +x "$as_me.lineno" ||
+ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_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 sensitive to this).
+ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -p'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -p'
+ fi
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+ as_test_x='test -x'
+else
+ if ls -dL / >/dev/null 2>&1; then
+ as_ls_L_option=L
+ else
+ as_ls_L_option=
+ fi
+ as_test_x='
+ eval sh -c '\''
+ if test -d "$1"; then
+ test -d "$1/.";
+ else
+ case $1 in #(
+ -*)set "./$1";;
+ esac;
+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+ ???[sx]*):;;*)false;;esac;fi
+ '\'' sh
+ '
+fi
+as_executable_p=$as_test_x
+
+# 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'"
+
+
+test -n "$DJDIR" || exec 7<&0 &1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME='Togl'
+PACKAGE_TARNAME='togl'
+PACKAGE_VERSION='1.7'
+PACKAGE_STRING='Togl 1.7'
+PACKAGE_BUGREPORT=''
+PACKAGE_URL=''
+
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include
+#ifdef HAVE_SYS_TYPES_H
+# include
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include
+#endif
+#ifdef STDC_HEADERS
+# include
+# include
+#else
+# ifdef HAVE_STDLIB_H
+# include
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+# include
+# endif
+# include
+#endif
+#ifdef HAVE_STRINGS_H
+# include
+#endif
+#ifdef HAVE_INTTYPES_H
+# include
+#endif
+#ifdef HAVE_STDINT_H
+# include
+#endif
+#ifdef HAVE_UNISTD_H
+# include
+#endif"
+
+ac_subst_vars='LTLIBOBJS
+WISH_PROG
+TCLSH_PROG
+RANLIB_STUB
+MAKE_STUB_LIB
+MAKE_STATIC_LIB
+MAKE_SHARED_LIB
+MAKE_LIB
+LDFLAGS_DEFAULT
+CFLAGS_DEFAULT
+TCL_DBGX
+SHLIB_SUFFIX
+LD_LIBRARY_PATH_VAR
+LDFLAGS_OPTIMIZE
+LDFLAGS_DEBUG
+SHLIB_LD_LIBS
+SHLIB_CFLAGS
+SHLIB_LD
+STLIB_LD
+CFLAGS_WARNING
+CFLAGS_OPTIMIZE
+CFLAGS_DEBUG
+DL_LIBS
+LIBOBJS
+CELIB_DIR
+AR
+SHARED_BUILD
+TCL_THREADS
+LIBGLU
+TOGL_WINDOWINGSYSTEM
+XMKMF
+TK_INCLUDES
+TK_PLATFORM_DIR_NATIVE
+TK_XLIB_DIR_NATIVE
+TK_GENERIC_DIR_NATIVE
+TK_WIN_DIR_NATIVE
+TK_UNIX_DIR_NATIVE
+TK_TOP_DIR_NATIVE
+TCL_INCLUDES
+CLEANFILES
+PKG_OBJECTS
+PKG_SOURCES
+MATH_LIBS
+EGREP
+GREP
+RANLIB
+SET_MAKE
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+CPP
+OBJEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+TK_XINCLUDES
+TK_LIBS
+TK_STUB_LIB_SPEC
+TK_STUB_LIB_FLAG
+TK_STUB_LIB_FILE
+TK_LIB_SPEC
+TK_LIB_FLAG
+TK_LIB_FILE
+TK_SRC_DIR
+TK_BIN_DIR
+TK_VERSION
+TCL_SHLIB_LD_LIBS
+TCL_LD_FLAGS
+TCL_EXTRA_CFLAGS
+TCL_DEFS
+TCL_LIBS
+TCL_STUB_LIB_SPEC
+TCL_STUB_LIB_FLAG
+TCL_STUB_LIB_FILE
+TCL_LIB_SPEC
+TCL_LIB_FLAG
+TCL_LIB_FILE
+TCL_SRC_DIR
+TCL_BIN_DIR
+TCL_VERSION
+PKG_CFLAGS
+PKG_LIBS
+PKG_INCLUDES
+PKG_HEADERS
+PKG_TCL_SOURCES
+PKG_STUB_OBJECTS
+PKG_STUB_SOURCES
+PKG_STUB_LIB_FILE
+PKG_LIB_FILE
+EXEEXT
+CYGPATH
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+with_tcl
+with_tk
+with_tclinclude
+with_x
+enable_threads
+enable_shared
+enable_64bit
+enable_64bit_vis
+enable_wince
+with_celib
+enable_load
+enable_symbols
+'
+ ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CPP
+XMKMF'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# 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.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+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
+
+ case $ac_option in
+ *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+ *=) ac_optarg= ;;
+ *) ac_optarg=yes ;;
+ esac
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+ case $ac_dashdash$ac_option in
+ --)
+ ac_dashdash=yes ;;
+
+ -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)
+ ac_prev=datadir ;;
+ -datadir=* | --datadir=* | --datadi=* | --datad=*)
+ datadir=$ac_optarg ;;
+
+ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+ | --dataroo | --dataro | --datar)
+ ac_prev=datarootdir ;;
+ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+ datarootdir=$ac_optarg ;;
+
+ -disable-* | --disable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=no ;;
+
+ -docdir | --docdir | --docdi | --doc | --do)
+ ac_prev=docdir ;;
+ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+ docdir=$ac_optarg ;;
+
+ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+ ac_prev=dvidir ;;
+ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+ dvidir=$ac_optarg ;;
+
+ -enable-* | --enable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=\$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 ;;
+
+ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+ ac_prev=htmldir ;;
+ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+ | --ht=*)
+ htmldir=$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 ;;
+
+ -localedir | --localedir | --localedi | --localed | --locale)
+ ac_prev=localedir ;;
+ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+ localedir=$ac_optarg ;;
+
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+ | --localstate | --localstat | --localsta | --localst | --locals)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+ 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 ;;
+
+ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+ ac_prev=pdfdir ;;
+ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+ pdfdir=$ac_optarg ;;
+
+ -psdir | --psdir | --psdi | --psd | --ps)
+ ac_prev=psdir ;;
+ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+ psdir=$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_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=\$ac_optarg ;;
+
+ -without-* | --without-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=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 ;;
+
+ -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
+ ;;
+
+ *=*)
+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+ # Reject names that are not valid shell variable names.
+ case $ac_envvar in #(
+ '' | [0-9]* | *[!_$as_cr_alnum]* )
+ as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+ esac
+ eval $ac_envvar=\$ac_optarg
+ export $ac_envvar ;;
+
+ *)
+ # FIXME: should be removed in autoconf 3.0.
+ $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ $as_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'`
+ as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+ case $enable_option_checking in
+ no) ;;
+ fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+ *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+ esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
+ datadir sysconfdir sharedstatedir localstatedir includedir \
+ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+ libdir localedir mandir
+do
+ eval ac_val=\$$ac_var
+ # Remove trailing slashes.
+ case $ac_val in
+ */ )
+ ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+ eval $ac_var=\$ac_val;;
+ esac
+ # Be sure to have absolute directory names.
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* ) continue;;
+ NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+ esac
+ as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
+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
+ $as_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
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+ as_fn_error $? "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+ as_fn_error $? "pwd does not report name of working directory"
+
+
+# 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 the parent directory.
+ ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_myself" : 'X\(//\)[^/]' \| \
+ X"$as_myself" : 'X\(//\)$' \| \
+ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+ 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
+ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+ as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+ cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
+ pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+ srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+ eval ac_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_env_${ac_var}_value=\$${ac_var}
+ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# 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 Togl 1.7 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 \`..']
+
+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]
+ --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]
+ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
+ --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
+ --infodir=DIR info documentation [DATAROOTDIR/info]
+ --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
+ --mandir=DIR man documentation [DATAROOTDIR/man]
+ --docdir=DIR documentation root [DATAROOTDIR/doc/togl]
+ --htmldir=DIR html documentation [DOCDIR]
+ --dvidir=DIR dvi documentation [DOCDIR]
+ --pdfdir=DIR pdf documentation [DOCDIR]
+ --psdir=DIR ps documentation [DOCDIR]
+_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
+ case $ac_init_help in
+ short | recursive ) echo "Configuration of Togl 1.7:";;
+ esac
+ cat <<\_ACEOF
+
+Optional Features:
+ --disable-option-checking ignore unrecognized --enable/--with options
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --enable-threads build with threads
+ --enable-shared build and link with shared libraries --enable-shared
+ --enable-64bit enable 64bit support (where applicable)
+ --enable-64bit-vis enable 64bit Sparc VIS support
+ --enable-wince enable Win/CE support (where applicable)
+ --disable-load disallow dynamic loading and "load" command
+ --enable-symbols build with debugging symbols --disable-symbols
+
+Optional Packages:
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+ --with-tcl directory containing tcl configuration (tclConfig.sh)
+ --with-tk directory containing tk configuration (tkConfig.sh)
+ --with-tclinclude directory containing the public Tcl header files
+ --with-x use the X Window System
+ --with-celib=DIR use Windows/CE support library from DIR
+
+Some influential environment variables:
+ CC C compiler command
+ CFLAGS C compiler flags
+ LDFLAGS linker flags, e.g. -L if you have libraries in a
+ nonstandard directory
+ LIBS libraries to pass to the linker, e.g. -l
+ CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if
+ you have headers in a nonstandard directory
+ CPP C preprocessor
+ XMKMF Path to xmkmf, Makefile generator for X Window System
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to the package provider.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+ # If there are subdirs, report their specific --help.
+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+ test -d "$ac_dir" ||
+ { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+ continue
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+ cd "$ac_dir" || { ac_status=$?; continue; }
+ # Check for guested 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
+ else
+ $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ fi || ac_status=$?
+ cd "$ac_pwd" || { ac_status=$?; break; }
+ done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+ cat <<\_ACEOF
+Togl configure 1.7
+generated by GNU Autoconf 2.68
+
+Copyright (C) 2010 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
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext
+ if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } > conftest.i && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_cpp
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=$ac_status
+fi
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ eval "$3=yes"
+else
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_compile
+
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext conftest$ac_exeext
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+ # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+ # interfere with the next link command; also delete a directory that is
+ # left behind by Apple's compiler. We do this before executing the actions.
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
+# ac_fn_c_check_func LINENO FUNC VAR
+# ----------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_c_check_func ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+/* Define $2 to an innocuous variant, in case declares $2.
+ For example, HP-UX 11i declares gettimeofday. */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $2 (); below.
+ Prefer to if __STDC__ is defined, since
+ exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include
+#else
+# include
+#endif
+
+#undef $2
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* 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_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main ()
+{
+return $2 ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ eval "$3=yes"
+else
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_func
+
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if eval \${$3+:} false; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_header_compiler=yes
+else
+ ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ ac_header_preproc=yes
+else
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+ yes:no: )
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+ ;;
+esac
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_mongrel
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by Togl $as_me 1.7, which was
+generated by GNU Autoconf 2.68. Invocation command line was
+
+ $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+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`
+/usr/bin/hostinfo = `(/usr/bin/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=.
+ $as_echo "PATH: $as_dir"
+ done
+IFS=$as_save_IFS
+
+} >&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_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=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ case $ac_pass in
+ 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+ 2)
+ as_fn_append 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
+ as_fn_append ac_configure_args " '$ac_arg'"
+ ;;
+ esac
+ done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset 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: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+ # Save into config.log some information that might help in debugging.
+ {
+ echo
+
+ $as_echo "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+(
+ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+ (set) 2>&1 |
+ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ sed -n \
+ "s/'\''/'\''\\\\'\'''\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+ ;; #(
+ *)
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+)
+ echo
+
+ $as_echo "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+ echo
+ for ac_var in $ac_subst_vars
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+ echo
+ for ac_var in $ac_subst_files
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+ fi
+
+ if test -s confdefs.h; then
+ $as_echo "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+ echo
+ cat confdefs.h
+ echo
+ fi
+ test "$ac_signal" != 0 &&
+ $as_echo "$as_me: caught signal $ac_signal"
+ $as_echo "$as_me: exit $exit_status"
+ } >&5
+ rm -f core *.core core.conftest.* &&
+ rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+ trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > 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
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+ # We do not want a PATH search for config.site.
+ case $CONFIG_SITE in #((
+ -*) ac_site_file1=./$CONFIG_SITE;;
+ */*) ac_site_file1=$CONFIG_SITE;;
+ *) ac_site_file1=./$CONFIG_SITE;;
+ esac
+elif test "x$prefix" != xNONE; then
+ ac_site_file1=$prefix/share/config.site
+ ac_site_file2=$prefix/etc/config.site
+else
+ ac_site_file1=$ac_default_prefix/share/config.site
+ ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+ test "x$ac_site_file" = xNONE && continue
+ if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+ sed 's/^/| /' "$ac_site_file" >&5
+ . "$ac_site_file" \
+ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
+ 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. DJGPP emulates it as a regular file.
+ if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+ [\\/]* | ?:[\\/]* ) . "$cache_file";;
+ *) . "./$cache_file";;
+ esac
+ fi
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_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 $ac_precious_vars; 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,)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,set)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_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
+ # differences in whitespace do not lead to failure.
+ ac_old_val_w=`echo x $ac_old_val`
+ ac_new_val_w=`echo x $ac_new_val`
+ if test "$ac_old_val_w" != "$ac_new_val_w"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ ac_cache_corrupted=:
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+ eval $ac_var=\$ac_old_val
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
+$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
+$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
+ fi;;
+ esac
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+ *\'*) ac_arg=$ac_var=`$as_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.
+ *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+ esac
+ fi
+done
+if $ac_cache_corrupted; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+ as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+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
+
+
+
+#--------------------------------------------------------------------
+# Call TEA_INIT as the first TEA_ macro to set up initial vars.
+# This will define a ${TEA_PLATFORM} variable == "unix" or "windows"
+# as well as PKG_LIB_FILE and PKG_STUB_LIB_FILE.
+#--------------------------------------------------------------------
+
+
+ # TEA extensions pass this us the version of TEA they think they
+ # are compatible with.
+ TEA_VERSION="3.4"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for correct TEA configuration" >&5
+$as_echo_n "checking for correct TEA configuration... " >&6; }
+ if test x"${PACKAGE_NAME}" = x ; then
+ as_fn_error $? "
+The PACKAGE_NAME variable must be defined by your TEA configure.in" "$LINENO" 5
+ fi
+ if test x"3.4" = x ; then
+ as_fn_error $? "
+TEA version not specified." "$LINENO" 5
+ elif test "3.4" != "${TEA_VERSION}" ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: warning: requested TEA version \"3.4\", have \"${TEA_VERSION}\"" >&5
+$as_echo "warning: requested TEA version \"3.4\", have \"${TEA_VERSION}\"" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (TEA ${TEA_VERSION})" >&5
+$as_echo "ok (TEA ${TEA_VERSION})" >&6; }
+ fi
+ case "`uname -s`" in
+ *win32*|*WIN32*|*CYGWIN_NT*|*CYGWIN_9*|*CYGWIN_ME*|*MINGW32_*)
+ # Extract the first word of "cygpath", so it can be a program name with args.
+set dummy cygpath; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CYGPATH+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CYGPATH"; then
+ ac_cv_prog_CYGPATH="$CYGPATH" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CYGPATH="cygpath -w"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ test -z "$ac_cv_prog_CYGPATH" && ac_cv_prog_CYGPATH="echo"
+fi
+fi
+CYGPATH=$ac_cv_prog_CYGPATH
+if test -n "$CYGPATH"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CYGPATH" >&5
+$as_echo "$CYGPATH" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ EXEEXT=".exe"
+ TEA_PLATFORM="windows"
+ ;;
+ *)
+ CYGPATH=echo
+ EXEEXT=""
+ TEA_PLATFORM="unix"
+ ;;
+ esac
+
+ # Check if exec_prefix is set. If not use fall back to prefix.
+ # Note when adjusted, so that TEA_PREFIX can correct for this.
+ # This is needed for recursive configures, since autoconf propagates
+ # $prefix, but not $exec_prefix (doh!).
+ if test x$exec_prefix = xNONE ; then
+ exec_prefix_default=yes
+ exec_prefix=$prefix
+ fi
+
+
+
+
+ # This package name must be replaced statically for AC_SUBST to work
+
+ # Substitute STUB_LIB_FILE in case package creates a stub library too.
+
+
+ # We AC_SUBST these here to ensure they are subst'ed,
+ # in case the user doesn't call TEA_ADD_...
+
+
+
+
+
+
+
+
+
+ac_aux_dir=
+for ac_dir in tclconfig "$srcdir"/tclconfig; do
+ if test -f "$ac_dir/install-sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+ elif test -f "$ac_dir/install.sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+ elif test -f "$ac_dir/shtool"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/shtool install -c"
+ break
+ fi
+done
+if test -z "$ac_aux_dir"; then
+ as_fn_error $? "cannot find install-sh, install.sh, or shtool in tclconfig \"$srcdir\"/tclconfig" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
+
+
+
+#--------------------------------------------------------------------
+# Load the tclConfig.sh file
+#--------------------------------------------------------------------
+
+
+
+ #
+ # Ok, lets find the tcl configuration
+ # First, look for one uninstalled.
+ # the alternative search directory is invoked by --with-tcl
+ #
+
+ if test x"${no_tcl}" = x ; then
+ # we reset no_tcl in case something fails here
+ no_tcl=true
+
+# Check whether --with-tcl was given.
+if test "${with_tcl+set}" = set; then :
+ withval=$with_tcl; with_tclconfig=${withval}
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Tcl configuration" >&5
+$as_echo_n "checking for Tcl configuration... " >&6; }
+ if ${ac_cv_c_tclconfig+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+
+ # First check to see if --with-tcl was specified.
+ if test x"${with_tclconfig}" != x ; then
+ case ${with_tclconfig} in
+ */tclConfig.sh )
+ if test -f ${with_tclconfig}; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --with-tcl argument should refer to directory containing tclConfig.sh, not to tclConfig.sh itself" >&5
+$as_echo "$as_me: WARNING: --with-tcl argument should refer to directory containing tclConfig.sh, not to tclConfig.sh itself" >&2;}
+ with_tclconfig=`echo ${with_tclconfig} | sed 's!/tclConfig\.sh$!!'`
+ fi ;;
+ esac
+ if test -f "${with_tclconfig}/tclConfig.sh" ; then
+ ac_cv_c_tclconfig=`(cd ${with_tclconfig}; pwd)`
+ else
+ as_fn_error $? "${with_tclconfig} directory doesn't contain tclConfig.sh" "$LINENO" 5
+ fi
+ fi
+
+ # then check for a private Tcl installation
+ if test x"${ac_cv_c_tclconfig}" = x ; then
+ for i in \
+ ../tcl \
+ `ls -dr ../tcl[8-9].[0-9].[0-9]* 2>/dev/null` \
+ `ls -dr ../tcl[8-9].[0-9] 2>/dev/null` \
+ `ls -dr ../tcl[8-9].[0-9]* 2>/dev/null` \
+ ../../tcl \
+ `ls -dr ../../tcl[8-9].[0-9].[0-9]* 2>/dev/null` \
+ `ls -dr ../../tcl[8-9].[0-9] 2>/dev/null` \
+ `ls -dr ../../tcl[8-9].[0-9]* 2>/dev/null` \
+ ../../../tcl \
+ `ls -dr ../../../tcl[8-9].[0-9].[0-9]* 2>/dev/null` \
+ `ls -dr ../../../tcl[8-9].[0-9] 2>/dev/null` \
+ `ls -dr ../../../tcl[8-9].[0-9]* 2>/dev/null` ; do
+ if test -f "$i/unix/tclConfig.sh" ; then
+ ac_cv_c_tclconfig=`(cd $i/unix; pwd)`
+ break
+ fi
+ done
+ fi
+
+ # on Darwin, check in Framework installation locations
+ if test "`uname -s`" = "Darwin" -a x"${ac_cv_c_tclconfig}" = x ; then
+ for i in `ls -d ~/Library/Frameworks 2>/dev/null` \
+ `ls -d /Library/Frameworks 2>/dev/null` \
+ `ls -d /Network/Library/Frameworks 2>/dev/null` \
+ `ls -d /System/Library/Frameworks 2>/dev/null` \
+ ; do
+ if test -f "$i/Tcl.framework/tclConfig.sh" ; then
+ ac_cv_c_tclconfig=`(cd $i/Tcl.framework; pwd)`
+ break
+ fi
+ done
+ fi
+
+ # check in a few common install locations
+ if test x"${ac_cv_c_tclconfig}" = x ; then
+ for i in `ls -d ${libdir} 2>/dev/null` \
+ `ls -d ${exec_prefix}/lib 2>/dev/null` \
+ `ls -d ${prefix}/lib 2>/dev/null` \
+ `ls -d /usr/local/lib 2>/dev/null` \
+ `ls -d /usr/contrib/lib 2>/dev/null` \
+ `ls -d /usr/lib 2>/dev/null` \
+ ; do
+ if test -f "$i/tclConfig.sh" ; then
+ ac_cv_c_tclconfig=`(cd $i; pwd)`
+ break
+ fi
+ done
+ fi
+
+ # check in a few other private locations
+ if test x"${ac_cv_c_tclconfig}" = x ; then
+ for i in \
+ ${srcdir}/../tcl \
+ `ls -dr ${srcdir}/../tcl[8-9].[0-9].[0-9]* 2>/dev/null` \
+ `ls -dr ${srcdir}/../tcl[8-9].[0-9] 2>/dev/null` \
+ `ls -dr ${srcdir}/../tcl[8-9].[0-9]* 2>/dev/null` ; do
+ if test -f "$i/unix/tclConfig.sh" ; then
+ ac_cv_c_tclconfig=`(cd $i/unix; pwd)`
+ break
+ fi
+ done
+ fi
+
+fi
+
+
+ if test x"${ac_cv_c_tclconfig}" = x ; then
+ TCL_BIN_DIR="# no Tcl configs found"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"Cannot find Tcl configuration definitions\"" >&5
+$as_echo "$as_me: WARNING: \"Cannot find Tcl configuration definitions\"" >&2;}
+ exit 0
+ else
+ no_tcl=
+ TCL_BIN_DIR=${ac_cv_c_tclconfig}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: found $TCL_BIN_DIR/tclConfig.sh" >&5
+$as_echo "found $TCL_BIN_DIR/tclConfig.sh" >&6; }
+ fi
+ fi
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for existence of $TCL_BIN_DIR/tclConfig.sh" >&5
+$as_echo_n "checking for existence of $TCL_BIN_DIR/tclConfig.sh... " >&6; }
+
+ if test -f "$TCL_BIN_DIR/tclConfig.sh" ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: loading" >&5
+$as_echo "loading" >&6; }
+ . $TCL_BIN_DIR/tclConfig.sh
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: file not found" >&5
+$as_echo "file not found" >&6; }
+ fi
+
+ #
+ # If the TCL_BIN_DIR is the build directory (not the install directory),
+ # then set the common variable name to the value of the build variables.
+ # For example, the variable TCL_LIB_SPEC will be set to the value
+ # of TCL_BUILD_LIB_SPEC. An extension should make use of TCL_LIB_SPEC
+ # instead of TCL_BUILD_LIB_SPEC since it will work with both an
+ # installed and uninstalled version of Tcl.
+ #
+
+ if test -f $TCL_BIN_DIR/Makefile ; then
+ TCL_LIB_SPEC=${TCL_BUILD_LIB_SPEC}
+ TCL_STUB_LIB_SPEC=${TCL_BUILD_STUB_LIB_SPEC}
+ TCL_STUB_LIB_PATH=${TCL_BUILD_STUB_LIB_PATH}
+ fi
+
+ #
+ # eval is required to do the TCL_DBGX substitution
+ #
+
+ eval "TCL_LIB_FILE=\"${TCL_LIB_FILE}\""
+ eval "TCL_LIB_FLAG=\"${TCL_LIB_FLAG}\""
+ eval "TCL_LIB_SPEC=\"${TCL_LIB_SPEC}\""
+
+ eval "TCL_STUB_LIB_FILE=\"${TCL_STUB_LIB_FILE}\""
+ eval "TCL_STUB_LIB_FLAG=\"${TCL_STUB_LIB_FLAG}\""
+ eval "TCL_STUB_LIB_SPEC=\"${TCL_STUB_LIB_SPEC}\""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #AC_SUBST(TCL_BUILD_LIB_SPEC)
+ #AC_SUBST(TCL_BUILD_STUB_LIB_SPEC)
+
+
+#--------------------------------------------------------------------
+# Load the tkConfig.sh file if necessary (Tk extension)
+#--------------------------------------------------------------------
+
+
+ #
+ # Ok, lets find the tk configuration
+ # First, look for one uninstalled.
+ # the alternative search directory is invoked by --with-tk
+ #
+
+ if test x"${no_tk}" = x ; then
+ # we reset no_tk in case something fails here
+ no_tk=true
+
+# Check whether --with-tk was given.
+if test "${with_tk+set}" = set; then :
+ withval=$with_tk; with_tkconfig=${withval}
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Tk configuration" >&5
+$as_echo_n "checking for Tk configuration... " >&6; }
+ if ${ac_cv_c_tkconfig+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+
+ # First check to see if --with-tkconfig was specified.
+ if test x"${with_tkconfig}" != x ; then
+ case ${with_tkconfig} in
+ */tkConfig.sh )
+ if test -f ${with_tkconfig}; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --with-tk argument should refer to directory containing tkConfig.sh, not to tkConfig.sh itself" >&5
+$as_echo "$as_me: WARNING: --with-tk argument should refer to directory containing tkConfig.sh, not to tkConfig.sh itself" >&2;}
+ with_tkconfig=`echo ${with_tkconfig} | sed 's!/tkConfig\.sh$!!'`
+ fi ;;
+ esac
+ if test -f "${with_tkconfig}/tkConfig.sh" ; then
+ ac_cv_c_tkconfig=`(cd ${with_tkconfig}; pwd)`
+ else
+ as_fn_error $? "${with_tkconfig} directory doesn't contain tkConfig.sh" "$LINENO" 5
+ fi
+ fi
+
+ # then check for a private Tk library
+ if test x"${ac_cv_c_tkconfig}" = x ; then
+ for i in \
+ ../tk \
+ `ls -dr ../tk[8-9].[0-9].[0-9]* 2>/dev/null` \
+ `ls -dr ../tk[8-9].[0-9] 2>/dev/null` \
+ `ls -dr ../tk[8-9].[0-9]* 2>/dev/null` \
+ ../../tk \
+ `ls -dr ../../tk[8-9].[0-9].[0-9]* 2>/dev/null` \
+ `ls -dr ../../tk[8-9].[0-9] 2>/dev/null` \
+ `ls -dr ../../tk[8-9].[0-9]* 2>/dev/null` \
+ ../../../tk \
+ `ls -dr ../../../tk[8-9].[0-9].[0-9]* 2>/dev/null` \
+ `ls -dr ../../../tk[8-9].[0-9] 2>/dev/null` \
+ `ls -dr ../../../tk[8-9].[0-9]* 2>/dev/null` ; do
+ if test -f "$i/unix/tkConfig.sh" ; then
+ ac_cv_c_tkconfig=`(cd $i/unix; pwd)`
+ break
+ fi
+ done
+ fi
+
+ # on Darwin, check in Framework installation locations
+ if test "`uname -s`" = "Darwin" -a x"${ac_cv_c_tkconfig}" = x ; then
+ for i in `ls -d ~/Library/Frameworks 2>/dev/null` \
+ `ls -d /Library/Frameworks 2>/dev/null` \
+ `ls -d /Network/Library/Frameworks 2>/dev/null` \
+ `ls -d /System/Library/Frameworks 2>/dev/null` \
+ ; do
+ if test -f "$i/Tk.framework/tkConfig.sh" ; then
+ ac_cv_c_tkconfig=`(cd $i/Tk.framework; pwd)`
+ break
+ fi
+ done
+ fi
+
+ # check in a few common install locations
+ if test x"${ac_cv_c_tkconfig}" = x ; then
+ for i in `ls -d ${libdir} 2>/dev/null` \
+ `ls -d ${exec_prefix}/lib 2>/dev/null` \
+ `ls -d ${prefix}/lib 2>/dev/null` \
+ `ls -d /usr/local/lib 2>/dev/null` \
+ `ls -d /usr/contrib/lib 2>/dev/null` \
+ `ls -d /usr/lib 2>/dev/null` \
+ ; do
+ if test -f "$i/tkConfig.sh" ; then
+ ac_cv_c_tkconfig=`(cd $i; pwd)`
+ break
+ fi
+ done
+ fi
+ # check in a few other private locations
+ if test x"${ac_cv_c_tkconfig}" = x ; then
+ for i in \
+ ${srcdir}/../tk \
+ `ls -dr ${srcdir}/../tk[8-9].[0-9].[0-9]* 2>/dev/null` \
+ `ls -dr ${srcdir}/../tk[8-9].[0-9] 2>/dev/null` \
+ `ls -dr ${srcdir}/../tk[8-9].[0-9]* 2>/dev/null` ; do
+ if test -f "$i/unix/tkConfig.sh" ; then
+ ac_cv_c_tkconfig=`(cd $i/unix; pwd)`
+ break
+ fi
+ done
+ fi
+
+fi
+
+
+ if test x"${ac_cv_c_tkconfig}" = x ; then
+ TK_BIN_DIR="# no Tk configs found"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"Cannot find Tk configuration definitions\"" >&5
+$as_echo "$as_me: WARNING: \"Cannot find Tk configuration definitions\"" >&2;}
+ exit 0
+ else
+ no_tk=
+ TK_BIN_DIR=${ac_cv_c_tkconfig}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: found $TK_BIN_DIR/tkConfig.sh" >&5
+$as_echo "found $TK_BIN_DIR/tkConfig.sh" >&6; }
+ fi
+ fi
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for existence of ${TK_BIN_DIR}/tkConfig.sh" >&5
+$as_echo_n "checking for existence of ${TK_BIN_DIR}/tkConfig.sh... " >&6; }
+
+ if test -f "${TK_BIN_DIR}/tkConfig.sh" ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: loading" >&5
+$as_echo "loading" >&6; }
+ . $TK_BIN_DIR/tkConfig.sh
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: could not find ${TK_BIN_DIR}/tkConfig.sh" >&5
+$as_echo "could not find ${TK_BIN_DIR}/tkConfig.sh" >&6; }
+ fi
+
+ #
+ # If the TK_BIN_DIR is the build directory (not the install directory),
+ # then set the common variable name to the value of the build variables.
+ # For example, the variable TK_LIB_SPEC will be set to the value
+ # of TK_BUILD_LIB_SPEC. An extension should make use of TK_LIB_SPEC
+ # instead of TK_BUILD_LIB_SPEC since it will work with both an
+ # installed and uninstalled version of Tcl.
+ #
+
+ if test -f $TK_BIN_DIR/Makefile ; then
+ TK_LIB_SPEC=${TK_BUILD_LIB_SPEC}
+ TK_STUB_LIB_SPEC=${TK_BUILD_STUB_LIB_SPEC}
+ TK_STUB_LIB_PATH=${TK_BUILD_STUB_LIB_PATH}
+ fi
+
+ # Ensure windowingsystem is defined
+ if test "${TEA_PLATFORM}" = "unix" ; then
+ case ${TK_DEFS} in
+ *MAC_OSX_TK*)
+
+$as_echo "#define MAC_OSX_TK 1" >>confdefs.h
+
+ TEA_WINDOWINGSYSTEM="aqua"
+ ;;
+ *)
+ TEA_WINDOWINGSYSTEM="x11"
+ ;;
+ esac
+ elif test "${TEA_PLATFORM}" = "windows" ; then
+ TEA_WINDOWINGSYSTEM="win32"
+ fi
+
+ #
+ # eval is required to do the TK_DBGX substitution
+ #
+
+ eval "TK_LIB_FILE=\"${TK_LIB_FILE}\""
+ eval "TK_LIB_FLAG=\"${TK_LIB_FLAG}\""
+ eval "TK_LIB_SPEC=\"${TK_LIB_SPEC}\""
+
+ eval "TK_STUB_LIB_FILE=\"${TK_STUB_LIB_FILE}\""
+ eval "TK_STUB_LIB_FLAG=\"${TK_STUB_LIB_FLAG}\""
+ eval "TK_STUB_LIB_SPEC=\"${TK_STUB_LIB_SPEC}\""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#-----------------------------------------------------------------------
+# Handle the --prefix=... option by defaulting to what Tcl gave.
+# Must be called after TEA_LOAD_TCLCONFIG and before TEA_SETUP_COMPILER.
+#-----------------------------------------------------------------------
+
+
+ if test "${prefix}" = "NONE"; then
+ prefix_default=yes
+ if test x"${TCL_PREFIX}" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: --prefix defaulting to TCL_PREFIX ${TCL_PREFIX}" >&5
+$as_echo "$as_me: --prefix defaulting to TCL_PREFIX ${TCL_PREFIX}" >&6;}
+ prefix=${TCL_PREFIX}
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: --prefix defaulting to /usr/local" >&5
+$as_echo "$as_me: --prefix defaulting to /usr/local" >&6;}
+ prefix=/usr/local
+ fi
+ fi
+ if test "${exec_prefix}" = "NONE" -a x"${prefix_default}" = x"yes" \
+ -o x"${exec_prefix_default}" = x"yes" ; then
+ if test x"${TCL_EXEC_PREFIX}" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: --exec-prefix defaulting to TCL_EXEC_PREFIX ${TCL_EXEC_PREFIX}" >&5
+$as_echo "$as_me: --exec-prefix defaulting to TCL_EXEC_PREFIX ${TCL_EXEC_PREFIX}" >&6;}
+ exec_prefix=${TCL_EXEC_PREFIX}
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: --exec-prefix defaulting to ${prefix}" >&5
+$as_echo "$as_me: --exec-prefix defaulting to ${prefix}" >&6;}
+ exec_prefix=$prefix
+ fi
+ fi
+
+
+#-----------------------------------------------------------------------
+# Standard compiler checks.
+# This sets up CC by using the CC env var, or looks for gcc otherwise.
+# This also calls AC_PROG_CC, AC_PROG_INSTALL and a few others to create
+# the basic setup necessary to compile executables.
+#-----------------------------------------------------------------------
+
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if ${ac_cv_path_install+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+ ./ | .// | /[cC]/* | \
+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+ /usr/ucb/* ) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ rm -rf conftest.one conftest.two conftest.dir
+ echo one > conftest.one
+ echo two > conftest.two
+ mkdir conftest.dir
+ if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+ test -s conftest.one && test -s conftest.two &&
+ test -s conftest.dir/conftest.one &&
+ test -s conftest.dir/conftest.two
+ then
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+
+ done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ INSTALL=$ac_install_sh
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+
+ # Don't put any macros that use the compiler (e.g. AC_TRY_COMPILE)
+ # in this macro, they need to go into TEA_SETUP_COMPILER instead.
+
+ # If the user did not set CFLAGS, set it now to keep
+ # the AC_PROG_CC macro from adding "-g -O2".
+ if test "${CFLAGS+set}" != "set" ; then
+ CFLAGS=""
+ 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}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+ $as_echo_n "(cached) " >&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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ 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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in cl.exe
+ 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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CC" && break
+ done
+fi
+if test -z "$CC"; then
+ ac_ct_CC=$CC
+ for ac_prog in cl.exe
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+ $as_echo_n "(cached) " >&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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_CC" && break
+done
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+ { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ sed '10a\
+... rest of stderr output deleted ...
+ 10q' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ fi
+ rm -f conftest.er1 conftest.err
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM 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.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+ esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link_default") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile. We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+ ;;
+ [ab].out )
+ # We found the default executable, but exeext='' is most
+ # certainly right.
+ break;;
+ *.* )
+ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+ then :; else
+ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ fi
+ # We set ac_cv_exeext here because the later test for it is not
+ # safe: cross compilers may not add the suffix if given an `-o'
+ # argument, so we may need to know it at that point already.
+ # Even if this section looks crufty: it has the advantage of
+ # actually working.
+ break;;
+ * )
+ break;;
+ esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+ ac_file=''
+fi
+if test -z "$ac_file"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; 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 | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ break;;
+ * ) break;;
+ esac
+done
+else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+ { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ if { ac_try='./conftest$ac_cv_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then
+ cross_compiling=no
+ else
+ if test "$cross_compiling" = maybe; then
+ cross_compiling=yes
+ else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+ fi
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ for ac_file in conftest.o conftest.obj conftest.*; do
+ test -f "$ac_file" || continue;
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_compiler_gnu=yes
+else
+ ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+ GCC=yes
+else
+ GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_save_c_werror_flag=$ac_c_werror_flag
+ ac_c_werror_flag=yes
+ ac_cv_prog_cc_g=no
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+else
+ CFLAGS=""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+ ac_c_werror_flag=$ac_save_c_werror_flag
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include
+#include
+#include
+#include
+/* 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 -std 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 -std. */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+ inside strings and character constants. */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 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
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+ test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+ x)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+ xno)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+ *)
+ CC="$CC $ac_cv_prog_cc_c89"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+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=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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+fi
+if test -z "$CPP"; then
+ if ${ac_cv_prog_CPP+:} false; then :
+ $as_echo_n "(cached) " >&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 to if __STDC__ is defined, since
+ # 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 confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __STDC__
+# include
+#else
+# include
+#endif
+ Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ # Broken: success on invalid input.
+continue
+else
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i 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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$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 to if __STDC__ is defined, since
+ # 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 confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __STDC__
+# include
+#else
+# include
+#endif
+ Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ # Broken: success on invalid input.
+continue
+else
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+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
+
+
+
+
+ #--------------------------------------------------------------------
+ # Checks to see if the make program sets the $MAKE variable.
+ #--------------------------------------------------------------------
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+ @echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+ *@@@%%%=?*=@@@%%%*)
+ eval ac_cv_prog_make_${ac_make}_set=yes;;
+ *)
+ eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ SET_MAKE=
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+
+ #--------------------------------------------------------------------
+ # Find ranlib
+ #--------------------------------------------------------------------
+
+ 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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_RANLIB+:} false; then :
+ $as_echo_n "(cached) " >&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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
+ $as_echo_n "(cached) " >&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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_RANLIB="ranlib"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_RANLIB" = x; then
+ RANLIB=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ RANLIB=$ac_ct_RANLIB
+ fi
+else
+ RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+
+ #--------------------------------------------------------------------
+ # Determines the correct binary file extension (.o, .obj, .exe etc.)
+ #--------------------------------------------------------------------
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$GREP"; then
+ ac_path_GREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in grep ggrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+ # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'GREP' >> "conftest.nl"
+ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_GREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_GREP="$ac_path_GREP"
+ ac_path_GREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_GREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_GREP"; then
+ as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+ then ac_cv_path_EGREP="$GREP -E"
+ else
+ if test -z "$EGREP"; then
+ ac_path_EGREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in egrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+ # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'EGREP' >> "conftest.nl"
+ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_EGREP="$ac_path_EGREP"
+ ac_path_EGREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_EGREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_EGREP"; then
+ as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_EGREP=$EGREP
+fi
+
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include
+#include
+#include
+#include
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_header_stdc=yes
+else
+ ac_cv_header_stdc=no
+fi
+rm -f core 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 confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include
+
+_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 confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include
+
+_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 confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include
+#include
+#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))
+ return 2;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+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=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+ # Any macros that use the compiler (e.g. AC_TRY_COMPILE) have to go here.
+
+
+ #------------------------------------------------------------------------
+ # If we're using GCC, see if the compiler understands -pipe. If so, use it.
+ # It makes compiling go faster. (This is only a performance feature.)
+ #------------------------------------------------------------------------
+
+ if test -z "$no_pipe" -a -n "$GCC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the compiler understands -pipe" >&5
+$as_echo_n "checking if the compiler understands -pipe... " >&6; }
+ OLDCC="$CC"
+ CC="$CC -pipe"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+ CC="$OLDCC"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+
+ #--------------------------------------------------------------------
+ # Common compiler flag setup
+ #--------------------------------------------------------------------
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
+$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
+if ${ac_cv_c_bigendian+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_c_bigendian=unknown
+ # See if we're dealing with a universal compiler.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifndef __APPLE_CC__
+ not a universal capable compiler
+ #endif
+ typedef int dummy;
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+ # Check for potential -arch flags. It is not universal unless
+ # there are at least two -arch flags with different values.
+ ac_arch=
+ ac_prev=
+ for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do
+ if test -n "$ac_prev"; then
+ case $ac_word in
+ i?86 | x86_64 | ppc | ppc64)
+ if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then
+ ac_arch=$ac_word
+ else
+ ac_cv_c_bigendian=universal
+ break
+ fi
+ ;;
+ esac
+ ac_prev=
+ elif test "x$ac_word" = "x-arch"; then
+ ac_prev=arch
+ fi
+ done
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ if test $ac_cv_c_bigendian = unknown; then
+ # See if sys/param.h defines the BYTE_ORDER macro.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include
+ #include
+
+int
+main ()
+{
+#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
+ && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
+ && LITTLE_ENDIAN)
+ bogus endian macros
+ #endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ # It does; now see whether it defined to BIG_ENDIAN or not.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include
+ #include
+
+int
+main ()
+{
+#if BYTE_ORDER != BIG_ENDIAN
+ not big endian
+ #endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_c_bigendian=yes
+else
+ ac_cv_c_bigendian=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ if test $ac_cv_c_bigendian = unknown; then
+ # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include
+
+int
+main ()
+{
+#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
+ bogus endian macros
+ #endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ # It does; now see whether it defined to _BIG_ENDIAN or not.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include
+
+int
+main ()
+{
+#ifndef _BIG_ENDIAN
+ not big endian
+ #endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_c_bigendian=yes
+else
+ ac_cv_c_bigendian=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ if test $ac_cv_c_bigendian = unknown; then
+ # Compile a test program.
+ if test "$cross_compiling" = yes; then :
+ # Try to guess by grepping values from an object file.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+short int ascii_mm[] =
+ { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
+ short int ascii_ii[] =
+ { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
+ int use_ascii (int i) {
+ return ascii_mm[i] + ascii_ii[i];
+ }
+ short int ebcdic_ii[] =
+ { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
+ short int ebcdic_mm[] =
+ { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
+ int use_ebcdic (int i) {
+ return ebcdic_mm[i] + ebcdic_ii[i];
+ }
+ extern int foo;
+
+int
+main ()
+{
+return use_ascii (foo) == use_ebcdic (foo);
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
+ ac_cv_c_bigendian=yes
+ fi
+ if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
+ if test "$ac_cv_c_bigendian" = unknown; then
+ ac_cv_c_bigendian=no
+ else
+ # finding both strings is unlikely to happen, but who knows?
+ ac_cv_c_bigendian=unknown
+ fi
+ fi
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+
+ /* Are we little or big endian? From Harbison&Steele. */
+ union
+ {
+ long int l;
+ char c[sizeof (long int)];
+ } u;
+ u.l = 1;
+ return u.c[sizeof (long int) - 1] == 1;
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ ac_cv_c_bigendian=no
+else
+ ac_cv_c_bigendian=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5
+$as_echo "$ac_cv_c_bigendian" >&6; }
+ case $ac_cv_c_bigendian in #(
+ yes)
+ $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h
+;; #(
+ no)
+ ;; #(
+ universal)
+
+$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
+
+ ;; #(
+ *)
+ as_fn_error $? "unknown endianness
+ presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;;
+ esac
+
+ if test "${TEA_PLATFORM}" = "unix" ; then
+
+ #--------------------------------------------------------------------
+ # On a few very rare systems, all of the libm.a stuff is
+ # already in libc.a. Set compiler flags accordingly.
+ # Also, Linux requires the "ieee" library for math to work
+ # right (and it must appear before "-lm").
+ #--------------------------------------------------------------------
+
+ ac_fn_c_check_func "$LINENO" "sin" "ac_cv_func_sin"
+if test "x$ac_cv_func_sin" = xyes; then :
+ MATH_LIBS=""
+else
+ MATH_LIBS="-lm"
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lieee" >&5
+$as_echo_n "checking for main in -lieee... " >&6; }
+if ${ac_cv_lib_ieee_main+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lieee $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+
+int
+main ()
+{
+return main ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_ieee_main=yes
+else
+ ac_cv_lib_ieee_main=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ieee_main" >&5
+$as_echo "$ac_cv_lib_ieee_main" >&6; }
+if test "x$ac_cv_lib_ieee_main" = xyes; then :
+ MATH_LIBS="-lieee $MATH_LIBS"
+fi
+
+
+ #--------------------------------------------------------------------
+ # Interactive UNIX requires -linet instead of -lsocket, plus it
+ # needs net/errno.h to define the socket-related error codes.
+ #--------------------------------------------------------------------
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -linet" >&5
+$as_echo_n "checking for main in -linet... " >&6; }
+if ${ac_cv_lib_inet_main+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-linet $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+
+int
+main ()
+{
+return main ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_inet_main=yes
+else
+ ac_cv_lib_inet_main=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_inet_main" >&5
+$as_echo "$ac_cv_lib_inet_main" >&6; }
+if test "x$ac_cv_lib_inet_main" = xyes; then :
+ LIBS="$LIBS -linet"
+fi
+
+ ac_fn_c_check_header_mongrel "$LINENO" "net/errno.h" "ac_cv_header_net_errno_h" "$ac_includes_default"
+if test "x$ac_cv_header_net_errno_h" = xyes; then :
+
+
+$as_echo "#define HAVE_NET_ERRNO_H 1" >>confdefs.h
+
+fi
+
+
+
+ #--------------------------------------------------------------------
+ # Check for the existence of the -lsocket and -lnsl libraries.
+ # The order here is important, so that they end up in the right
+ # order in the command line generated by make. Here are some
+ # special considerations:
+ # 1. Use "connect" and "accept" to check for -lsocket, and
+ # "gethostbyname" to check for -lnsl.
+ # 2. Use each function name only once: can't redo a check because
+ # autoconf caches the results of the last check and won't redo it.
+ # 3. Use -lnsl and -lsocket only if they supply procedures that
+ # aren't already present in the normal libraries. This is because
+ # IRIX 5.2 has libraries, but they aren't needed and they're
+ # bogus: they goof up name resolution if used.
+ # 4. On some SVR4 systems, can't use -lsocket without -lnsl too.
+ # To get around this problem, check for both libraries together
+ # if -lsocket doesn't work by itself.
+ #--------------------------------------------------------------------
+
+ tcl_checkBoth=0
+ ac_fn_c_check_func "$LINENO" "connect" "ac_cv_func_connect"
+if test "x$ac_cv_func_connect" = xyes; then :
+ tcl_checkSocket=0
+else
+ tcl_checkSocket=1
+fi
+
+ if test "$tcl_checkSocket" = 1; then
+ ac_fn_c_check_func "$LINENO" "setsockopt" "ac_cv_func_setsockopt"
+if test "x$ac_cv_func_setsockopt" = xyes; then :
+
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for setsockopt in -lsocket" >&5
+$as_echo_n "checking for setsockopt in -lsocket... " >&6; }
+if ${ac_cv_lib_socket_setsockopt+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsocket $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char setsockopt ();
+int
+main ()
+{
+return setsockopt ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_socket_setsockopt=yes
+else
+ ac_cv_lib_socket_setsockopt=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_setsockopt" >&5
+$as_echo "$ac_cv_lib_socket_setsockopt" >&6; }
+if test "x$ac_cv_lib_socket_setsockopt" = xyes; then :
+ LIBS="$LIBS -lsocket"
+else
+ tcl_checkBoth=1
+fi
+
+fi
+
+ fi
+ if test "$tcl_checkBoth" = 1; then
+ tk_oldLibs=$LIBS
+ LIBS="$LIBS -lsocket -lnsl"
+ ac_fn_c_check_func "$LINENO" "accept" "ac_cv_func_accept"
+if test "x$ac_cv_func_accept" = xyes; then :
+ tcl_checkNsl=0
+else
+ LIBS=$tk_oldLibs
+fi
+
+ fi
+ ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname"
+if test "x$ac_cv_func_gethostbyname" = xyes; then :
+
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5
+$as_echo_n "checking for gethostbyname in -lnsl... " >&6; }
+if ${ac_cv_lib_nsl_gethostbyname+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lnsl $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gethostbyname ();
+int
+main ()
+{
+return gethostbyname ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_nsl_gethostbyname=yes
+else
+ ac_cv_lib_nsl_gethostbyname=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5
+$as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; }
+if test "x$ac_cv_lib_nsl_gethostbyname" = xyes; then :
+ LIBS="$LIBS -lnsl"
+fi
+
+fi
+
+
+ # Don't perform the eval of the libraries here because DL_LIBS
+ # won't be set until we call TEA_CONFIG_CFLAGS
+
+ TCL_LIBS='${DL_LIBS} ${LIBS} ${MATH_LIBS}'
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking dirent.h" >&5
+$as_echo_n "checking dirent.h... " >&6; }
+ if ${tcl_cv_dirent_h+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include
+#include
+int
+main ()
+{
+
+#ifndef _POSIX_SOURCE
+# ifdef __Lynx__
+ /*
+ * Generate compilation error to make the test fail: Lynx headers
+ * are only valid if really in the POSIX environment.
+ */
+
+ missing_procedure();
+# endif
+#endif
+DIR *d;
+struct dirent *entryPtr;
+char *p;
+d = opendir("foobar");
+entryPtr = readdir(d);
+p = entryPtr->d_name;
+closedir(d);
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ tcl_cv_dirent_h=yes
+else
+ tcl_cv_dirent_h=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+
+
+ if test $tcl_cv_dirent_h = no; then
+
+$as_echo "#define NO_DIRENT_H 1" >>confdefs.h
+
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tcl_ok" >&5
+$as_echo "$tcl_ok" >&6; }
+ ac_fn_c_check_header_mongrel "$LINENO" "errno.h" "ac_cv_header_errno_h" "$ac_includes_default"
+if test "x$ac_cv_header_errno_h" = xyes; then :
+
+else
+
+$as_echo "#define NO_ERRNO_H 1" >>confdefs.h
+
+fi
+
+
+ ac_fn_c_check_header_mongrel "$LINENO" "float.h" "ac_cv_header_float_h" "$ac_includes_default"
+if test "x$ac_cv_header_float_h" = xyes; then :
+
+else
+
+$as_echo "#define NO_FLOAT_H 1" >>confdefs.h
+
+fi
+
+
+ ac_fn_c_check_header_mongrel "$LINENO" "values.h" "ac_cv_header_values_h" "$ac_includes_default"
+if test "x$ac_cv_header_values_h" = xyes; then :
+
+else
+
+$as_echo "#define NO_VALUES_H 1" >>confdefs.h
+
+fi
+
+
+ ac_fn_c_check_header_mongrel "$LINENO" "limits.h" "ac_cv_header_limits_h" "$ac_includes_default"
+if test "x$ac_cv_header_limits_h" = xyes; then :
+
+$as_echo "#define HAVE_LIMITS_H 1" >>confdefs.h
+
+else
+
+$as_echo "#define NO_LIMITS_H 1" >>confdefs.h
+
+fi
+
+
+ ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default"
+if test "x$ac_cv_header_stdlib_h" = xyes; then :
+ tcl_ok=1
+else
+ tcl_ok=0
+fi
+
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "strtol" >/dev/null 2>&1; then :
+
+else
+ tcl_ok=0
+fi
+rm -f conftest*
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "strtoul" >/dev/null 2>&1; then :
+
+else
+ tcl_ok=0
+fi
+rm -f conftest*
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "strtod" >/dev/null 2>&1; then :
+
+else
+ tcl_ok=0
+fi
+rm -f conftest*
+
+ if test $tcl_ok = 0; then
+
+$as_echo "#define NO_STDLIB_H 1" >>confdefs.h
+
+ fi
+ ac_fn_c_check_header_mongrel "$LINENO" "string.h" "ac_cv_header_string_h" "$ac_includes_default"
+if test "x$ac_cv_header_string_h" = xyes; then :
+ tcl_ok=1
+else
+ tcl_ok=0
+fi
+
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "strstr" >/dev/null 2>&1; then :
+
+else
+ tcl_ok=0
+fi
+rm -f conftest*
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "strerror" >/dev/null 2>&1; then :
+
+else
+ tcl_ok=0
+fi
+rm -f conftest*
+
+
+ # See also memmove check below for a place where NO_STRING_H can be
+ # set and why.
+
+ if test $tcl_ok = 0; then
+
+$as_echo "#define NO_STRING_H 1" >>confdefs.h
+
+ fi
+
+ ac_fn_c_check_header_mongrel "$LINENO" "sys/wait.h" "ac_cv_header_sys_wait_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_wait_h" = xyes; then :
+
+else
+
+$as_echo "#define NO_SYS_WAIT_H 1" >>confdefs.h
+
+fi
+
+
+ ac_fn_c_check_header_mongrel "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default"
+if test "x$ac_cv_header_dlfcn_h" = xyes; then :
+
+else
+
+$as_echo "#define NO_DLFCN_H 1" >>confdefs.h
+
+fi
+
+
+
+ # OS/390 lacks sys/param.h (and doesn't need it, by chance).
+ for ac_header in sys/param.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_param_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_SYS_PARAM_H 1
+_ACEOF
+
+fi
+
+done
+
+
+
+ # Let the user call this, because if it triggers, they will
+ # need a compat/strtod.c that is correct. Users can also
+ # use Tcl_GetDouble(FromObj) instead.
+ #TEA_BUGGY_STRTOD
+ fi
+
+
+#-----------------------------------------------------------------------
+# __CHANGE__
+# Specify the C source files to compile in TEA_ADD_SOURCES,
+# public headers that need to be installed in TEA_ADD_HEADERS,
+# stub library C source files to compile in TEA_ADD_STUB_SOURCES,
+# and runtime Tcl library files in TEA_ADD_TCL_SOURCES.
+# This defines PKG(_STUB)_SOURCES, PKG(_STUB)_OBJECTS, PKG_HEADERS
+# and PKG_TCL_SOURCES.
+#-----------------------------------------------------------------------
+
+
+ vars="togl.c"
+ for i in $vars; do
+ case $i in
+ \$*)
+ # allow $-var names
+ PKG_SOURCES="$PKG_SOURCES $i"
+ PKG_OBJECTS="$PKG_OBJECTS $i"
+ ;;
+ *)
+ # check for existence - allows for generic/win/unix VPATH
+ if test ! -f "${srcdir}/$i" -a ! -f "${srcdir}/generic/$i" \
+ -a ! -f "${srcdir}/win/$i" -a ! -f "${srcdir}/unix/$i" \
+ ; then
+ as_fn_error $? "could not find source file '$i'" "$LINENO" 5
+ fi
+ PKG_SOURCES="$PKG_SOURCES $i"
+ # this assumes it is in a VPATH dir
+ i=`basename $i`
+ # handle user calling this before or after TEA_SETUP_COMPILER
+ if test x"${OBJEXT}" != x ; then
+ j="`echo $i | sed -e 's/\.[^.]*$//'`.${OBJEXT}"
+ else
+ j="`echo $i | sed -e 's/\.[^.]*$//'`.\${OBJEXT}"
+ fi
+ PKG_OBJECTS="$PKG_OBJECTS $j"
+ ;;
+ esac
+ done
+
+
+
+# togl_ws.h is added in Makefile.in because it is generated
+
+ vars="togl.h"
+ for i in $vars; do
+ # check for existence, be strict because it is installed
+ if test ! -f "${srcdir}/$i" ; then
+ as_fn_error $? "could not find header file '${srcdir}/$i'" "$LINENO" 5
+ fi
+ PKG_HEADERS="$PKG_HEADERS $i"
+ done
+
+
+
+ vars=""
+ for i in $vars; do
+ PKG_INCLUDES="$PKG_INCLUDES $i"
+ done
+
+
+
+ vars=""
+ for i in $vars; do
+ if test "${TEA_PLATFORM}" = "windows" -a "$GCC" = "yes" ; then
+ # Convert foo.lib to -lfoo for GCC. No-op if not *.lib
+ i=`echo "$i" | sed -e 's/^\([^-].*\)\.lib$/-l\1/i'`
+ fi
+ PKG_LIBS="$PKG_LIBS $i"
+ done
+
+
+
+ PKG_CFLAGS="$PKG_CFLAGS "
+
+
+
+ vars=""
+ for i in $vars; do
+ # check for existence - allows for generic/win/unix VPATH
+ if test ! -f "${srcdir}/$i" -a ! -f "${srcdir}/generic/$i" \
+ -a ! -f "${srcdir}/win/$i" -a ! -f "${srcdir}/unix/$i" \
+ ; then
+ as_fn_error $? "could not find stub source file '$i'" "$LINENO" 5
+ fi
+ PKG_STUB_SOURCES="$PKG_STUB_SOURCES $i"
+ # this assumes it is in a VPATH dir
+ i=`basename $i`
+ # handle user calling this before or after TEA_SETUP_COMPILER
+ if test x"${OBJEXT}" != x ; then
+ j="`echo $i | sed -e 's/\.[^.]*$//'`.${OBJEXT}"
+ else
+ j="`echo $i | sed -e 's/\.[^.]*$//'`.\${OBJEXT}"
+ fi
+ PKG_STUB_OBJECTS="$PKG_STUB_OBJECTS $j"
+ done
+
+
+
+
+ vars=""
+ for i in $vars; do
+ # check for existence, be strict because it is installed
+ if test ! -f "${srcdir}/$i" ; then
+ as_fn_error $? "could not find tcl source file '${srcdir}/$i'" "$LINENO" 5
+ fi
+ PKG_TCL_SOURCES="$PKG_TCL_SOURCES $i"
+ done
+
+
+
+#--------------------------------------------------------------------
+# __CHANGE__
+# A few miscellaneous platform-specific items:
+#
+# Define a special symbol for Windows (BUILD_sample in this case) so
+# that we create the export library with the dll.
+#
+# Windows creates a few extra files that need to be cleaned up.
+# You can add more files to clean if your extension creates any extra
+# files.
+#
+# TEA_ADD_* any platform specific compiler/build info here.
+#--------------------------------------------------------------------
+
+if test "${TEA_PLATFORM}" = "windows" ; then
+
+$as_echo "#define BUILD_togl 1" >>confdefs.h
+
+ CLEANFILES="pkgIndex.tcl togl_ws.h *.lib *.dll *.exp *.ilk *.pdb vc*.pch"
+ #TEA_ADD_SOURCES([win/winFile.c])
+ #TEA_ADD_INCLUDES([-I\"$(${CYGPATH} ${srcdir}/win)\"])
+else
+ CLEANFILES="pkgIndex.tcl togl_ws.h so_locations"
+ #TEA_ADD_SOURCES([unix/unixFile.c])
+ #TEA_ADD_LIBS([-lsuperfly])
+fi
+
+
+#--------------------------------------------------------------------
+# __CHANGE__
+# Choose which headers you need. Extension authors should try very
+# hard to only rely on the Tcl public header files. Internal headers
+# contain private data structures and are subject to change without
+# notice.
+# This MUST be called after TEA_LOAD_TCLCONFIG / TEA_LOAD_TKCONFIG
+#--------------------------------------------------------------------
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Tcl public headers" >&5
+$as_echo_n "checking for Tcl public headers... " >&6; }
+
+
+# Check whether --with-tclinclude was given.
+if test "${with_tclinclude+set}" = set; then :
+ withval=$with_tclinclude; with_tclinclude=${withval}
+fi
+
+
+ if ${ac_cv_c_tclh+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ # Use the value from --with-tclinclude, if it was given
+
+ if test x"${with_tclinclude}" != x ; then
+ if test -f "${with_tclinclude}/tcl.h" ; then
+ ac_cv_c_tclh=${with_tclinclude}
+ else
+ as_fn_error $? "${with_tclinclude} directory does not contain tcl.h" "$LINENO" 5
+ fi
+ else
+ # If Tcl was built as a framework, attempt to use
+ # the framework's Headers directory
+ case ${TCL_DEFS} in
+ *TCL_FRAMEWORK*)
+ list="`ls -d ${TCL_BIN_DIR}/Headers 2>/dev/null`"
+ ;;
+ *)
+ list=""
+ ;;
+ esac
+
+ # Look in the source dir only if Tcl is not installed,
+ # and in that situation, look there before installed locations.
+ if test -f "$TCL_BIN_DIR/Makefile" ; then
+ list="$list `ls -d ${TCL_SRC_DIR}/generic 2>/dev/null`"
+ fi
+
+ # Check order: pkg --prefix location, Tcl's --prefix location,
+ # relative to directory of tclConfig.sh.
+
+ eval "temp_includedir=${includedir}"
+ list="$list \
+ `ls -d ${temp_includedir} 2>/dev/null` \
+ `ls -d ${TCL_PREFIX}/include 2>/dev/null` \
+ `ls -d ${TCL_BIN_DIR}/../include 2>/dev/null`"
+ if test "${TEA_PLATFORM}" != "windows" -o "$GCC" = "yes"; then
+ list="$list /usr/local/include /usr/include"
+ if test x"${TCL_INCLUDE_SPEC}" != x ; then
+ d=`echo "${TCL_INCLUDE_SPEC}" | sed -e 's/^-I//'`
+ list="$list `ls -d ${d} 2>/dev/null`"
+ fi
+ fi
+ for i in $list ; do
+ if test -f "$i/tcl.h" ; then
+ ac_cv_c_tclh=$i
+ break
+ fi
+ done
+ fi
+
+fi
+
+
+ # Print a message based on how we determined the include path
+
+ if test x"${ac_cv_c_tclh}" = x ; then
+ as_fn_error $? "tcl.h not found. Please specify its location with --with-tclinclude" "$LINENO" 5
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ac_cv_c_tclh}" >&5
+$as_echo "${ac_cv_c_tclh}" >&6; }
+ fi
+
+ # Convert to a native path and substitute into the output files.
+
+ INCLUDE_DIR_NATIVE=`${CYGPATH} ${ac_cv_c_tclh}`
+
+ TCL_INCLUDES=-I\"${INCLUDE_DIR_NATIVE}\"
+
+
+
+#TEA_PRIVATE_TCL_HEADERS
+
+#TEA_PUBLIC_TK_HEADERS
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Tk private include files" >&5
+$as_echo_n "checking for Tk private include files... " >&6; }
+
+ TK_SRC_DIR_NATIVE=`${CYGPATH} ${TK_SRC_DIR}`
+ TK_TOP_DIR_NATIVE=\"${TK_SRC_DIR_NATIVE}\"
+ TK_UNIX_DIR_NATIVE=\"${TK_SRC_DIR_NATIVE}/unix\"
+ TK_WIN_DIR_NATIVE=\"${TK_SRC_DIR_NATIVE}/win\"
+ TK_GENERIC_DIR_NATIVE=\"${TK_SRC_DIR_NATIVE}/generic\"
+ TK_XLIB_DIR_NATIVE=\"${TK_SRC_DIR_NATIVE}/xlib\"
+ if test "${TEA_PLATFORM}" = "windows"; then
+ TK_PLATFORM_DIR_NATIVE=${TK_WIN_DIR_NATIVE}
+ else
+ TK_PLATFORM_DIR_NATIVE=${TK_UNIX_DIR_NATIVE}
+ fi
+ # We want to ensure these are substituted so as not to require
+ # any *_NATIVE vars be defined in the Makefile
+ TK_INCLUDES="-I${TK_GENERIC_DIR_NATIVE} -I${TK_PLATFORM_DIR_NATIVE}"
+ if test "${TEA_WINDOWINGSYSTEM}" = "win32" \
+ -o "${TEA_WINDOWINGSYSTEM}" = "aqua"; then
+ TK_INCLUDES="${TK_INCLUDES} -I${TK_XLIB_DIR_NATIVE}"
+ fi
+ if test "${TEA_WINDOWINGSYSTEM}" = "aqua"; then
+ TK_INCLUDES="${TK_INCLUDES} -I${TK_SRC_DIR_NATIVE}/macosx"
+ fi
+ if test "`uname -s`" = "Darwin"; then
+ # If Tk was built as a framework, attempt to use
+ # the framework's Headers and PrivateHeaders directories
+ case ${TK_DEFS} in
+ *TK_FRAMEWORK*)
+ if test -d "${TK_BIN_DIR}/Headers" -a -d "${TK_BIN_DIR}/PrivateHeaders"; then
+ TK_INCLUDES="-I\"${TK_BIN_DIR}/Headers\" -I\"${TK_BIN_DIR}/PrivateHeaders\" ${TK_INCLUDES}"; fi
+ ;;
+ esac
+ fi
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: Using srcdir found in tkConfig.sh: ${TK_SRC_DIR}" >&5
+$as_echo "Using srcdir found in tkConfig.sh: ${TK_SRC_DIR}" >&6; }
+
+
+ if test "${TEA_WINDOWINGSYSTEM}" = "x11" ; then
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for X" >&5
+$as_echo_n "checking for X... " >&6; }
+
+
+# Check whether --with-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
+ case $x_includes,$x_libraries in #(
+ *\'*) as_fn_error $? "cannot use X directory names containing '" "$LINENO" 5;; #(
+ *,NONE | NONE,*) if ${ac_cv_have_x+:} false; then :
+ $as_echo_n "(cached) " >&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 -f -r conftest.dir
+if mkdir conftest.dir; then
+ cd conftest.dir
+ cat >Imakefile <<'_ACEOF'
+incroot:
+ @echo incroot='${INCROOT}'
+usrlibdir:
+ @echo usrlibdir='${USRLIBDIR}'
+libdir:
+ @echo libdir='${LIBDIR}'
+_ACEOF
+ if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then
+ # GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+ for ac_var in incroot usrlibdir libdir; do
+ eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`"
+ done
+ # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR.
+ for ac_extension in a so sl dylib la dll; 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) ac_x_includes= ;;
+ *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;;
+ esac
+ case $ac_im_usrlibdir in
+ /usr/lib | /usr/lib64 | /lib | /lib64) ;;
+ *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;;
+ esac
+ fi
+ cd ..
+ rm -f -r 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/X11R7/include
+/usr/X11R6/include
+/usr/X11R5/include
+/usr/X11R4/include
+
+/usr/include/X11
+/usr/include/X11R7
+/usr/include/X11R6
+/usr/include/X11R5
+/usr/include/X11R4
+
+/usr/local/X11/include
+/usr/local/X11R7/include
+/usr/local/X11R6/include
+/usr/local/X11R5/include
+/usr/local/X11R4/include
+
+/usr/local/include/X11
+/usr/local/include/X11R7
+/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 Xlib.h.
+ # First, try using that file with no special directory specified.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ # We can compile using X headers with no special include directory.
+ac_x_includes=
+else
+ for ac_dir in $ac_x_header_dirs; do
+ if test -r "$ac_dir/X11/Xlib.h"; then
+ ac_x_includes=$ac_dir
+ break
+ fi
+done
+fi
+rm -f conftest.err conftest.i 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="-lX11 $LIBS"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include
+int
+main ()
+{
+XrmInitialize ()
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ LIBS=$ac_save_LIBS
+# We can link X programs with no special library path.
+ac_x_libraries=
+else
+ LIBS=$ac_save_LIBS
+for ac_dir in `$as_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 dylib la dll; do
+ if test -r "$ac_dir/libX11.$ac_extension"; then
+ ac_x_libraries=$ac_dir
+ break 2
+ fi
+ done
+done
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi # $ac_x_libraries = no
+
+case $ac_x_includes,$ac_x_libraries in #(
+ no,* | *,no | *\'*)
+ # Didn't find X, or a directory has "'" in its name.
+ ac_cv_have_x="have_x=no";; #(
+ *)
+ # 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'"
+esac
+fi
+;; #(
+ *) have_x=yes;;
+ esac
+ eval "$ac_cv_have_x"
+fi # $with_x != no
+
+if test "$have_x" != yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_x" >&5
+$as_echo "$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'"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $x_libraries, headers $x_includes" >&5
+$as_echo "libraries $x_libraries, headers $x_includes" >&6; }
+fi
+
+ not_really_there=""
+ if test "$no_x" = ""; then
+ if test "$x_includes" = ""; then
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+ not_really_there="yes"
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+ else
+ if test ! -r $x_includes/X11/Intrinsic.h; then
+ not_really_there="yes"
+ fi
+ fi
+ fi
+ if test "$no_x" = "yes" -o "$not_really_there" = "yes"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for X11 header files" >&5
+$as_echo_n "checking for X11 header files... " >&6; }
+ XINCLUDES="# no special path needed"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+ XINCLUDES="nope"
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+ if test "$XINCLUDES" = nope; then
+ dirs="/usr/unsupported/include /usr/local/include /usr/X386/include /usr/X11R6/include /usr/X11R5/include /usr/include/X11R5 /usr/include/X11R4 /usr/openwin/include /usr/X11/include /usr/sww/include"
+ for i in $dirs ; do
+ if test -r $i/X11/Intrinsic.h; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $i" >&5
+$as_echo "$i" >&6; }
+ XINCLUDES=" -I$i"
+ break
+ fi
+ done
+ fi
+ else
+ if test "$x_includes" != ""; then
+ XINCLUDES=-I$x_includes
+ else
+ XINCLUDES="# no special path needed"
+ fi
+ fi
+ if test "$XINCLUDES" = nope; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: could not find any!" >&5
+$as_echo "could not find any!" >&6; }
+ XINCLUDES="# no include files found"
+ fi
+
+ if test "$no_x" = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for X11 libraries" >&5
+$as_echo_n "checking for X11 libraries... " >&6; }
+ XLIBSW=nope
+ dirs="/usr/unsupported/lib /usr/local/lib /usr/X386/lib /usr/X11R6/lib /usr/X11R5/lib /usr/lib/X11R5 /usr/lib/X11R4 /usr/openwin/lib /usr/X11/lib /usr/sww/X11/lib"
+ for i in $dirs ; do
+ if test -r $i/libX11.a -o -r $i/libX11.so -o -r $i/libX11.sl; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $i" >&5
+$as_echo "$i" >&6; }
+ XLIBSW="-L$i -lX11"
+ x_libraries="$i"
+ break
+ fi
+ done
+ else
+ if test "$x_libraries" = ""; then
+ XLIBSW=-lX11
+ else
+ XLIBSW="-L$x_libraries -lX11"
+ fi
+ fi
+ if test "$XLIBSW" = nope ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XCreateWindow in -lXwindow" >&5
+$as_echo_n "checking for XCreateWindow in -lXwindow... " >&6; }
+if ${ac_cv_lib_Xwindow_XCreateWindow+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lXwindow $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char XCreateWindow ();
+int
+main ()
+{
+return XCreateWindow ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_Xwindow_XCreateWindow=yes
+else
+ ac_cv_lib_Xwindow_XCreateWindow=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xwindow_XCreateWindow" >&5
+$as_echo "$ac_cv_lib_Xwindow_XCreateWindow" >&6; }
+if test "x$ac_cv_lib_Xwindow_XCreateWindow" = xyes; then :
+ XLIBSW=-lXwindow
+fi
+
+ fi
+ if test "$XLIBSW" = nope ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: could not find any! Using -lX11." >&5
+$as_echo "could not find any! Using -lX11." >&6; }
+ XLIBSW=-lX11
+ fi
+ if test x"${XLIBSW}" != x ; then
+ PKG_LIBS="${PKG_LIBS} ${XLIBSW}"
+ fi
+
+ fi
+
+
+#--------------------------------------------------------------------
+# __CHANGE__
+# Choose OpenGL platform
+#--------------------------------------------------------------------
+
+case "${TEA_WINDOWINGSYSTEM}" in
+ aqua)
+ TOGL_WINDOWINGSYSTEM=TOGL_AGL
+
+
+ vars="-framework AGL -framework OpenGL -framework ApplicationServices"
+ for i in $vars; do
+ if test "${TEA_PLATFORM}" = "windows" -a "$GCC" = "yes" ; then
+ # Convert foo.lib to -lfoo for GCC. No-op if not *.lib
+ i=`echo "$i" | sed -e 's/^\([^-].*\)\.lib$/-l\1/i'`
+ fi
+ PKG_LIBS="$PKG_LIBS $i"
+ done
+
+
+ # libGLU is implicit in OpenGL framework
+ LIBGLU=
+ ;;
+ x11)
+ TOGL_WINDOWINGSYSTEM=TOGL_X11
+
+
+ vars="-lGL -lXmu"
+ for i in $vars; do
+ if test "${TEA_PLATFORM}" = "windows" -a "$GCC" = "yes" ; then
+ # Convert foo.lib to -lfoo for GCC. No-op if not *.lib
+ i=`echo "$i" | sed -e 's/^\([^-].*\)\.lib$/-l\1/i'`
+ fi
+ PKG_LIBS="$PKG_LIBS $i"
+ done
+
+
+ LIBGLU=-lGLU
+ ;;
+ win32)
+ TOGL_WINDOWINGSYSTEM=TOGL_WGL
+
+
+ vars="opengl32.lib user32.lib gdi32.lib"
+ for i in $vars; do
+ if test "${TEA_PLATFORM}" = "windows" -a "$GCC" = "yes" ; then
+ # Convert foo.lib to -lfoo for GCC. No-op if not *.lib
+ i=`echo "$i" | sed -e 's/^\([^-].*\)\.lib$/-l\1/i'`
+ fi
+ PKG_LIBS="$PKG_LIBS $i"
+ done
+
+
+ if test "$GCC" = "yes" ; then
+ LIBGLU=-lglu32
+ else
+ LIBGLU=glu32.lib
+ fi
+ ;;
+ *)
+ as_fn_error $? "Unsupported windowing system: ${TEA_WINDOWINGSYSTEM}" "$LINENO" 5
+ ;;
+esac
+
+
+#--------------------------------------------------------------------
+# Check whether --enable-threads or --disable-threads was given.
+# This auto-enables if Tcl was compiled threaded.
+#--------------------------------------------------------------------
+
+
+ # Check whether --enable-threads was given.
+if test "${enable_threads+set}" = set; then :
+ enableval=$enable_threads; tcl_ok=$enableval
+else
+ tcl_ok=yes
+fi
+
+
+ if test "${enable_threads+set}" = set; then
+ enableval="$enable_threads"
+ tcl_ok=$enableval
+ else
+ tcl_ok=yes
+ fi
+
+ if test "$tcl_ok" = "yes" -o "${TCL_THREADS}" = 1; then
+ TCL_THREADS=1
+
+ if test "${TEA_PLATFORM}" != "windows" ; then
+ # We are always OK on Windows, so check what this platform wants.
+
+$as_echo "#define USE_THREAD_ALLOC 1" >>confdefs.h
+
+
+$as_echo "#define _REENTRANT 1" >>confdefs.h
+
+
+$as_echo "#define _THREAD_SAFE 1" >>confdefs.h
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_mutex_init in -lpthread" >&5
+$as_echo_n "checking for pthread_mutex_init in -lpthread... " >&6; }
+if ${ac_cv_lib_pthread_pthread_mutex_init+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpthread $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_mutex_init ();
+int
+main ()
+{
+return pthread_mutex_init ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_pthread_pthread_mutex_init=yes
+else
+ ac_cv_lib_pthread_pthread_mutex_init=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_mutex_init" >&5
+$as_echo "$ac_cv_lib_pthread_pthread_mutex_init" >&6; }
+if test "x$ac_cv_lib_pthread_pthread_mutex_init" = xyes; then :
+ tcl_ok=yes
+else
+ tcl_ok=no
+fi
+
+ if test "$tcl_ok" = "no"; then
+ # Check a little harder for __pthread_mutex_init in the
+ # same library, as some systems hide it there until
+ # pthread.h is defined. We could alternatively do an
+ # AC_TRY_COMPILE with pthread.h, but that will work with
+ # libpthread really doesn't exist, like AIX 4.2.
+ # [Bug: 4359]
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __pthread_mutex_init in -lpthread" >&5
+$as_echo_n "checking for __pthread_mutex_init in -lpthread... " >&6; }
+if ${ac_cv_lib_pthread___pthread_mutex_init+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpthread $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char __pthread_mutex_init ();
+int
+main ()
+{
+return __pthread_mutex_init ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_pthread___pthread_mutex_init=yes
+else
+ ac_cv_lib_pthread___pthread_mutex_init=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread___pthread_mutex_init" >&5
+$as_echo "$ac_cv_lib_pthread___pthread_mutex_init" >&6; }
+if test "x$ac_cv_lib_pthread___pthread_mutex_init" = xyes; then :
+ tcl_ok=yes
+else
+ tcl_ok=no
+fi
+
+ fi
+
+ if test "$tcl_ok" = "yes"; then
+ # The space is needed
+ THREADS_LIBS=" -lpthread"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_mutex_init in -lpthreads" >&5
+$as_echo_n "checking for pthread_mutex_init in -lpthreads... " >&6; }
+if ${ac_cv_lib_pthreads_pthread_mutex_init+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpthreads $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_mutex_init ();
+int
+main ()
+{
+return pthread_mutex_init ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_pthreads_pthread_mutex_init=yes
+else
+ ac_cv_lib_pthreads_pthread_mutex_init=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthreads_pthread_mutex_init" >&5
+$as_echo "$ac_cv_lib_pthreads_pthread_mutex_init" >&6; }
+if test "x$ac_cv_lib_pthreads_pthread_mutex_init" = xyes; then :
+ tcl_ok=yes
+else
+ tcl_ok=no
+fi
+
+ if test "$tcl_ok" = "yes"; then
+ # The space is needed
+ THREADS_LIBS=" -lpthreads"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_mutex_init in -lc" >&5
+$as_echo_n "checking for pthread_mutex_init in -lc... " >&6; }
+if ${ac_cv_lib_c_pthread_mutex_init+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lc $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_mutex_init ();
+int
+main ()
+{
+return pthread_mutex_init ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_c_pthread_mutex_init=yes
+else
+ ac_cv_lib_c_pthread_mutex_init=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_pthread_mutex_init" >&5
+$as_echo "$ac_cv_lib_c_pthread_mutex_init" >&6; }
+if test "x$ac_cv_lib_c_pthread_mutex_init" = xyes; then :
+ tcl_ok=yes
+else
+ tcl_ok=no
+fi
+
+ if test "$tcl_ok" = "no"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_mutex_init in -lc_r" >&5
+$as_echo_n "checking for pthread_mutex_init in -lc_r... " >&6; }
+if ${ac_cv_lib_c_r_pthread_mutex_init+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lc_r $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_mutex_init ();
+int
+main ()
+{
+return pthread_mutex_init ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_c_r_pthread_mutex_init=yes
+else
+ ac_cv_lib_c_r_pthread_mutex_init=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_r_pthread_mutex_init" >&5
+$as_echo "$ac_cv_lib_c_r_pthread_mutex_init" >&6; }
+if test "x$ac_cv_lib_c_r_pthread_mutex_init" = xyes; then :
+ tcl_ok=yes
+else
+ tcl_ok=no
+fi
+
+ if test "$tcl_ok" = "yes"; then
+ # The space is needed
+ THREADS_LIBS=" -pthread"
+ else
+ TCL_THREADS=0
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"Don t know how to find pthread lib on your system - thread support disabled\"" >&5
+$as_echo "$as_me: WARNING: \"Don t know how to find pthread lib on your system - thread support disabled\"" >&2;}
+ fi
+ fi
+ fi
+ fi
+
+ fi
+ else
+ TCL_THREADS=0
+ fi
+ # Do checking message here to not mess up interleaved configure output
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for building with threads" >&5
+$as_echo_n "checking for building with threads... " >&6; }
+ if test "${TCL_THREADS}" = "1"; then
+
+$as_echo "#define TCL_THREADS 1" >>confdefs.h
+
+ #LIBS="$LIBS $THREADS_LIBS"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (default)" >&5
+$as_echo "yes (default)" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ fi
+ # TCL_THREADS sanity checking. See if our request for building with
+ # threads is the same as the way Tcl was built. If not, warn the user.
+ case ${TCL_DEFS} in
+ *THREADS=1*)
+ if test "${TCL_THREADS}" = "0"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:
+ Building ${PACKAGE_NAME} without threads enabled, but building against Tcl
+ that IS thread-enabled. It is recommended to use --enable-threads." >&5
+$as_echo "$as_me: WARNING:
+ Building ${PACKAGE_NAME} without threads enabled, but building against Tcl
+ that IS thread-enabled. It is recommended to use --enable-threads." >&2;}
+ fi
+ ;;
+ *)
+ if test "${TCL_THREADS}" = "1"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:
+ --enable-threads requested, but building against a Tcl that is NOT
+ thread-enabled. This is an OK configuration that will also run in
+ a thread-enabled core." >&5
+$as_echo "$as_me: WARNING:
+ --enable-threads requested, but building against a Tcl that is NOT
+ thread-enabled. This is an OK configuration that will also run in
+ a thread-enabled core." >&2;}
+ fi
+ ;;
+ esac
+
+
+
+#--------------------------------------------------------------------
+# The statement below defines a collection of symbols related to
+# building as a shared library instead of a static library.
+#--------------------------------------------------------------------
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to build libraries" >&5
+$as_echo_n "checking how to build libraries... " >&6; }
+ # Check whether --enable-shared was given.
+if test "${enable_shared+set}" = set; then :
+ enableval=$enable_shared; tcl_ok=$enableval
+else
+ tcl_ok=yes
+fi
+
+
+ if test "${enable_shared+set}" = set; then
+ enableval="$enable_shared"
+ tcl_ok=$enableval
+ else
+ tcl_ok=yes
+ fi
+
+ if test "$tcl_ok" = "yes" ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: shared" >&5
+$as_echo "shared" >&6; }
+ SHARED_BUILD=1
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: static" >&5
+$as_echo "static" >&6; }
+ SHARED_BUILD=0
+
+$as_echo "#define STATIC_BUILD 1" >>confdefs.h
+
+ fi
+
+
+
+#--------------------------------------------------------------------
+# This macro figures out what flags to use with the compiler/linker
+# when building shared/static debug/optimized objects. This information
+# can be taken from the tclConfig.sh file, but this figures it all out.
+#--------------------------------------------------------------------
+
+
+
+
+ # Step 0: Enable 64 bit support?
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if 64bit support is enabled" >&5
+$as_echo_n "checking if 64bit support is enabled... " >&6; }
+ # Check whether --enable-64bit was given.
+if test "${enable_64bit+set}" = set; then :
+ enableval=$enable_64bit; do64bit=$enableval
+else
+ do64bit=no
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $do64bit" >&5
+$as_echo "$do64bit" >&6; }
+
+ # Step 0.b: Enable Solaris 64 bit VIS support?
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if 64bit Sparc VIS support is requested" >&5
+$as_echo_n "checking if 64bit Sparc VIS support is requested... " >&6; }
+ # Check whether --enable-64bit-vis was given.
+if test "${enable_64bit_vis+set}" = set; then :
+ enableval=$enable_64bit_vis; do64bitVIS=$enableval
+else
+ do64bitVIS=no
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $do64bitVIS" >&5
+$as_echo "$do64bitVIS" >&6; }
+
+ if test "$do64bitVIS" = "yes"; then
+ # Force 64bit on with VIS
+ do64bit=yes
+ fi
+
+ # Step 0.c: Cross-compiling options for Windows/CE builds?
+
+ if test "${TEA_PLATFORM}" = "windows" ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if Windows/CE build is requested" >&5
+$as_echo_n "checking if Windows/CE build is requested... " >&6; }
+ # Check whether --enable-wince was given.
+if test "${enable_wince+set}" = set; then :
+ enableval=$enable_wince; doWince=$enableval
+else
+ doWince=no
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $doWince" >&5
+$as_echo "$doWince" >&6; }
+ fi
+
+ # Step 1: set the variable "system" to hold the name and version number
+ # for the system. This can usually be done via the "uname" command, but
+ # there are a few systems, like Next, where this doesn't work.
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking system version (for dynamic loading)" >&5
+$as_echo_n "checking system version (for dynamic loading)... " >&6; }
+ if test -f /usr/lib/NextStep/software_version; then
+ system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version`
+ else
+ system=`uname -s`-`uname -r`
+ if test "$?" -ne 0 ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unknown (can't find uname command)" >&5
+$as_echo "unknown (can't find uname command)" >&6; }
+ system=unknown
+ else
+ # Special check for weird MP-RAS system (uname returns weird
+ # results, and the version is kept in special file).
+
+ if test -r /etc/.relid -a "X`uname -n`" = "X`uname -s`" ; then
+ system=MP-RAS-`awk '{print }' /etc/.relid`
+ fi
+ if test "`uname -s`" = "AIX" ; then
+ system=AIX-`uname -v`.`uname -r`
+ fi
+ if test "${TEA_PLATFORM}" = "windows" ; then
+ system=windows
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $system" >&5
+$as_echo "$system" >&6; }
+ fi
+ fi
+
+ # Step 2: check for existence of -ldl library. This is needed because
+ # Linux can use either -ldl or -ldld for dynamic loading.
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if ${ac_cv_lib_dl_dlopen+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_dl_dlopen=yes
+else
+ ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+ have_dl=yes
+else
+ have_dl=no
+fi
+
+
+ # Step 3: set configuration options based on system name and version.
+ # This is similar to Tcl's unix/tcl.m4 except that we've added a
+ # "windows" case and CC_SEARCH_FLAGS becomes LD_SEARCH_FLAGS for us
+ # (and we have no CC_SEARCH_FLAGS).
+
+ do64bit_ok=no
+ LDFLAGS_ORIG="$LDFLAGS"
+ TCL_EXPORT_FILE_SUFFIX=""
+ UNSHARED_LIB_SUFFIX=""
+ TCL_TRIM_DOTS='`echo ${PACKAGE_VERSION} | tr -d .`'
+ ECHO_VERSION='`echo ${PACKAGE_VERSION}`'
+ TCL_LIB_VERSIONS_OK=ok
+ CFLAGS_DEBUG=-g
+ if test "$GCC" = "yes" ; then
+ CFLAGS_OPTIMIZE=-O2
+ CFLAGS_WARNING="-Wall -Wno-implicit-int"
+ else
+ CFLAGS_OPTIMIZE=-O
+ CFLAGS_WARNING=""
+ fi
+ TCL_NEEDS_EXP_FILE=0
+ TCL_BUILD_EXP_FILE=""
+ TCL_EXP_FILE=""
+ # Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AR"; then
+ ac_cv_prog_AR="$AR" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_AR="ar"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ STLIB_LD='${AR} cr'
+ LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH"
+ case $system in
+ windows)
+ # This is a 2-stage check to make sure we have the 64-bit SDK
+ # We have to know where the SDK is installed.
+ # This magic is based on MS Platform SDK for Win2003 SP1 - hobbs
+ # MACHINE is IX86 for LINK, but this is used by the manifest,
+ # which requires x86|amd64|ia64.
+ MACHINE="X86"
+ if test "$do64bit" != "no" ; then
+ if test "x${MSSDK}x" = "xx" ; then
+ MSSDK="C:/Progra~1/Microsoft Platform SDK"
+ fi
+ MSSDK=`echo "$MSSDK" | sed -e 's!\\\!/!g'`
+ PATH64=""
+ case "$do64bit" in
+ amd64|x64|yes)
+ MACHINE="AMD64" ; # default to AMD64 64-bit build
+ PATH64="${MSSDK}/Bin/Win64/x86/AMD64"
+ ;;
+ ia64)
+ MACHINE="IA64"
+ PATH64="${MSSDK}/Bin/Win64"
+ ;;
+ esac
+ if test ! -d "${PATH64}" ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Could not find 64-bit $MACHINE SDK to enable 64bit mode" >&5
+$as_echo "$as_me: WARNING: Could not find 64-bit $MACHINE SDK to enable 64bit mode" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ensure latest Platform SDK is installed" >&5
+$as_echo "$as_me: WARNING: Ensure latest Platform SDK is installed" >&2;}
+ do64bit="no"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: Using 64-bit $MACHINE mode" >&5
+$as_echo " Using 64-bit $MACHINE mode" >&6; }
+ do64bit_ok="yes"
+ fi
+ fi
+
+ if test "$doWince" != "no" ; then
+ if test "$do64bit" != "no" ; then
+ as_fn_error $? "Windows/CE and 64-bit builds incompatible" "$LINENO" 5
+ fi
+ if test "$GCC" = "yes" ; then
+ as_fn_error $? "Windows/CE and GCC builds incompatible" "$LINENO" 5
+ fi
+
+ # First, look for one uninstalled.
+ # the alternative search directory is invoked by --with-celib
+
+ if test x"${no_celib}" = x ; then
+ # we reset no_celib in case something fails here
+ no_celib=true
+
+# Check whether --with-celib was given.
+if test "${with_celib+set}" = set; then :
+ withval=$with_celib; with_celibconfig=${withval}
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Windows/CE celib directory" >&5
+$as_echo_n "checking for Windows/CE celib directory... " >&6; }
+ if ${ac_cv_c_celibconfig+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ # First check to see if --with-celibconfig was specified.
+ if test x"${with_celibconfig}" != x ; then
+ if test -d "${with_celibconfig}/inc" ; then
+ ac_cv_c_celibconfig=`(cd ${with_celibconfig}; pwd)`
+ else
+ as_fn_error $? "${with_celibconfig} directory doesn't contain inc directory" "$LINENO" 5
+ fi
+ fi
+
+ # then check for a celib library
+ if test x"${ac_cv_c_celibconfig}" = x ; then
+ for i in \
+ ../celib-palm-3.0 \
+ ../celib \
+ ../../celib-palm-3.0 \
+ ../../celib \
+ `ls -dr ../celib-*3.[0-9]* 2>/dev/null` \
+ ${srcdir}/../celib-palm-3.0 \
+ ${srcdir}/../celib \
+ `ls -dr ${srcdir}/../celib-*3.[0-9]* 2>/dev/null` \
+ ; do
+ if test -d "$i/inc" ; then
+ ac_cv_c_celibconfig=`(cd $i; pwd)`
+ break
+ fi
+ done
+ fi
+
+fi
+
+ if test x"${ac_cv_c_celibconfig}" = x ; then
+ as_fn_error $? "Cannot find celib support library directory" "$LINENO" 5
+ else
+ no_celib=
+ CELIB_DIR=${ac_cv_c_celibconfig}
+ CELIB_DIR=`echo "$CELIB_DIR" | sed -e 's!\\\!/!g'`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: found $CELIB_DIR" >&5
+$as_echo "found $CELIB_DIR" >&6; }
+ fi
+ fi
+
+ # Set defaults for common evc4/PPC2003 setup
+ # Currently Tcl requires 300+, possibly 420+ for sockets
+ CEVERSION=420; # could be 211 300 301 400 420 ...
+ TARGETCPU=ARMV4; # could be ARMV4 ARM MIPS SH3 X86 ...
+ ARCH=ARM; # could be ARM MIPS X86EM ...
+ PLATFORM="Pocket PC 2003"; # or "Pocket PC 2002"
+ if test "$doWince" != "yes"; then
+ # If !yes then the user specified something
+ # Reset ARCH to allow user to skip specifying it
+ ARCH=
+ eval `echo $doWince | awk -F, '{ \
+ if (length($1)) { printf "CEVERSION=\"%s\"\n", $1; \
+ if ($1 < 400) { printf "PLATFORM=\"Pocket PC 2002\"\n" } }; \
+ if (length($2)) { printf "TARGETCPU=\"%s\"\n", toupper($2) }; \
+ if (length($3)) { printf "ARCH=\"%s\"\n", toupper($3) }; \
+ if (length($4)) { printf "PLATFORM=\"%s\"\n", $4 }; \
+ }'`
+ if test "x${ARCH}" = "x" ; then
+ ARCH=$TARGETCPU;
+ fi
+ fi
+ OSVERSION=WCE$CEVERSION;
+ if test "x${WCEROOT}" = "x" ; then
+ WCEROOT="C:/Program Files/Microsoft eMbedded C++ 4.0"
+ if test ! -d "${WCEROOT}" ; then
+ WCEROOT="C:/Program Files/Microsoft eMbedded Tools"
+ fi
+ fi
+ if test "x${SDKROOT}" = "x" ; then
+ SDKROOT="C:/Program Files/Windows CE Tools"
+ if test ! -d "${SDKROOT}" ; then
+ SDKROOT="C:/Windows CE Tools"
+ fi
+ fi
+ WCEROOT=`echo "$WCEROOT" | sed -e 's!\\\!/!g'`
+ SDKROOT=`echo "$SDKROOT" | sed -e 's!\\\!/!g'`
+ if test ! -d "${SDKROOT}/${OSVERSION}/${PLATFORM}/Lib/${TARGETCPU}" \
+ -o ! -d "${WCEROOT}/EVC/${OSVERSION}/bin"; then
+ as_fn_error $? "could not find PocketPC SDK or target compiler to enable WinCE mode $CEVERSION,$TARGETCPU,$ARCH,$PLATFORM" "$LINENO" 5
+ doWince="no"
+ else
+ # We could PATH_NOSPACE these, but that's not important,
+ # as long as we quote them when used.
+ CEINCLUDE="${SDKROOT}/${OSVERSION}/${PLATFORM}/include"
+ if test -d "${CEINCLUDE}/${TARGETCPU}" ; then
+ CEINCLUDE="${CEINCLUDE}/${TARGETCPU}"
+ fi
+ CELIBPATH="${SDKROOT}/${OSVERSION}/${PLATFORM}/Lib/${TARGETCPU}"
+ fi
+ fi
+
+ if test "$GCC" != "yes" ; then
+ if test "${SHARED_BUILD}" = "0" ; then
+ runtime=-MT
+ else
+ runtime=-MD
+ fi
+
+ if test "$do64bit" != "no" ; then
+ # All this magic is necessary for the Win64 SDK RC1 - hobbs
+ CC="\"${PATH64}/cl.exe\""
+ CFLAGS="${CFLAGS} -I\"${MSSDK}/Include\" -I\"${MSSDK}/Include/crt\" -I\"${MSSDK}/Include/crt/sys\""
+ RC="\"${MSSDK}/bin/rc.exe\""
+ lflags="-nologo -MACHINE:${MACHINE} -LIBPATH:\"${MSSDK}/Lib/${MACHINE}\""
+ LINKBIN="\"${PATH64}/link.exe\""
+ CFLAGS_DEBUG="-nologo -Zi -Od -W3 ${runtime}d"
+ CFLAGS_OPTIMIZE="-nologo -O2 -W2 ${runtime}"
+ # Avoid 'unresolved external symbol __security_cookie'
+ # errors, c.f. http://support.microsoft.com/?id=894573
+
+ vars="bufferoverflowU.lib"
+ for i in $vars; do
+ if test "${TEA_PLATFORM}" = "windows" -a "$GCC" = "yes" ; then
+ # Convert foo.lib to -lfoo for GCC. No-op if not *.lib
+ i=`echo "$i" | sed -e 's/^\([^-].*\)\.lib$/-l\1/i'`
+ fi
+ PKG_LIBS="$PKG_LIBS $i"
+ done
+
+
+ elif test "$doWince" != "no" ; then
+ CEBINROOT="${WCEROOT}/EVC/${OSVERSION}/bin"
+ if test "${TARGETCPU}" = "X86"; then
+ CC="\"${CEBINROOT}/cl.exe\""
+ else
+ CC="\"${CEBINROOT}/cl${ARCH}.exe\""
+ fi
+ CFLAGS="$CFLAGS -I\"${CELIB_DIR}/inc\" -I\"${CEINCLUDE}\""
+ RC="\"${WCEROOT}/Common/EVC/bin/rc.exe\""
+ arch=`echo ${ARCH} | awk '{print tolower($0)}'`
+ defs="${ARCH} _${ARCH}_ ${arch} PALM_SIZE _MT _WINDOWS"
+ if test "${SHARED_BUILD}" = "1" ; then
+ # Static CE builds require static celib as well
+ defs="${defs} _DLL"
+ fi
+ for i in $defs ; do
+
+cat >>confdefs.h <<_ACEOF
+#define $i 1
+_ACEOF
+
+ done
+
+cat >>confdefs.h <<_ACEOF
+#define _WIN32_WCE $CEVERSION
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define UNDER_CE $CEVERSION
+_ACEOF
+
+ CFLAGS_DEBUG="-nologo -Zi -Od"
+ CFLAGS_OPTIMIZE="-nologo -Ox"
+ lversion=`echo ${CEVERSION} | sed -e 's/\(.\)\(..\)/\1\.\2/'`
+ lflags="-MACHINE:${ARCH} -LIBPATH:\"${CELIBPATH}\" -subsystem:windowsce,${lversion} -nologo"
+ LINKBIN="\"${CEBINROOT}/link.exe\""
+
+ else
+ RC="rc"
+ lflags="-nologo"
+ LINKBIN="link"
+ CFLAGS_DEBUG="-nologo -Z7 -Od -W3 -WX ${runtime}d"
+ CFLAGS_OPTIMIZE="-nologo -O2 -W2 ${runtime}"
+ fi
+ fi
+
+ if test "$GCC" = "yes"; then
+ # mingw gcc mode
+ RC="windres"
+ CFLAGS_DEBUG="-g"
+ CFLAGS_OPTIMIZE="-O2 -fomit-frame-pointer"
+ SHLIB_LD="$CC -shared"
+ UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
+ LDFLAGS_CONSOLE="-wl,--subsystem,console ${lflags}"
+ LDFLAGS_WINDOW="-wl,--subsystem,windows ${lflags}"
+ else
+ SHLIB_LD="${LINKBIN} -dll ${lflags}"
+ # link -lib only works when -lib is the first arg
+ STLIB_LD="${LINKBIN} -lib ${lflags}"
+ UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.lib'
+ PATHTYPE=-w
+ # For information on what debugtype is most useful, see:
+ # http://msdn.microsoft.com/library/en-us/dnvc60/html/gendepdebug.asp
+ # This essentially turns it all on.
+ LDFLAGS_DEBUG="-debug:full -debugtype:both -warn:2"
+ LDFLAGS_OPTIMIZE="-release"
+ if test "$doWince" != "no" ; then
+ LDFLAGS_CONSOLE="-link ${lflags}"
+ LDFLAGS_WINDOW=${LDFLAGS_CONSOLE}
+ else
+ LDFLAGS_CONSOLE="-link -subsystem:console ${lflags}"
+ LDFLAGS_WINDOW="-link -subsystem:windows ${lflags}"
+ fi
+ fi
+
+ SHLIB_LD_LIBS='${LIBS}'
+ SHLIB_SUFFIX=".dll"
+ SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.dll'
+
+ TCL_LIB_VERSIONS_OK=nodots
+ # Bogus to avoid getting this turned off
+ DL_OBJS="tclLoadNone.obj"
+ ;;
+ AIX-*)
+ if test "${TCL_THREADS}" = "1" -a "$GCC" != "yes" ; then
+ # AIX requires the _r compiler when gcc isn't being used
+ case "${CC}" in
+ *_r)
+ # ok ...
+ ;;
+ *)
+ CC=${CC}_r
+ ;;
+ esac
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: Using $CC for compiling with threads" >&5
+$as_echo "Using $CC for compiling with threads" >&6; }
+ fi
+ LIBS="$LIBS -lc"
+ SHLIB_CFLAGS=""
+ SHLIB_SUFFIX=".so"
+ SHLIB_LD_LIBS='${LIBS}'
+
+ DL_OBJS="tclLoadDl.o"
+ LD_LIBRARY_PATH_VAR="LIBPATH"
+
+ # AIX v<=4.1 has some different flags than 4.2+
+ if test "$system" = "AIX-4.1" -o "`uname -v`" -lt "4" ; then
+ #LIBOBJS="$LIBOBJS tclLoadAix.o"
+ case " $LIBOBJS " in
+ *" tclLoadAix.$ac_objext "* ) ;;
+ *) LIBOBJS="$LIBOBJS tclLoadAix.$ac_objext"
+ ;;
+esac
+
+ DL_LIBS="-lld"
+ fi
+
+ # Check to enable 64-bit flags for compiler/linker on AIX 4+
+ if test "$do64bit" = "yes" -a "`uname -v`" -gt "3" ; then
+ if test "$GCC" = "yes" ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"64bit mode not supported with GCC on $system\"" >&5
+$as_echo "$as_me: WARNING: \"64bit mode not supported with GCC on $system\"" >&2;}
+ else
+ do64bit_ok=yes
+ CFLAGS="$CFLAGS -q64"
+ LDFLAGS="$LDFLAGS -q64"
+ RANLIB="${RANLIB} -X64"
+ AR="${AR} -X64"
+ SHLIB_LD_FLAGS="-b64"
+ fi
+ fi
+
+ if test "`uname -m`" = "ia64" ; then
+ # AIX-5 uses ELF style dynamic libraries on IA-64, but not PPC
+ SHLIB_LD="/usr/ccs/bin/ld -G -z text"
+ # AIX-5 has dl* in libc.so
+ DL_LIBS=""
+ if test "$GCC" = "yes" ; then
+ LD_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
+ else
+ LD_SEARCH_FLAGS='-R${LIB_RUNTIME_DIR}'
+ fi
+ else
+ if test "$GCC" = "yes" ; then
+ SHLIB_LD="gcc -shared"
+ else
+ SHLIB_LD="/bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry"
+ fi
+ SHLIB_LD="${TCL_SRC_DIR}/unix/ldAix ${SHLIB_LD} ${SHLIB_LD_FLAGS}"
+ DL_LIBS="-ldl"
+ LD_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+ TCL_NEEDS_EXP_FILE=1
+ TCL_EXPORT_FILE_SUFFIX='${PACKAGE_VERSION}.exp'
+ fi
+
+ # On AIX <=v4 systems, libbsd.a has to be linked in to support
+ # non-blocking file IO. This library has to be linked in after
+ # the MATH_LIBS or it breaks the pow() function. The way to
+ # insure proper sequencing, is to add it to the tail of MATH_LIBS.
+ # This library also supplies gettimeofday.
+ #
+ # AIX does not have a timezone field in struct tm. When the AIX
+ # bsd library is used, the timezone global and the gettimeofday
+ # methods are to be avoided for timezone deduction instead, we
+ # deduce the timezone by comparing the localtime result on a
+ # known GMT value.
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gettimeofday in -lbsd" >&5
+$as_echo_n "checking for gettimeofday in -lbsd... " >&6; }
+if ${ac_cv_lib_bsd_gettimeofday+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lbsd $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gettimeofday ();
+int
+main ()
+{
+return gettimeofday ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_bsd_gettimeofday=yes
+else
+ ac_cv_lib_bsd_gettimeofday=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_gettimeofday" >&5
+$as_echo "$ac_cv_lib_bsd_gettimeofday" >&6; }
+if test "x$ac_cv_lib_bsd_gettimeofday" = xyes; then :
+ libbsd=yes
+else
+ libbsd=no
+fi
+
+ if test $libbsd = yes; then
+ MATH_LIBS="$MATH_LIBS -lbsd"
+
+$as_echo "#define USE_DELTA_FOR_TZ 1" >>confdefs.h
+
+ fi
+ ;;
+ BeOS*)
+ SHLIB_CFLAGS="-fPIC"
+ SHLIB_LD="${CC} -nostart"
+ SHLIB_LD_LIBS='${LIBS}'
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS="-ldl"
+ ;;
+ BSD/OS-2.1*|BSD/OS-3*)
+ SHLIB_CFLAGS=""
+ SHLIB_LD="shlicc -r"
+ SHLIB_LD_LIBS='${LIBS}'
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS="-ldl"
+ LD_SEARCH_FLAGS=""
+ ;;
+ BSD/OS-4.*)
+ SHLIB_CFLAGS="-export-dynamic -fPIC"
+ SHLIB_LD="cc -shared"
+ SHLIB_LD_LIBS='${LIBS}'
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS="-ldl"
+ LDFLAGS="$LDFLAGS -export-dynamic"
+ LD_SEARCH_FLAGS=""
+ ;;
+ dgux*)
+ SHLIB_CFLAGS="-K PIC"
+ SHLIB_LD="cc -G"
+ SHLIB_LD_LIBS=""
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS="-ldl"
+ LD_SEARCH_FLAGS=""
+ ;;
+ HP-UX-*.11.*)
+ # Use updated header definitions where possible
+
+$as_echo "#define _XOPEN_SOURCE_EXTENDED 1" >>confdefs.h
+
+
+ SHLIB_SUFFIX=".sl"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
+$as_echo_n "checking for shl_load in -ldld... " >&6; }
+if ${ac_cv_lib_dld_shl_load+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load ();
+int
+main ()
+{
+return shl_load ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_dld_shl_load=yes
+else
+ ac_cv_lib_dld_shl_load=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
+$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
+if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
+ tcl_ok=yes
+else
+ tcl_ok=no
+fi
+
+ if test "$tcl_ok" = yes; then
+ SHLIB_CFLAGS="+z"
+ SHLIB_LD="ld -b"
+ SHLIB_LD_LIBS='${LIBS}'
+ DL_OBJS="tclLoadShl.o"
+ DL_LIBS="-ldld"
+ LDFLAGS="$LDFLAGS -Wl,-E"
+ LD_SEARCH_FLAGS='+s +b ${LIB_RUNTIME_DIR}:.'
+ LD_LIBRARY_PATH_VAR="SHLIB_PATH"
+ fi
+ if test "$GCC" = "yes" ; then
+ SHLIB_LD="gcc -shared"
+ SHLIB_LD_LIBS='${LIBS}'
+ LD_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.'
+ fi
+
+ # Users may want PA-RISC 1.1/2.0 portable code - needs HP cc
+ #CFLAGS="$CFLAGS +DAportable"
+
+ # Check to enable 64-bit flags for compiler/linker
+ if test "$do64bit" = "yes" ; then
+ if test "$GCC" = "yes" ; then
+ hpux_arch=`${CC} -dumpmachine`
+ case $hpux_arch in
+ hppa64*)
+ # 64-bit gcc in use. Fix flags for GNU ld.
+ do64bit_ok=yes
+ SHLIB_LD="${CC} -shared"
+ SHLIB_LD_LIBS='${LIBS}'
+ ;;
+ *)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"64bit mode not supported with GCC on $system\"" >&5
+$as_echo "$as_me: WARNING: \"64bit mode not supported with GCC on $system\"" >&2;}
+ ;;
+ esac
+ else
+ do64bit_ok=yes
+ CFLAGS="$CFLAGS +DD64"
+ LDFLAGS="$LDFLAGS +DD64"
+ fi
+ fi
+ ;;
+ HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*)
+ SHLIB_SUFFIX=".sl"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
+$as_echo_n "checking for shl_load in -ldld... " >&6; }
+if ${ac_cv_lib_dld_shl_load+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load ();
+int
+main ()
+{
+return shl_load ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_dld_shl_load=yes
+else
+ ac_cv_lib_dld_shl_load=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
+$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
+if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
+ tcl_ok=yes
+else
+ tcl_ok=no
+fi
+
+ if test "$tcl_ok" = yes; then
+ SHLIB_CFLAGS="+z"
+ SHLIB_LD="ld -b"
+ SHLIB_LD_LIBS=""
+ DL_OBJS="tclLoadShl.o"
+ DL_LIBS="-ldld"
+ LDFLAGS="$LDFLAGS -Wl,-E"
+ LD_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.'
+ fi
+ LD_LIBRARY_PATH_VAR="SHLIB_PATH"
+ ;;
+ IRIX-4.*)
+ SHLIB_CFLAGS="-G 0"
+ SHLIB_SUFFIX=".a"
+ SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r -G 0"
+ SHLIB_LD_LIBS='${LIBS}'
+ DL_OBJS="tclLoadAout.o"
+ DL_LIBS=""
+ LDFLAGS="$LDFLAGS -Wl,-D,08000000"
+ LD_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+ SHARED_LIB_SUFFIX='${PACKAGE_VERSION}.a'
+ ;;
+ IRIX-5.*)
+ SHLIB_CFLAGS=""
+ SHLIB_LD="ld -shared -rdata_shared"
+ SHLIB_LD_LIBS='${LIBS}'
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS=""
+ LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+ ;;
+ IRIX-6.*|IRIX64-6.5*)
+ SHLIB_CFLAGS=""
+ SHLIB_LD="ld -n32 -shared -rdata_shared"
+ SHLIB_LD_LIBS='${LIBS}'
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS=""
+ LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+ if test "$GCC" = "yes" ; then
+ CFLAGS="$CFLAGS -mabi=n32"
+ LDFLAGS="$LDFLAGS -mabi=n32"
+ else
+ case $system in
+ IRIX-6.3)
+ # Use to build 6.2 compatible binaries on 6.3.
+ CFLAGS="$CFLAGS -n32 -D_OLD_TERMIOS"
+ ;;
+ *)
+ CFLAGS="$CFLAGS -n32"
+ ;;
+ esac
+ LDFLAGS="$LDFLAGS -n32"
+ fi
+ ;;
+ IRIX64-6.*)
+ SHLIB_CFLAGS=""
+ SHLIB_LD="ld -n32 -shared -rdata_shared"
+ SHLIB_LD_LIBS='${LIBS}'
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS=""
+ LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+
+ # Check to enable 64-bit flags for compiler/linker
+
+ if test "$do64bit" = "yes" ; then
+ if test "$GCC" = "yes" ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 64bit mode not supported by gcc" >&5
+$as_echo "$as_me: WARNING: 64bit mode not supported by gcc" >&2;}
+ else
+ do64bit_ok=yes
+ SHLIB_LD="ld -64 -shared -rdata_shared"
+ CFLAGS="$CFLAGS -64"
+ LDFLAGS="$LDFLAGS -64"
+ fi
+ fi
+ ;;
+ Linux*)
+ SHLIB_CFLAGS="-fPIC"
+ SHLIB_LD_LIBS='${LIBS}'
+ SHLIB_SUFFIX=".so"
+
+ CFLAGS_OPTIMIZE="-O2 -fomit-frame-pointer"
+ # egcs-2.91.66 on Redhat Linux 6.0 generates lots of warnings
+ # when you inline the string and math operations. Turn this off to
+ # get rid of the warnings.
+
+ #CFLAGS_OPTIMIZE="${CFLAGS_OPTIMIZE} -D__NO_STRING_INLINES -D__NO_MATH_INLINES"
+
+ if test "$have_dl" = yes; then
+ SHLIB_LD="${CC} -shared"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS="-ldl"
+ LDFLAGS="$LDFLAGS -Wl,--export-dynamic"
+ LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+ else
+ ac_fn_c_check_header_mongrel "$LINENO" "dld.h" "ac_cv_header_dld_h" "$ac_includes_default"
+if test "x$ac_cv_header_dld_h" = xyes; then :
+
+ SHLIB_LD="ld -shared"
+ DL_OBJS="tclLoadDld.o"
+ DL_LIBS="-ldld"
+ LD_SEARCH_FLAGS=""
+fi
+
+
+ fi
+ if test "`uname -m`" = "alpha" ; then
+ CFLAGS="$CFLAGS -mieee"
+ fi
+
+ # The combo of gcc + glibc has a bug related
+ # to inlining of functions like strtod(). The
+ # -fno-builtin flag should address this problem
+ # but it does not work. The -fno-inline flag
+ # is kind of overkill but it works.
+ # Disable inlining only when one of the
+ # files in compat/*.c is being linked in.
+ if test x"${USE_COMPAT}" != x ; then
+ CFLAGS="$CFLAGS -fno-inline"
+ fi
+
+ ;;
+ GNU*)
+ SHLIB_CFLAGS="-fPIC"
+ SHLIB_LD_LIBS='${LIBS}'
+ SHLIB_SUFFIX=".so"
+
+ if test "$have_dl" = yes; then
+ SHLIB_LD="${CC} -shared"
+ DL_OBJS=""
+ DL_LIBS="-ldl"
+ LDFLAGS="$LDFLAGS -Wl,--export-dynamic"
+ LD_SEARCH_FLAGS=""
+ else
+ ac_fn_c_check_header_mongrel "$LINENO" "dld.h" "ac_cv_header_dld_h" "$ac_includes_default"
+if test "x$ac_cv_header_dld_h" = xyes; then :
+
+ SHLIB_LD="ld -shared"
+ DL_OBJS=""
+ DL_LIBS="-ldld"
+ LD_SEARCH_FLAGS=""
+fi
+
+
+ fi
+ if test "`uname -m`" = "alpha" ; then
+ CFLAGS="$CFLAGS -mieee"
+ fi
+ ;;
+ MP-RAS-02*)
+ SHLIB_CFLAGS="-K PIC"
+ SHLIB_LD="cc -G"
+ SHLIB_LD_LIBS=""
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS="-ldl"
+ LD_SEARCH_FLAGS=""
+ ;;
+ MP-RAS-*)
+ SHLIB_CFLAGS="-K PIC"
+ SHLIB_LD="cc -G"
+ SHLIB_LD_LIBS=""
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS="-ldl"
+ LDFLAGS="$LDFLAGS -Wl,-Bexport"
+ LD_SEARCH_FLAGS=""
+ ;;
+ NetBSD-*|FreeBSD-[1-2].*)
+ # Not available on all versions: check for include file.
+ ac_fn_c_check_header_mongrel "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default"
+if test "x$ac_cv_header_dlfcn_h" = xyes; then :
+
+ # NetBSD/SPARC needs -fPIC, -fpic will not do.
+ SHLIB_CFLAGS="-fPIC"
+ SHLIB_LD="ld -Bshareable -x"
+ SHLIB_LD_LIBS=""
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS=""
+ LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ELF" >&5
+$as_echo_n "checking for ELF... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#ifdef __ELF__
+ yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "yes" >/dev/null 2>&1; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so'
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.1.0'
+
+fi
+rm -f conftest*
+
+
+else
+
+ SHLIB_CFLAGS=""
+ SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r"
+ SHLIB_LD_LIBS='${LIBS}'
+ SHLIB_SUFFIX=".a"
+ DL_OBJS="tclLoadAout.o"
+ DL_LIBS=""
+ LD_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+ SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
+
+fi
+
+
+
+ # FreeBSD doesn't handle version numbers with dots.
+
+ UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
+ TCL_LIB_VERSIONS_OK=nodots
+ ;;
+ OpenBSD-*)
+ SHLIB_LD="${CC} -shared"
+ SHLIB_LD_LIBS='${LIBS}'
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS=""
+ LD_SEARCH_FLAGS=""
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ELF" >&5
+$as_echo_n "checking for ELF... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#ifdef __ELF__
+ yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "yes" >/dev/null 2>&1; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.1.0'
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.1.0'
+
+fi
+rm -f conftest*
+
+
+ # OpenBSD doesn't do version numbers with dots.
+ UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
+ TCL_LIB_VERSIONS_OK=nodots
+ ;;
+ FreeBSD-*)
+ # FreeBSD 3.* and greater have ELF.
+ SHLIB_CFLAGS="-fPIC"
+ SHLIB_LD="ld -Bshareable -x"
+ SHLIB_LD_LIBS='${LIBS}'
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS=""
+ LDFLAGS="$LDFLAGS -export-dynamic"
+ LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+ if test "${TCL_THREADS}" = "1" ; then
+ # The -pthread needs to go in the CFLAGS, not LIBS
+ LIBS=`echo $LIBS | sed s/-pthread//`
+ CFLAGS="$CFLAGS -pthread"
+ LDFLAGS="$LDFLAGS -pthread"
+ fi
+ case $system in
+ FreeBSD-3.*)
+ # FreeBSD-3 doesn't handle version numbers with dots.
+ UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
+ SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so'
+ TCL_LIB_VERSIONS_OK=nodots
+ ;;
+ esac
+ ;;
+ Darwin-*)
+ CFLAGS_OPTIMIZE="-Os"
+ SHLIB_CFLAGS="-fno-common"
+ if test $do64bit = yes; then
+ do64bit_ok=yes
+ CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5"
+ fi
+ SHLIB_LD='${CC} -dynamiclib ${CFLAGS} ${LDFLAGS}'
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if ld accepts -single_module flag" >&5
+$as_echo_n "checking if ld accepts -single_module flag... " >&6; }
+if ${tcl_cv_ld_single_module+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ hold_ldflags=$LDFLAGS
+ LDFLAGS="$LDFLAGS -dynamiclib -Wl,-single_module"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+int i;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ tcl_cv_ld_single_module=yes
+else
+ tcl_cv_ld_single_module=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS=$hold_ldflags
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $tcl_cv_ld_single_module" >&5
+$as_echo "$tcl_cv_ld_single_module" >&6; }
+ if test $tcl_cv_ld_single_module = yes; then
+ SHLIB_LD="${SHLIB_LD} -Wl,-single_module"
+ fi
+ SHLIB_LD_LIBS='${LIBS}'
+ SHLIB_SUFFIX=".dylib"
+ DL_OBJS="tclLoadDyld.o"
+ DL_LIBS=""
+ # Don't use -prebind when building for Mac OS X 10.4 or later only:
+ test -z "${MACOSX_DEPLOYMENT_TARGET}" || \
+ test "`echo "${MACOSX_DEPLOYMENT_TARGET}" | awk -F. '{print $2}'`" -lt 4 && \
+ LDFLAGS="$LDFLAGS -prebind"
+ LDFLAGS="$LDFLAGS -headerpad_max_install_names"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if ld accepts -search_paths_first flag" >&5
+$as_echo_n "checking if ld accepts -search_paths_first flag... " >&6; }
+if ${tcl_cv_ld_search_paths_first+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ hold_ldflags=$LDFLAGS
+ LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+int i;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ tcl_cv_ld_search_paths_first=yes
+else
+ tcl_cv_ld_search_paths_first=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS=$hold_ldflags
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $tcl_cv_ld_search_paths_first" >&5
+$as_echo "$tcl_cv_ld_search_paths_first" >&6; }
+ if test $tcl_cv_ld_search_paths_first = yes; then
+ LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
+ fi
+ LD_SEARCH_FLAGS=""
+ LD_LIBRARY_PATH_VAR="DYLD_LIBRARY_PATH"
+ ;;
+ NEXTSTEP-*)
+ SHLIB_CFLAGS=""
+ SHLIB_LD="cc -nostdlib -r"
+ SHLIB_LD_LIBS=""
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadNext.o"
+ DL_LIBS=""
+ LD_SEARCH_FLAGS=""
+ ;;
+ OS/390-*)
+ CFLAGS_OPTIMIZE="" # Optimizer is buggy
+
+$as_echo "#define _OE_SOCKETS 1" >>confdefs.h
+
+ ;;
+ OSF1-1.0|OSF1-1.1|OSF1-1.2)
+ # OSF/1 1.[012] from OSF, and derivatives, including Paragon OSF/1
+ SHLIB_CFLAGS=""
+ # Hack: make package name same as library name
+ SHLIB_LD='ld -R -export :'
+ SHLIB_LD_LIBS=""
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadOSF.o"
+ DL_LIBS=""
+ LD_SEARCH_FLAGS=""
+ ;;
+ OSF1-1.*)
+ # OSF/1 1.3 from OSF using ELF, and derivatives, including AD2
+ SHLIB_CFLAGS="-fPIC"
+ if test "$SHARED_BUILD" = "1" ; then
+ SHLIB_LD="ld -shared"
+ else
+ SHLIB_LD="ld -non_shared"
+ fi
+ SHLIB_LD_LIBS=""
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS=""
+ LD_SEARCH_FLAGS=""
+ ;;
+ OSF1-V*)
+ # Digital OSF/1
+ SHLIB_CFLAGS=""
+ if test "$SHARED_BUILD" = "1" ; then
+ SHLIB_LD="${CC} -shared"
+ else
+ SHLIB_LD="${CC} -non_shared"
+ fi
+ SHLIB_LD_LIBS='${LIBS}'
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS=""
+ LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
+ if test "$GCC" = "yes" ; then
+ CFLAGS="$CFLAGS -mieee"
+ else
+ CFLAGS="$CFLAGS -DHAVE_TZSET -std1 -ieee"
+ fi
+ # see pthread_intro(3) for pthread support on osf1, k.furukawa
+ if test "${TCL_THREADS}" = "1" ; then
+ CFLAGS="$CFLAGS -DHAVE_PTHREAD_ATTR_SETSTACKSIZE"
+ CFLAGS="$CFLAGS -DTCL_THREAD_STACK_MIN=PTHREAD_STACK_MIN*64"
+ LIBS=`echo $LIBS | sed s/-lpthreads//`
+ if test "$GCC" = "yes" ; then
+ LIBS="$LIBS -lpthread -lmach -lexc"
+ else
+ CFLAGS="$CFLAGS -pthread"
+ LDFLAGS="$LDFLAGS -pthread"
+ fi
+ fi
+
+ ;;
+ QNX-6*)
+ # QNX RTP
+ # This may work for all QNX, but it was only reported for v6.
+ SHLIB_CFLAGS="-fPIC"
+ SHLIB_LD="ld -Bshareable -x"
+ SHLIB_LD_LIBS=""
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ # dlopen is in -lc on QNX
+ DL_LIBS=""
+ LD_SEARCH_FLAGS=""
+ ;;
+ RISCos-*)
+ SHLIB_CFLAGS="-G 0"
+ SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r -G 0"
+ SHLIB_LD_LIBS='${LIBS}'
+ SHLIB_SUFFIX=".a"
+ DL_OBJS="tclLoadAout.o"
+ DL_LIBS=""
+ LDFLAGS="$LDFLAGS -Wl,-D,08000000"
+ LD_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+ ;;
+ SCO_SV-3.2*)
+ # Note, dlopen is available only on SCO 3.2.5 and greater. However,
+ # this test works, since "uname -s" was non-standard in 3.2.4 and
+ # below.
+ if test "$GCC" = "yes" ; then
+ SHLIB_CFLAGS="-fPIC -melf"
+ LDFLAGS="$LDFLAGS -melf -Wl,-Bexport"
+ else
+ SHLIB_CFLAGS="-Kpic -belf"
+ LDFLAGS="$LDFLAGS -belf -Wl,-Bexport"
+ fi
+ SHLIB_LD="ld -G"
+ SHLIB_LD_LIBS=""
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS=""
+ LD_SEARCH_FLAGS=""
+ ;;
+ SINIX*5.4*)
+ SHLIB_CFLAGS="-K PIC"
+ SHLIB_LD="cc -G"
+ SHLIB_LD_LIBS=""
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS="-ldl"
+ LD_SEARCH_FLAGS=""
+ ;;
+ SunOS-4*)
+ SHLIB_CFLAGS="-PIC"
+ SHLIB_LD="ld"
+ SHLIB_LD_LIBS=""
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS="-ldl"
+ LD_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+
+ # SunOS can't handle version numbers with dots in them in library
+ # specs, like -ltcl7.5, so use -ltcl75 instead. Also, it
+ # requires an extra version number at the end of .so file names.
+ # So, the library has to have a name like libtcl75.so.1.0
+
+ SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.1.0'
+ UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
+ TCL_LIB_VERSIONS_OK=nodots
+ ;;
+ SunOS-5.[0-6])
+ # Careful to not let 5.10+ fall into this case
+
+ # Note: If _REENTRANT isn't defined, then Solaris
+ # won't define thread-safe library routines.
+
+
+$as_echo "#define _REENTRANT 1" >>confdefs.h
+
+
+$as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
+
+
+ SHLIB_CFLAGS="-KPIC"
+
+ # Note: need the LIBS below, otherwise Tk won't find Tcl's
+ # symbols when dynamically loaded into tclsh.
+
+ SHLIB_LD_LIBS='${LIBS}'
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS="-ldl"
+ if test "$GCC" = "yes" ; then
+ SHLIB_LD="$CC -shared"
+ LD_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
+ else
+ SHLIB_LD="/usr/ccs/bin/ld -G -z text"
+ LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}'
+ fi
+ ;;
+ SunOS-5*)
+
+ # Note: If _REENTRANT isn't defined, then Solaris
+ # won't define thread-safe library routines.
+
+
+$as_echo "#define _REENTRANT 1" >>confdefs.h
+
+
+$as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
+
+
+ SHLIB_CFLAGS="-KPIC"
+
+ # Check to enable 64-bit flags for compiler/linker
+ if test "$do64bit" = "yes" ; then
+ arch=`isainfo`
+ if test "$arch" = "sparcv9 sparc" ; then
+ if test "$GCC" = "yes" ; then
+ if test "`gcc -dumpversion` | awk -F. '{print }'" -lt "3" ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 64bit mode not supported with GCC < 3.2 on $system" >&5
+$as_echo "$as_me: WARNING: 64bit mode not supported with GCC < 3.2 on $system" >&2;}
+ else
+ do64bit_ok=yes
+ CFLAGS="$CFLAGS -m64 -mcpu=v9"
+ LDFLAGS="$LDFLAGS -m64 -mcpu=v9"
+ SHLIB_CFLAGS="-fPIC"
+ fi
+ else
+ do64bit_ok=yes
+ if test "$do64bitVIS" = "yes" ; then
+ CFLAGS="$CFLAGS -xarch=v9a"
+ LDFLAGS="$LDFLAGS -xarch=v9a"
+ else
+ CFLAGS="$CFLAGS -xarch=v9"
+ LDFLAGS="$LDFLAGS -xarch=v9"
+ fi
+ # Solaris 64 uses this as well
+ #LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH_64"
+ fi
+ elif test "$arch" = "amd64 i386" ; then
+ if test "$GCC" = "yes" ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 64bit mode not supported with GCC on $system" >&5
+$as_echo "$as_me: WARNING: 64bit mode not supported with GCC on $system" >&2;}
+ else
+ do64bit_ok=yes
+ CFLAGS="$CFLAGS -xarch=amd64"
+ LDFLAGS="$LDFLAGS -xarch=amd64"
+ fi
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 64bit mode not supported for $arch" >&5
+$as_echo "$as_me: WARNING: 64bit mode not supported for $arch" >&2;}
+ fi
+ fi
+
+ # Note: need the LIBS below, otherwise Tk won't find Tcl's
+ # symbols when dynamically loaded into tclsh.
+
+ SHLIB_LD_LIBS='${LIBS}'
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS="-ldl"
+ if test "$GCC" = "yes" ; then
+ SHLIB_LD="$CC -shared"
+ LD_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
+ if test "$do64bit" = "yes" ; then
+ # We need to specify -static-libgcc or we need to
+ # add the path to the sparv9 libgcc.
+ # JH: static-libgcc is necessary for core Tcl, but may
+ # not be necessary for extensions.
+ SHLIB_LD="$SHLIB_LD -m64 -mcpu=v9 -static-libgcc"
+ # for finding sparcv9 libgcc, get the regular libgcc
+ # path, remove so name and append 'sparcv9'
+ #v9gcclibdir="`gcc -print-file-name=libgcc_s.so` | ..."
+ #LD_SEARCH_FLAGS="${LD_SEARCH_FLAGS},-R,$v9gcclibdir"
+ fi
+ else
+ SHLIB_LD="/usr/ccs/bin/ld -G -z text"
+ LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}'
+ fi
+ ;;
+ ULTRIX-4.*)
+ SHLIB_CFLAGS="-G 0"
+ SHLIB_SUFFIX=".a"
+ SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r -G 0"
+ SHLIB_LD_LIBS='${LIBS}'
+ DL_OBJS="tclLoadAout.o"
+ DL_LIBS=""
+ LDFLAGS="$LDFLAGS -Wl,-D,08000000"
+ LD_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+ if test "$GCC" != "yes" ; then
+ CFLAGS="$CFLAGS -DHAVE_TZSET -std1"
+ fi
+ ;;
+ UNIX_SV* | UnixWare-5*)
+ SHLIB_CFLAGS="-KPIC"
+ SHLIB_LD="cc -G"
+ SHLIB_LD_LIBS=""
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS="-ldl"
+ # Some UNIX_SV* systems (unixware 1.1.2 for example) have linkers
+ # that don't grok the -Bexport option. Test that it does.
+ hold_ldflags=$LDFLAGS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld accepts -Bexport flag" >&5
+$as_echo_n "checking for ld accepts -Bexport flag... " >&6; }
+ LDFLAGS="$LDFLAGS -Wl,-Bexport"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+int i;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ found=yes
+else
+ LDFLAGS=$hold_ldflags found=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $found" >&5
+$as_echo "$found" >&6; }
+ LD_SEARCH_FLAGS=""
+ ;;
+ esac
+
+ if test "$do64bit" != "no" -a "$do64bit_ok" = "no" ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 64bit support being disabled -- don't know magic for this platform" >&5
+$as_echo "$as_me: WARNING: 64bit support being disabled -- don't know magic for this platform" >&2;}
+ fi
+
+ # Step 4: If pseudo-static linking is in use (see K. B. Kenny, "Dynamic
+ # Loading for Tcl -- What Became of It?". Proc. 2nd Tcl/Tk Workshop,
+ # New Orleans, LA, Computerized Processes Unlimited, 1994), then we need
+ # to determine which of several header files defines the a.out file
+ # format (a.out.h, sys/exec.h, or sys/exec_aout.h). At present, we
+ # support only a file format that is more or less version-7-compatible.
+ # In particular,
+ # - a.out files must begin with `struct exec'.
+ # - the N_TXTOFF on the `struct exec' must compute the seek address
+ # of the text segment
+ # - The `struct exec' must contain a_magic, a_text, a_data, a_bss
+ # and a_entry fields.
+ # The following compilation should succeed if and only if either sys/exec.h
+ # or a.out.h is usable for the purpose.
+ #
+ # Note that the modified COFF format used on MIPS Ultrix 4.x is usable; the
+ # `struct exec' includes a second header that contains information that
+ # duplicates the v7 fields that are needed.
+
+ if test "x$DL_OBJS" = "xtclLoadAout.o" ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking sys/exec.h" >&5
+$as_echo_n "checking sys/exec.h... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include
+int
+main ()
+{
+
+ struct exec foo;
+ unsigned long seek;
+ int flag;
+#if defined(__mips) || defined(mips)
+ seek = N_TXTOFF (foo.ex_f, foo.ex_o);
+#else
+ seek = N_TXTOFF (foo);
+#endif
+ flag = (foo.a_magic == OMAGIC);
+ return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry;
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ tcl_ok=usable
+else
+ tcl_ok=unusable
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tcl_ok" >&5
+$as_echo "$tcl_ok" >&6; }
+ if test $tcl_ok = usable; then
+
+$as_echo "#define USE_SYS_EXEC_H 1" >>confdefs.h
+
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking a.out.h" >&5
+$as_echo_n "checking a.out.h... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include
+int
+main ()
+{
+
+ struct exec foo;
+ unsigned long seek;
+ int flag;
+#if defined(__mips) || defined(mips)
+ seek = N_TXTOFF (foo.ex_f, foo.ex_o);
+#else
+ seek = N_TXTOFF (foo);
+#endif
+ flag = (foo.a_magic == OMAGIC);
+ return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry;
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ tcl_ok=usable
+else
+ tcl_ok=unusable
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tcl_ok" >&5
+$as_echo "$tcl_ok" >&6; }
+ if test $tcl_ok = usable; then
+
+$as_echo "#define USE_A_OUT_H 1" >>confdefs.h
+
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking sys/exec_aout.h" >&5
+$as_echo_n "checking sys/exec_aout.h... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include
+int
+main ()
+{
+
+ struct exec foo;
+ unsigned long seek;
+ int flag;
+#if defined(__mips) || defined(mips)
+ seek = N_TXTOFF (foo.ex_f, foo.ex_o);
+#else
+ seek = N_TXTOFF (foo);
+#endif
+ flag = (foo.a_midmag == OMAGIC);
+ return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry;
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ tcl_ok=usable
+else
+ tcl_ok=unusable
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tcl_ok" >&5
+$as_echo "$tcl_ok" >&6; }
+ if test $tcl_ok = usable; then
+
+$as_echo "#define USE_SYS_EXEC_AOUT_H 1" >>confdefs.h
+
+ else
+ DL_OBJS=""
+ fi
+ fi
+ fi
+ fi
+
+ # Step 5: disable dynamic loading if requested via a command-line switch.
+
+ # Check whether --enable-load was given.
+if test "${enable_load+set}" = set; then :
+ enableval=$enable_load; tcl_ok=$enableval
+else
+ tcl_ok=yes
+fi
+
+ if test "$tcl_ok" = "no"; then
+ DL_OBJS=""
+ fi
+
+ if test "x$DL_OBJS" != "x" ; then
+ BUILD_DLTEST="\$(DLTEST_TARGETS)"
+ else
+ echo "Can't figure out how to do dynamic loading or shared libraries"
+ echo "on this system."
+ SHLIB_CFLAGS=""
+ SHLIB_LD=""
+ SHLIB_SUFFIX=""
+ DL_OBJS="tclLoadNone.o"
+ DL_LIBS=""
+ LDFLAGS="$LDFLAGS_ORIG"
+ LD_SEARCH_FLAGS=""
+ BUILD_DLTEST=""
+ fi
+
+ # If we're running gcc, then change the C flags for compiling shared
+ # libraries to the right flags for gcc, instead of those for the
+ # standard manufacturer compiler.
+
+ if test "$DL_OBJS" != "tclLoadNone.o" ; then
+ if test "$GCC" = "yes" ; then
+ case $system in
+ AIX-*)
+ ;;
+ BSD/OS*)
+ ;;
+ IRIX*)
+ ;;
+ NetBSD-*|FreeBSD-*)
+ ;;
+ Darwin-*)
+ ;;
+ RISCos-*)
+ ;;
+ SCO_SV-3.2*)
+ ;;
+ ULTRIX-4.*)
+ ;;
+ windows)
+ ;;
+ *)
+ SHLIB_CFLAGS="-fPIC"
+ ;;
+ esac
+ fi
+ fi
+
+ if test "$SHARED_LIB_SUFFIX" = "" ; then
+ SHARED_LIB_SUFFIX='${PACKAGE_VERSION}${SHLIB_SUFFIX}'
+ fi
+ if test "$UNSHARED_LIB_SUFFIX" = "" ; then
+ UNSHARED_LIB_SUFFIX='${PACKAGE_VERSION}.a'
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ # These must be called after we do the basic CFLAGS checks and
+ # verify any possible 64-bit or similar switches are necessary
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for required early compiler flags" >&5
+$as_echo_n "checking for required early compiler flags... " >&6; }
+ tcl_flags=""
+
+ if ${tcl_cv_flag__isoc99_source+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include
+int
+main ()
+{
+char *p = (char *)strtoll; char *q = (char *)strtoull;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ tcl_cv_flag__isoc99_source=no
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#define _ISOC99_SOURCE 1
+#include
+int
+main ()
+{
+char *p = (char *)strtoll; char *q = (char *)strtoull;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ tcl_cv_flag__isoc99_source=yes
+else
+ tcl_cv_flag__isoc99_source=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+ if test "x${tcl_cv_flag__isoc99_source}" = "xyes" ; then
+
+$as_echo "#define _ISOC99_SOURCE 1" >>confdefs.h
+
+ tcl_flags="$tcl_flags _ISOC99_SOURCE"
+ fi
+
+
+ if ${tcl_cv_flag__largefile64_source+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include
+int
+main ()
+{
+struct stat64 buf; int i = stat64("/", &buf);
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ tcl_cv_flag__largefile64_source=no
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#define _LARGEFILE64_SOURCE 1
+#include
+int
+main ()
+{
+struct stat64 buf; int i = stat64("/", &buf);
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ tcl_cv_flag__largefile64_source=yes
+else
+ tcl_cv_flag__largefile64_source=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+ if test "x${tcl_cv_flag__largefile64_source}" = "xyes" ; then
+
+$as_echo "#define _LARGEFILE64_SOURCE 1" >>confdefs.h
+
+ tcl_flags="$tcl_flags _LARGEFILE64_SOURCE"
+ fi
+
+ if test "x${tcl_flags}" = "x" ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
+$as_echo "none" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${tcl_flags}" >&5
+$as_echo "${tcl_flags}" >&6; }
+ fi
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for 64-bit integer type" >&5
+$as_echo_n "checking for 64-bit integer type... " >&6; }
+ if ${tcl_cv_type_64bit+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ tcl_cv_type_64bit=none
+ # See if the compiler knows natively about __int64
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+__int64 value = (__int64) 0;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ tcl_type_64bit=__int64
+else
+ tcl_type_64bit="long long"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ # See if we should use long anyway Note that we substitute in the
+ # type that is our current guess for a 64-bit type inside this check
+ # program, so it should be modified only carefully...
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+switch (0) {
+ case 1: case (sizeof(${tcl_type_64bit})==sizeof(long)): ;
+ }
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ tcl_cv_type_64bit=${tcl_type_64bit}
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+ if test "${tcl_cv_type_64bit}" = none ; then
+
+$as_echo "#define TCL_WIDE_INT_IS_LONG 1" >>confdefs.h
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: using long" >&5
+$as_echo "using long" >&6; }
+ elif test "${tcl_cv_type_64bit}" = "__int64" \
+ -a "${TEA_PLATFORM}" = "windows" ; then
+ # We actually want to use the default tcl.h checks in this
+ # case to handle both TCL_WIDE_INT_TYPE and TCL_LL_MODIFIER*
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: using Tcl header defaults" >&5
+$as_echo "using Tcl header defaults" >&6; }
+ else
+
+cat >>confdefs.h <<_ACEOF
+#define TCL_WIDE_INT_TYPE ${tcl_cv_type_64bit}
+_ACEOF
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${tcl_cv_type_64bit}" >&5
+$as_echo "${tcl_cv_type_64bit}" >&6; }
+
+ # Now check for auxiliary declarations
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct dirent64" >&5
+$as_echo_n "checking for struct dirent64... " >&6; }
+ if ${tcl_cv_struct_dirent64+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include
+#include
+int
+main ()
+{
+struct dirent64 p;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ tcl_cv_struct_dirent64=yes
+else
+ tcl_cv_struct_dirent64=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+ if test "x${tcl_cv_struct_dirent64}" = "xyes" ; then
+
+$as_echo "#define HAVE_STRUCT_DIRENT64 1" >>confdefs.h
+
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${tcl_cv_struct_dirent64}" >&5
+$as_echo "${tcl_cv_struct_dirent64}" >&6; }
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct stat64" >&5
+$as_echo_n "checking for struct stat64... " >&6; }
+ if ${tcl_cv_struct_stat64+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include
+int
+main ()
+{
+struct stat64 p;
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ tcl_cv_struct_stat64=yes
+else
+ tcl_cv_struct_stat64=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+ if test "x${tcl_cv_struct_stat64}" = "xyes" ; then
+
+$as_echo "#define HAVE_STRUCT_STAT64 1" >>confdefs.h
+
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${tcl_cv_struct_stat64}" >&5
+$as_echo "${tcl_cv_struct_stat64}" >&6; }
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for off64_t" >&5
+$as_echo_n "checking for off64_t... " >&6; }
+ if ${tcl_cv_type_off64_t+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include
+int
+main ()
+{
+off64_t offset;
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ tcl_cv_type_off64_t=yes
+else
+ tcl_cv_type_off64_t=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+ if test "x${tcl_cv_type_off64_t}" = "xyes" ; then
+
+$as_echo "#define HAVE_TYPE_OFF64_T 1" >>confdefs.h
+
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${tcl_cv_type_off64_t}" >&5
+$as_echo "${tcl_cv_type_off64_t}" >&6; }
+ fi
+
+
+# should be part of TEA_CONFIG_CFLAGS, but more visible modification here
+
+
+#--------------------------------------------------------------------
+# Set the default compiler switches based on the --enable-symbols option.
+#--------------------------------------------------------------------
+
+
+
+
+ DBGX=""
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for build with symbols" >&5
+$as_echo_n "checking for build with symbols... " >&6; }
+ # Check whether --enable-symbols was given.
+if test "${enable_symbols+set}" = set; then :
+ enableval=$enable_symbols; tcl_ok=$enableval
+else
+ tcl_ok=no
+fi
+
+ if test "$tcl_ok" = "no"; then
+ CFLAGS_DEFAULT="${CFLAGS_OPTIMIZE}"
+ LDFLAGS_DEFAULT="${LDFLAGS_OPTIMIZE}"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ else
+ CFLAGS_DEFAULT="${CFLAGS_DEBUG}"
+ LDFLAGS_DEFAULT="${LDFLAGS_DEBUG}"
+ if test "$tcl_ok" = "yes"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (standard debugging)" >&5
+$as_echo "yes (standard debugging)" >&6; }
+ fi
+ fi
+ if test "${TEA_PLATFORM}" != "windows" ; then
+ LDFLAGS_DEFAULT="${LDFLAGS}"
+ fi
+
+
+
+
+
+ if test "$tcl_ok" = "mem" -o "$tcl_ok" = "all"; then
+
+$as_echo "#define TCL_MEM_DEBUG 1" >>confdefs.h
+
+ fi
+
+ if test "$tcl_ok" != "yes" -a "$tcl_ok" != "no"; then
+ if test "$tcl_ok" = "all"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: enabled symbols mem debugging" >&5
+$as_echo "enabled symbols mem debugging" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: enabled $tcl_ok debugging" >&5
+$as_echo "enabled $tcl_ok debugging" >&6; }
+ fi
+ fi
+
+
+#--------------------------------------------------------------------
+# Everyone should be linking against the Tcl stub library. If you
+# can't for some reason, remove this definition. If you aren't using
+# stubs, you also need to modify the SHLIB_LD_LIBS setting below to
+# link against the non-stubbed Tcl library. Add Tk too if necessary.
+#--------------------------------------------------------------------
+
+
+$as_echo "#define USE_TCL_STUBS 1" >>confdefs.h
+
+
+$as_echo "#define USE_TK_STUBS 1" >>confdefs.h
+
+
+#--------------------------------------------------------------------
+# This macro generates a line to use when building a library. It
+# depends on values set by the TEA_ENABLE_SHARED, TEA_ENABLE_SYMBOLS,
+# and TEA_LOAD_TCLCONFIG macros above.
+#--------------------------------------------------------------------
+
+
+ if test "${TEA_PLATFORM}" = "windows" -a "$GCC" != "yes"; then
+ MAKE_STATIC_LIB="\${STLIB_LD} -out:\$@ \$(PKG_OBJECTS)"
+ MAKE_SHARED_LIB="\${SHLIB_LD} \${SHLIB_LD_LIBS} \${LDFLAGS_DEFAULT} -out:\$@ \$(PKG_OBJECTS)"
+ MAKE_STUB_LIB="\${STLIB_LD} -out:\$@ \$(PKG_STUB_OBJECTS)"
+ else
+ MAKE_STATIC_LIB="\${STLIB_LD} \$@ \$(PKG_OBJECTS)"
+ MAKE_SHARED_LIB="\${SHLIB_LD} -o \$@ \$(PKG_OBJECTS) \${SHLIB_LD_LIBS}"
+ MAKE_STUB_LIB="\${STLIB_LD} \$@ \$(PKG_STUB_OBJECTS)"
+ fi
+
+ if test "${SHARED_BUILD}" = "1" ; then
+ MAKE_LIB="${MAKE_SHARED_LIB} "
+ else
+ MAKE_LIB="${MAKE_STATIC_LIB} "
+ fi
+
+ #--------------------------------------------------------------------
+ # Shared libraries and static libraries have different names.
+ # Use the double eval to make sure any variables in the suffix is
+ # substituted. (@@@ Might not be necessary anymore)
+ #--------------------------------------------------------------------
+
+ if test "${TEA_PLATFORM}" = "windows" ; then
+ if test "${SHARED_BUILD}" = "1" ; then
+ # We force the unresolved linking of symbols that are really in
+ # the private libraries of Tcl and Tk.
+ SHLIB_LD_LIBS="${SHLIB_LD_LIBS} \"`${CYGPATH} ${TCL_BIN_DIR}/${TCL_STUB_LIB_FILE}`\""
+ if test x"${TK_BIN_DIR}" != x ; then
+ SHLIB_LD_LIBS="${SHLIB_LD_LIBS} \"`${CYGPATH} ${TK_BIN_DIR}/${TK_STUB_LIB_FILE}`\""
+ fi
+ eval eval "PKG_LIB_FILE=${PACKAGE_NAME}${SHARED_LIB_SUFFIX}"
+ else
+ eval eval "PKG_LIB_FILE=${PACKAGE_NAME}${UNSHARED_LIB_SUFFIX}"
+ fi
+ # Some packages build there own stubs libraries
+ eval eval "PKG_STUB_LIB_FILE=${PACKAGE_NAME}stub${UNSHARED_LIB_SUFFIX}"
+ # These aren't needed on Windows (either MSVC or gcc)
+ RANLIB=:
+ RANLIB_STUB=:
+ else
+ RANLIB_STUB="${RANLIB}"
+ if test "${SHARED_BUILD}" = "1" ; then
+ SHLIB_LD_LIBS="${SHLIB_LD_LIBS} ${TCL_STUB_LIB_SPEC}"
+ if test x"${TK_BIN_DIR}" != x ; then
+ SHLIB_LD_LIBS="${SHLIB_LD_LIBS} ${TK_STUB_LIB_SPEC}"
+ fi
+ eval eval "PKG_LIB_FILE=lib${PACKAGE_NAME}${SHARED_LIB_SUFFIX}"
+ RANLIB=:
+ else
+ eval eval "PKG_LIB_FILE=lib${PACKAGE_NAME}${UNSHARED_LIB_SUFFIX}"
+ fi
+ # Some packages build there own stubs libraries
+ eval eval "PKG_STUB_LIB_FILE=lib${PACKAGE_NAME}stub${UNSHARED_LIB_SUFFIX}"
+ fi
+
+ # These are escaped so that only CFLAGS is picked up at configure time.
+ # The other values will be substituted at make time.
+ CFLAGS="${CFLAGS} \${CFLAGS_DEFAULT} \${CFLAGS_WARNING}"
+ if test "${SHARED_BUILD}" = "1" ; then
+ CFLAGS="${CFLAGS} \${SHLIB_CFLAGS}"
+ fi
+
+
+
+
+
+
+
+
+#--------------------------------------------------------------------
+# Determine the name of the tclsh and/or wish executables in the
+# Tcl and Tk build directories or the location they were installed
+# into. These paths are used to support running test cases only,
+# the Makefile should not be making use of these paths to generate
+# a pkgIndex.tcl file or anything else at extension build time.
+#--------------------------------------------------------------------
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tclsh" >&5
+$as_echo_n "checking for tclsh... " >&6; }
+ if test -f "${TCL_BIN_DIR}/Makefile" ; then
+ # tclConfig.sh is in Tcl build directory
+ if test "${TEA_PLATFORM}" = "windows"; then
+ TCLSH_PROG="${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${TCL_DBGX}${EXEEXT}"
+ else
+ TCLSH_PROG="${TCL_BIN_DIR}/tclsh"
+ fi
+ else
+ # tclConfig.sh is in install location
+ if test "${TEA_PLATFORM}" = "windows"; then
+ TCLSH_PROG="tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${TCL_DBGX}${EXEEXT}"
+ else
+ TCLSH_PROG="tclsh${TCL_MAJOR_VERSION}.${TCL_MINOR_VERSION}${TCL_DBGX}"
+ fi
+ list="`ls -d ${TCL_PREFIX}/bin 2>/dev/null` \
+ `ls -d ${TCL_BIN_DIR}/../bin 2>/dev/null`"
+ for i in $list ; do
+ if test -f "$i/${TCLSH_PROG}" ; then
+ REAL_TCL_BIN_DIR="`cd "$i"; pwd`"
+ break
+ fi
+ done
+ TCLSH_PROG="${REAL_TCL_BIN_DIR}/${TCLSH_PROG}"
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${TCLSH_PROG}" >&5
+$as_echo "${TCLSH_PROG}" >&6; }
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wish" >&5
+$as_echo_n "checking for wish... " >&6; }
+ if test -f "${TK_BIN_DIR}/Makefile" ; then
+ # tkConfig.sh is in Tk build directory
+ if test "${TEA_PLATFORM}" = "windows"; then
+ WISH_PROG="${TK_BIN_DIR}/wish${TK_MAJOR_VERSION}${TK_MINOR_VERSION}${TK_DBGX}${EXEEXT}"
+ else
+ WISH_PROG="${TK_BIN_DIR}/wish"
+ fi
+ else
+ # tkConfig.sh is in install location
+ if test "${TEA_PLATFORM}" = "windows"; then
+ WISH_PROG="wish${TK_MAJOR_VERSION}${TK_MINOR_VERSION}${TK_DBGX}${EXEEXT}"
+ else
+ WISH_PROG="wish${TK_MAJOR_VERSION}.${TK_MINOR_VERSION}${TK_DBGX}"
+ fi
+ list="`ls -d ${TK_PREFIX}/bin 2>/dev/null` \
+ `ls -d ${TK_BIN_DIR}/../bin 2>/dev/null`"
+ for i in $list ; do
+ if test -f "$i/${WISH_PROG}" ; then
+ REAL_TK_BIN_DIR="`cd "$i"; pwd`"
+ break
+ fi
+ done
+ WISH_PROG="${REAL_TK_BIN_DIR}/${WISH_PROG}"
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${WISH_PROG}" >&5
+$as_echo "${WISH_PROG}" >&6; }
+
+
+
+#--------------------------------------------------------------------
+# Finally, substitute all of the various values into the Makefile.
+# You may alternatively have a special pkgIndex.tcl.in or other files
+# which require substituting th AC variables in. Include these here.
+#--------------------------------------------------------------------
+
+ac_config_files="$ac_config_files Makefile pkgIndex.tcl togl_ws.h"
+
+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, we kill variables containing newlines.
+# 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.
+(
+ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+
+ (set) 2>&1 |
+ case $as_nl`(ac_space=' '; set) 2>&1` in #(
+ *${as_nl}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 "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+) |
+ sed '
+ /^ac_cv_env_/b end
+ t clear
+ :clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+ :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+ if test -w "$cache_file"; then
+ if test "x$cache_file" != "x/dev/null"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+ if test ! -f "$cache_file" || test -h "$cache_file"; then
+ cat confcache >"$cache_file"
+ else
+ case $cache_file in #(
+ */* | ?:*)
+ mv -f confcache "$cache_file"$$ &&
+ mv -f "$cache_file"$$ "$cache_file" ;; #(
+ *)
+ mv -f confcache "$cache_file" ;;
+ esac
+ fi
+ fi
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ 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}'
+
+# Transform confdefs.h into DEFS.
+# Protect against shell expansion while executing Makefile rules.
+# Protect against Makefile macro expansion.
+#
+# If the first sed substitution is executed (which looks for macros that
+# take arguments), then branch to the quote section. Otherwise,
+# look for a macro that doesn't take arguments.
+ac_script='
+:mline
+/\\$/{
+ N
+ s,\\\n,,
+ b mline
+}
+t clear
+:clear
+s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g
+t quote
+s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g
+t quote
+b any
+:quote
+s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g
+s/\[/\\&/g
+s/\]/\\&/g
+s/\$/$$/g
+H
+:any
+${
+ g
+ s/^\n//
+ s/\n/ /g
+ p
+}
+'
+DEFS=`sed -n "$ac_script" confdefs.h`
+
+
+ac_libobjs=
+ac_ltlibobjs=
+U=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+ ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
+ # will be set to the directory where LIBOBJS objects are built.
+ as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+ as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+
+
+: "${CONFIG_STATUS=./config.status}"
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $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}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in #(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+as_myself=
+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
+IFS=$as_save_IFS
+
+ ;;
+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
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$1; test $as_status -eq 0 && as_status=1
+ if test "$4"; then
+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ fi
+ $as_echo "$as_me: error: $2" >&2
+ as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; 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
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# 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
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -p'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -p'
+ fi
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+ as_test_x='test -x'
+else
+ if ls -dL / >/dev/null 2>&1; then
+ as_ls_L_option=L
+ else
+ as_ls_L_option=
+ fi
+ as_test_x='
+ eval sh -c '\''
+ if test -d "$1"; then
+ test -d "$1/.";
+ else
+ case $1 in #(
+ -*)set "./$1";;
+ esac;
+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+ ???[sx]*):;;*)false;;esac;fi
+ '\'' sh
+ '
+fi
+as_executable_p=$as_test_x
+
+# 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'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by Togl $as_me 1.7, which was
+generated by GNU Autoconf 2.68. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration. Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number and configuration settings, then exit
+ --config print configuration, then exit
+ -q, --quiet, --silent
+ 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
+
+Configuration files:
+$config_files
+
+Report bugs to the package provider."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+Togl config.status 1.7
+configured by $0, generated by GNU Autoconf 2.68,
+ with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2010 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+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=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=
+ ac_shift=:
+ ;;
+ *)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+ --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+ $as_echo "$ac_cs_version"; exit ;;
+ --config | --confi | --conf | --con | --co | --c )
+ $as_echo "$ac_cs_config"; exit ;;
+ --debug | --debu | --deb | --de | --d | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+ case $ac_optarg in
+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ '') as_fn_error $? "missing file argument" ;;
+ esac
+ as_fn_append CONFIG_FILES " '$ac_optarg'"
+ ac_need_defaults=false;;
+ --he | --h | --help | --hel | -h )
+ $as_echo "$ac_cs_usage"; exit ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+ -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+ *) as_fn_append ac_config_targets " $1"
+ ac_need_defaults=false ;;
+
+ 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 || ac_write_fail=1
+if \$ac_cs_recheck; then
+ set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ shift
+ \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+ CONFIG_SHELL='$SHELL'
+ export CONFIG_SHELL
+ exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+ $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+ case $ac_config_target in
+ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+ "pkgIndex.tcl") CONFIG_FILES="$CONFIG_FILES pkgIndex.tcl" ;;
+ "togl_ws.h") CONFIG_FILES="$CONFIG_FILES togl_ws.h" ;;
+
+ *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+ 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
+fi
+
+# Have a temporary directory for convenience. Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+ tmp= ac_tmp=
+ trap 'exit_status=$?
+ : "${ac_tmp:=$tmp}"
+ { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+' 0
+ trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+ test -d "$tmp"
+} ||
+{
+ tmp=./conf$$-$RANDOM
+ (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+ eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+ ac_cs_awk_cr='\\r'
+else
+ ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+ echo "cat >conf$$subs.awk <<_ACEOF" &&
+ echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+ echo "_ACEOF"
+} >conf$$subs.sh ||
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+ . ./conf$$subs.sh ||
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+
+ ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+ if test $ac_delim_n = $ac_delim_num; then
+ break
+ elif $ac_last_try; then
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' >$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+ for (key in S) S_is_set[key] = 1
+ FS = ""
+
+}
+{
+ line = $ 0
+ nfields = split(line, field, "@")
+ substed = 0
+ len = length(field[1])
+ for (i = 2; i < nfields; i++) {
+ key = field[i]
+ keylen = length(key)
+ if (S_is_set[key]) {
+ value = S[key]
+ line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+ len += length(value) + length(field[++i])
+ substed = 1
+ } else
+ len += 1 + keylen
+ }
+
+ print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+ sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+ cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries 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[ ]*=[ ]*/{
+h
+s///
+s/^/:/
+s/[ ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
+s/:*$//
+x
+s/\(=[ ]*\).*/\1/
+G
+s/\n//
+s/^[^=]*=[ ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+
+eval set X " :F $CONFIG_FILES "
+shift
+for ac_tag
+do
+ case $ac_tag in
+ :[FHLC]) ac_mode=$ac_tag; continue;;
+ esac
+ case $ac_mode$ac_tag in
+ :[FHL]*:*);;
+ :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+ :[FH]-) ac_tag=-:-;;
+ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+ esac
+ ac_save_IFS=$IFS
+ IFS=:
+ set x $ac_tag
+ IFS=$ac_save_IFS
+ shift
+ ac_file=$1
+ shift
+
+ case $ac_mode in
+ :L) ac_source=$1;;
+ :[FH])
+ ac_file_inputs=
+ for ac_f
+ do
+ case $ac_f in
+ -) ac_f="$ac_tmp/stdin";;
+ *) # Look for the file first in the build tree, then in the source tree
+ # (if the path is not absolute). The absolute path cannot be DOS-style,
+ # because $ac_f cannot contain `:'.
+ test -f "$ac_f" ||
+ case $ac_f in
+ [\\/$]*) false;;
+ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+ esac ||
+ as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+ esac
+ case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+ as_fn_append ac_file_inputs " '$ac_f'"
+ done
+
+ # 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. */
+ configure_input='Generated from '`
+ $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+ `' by configure.'
+ if test x"$ac_file" != x-; then
+ configure_input="$ac_file. $configure_input"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+ fi
+ # Neutralize special characters interpreted by sed in replacement strings.
+ case $configure_input in #(
+ *\&* | *\|* | *\\* )
+ ac_sed_conf_input=`$as_echo "$configure_input" |
+ sed 's/[\\\\&|]/\\\\&/g'`;; #(
+ *) ac_sed_conf_input=$configure_input;;
+ esac
+
+ case $ac_tag in
+ *:-:* | *:-) cat >"$ac_tmp/stdin" \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+ esac
+ ;;
+ esac
+
+ ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ as_dir="$ac_dir"; as_fn_mkdir_p
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+ case $ac_mode in
+ :F)
+ #
+ # CONFIG_FILE
+ #
+
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+ esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+ p
+ q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ ac_datarootdir_hack='
+ s&@datadir@&$datadir&g
+ s&@docdir@&$docdir&g
+ s&@infodir@&$infodir&g
+ s&@localedir@&$localedir&g
+ s&@mandir@&$mandir&g
+ s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;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&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+ { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
+ "$ac_tmp/out"`; test -z "$ac_out"; } &&
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined" >&2;}
+
+ rm -f "$ac_tmp/stdin"
+ case $ac_file in
+ -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+ *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+ esac \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ ;;
+
+
+
+ esac
+
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+ as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# 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 || as_fn_exit 1
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
diff --git a/ng/Togl-1.7/configure.in b/ng/Togl-1.7/configure.in
new file mode 100644
index 00000000..5a89c64a
--- /dev/null
+++ b/ng/Togl-1.7/configure.in
@@ -0,0 +1,222 @@
+#!/bin/bash -norc
+dnl This file is an input file used by the GNU "autoconf" program to
+dnl generate the file "configure", which is run during Tcl installation
+dnl to configure the system for the local environment.
+#
+# RCS: @(#) $Id: configure.in,v 1.6 2006/01/06 00:09:00 gregcouch Exp $
+
+#-----------------------------------------------------------------------
+# Sample configure.in for Tcl Extensions. The only places you should
+# need to modify this file are marked by the string __CHANGE__
+#-----------------------------------------------------------------------
+
+#-----------------------------------------------------------------------
+# __CHANGE__
+# Set your package name and version numbers here.
+#
+# This initializes the environment with PACKAGE_NAME and PACKAGE_VERSION
+# set as provided. These will also be added as -D defs in your Makefile
+# so you can encode the package version directly into the source files.
+#-----------------------------------------------------------------------
+
+AC_INIT([Togl], [1.7])
+
+#--------------------------------------------------------------------
+# Call TEA_INIT as the first TEA_ macro to set up initial vars.
+# This will define a ${TEA_PLATFORM} variable == "unix" or "windows"
+# as well as PKG_LIB_FILE and PKG_STUB_LIB_FILE.
+#--------------------------------------------------------------------
+
+TEA_INIT([3.4])
+
+AC_CONFIG_AUX_DIR(tclconfig)
+
+#--------------------------------------------------------------------
+# Load the tclConfig.sh file
+#--------------------------------------------------------------------
+
+TEA_PATH_TCLCONFIG
+TEA_LOAD_TCLCONFIG
+
+#--------------------------------------------------------------------
+# Load the tkConfig.sh file if necessary (Tk extension)
+#--------------------------------------------------------------------
+
+TEA_PATH_TKCONFIG
+TEA_LOAD_TKCONFIG
+
+#-----------------------------------------------------------------------
+# Handle the --prefix=... option by defaulting to what Tcl gave.
+# Must be called after TEA_LOAD_TCLCONFIG and before TEA_SETUP_COMPILER.
+#-----------------------------------------------------------------------
+
+TEA_PREFIX
+
+#-----------------------------------------------------------------------
+# Standard compiler checks.
+# This sets up CC by using the CC env var, or looks for gcc otherwise.
+# This also calls AC_PROG_CC, AC_PROG_INSTALL and a few others to create
+# the basic setup necessary to compile executables.
+#-----------------------------------------------------------------------
+
+TEA_SETUP_COMPILER
+
+#-----------------------------------------------------------------------
+# __CHANGE__
+# Specify the C source files to compile in TEA_ADD_SOURCES,
+# public headers that need to be installed in TEA_ADD_HEADERS,
+# stub library C source files to compile in TEA_ADD_STUB_SOURCES,
+# and runtime Tcl library files in TEA_ADD_TCL_SOURCES.
+# This defines PKG(_STUB)_SOURCES, PKG(_STUB)_OBJECTS, PKG_HEADERS
+# and PKG_TCL_SOURCES.
+#-----------------------------------------------------------------------
+
+TEA_ADD_SOURCES([togl.c])
+# togl_ws.h is added in Makefile.in because it is generated
+TEA_ADD_HEADERS([togl.h])
+TEA_ADD_INCLUDES([])
+TEA_ADD_LIBS([])
+TEA_ADD_CFLAGS([])
+TEA_ADD_STUB_SOURCES([])
+TEA_ADD_TCL_SOURCES([])
+
+#--------------------------------------------------------------------
+# __CHANGE__
+# A few miscellaneous platform-specific items:
+#
+# Define a special symbol for Windows (BUILD_sample in this case) so
+# that we create the export library with the dll.
+#
+# Windows creates a few extra files that need to be cleaned up.
+# You can add more files to clean if your extension creates any extra
+# files.
+#
+# TEA_ADD_* any platform specific compiler/build info here.
+#--------------------------------------------------------------------
+
+if test "${TEA_PLATFORM}" = "windows" ; then
+ AC_DEFINE(BUILD_togl, 1, [Build windows export dll])
+ CLEANFILES="pkgIndex.tcl togl_ws.h *.lib *.dll *.exp *.ilk *.pdb vc*.pch"
+ #TEA_ADD_SOURCES([win/winFile.c])
+ #TEA_ADD_INCLUDES([-I\"$(${CYGPATH} ${srcdir}/win)\"])
+else
+ CLEANFILES="pkgIndex.tcl togl_ws.h so_locations"
+ #TEA_ADD_SOURCES([unix/unixFile.c])
+ #TEA_ADD_LIBS([-lsuperfly])
+fi
+AC_SUBST(CLEANFILES)
+
+#--------------------------------------------------------------------
+# __CHANGE__
+# Choose which headers you need. Extension authors should try very
+# hard to only rely on the Tcl public header files. Internal headers
+# contain private data structures and are subject to change without
+# notice.
+# This MUST be called after TEA_LOAD_TCLCONFIG / TEA_LOAD_TKCONFIG
+#--------------------------------------------------------------------
+
+TEA_PUBLIC_TCL_HEADERS
+#TEA_PRIVATE_TCL_HEADERS
+
+#TEA_PUBLIC_TK_HEADERS
+TEA_PRIVATE_TK_HEADERS
+TEA_PATH_X
+
+#--------------------------------------------------------------------
+# __CHANGE__
+# Choose OpenGL platform
+#--------------------------------------------------------------------
+
+case "${TEA_WINDOWINGSYSTEM}" in
+ aqua)
+ AC_SUBST(TOGL_WINDOWINGSYSTEM,TOGL_AGL)
+ TEA_ADD_LIBS([-framework AGL -framework OpenGL -framework ApplicationServices])
+ # libGLU is implicit in OpenGL framework
+ LIBGLU=
+ ;;
+ x11)
+ AC_SUBST(TOGL_WINDOWINGSYSTEM,TOGL_X11)
+ TEA_ADD_LIBS([-lGL -lXmu])
+ LIBGLU=-lGLU
+ ;;
+ win32)
+ AC_SUBST(TOGL_WINDOWINGSYSTEM,TOGL_WGL)
+ TEA_ADD_LIBS([opengl32.lib user32.lib gdi32.lib])
+ if test "$GCC" = "yes" ; then
+ LIBGLU=-lglu32
+ else
+ LIBGLU=glu32.lib
+ fi
+ ;;
+ *)
+ AC_MSG_ERROR([Unsupported windowing system: ${TEA_WINDOWINGSYSTEM}])
+ ;;
+esac
+AC_SUBST(LIBGLU)
+
+#--------------------------------------------------------------------
+# Check whether --enable-threads or --disable-threads was given.
+# This auto-enables if Tcl was compiled threaded.
+#--------------------------------------------------------------------
+
+TEA_ENABLE_THREADS
+
+#--------------------------------------------------------------------
+# The statement below defines a collection of symbols related to
+# building as a shared library instead of a static library.
+#--------------------------------------------------------------------
+
+TEA_ENABLE_SHARED
+
+#--------------------------------------------------------------------
+# This macro figures out what flags to use with the compiler/linker
+# when building shared/static debug/optimized objects. This information
+# can be taken from the tclConfig.sh file, but this figures it all out.
+#--------------------------------------------------------------------
+
+TEA_CONFIG_CFLAGS
+# should be part of TEA_CONFIG_CFLAGS, but more visible modification here
+AC_SUBST(SHLIB_SUFFIX)
+
+#--------------------------------------------------------------------
+# Set the default compiler switches based on the --enable-symbols option.
+#--------------------------------------------------------------------
+
+TEA_ENABLE_SYMBOLS
+
+#--------------------------------------------------------------------
+# Everyone should be linking against the Tcl stub library. If you
+# can't for some reason, remove this definition. If you aren't using
+# stubs, you also need to modify the SHLIB_LD_LIBS setting below to
+# link against the non-stubbed Tcl library. Add Tk too if necessary.
+#--------------------------------------------------------------------
+
+AC_DEFINE(USE_TCL_STUBS, 1, [Use Tcl stubs])
+AC_DEFINE(USE_TK_STUBS, 1, [Use Tk stubs])
+
+#--------------------------------------------------------------------
+# This macro generates a line to use when building a library. It
+# depends on values set by the TEA_ENABLE_SHARED, TEA_ENABLE_SYMBOLS,
+# and TEA_LOAD_TCLCONFIG macros above.
+#--------------------------------------------------------------------
+
+TEA_MAKE_LIB
+
+#--------------------------------------------------------------------
+# Determine the name of the tclsh and/or wish executables in the
+# Tcl and Tk build directories or the location they were installed
+# into. These paths are used to support running test cases only,
+# the Makefile should not be making use of these paths to generate
+# a pkgIndex.tcl file or anything else at extension build time.
+#--------------------------------------------------------------------
+
+TEA_PROG_TCLSH
+TEA_PROG_WISH
+
+#--------------------------------------------------------------------
+# Finally, substitute all of the various values into the Makefile.
+# You may alternatively have a special pkgIndex.tcl.in or other files
+# which require substituting th AC variables in. Include these here.
+#--------------------------------------------------------------------
+
+AC_OUTPUT([Makefile pkgIndex.tcl togl_ws.h])
diff --git a/ng/Togl-1.7/double.c b/ng/Togl-1.7/double.c
new file mode 100644
index 00000000..ba072570
--- /dev/null
+++ b/ng/Togl-1.7/double.c
@@ -0,0 +1,280 @@
+/* $Id: double.c,v 1.14 2005/04/23 07:49:13 gregcouch Exp $ */
+
+/*
+ * Togl - a Tk OpenGL widget
+ * Copyright (C) 1996-1997 Brian Paul and Ben Bederson
+ * See the LICENSE file for copyright details.
+ */
+
+#include "togl.h"
+#include
+#include
+
+/*
+ * The following variable is a special hack that is needed in order for
+ * Sun shared libraries to be used for Tcl.
+ */
+#ifdef SUN
+extern int matherr();
+int *tclDummyMathPtr = (int *) matherr;
+#endif
+
+static GLuint FontBase;
+static float xAngle = 0.0, yAngle = 0.0, zAngle = 0.0;
+static GLfloat CornerX, CornerY, CornerZ; /* where to print strings */
+
+
+/*
+ * Togl widget create callback. This is called by Tcl/Tk when the widget has
+ * been realized. Here's where one may do some one-time context setup or
+ * initializations.
+ */
+void
+create_cb(Togl *togl)
+{
+
+ FontBase = Togl_LoadBitmapFont(togl, TOGL_BITMAP_8_BY_13);
+ if (!FontBase) {
+ printf("Couldn't load font!\n");
+ exit(1);
+ }
+}
+
+
+/*
+ * Togl widget reshape callback. This is called by Tcl/Tk when the widget
+ * has been resized. Typically, we call glViewport and perhaps setup the
+ * projection matrix.
+ */
+void
+reshape_cb(Togl *togl)
+{
+ int width = Togl_Width(togl);
+ int height = Togl_Height(togl);
+ float aspect = (float) width / (float) height;
+
+ glViewport(0, 0, width, height);
+
+ /* Set up projection transform */
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ glFrustum(-aspect, aspect, -1.0, 1.0, 1.0, 10.0);
+
+ CornerX = -aspect;
+ CornerY = -1.0;
+ CornerZ = -1.1;
+
+ /* Change back to model view transform for rendering */
+ glMatrixMode(GL_MODELVIEW);
+}
+
+
+
+static void
+print_string(const char *s)
+{
+ glCallLists(strlen(s), GL_UNSIGNED_BYTE, s);
+}
+
+
+/*
+ * Togl widget display callback. This is called by Tcl/Tk when the widget's
+ * contents have to be redrawn. Typically, we clear the color and depth
+ * buffers, render our objects, then swap the front/back color buffers.
+ */
+void
+display_cb(Togl *togl)
+{
+ static GLuint cubeList = 0;
+ const char *ident;
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ glLoadIdentity(); /* Reset modelview matrix to the identity
+ * matrix */
+ glTranslatef(0.0, 0.0, -3.0); /* Move the camera back three units */
+ glRotatef(xAngle, 1.0, 0.0, 0.0); /* Rotate by X, Y, and Z angles */
+ glRotatef(yAngle, 0.0, 1.0, 0.0);
+ glRotatef(zAngle, 0.0, 0.0, 1.0);
+
+ glEnable(GL_DEPTH_TEST);
+
+ if (!cubeList) {
+ cubeList = glGenLists(1);
+ glNewList(cubeList, GL_COMPILE);
+
+ /* Front face */
+ glBegin(GL_QUADS);
+ glColor3f(0.0, 0.7, 0.1); /* Green */
+ glVertex3f(-1.0, 1.0, 1.0);
+ glVertex3f(1.0, 1.0, 1.0);
+ glVertex3f(1.0, -1.0, 1.0);
+ glVertex3f(-1.0, -1.0, 1.0);
+ /* Back face */
+ glColor3f(0.9, 1.0, 0.0); /* Yellow */
+ glVertex3f(-1.0, 1.0, -1.0);
+ glVertex3f(1.0, 1.0, -1.0);
+ glVertex3f(1.0, -1.0, -1.0);
+ glVertex3f(-1.0, -1.0, -1.0);
+ /* Top side face */
+ glColor3f(0.2, 0.2, 1.0); /* Blue */
+ glVertex3f(-1.0, 1.0, 1.0);
+ glVertex3f(1.0, 1.0, 1.0);
+ glVertex3f(1.0, 1.0, -1.0);
+ glVertex3f(-1.0, 1.0, -1.0);
+ /* Bottom side face */
+ glColor3f(0.7, 0.0, 0.1); /* Red */
+ glVertex3f(-1.0, -1.0, 1.0);
+ glVertex3f(1.0, -1.0, 1.0);
+ glVertex3f(1.0, -1.0, -1.0);
+ glVertex3f(-1.0, -1.0, -1.0);
+ glEnd();
+
+ glEndList();
+
+ }
+ glCallList(cubeList);
+
+ glDisable(GL_DEPTH_TEST);
+ glLoadIdentity();
+ glColor3f(1.0, 1.0, 1.0);
+ glRasterPos3f(CornerX, CornerY, CornerZ);
+ glListBase(FontBase);
+ ident = Togl_Ident(togl);
+ if (strcmp(ident, "Single") == 0) {
+ print_string("Single buffered");
+ } else {
+ print_string("Double buffered");
+ }
+ Togl_SwapBuffers(togl);
+}
+
+
+
+
+int
+setXrot_cb(Togl *togl, int argc, CONST84 char *argv[])
+{
+ Tcl_Interp *interp = Togl_Interp(togl);
+
+ /* error checking */
+ if (argc != 3) {
+ Tcl_SetResult(interp,
+ "wrong # args: should be \"pathName setXrot ?angle?\"",
+ TCL_STATIC);
+ return TCL_ERROR;
+ }
+
+ xAngle = atof(argv[2]);
+
+ /* printf( "before %f ", xAngle ); */
+
+ if (xAngle < 0.0) {
+ xAngle += 360.0;
+ } else if (xAngle > 360.0) {
+ xAngle -= 360.0;
+ }
+
+ /* printf( "after %f \n", xAngle ); */
+
+ Togl_PostRedisplay(togl);
+
+ /* Let result string equal value */
+ strcpy(interp->result, argv[2]);
+ return TCL_OK;
+}
+
+
+
+int
+setYrot_cb(Togl *togl, int argc, CONST84 char *argv[])
+{
+ Tcl_Interp *interp = Togl_Interp(togl);
+
+ /* error checking */
+ if (argc != 3) {
+ Tcl_SetResult(interp,
+ "wrong # args: should be \"pathName setYrot ?angle?\"",
+ TCL_STATIC);
+ return TCL_ERROR;
+ }
+
+ yAngle = atof(argv[2]);
+
+ if (yAngle < 0.0) {
+ yAngle += 360.0;
+ } else if (yAngle > 360.0) {
+ yAngle -= 360.0;
+ }
+
+ Togl_PostRedisplay(togl);
+
+ /* Let result string equal value */
+ strcpy(interp->result, argv[2]);
+ return TCL_OK;
+}
+
+int
+getXrot_cb(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
+{
+ sprintf(interp->result, "%d", (int) xAngle);
+ return TCL_OK;
+}
+
+int
+getYrot_cb(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
+{
+ sprintf(interp->result, "%d", (int) yAngle);
+ return TCL_OK;
+}
+
+/*
+ * Called by Tk_Main() to let me initialize the modules (Togl) I will need.
+ */
+TOGL_EXTERN int
+Double_Init(Tcl_Interp *interp)
+{
+#ifdef USE_TCL_STUBS
+ if (Tcl_InitStubs(interp, "8.1", 0) == NULL) {
+ return TCL_ERROR;
+ }
+#endif
+#ifdef USE_TK_STUBS
+ if (Tk_InitStubs(interp, "8.1", 0) == NULL) {
+ return TCL_ERROR;
+ }
+#endif
+
+ if (Togl_Init(interp) == TCL_ERROR) {
+ return TCL_ERROR;
+ }
+#ifdef macintosh
+ Togl_MacSetupMainInterp(interp);
+#endif
+
+ /*
+ * Specify the C callback functions for widget creation, display,
+ * and reshape.
+ */
+ Togl_CreateFunc(create_cb);
+ Togl_DisplayFunc(display_cb);
+ Togl_ReshapeFunc(reshape_cb);
+
+ /*
+ * Make a new Togl widget command so the Tcl code can set a C variable.
+ */
+
+ Togl_CreateCommand("setXrot", setXrot_cb);
+ Togl_CreateCommand("setYrot", setYrot_cb);
+
+ /*
+ * Call Tcl_CreateCommand for application-specific commands, if
+ * they weren't already created by the init procedures called above.
+ */
+
+ Tcl_CreateCommand(interp, "getXrot", (Tcl_CmdProc *) getXrot_cb,
+ (ClientData) NULL, (Tcl_CmdDeleteProc *) NULL);
+ Tcl_CreateCommand(interp, "getYrot", (Tcl_CmdProc *) getYrot_cb,
+ (ClientData) NULL, (Tcl_CmdDeleteProc *) NULL);
+ return TCL_OK;
+}
diff --git a/ng/Togl-1.7/double.tcl b/ng/Togl-1.7/double.tcl
new file mode 100644
index 00000000..88987f7c
--- /dev/null
+++ b/ng/Togl-1.7/double.tcl
@@ -0,0 +1,103 @@
+#!/bin/sh
+# the next line restarts using wish \
+exec wish "$0" "$@"
+
+# $Id: double.tcl,v 1.5 2001/12/20 13:59:31 beskow Exp $
+
+# Togl - a Tk OpenGL widget
+# Copyright (C) 1996 Brian Paul and Ben Bederson
+# See the LICENSE file for copyright details.
+
+
+# $Log: double.tcl,v $
+# Revision 1.5 2001/12/20 13:59:31 beskow
+# Improved error-handling in togl.c in case of window creation failure
+# Added pkgIndex target to makefile
+# Updated documentation to reflect stubs-interface (Togl.html + new README.stubs)
+# Added tk8.4a3 headers
+# Removed obsolete Tk internal headers
+#
+# Revision 1.4 2001/01/29 18:11:53 brianp
+# Jonas Beskow's changes to use Tcl/Tk stub interface
+#
+# Revision 1.3 1998/03/12 03:52:31 brianp
+# now sharing display lists between the widgets
+#
+# Revision 1.2 1996/10/23 23:31:56 brianp
+# added -ident options to togl calls
+#
+# Revision 1.1 1996/10/23 23:17:22 brianp
+# Initial revision
+#
+
+
+# An Tk/OpenGL widget demo with two windows, one single buffered and the
+# other double buffered.
+
+load [file dirname [info script]]/double[info sharedlibextension]
+
+proc setup {} {
+ wm title . "Single vs Double Buffering"
+
+ frame .f1
+
+ # create first Togl widget
+ togl .f1.o1 -width 200 -height 200 -rgba true -double false -depth true -ident Single
+
+ # create second Togl widget, share display lists with first widget
+ togl .f1.o2 -width 200 -height 200 -rgba true -double true -depth true -ident Double -sharelist Single
+
+ scale .sx -label {X Axis} -from 0 -to 360 -command {setAngle x} -orient horizontal
+ scale .sy -label {Y Axis} -from 0 -to 360 -command {setAngle y} -orient horizontal
+ button .btn -text Quit -command exit
+
+ bind .f1.o1 {
+ motion_event [lindex [%W config -width] 4] \
+ [lindex [%W config -height] 4] \
+ %x %y
+ }
+
+ bind .f1.o2 {
+ motion_event [lindex [%W config -width] 4] \
+ [lindex [%W config -height] 4] \
+ %x %y
+ }
+
+ pack .f1.o1 .f1.o2 -side left -padx 3 -pady 3 -fill both -expand t
+ pack .f1 -fill both -expand t
+ pack .sx -fill x
+ pack .sy -fill x
+ pack .btn -fill x
+}
+
+
+
+# This is called when mouse button 1 is pressed and moved in either of
+# the OpenGL windows.
+proc motion_event { width height x y } {
+ .f1.o1 setXrot [expr 360.0 * $y / $height]
+ .f1.o2 setXrot [expr 360.0 * $y / $height]
+ .f1.o1 setYrot [expr 360.0 * ($width - $x) / $width]
+ .f1.o2 setYrot [expr 360.0 * ($width - $x) / $width]
+
+# .sx set [expr 360.0 * $y / $height]
+# .sy set [expr 360.0 * ($width - $x) / $width]
+
+ .sx set [getXrot]
+ .sy set [getYrot]
+}
+
+# This is called when a slider is changed.
+proc setAngle {axis value} {
+ global xAngle yAngle zAngle
+
+ switch -exact $axis {
+ x {.f1.o1 setXrot $value
+ .f1.o2 setXrot $value}
+ y {.f1.o1 setYrot $value
+ .f1.o2 setYrot $value}
+ }
+}
+
+# Execution starts here!
+setup
diff --git a/ng/Togl-1.7/gears.c b/ng/Togl-1.7/gears.c
new file mode 100644
index 00000000..9999a720
--- /dev/null
+++ b/ng/Togl-1.7/gears.c
@@ -0,0 +1,402 @@
+/* gears.c */
+
+/*
+ * 3-D gear wheels. This program is in the public domain.
+ *
+ * Brian Paul
+ *
+ *
+ * Modified to work under Togl as a widget for TK 1997
+ *
+ * Philip Quaife
+ *
+ */
+
+#include "togl.h"
+#include
+#include
+#include
+
+#ifndef M_PI
+# define M_PI 3.14159265
+#endif
+
+struct WHIRLYGIZMO
+{
+ GLint Gear1, Gear2, Gear3;
+ GLfloat Rotx, Roty, Rotz;
+ GLfloat Angle;
+ int Height, Width;
+};
+
+/*
+ * Draw a gear wheel. You'll probably want to call this function when
+ * building a display list since we do a lot of trig here.
+ *
+ * Input: inner_radius - radius of hole at center
+ * outer_radius - radius at center of teeth
+ * width - width of gear
+ * teeth - number of teeth
+ * tooth_depth - depth of tooth
+ */
+static void
+gear(GLfloat inner_radius, GLfloat outer_radius, GLfloat width,
+ GLint teeth, GLfloat tooth_depth)
+{
+ GLint i;
+ GLfloat r0, r1, r2;
+ GLfloat angle, da;
+ GLfloat u, v, len;
+
+ r0 = inner_radius;
+ r1 = outer_radius - tooth_depth / 2.0;
+ r2 = outer_radius + tooth_depth / 2.0;
+
+ da = 2.0 * M_PI / teeth / 4.0;
+
+ glShadeModel(GL_FLAT);
+
+ glNormal3f(0.0, 0.0, 1.0);
+
+ /* draw front face */
+ glBegin(GL_QUAD_STRIP);
+ for (i = 0; i <= teeth; i++) {
+ angle = i * 2.0 * M_PI / teeth;
+ glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5);
+ glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5);
+ glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5);
+ glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da),
+ width * 0.5);
+ }
+ glEnd();
+
+ /* draw front sides of teeth */
+ glBegin(GL_QUADS);
+ da = 2.0 * M_PI / teeth / 4.0;
+ for (i = 0; i < teeth; i++) {
+ angle = i * 2.0 * M_PI / teeth;
+
+ glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5);
+ glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5);
+ glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da),
+ width * 0.5);
+ glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da),
+ width * 0.5);
+ }
+ glEnd();
+
+
+ glNormal3f(0.0, 0.0, -1.0);
+
+ /* draw back face */
+ glBegin(GL_QUAD_STRIP);
+ for (i = 0; i <= teeth; i++) {
+ angle = i * 2.0 * M_PI / teeth;
+ glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5);
+ glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5);
+ glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da),
+ -width * 0.5);
+ glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5);
+ }
+ glEnd();
+
+ /* draw back sides of teeth */
+ glBegin(GL_QUADS);
+ da = 2.0 * M_PI / teeth / 4.0;
+ for (i = 0; i < teeth; i++) {
+ angle = i * 2.0 * M_PI / teeth;
+
+ glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da),
+ -width * 0.5);
+ glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da),
+ -width * 0.5);
+ glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5);
+ glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5);
+ }
+ glEnd();
+
+
+ /* draw outward faces of teeth */
+ glBegin(GL_QUAD_STRIP);
+ for (i = 0; i < teeth; i++) {
+ angle = i * 2.0 * M_PI / teeth;
+
+ glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5);
+ glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5);
+ u = r2 * cos(angle + da) - r1 * cos(angle);
+ v = r2 * sin(angle + da) - r1 * sin(angle);
+ len = sqrt(u * u + v * v);
+ u /= len;
+ v /= len;
+ glNormal3f(v, -u, 0.0);
+ glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5);
+ glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5);
+ glNormal3f(cos(angle), sin(angle), 0.0);
+ glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da),
+ width * 0.5);
+ glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da),
+ -width * 0.5);
+ u = r1 * cos(angle + 3 * da) - r2 * cos(angle + 2 * da);
+ v = r1 * sin(angle + 3 * da) - r2 * sin(angle + 2 * da);
+ glNormal3f(v, -u, 0.0);
+ glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da),
+ width * 0.5);
+ glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da),
+ -width * 0.5);
+ glNormal3f(cos(angle), sin(angle), 0.0);
+ }
+
+ glVertex3f(r1 * cos(0), r1 * sin(0), width * 0.5);
+ glVertex3f(r1 * cos(0), r1 * sin(0), -width * 0.5);
+
+ glEnd();
+
+
+ glShadeModel(GL_SMOOTH);
+
+ /* draw inside radius cylinder */
+ glBegin(GL_QUAD_STRIP);
+ for (i = 0; i <= teeth; i++) {
+ angle = i * 2.0 * M_PI / teeth;
+ glNormal3f(-cos(angle), -sin(angle), 0.0);
+ glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5);
+ glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5);
+ }
+ glEnd();
+
+}
+
+/*
+ * static GLfloat view_rotx=20.0, view_roty=30.0, view_rotz=0.0; static GLint
+ * gear1, gear2, gear3; static GLfloat angle = 0.0; */
+static GLuint limit;
+static GLuint count = 1;
+
+static GLubyte polycolor[4] = { 255, 255, 255, 255 };
+
+static void
+draw(Togl *togl)
+{
+ struct WHIRLYGIZMO *Wg;
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ Wg = Togl_GetClientData(togl);
+ glDisable(GL_TEXTURE_2D);
+ glPushMatrix();
+ glRotatef(Wg->Rotx, 1.0, 0.0, 0.0);
+ glRotatef(Wg->Roty, 0.0, 1.0, 0.0);
+ glRotatef(Wg->Rotz, 0.0, 0.0, 1.0);
+
+ glPushMatrix();
+ glTranslatef(-3.0, -2.0, 0.0);
+ glRotatef(Wg->Angle, 0.0, 0.0, 1.0);
+ glEnable(GL_DEPTH_TEST);
+ glCallList(Wg->Gear1);
+ glEnable(GL_DEPTH_TEST);
+ glPopMatrix();
+
+ glPushMatrix();
+ glTranslatef(3.1, -2.0, 0.0);
+ glRotatef(-2.0 * Wg->Angle - 9.0, 0.0, 0.0, 1.0);
+ glCallList(Wg->Gear2);
+ glPopMatrix();
+
+ glPushMatrix();
+ glTranslatef(-3.1, 4.2, 0.0);
+ glRotatef(-2.0 * Wg->Angle - 25.0, 0.0, 0.0, 1.0);
+ glCallList(Wg->Gear3);
+ glPopMatrix();
+
+ glPopMatrix();
+
+ Togl_SwapBuffers(togl);
+
+}
+
+
+static void
+zap(Togl *togl)
+{
+ struct WHIRLYGIZMO *Wg;
+
+ Wg = Togl_GetClientData(togl);
+ free(Wg);
+}
+
+
+static void
+idle(Togl *togl)
+{
+ struct WHIRLYGIZMO *Wg;
+
+ Wg = Togl_GetClientData(togl);
+ Wg->Angle += 2.0;
+ Togl_PostRedisplay(togl);
+}
+
+
+/* change view angle, exit upon ESC */
+/*
+ * static GLenum key(int k, GLenum mask) { switch (k) { case TK_UP: view_rotx
+ * += 5.0; return GL_TRUE; case TK_DOWN: view_rotx -= 5.0; return GL_TRUE; case
+ * TK_LEFT: view_roty += 5.0; return GL_TRUE; case TK_RIGHT: view_roty -= 5.0;
+ * return GL_TRUE; case TK_z: view_rotz += 5.0; return GL_TRUE; case TK_Z:
+ * view_rotz -= 5.0; return GL_TRUE; } return GL_FALSE; } */
+
+/* new window size or exposure */
+static void
+reshape(Togl *togl)
+{
+ int width, height;
+
+ width = Togl_Width(togl);
+ height = Togl_Height(togl);
+ glViewport(0, 0, (GLint) width, (GLint) height);
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ if (width > height) {
+ GLfloat w = (GLfloat) width / (GLfloat) height;
+
+ glFrustum(-w, w, -1.0, 1.0, 5.0, 60.0);
+ } else {
+ GLfloat h = (GLfloat) height / (GLfloat) width;
+
+ glFrustum(-1.0, 1.0, -h, h, 5.0, 60.0);
+ }
+
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ glTranslatef(0.0, 0.0, -40.0);
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+}
+
+
+static void
+init(Togl *togl)
+{
+ struct WHIRLYGIZMO *Wg;
+
+ static GLfloat red[4] = { 0.8, 0.1, 0.0, 1.0 };
+ static GLfloat green[4] = { 0.0, 0.8, 0.2, 1.0 };
+ static GLfloat blue[4] = { 0.2, 0.2, 1.0, 1.0 };
+ static GLfloat pos[4] = { 5.0, 5.0, 10.0, 0.0 };
+ glLightfv(GL_LIGHT0, GL_POSITION, pos);
+ glEnable(GL_CULL_FACE);
+ glEnable(GL_LIGHTING);
+ glEnable(GL_LIGHT0);
+ glEnable(GL_DEPTH_TEST);
+ /* make the gears */
+ Wg = malloc(sizeof (*Wg));
+ if (!Wg) {
+ Tcl_SetResult(Togl_Interp(togl),
+ "\"Cannot allocate client data for widget\"", TCL_STATIC);
+ }
+ Wg->Gear1 = glGenLists(1);
+ glNewList(Wg->Gear1, GL_COMPILE);
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, red);
+ gear(1.0, 4.0, 1.0, 20, 0.7);
+ glEndList();
+
+ Wg->Gear2 = glGenLists(1);
+ glNewList(Wg->Gear2, GL_COMPILE);
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, green);
+ gear(0.5, 2.0, 2.0, 10, 0.7);
+ glEndList();
+
+ Wg->Gear3 = glGenLists(1);
+ glNewList(Wg->Gear3, GL_COMPILE);
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, blue);
+ gear(1.3, 2.0, 0.5, 10, 0.7);
+ glEndList();
+
+ glEnable(GL_NORMALIZE);
+ Wg->Height = Togl_Height(togl);
+ Wg->Width = Togl_Width(togl);
+ Wg->Angle = 0.0;
+ Wg->Rotx = 0.0;
+ Wg->Roty = 0.0;
+ Wg->Rotz = 0.0;
+ Togl_SetClientData(togl, (ClientData) Wg);
+}
+
+int
+position(Togl *togl, int argc, CONST84 char *argv[])
+{
+ struct WHIRLYGIZMO *Wg;
+ Tcl_Interp *interp = Togl_Interp(togl);
+ char Result[100];
+
+ Wg = Togl_GetClientData(togl);
+ /* error checking */
+ if (argc != 2) {
+ Tcl_SetResult(interp,
+ "wrong # args: should be \"pathName \"", TCL_STATIC);
+ return TCL_ERROR;
+ }
+
+ /* Let result string equal value */
+ sprintf(Result, "%g %g", Wg->Roty, Wg->Rotx);
+
+ Tcl_SetResult(interp, Result, TCL_VOLATILE);
+ return TCL_OK;
+}
+
+int
+rotate(Togl *togl, int argc, CONST84 char *argv[])
+{
+ struct WHIRLYGIZMO *Wg;
+ Tcl_Interp *interp = Togl_Interp(togl);
+
+ Wg = Togl_GetClientData(togl);
+ /* error checking */
+ if (argc != 4) {
+ Tcl_SetResult(interp,
+ "wrong # args: should be \"pathName xrot yrot\"", TCL_STATIC);
+ return TCL_ERROR;
+ }
+
+ Wg->Roty = atof(argv[2]);
+ Wg->Rotx = atof(argv[3]);
+ Togl_PostRedisplay(togl);
+
+ /* Let result string equal value */
+ strcpy(interp->result, argv[2]);
+ return TCL_OK;
+}
+
+TOGL_EXTERN int
+Gears_Init(Tcl_Interp *interp)
+{
+ /*
+ * Initialize Tcl, Tk, and the Togl widget module.
+ */
+#ifdef USE_TCL_STUBS
+ if (Tcl_InitStubs(interp, "8.1", 0) == NULL) {
+ return TCL_ERROR;
+ }
+#endif
+#ifdef USE_TK_STUBS
+ if (Tk_InitStubs(interp, "8.1", 0) == NULL) {
+ return TCL_ERROR;
+ }
+#endif
+
+ if (Togl_Init(interp) == TCL_ERROR) {
+ return TCL_ERROR;
+ }
+
+ /*
+ * Specify the C callback functions for widget creation, display,
+ * and reshape.
+ */
+ Togl_CreateFunc(init);
+ Togl_DestroyFunc(zap);
+ Togl_DisplayFunc(draw);
+ Togl_ReshapeFunc(reshape);
+ Togl_TimerFunc(idle);
+ Togl_CreateCommand("rotate", rotate);
+ Togl_CreateCommand("position", position);
+ return TCL_OK;
+}
diff --git a/ng/Togl-1.7/gears.tcl b/ng/Togl-1.7/gears.tcl
new file mode 100755
index 00000000..ddb2729d
--- /dev/null
+++ b/ng/Togl-1.7/gears.tcl
@@ -0,0 +1,76 @@
+#!/bin/sh
+# the next line restarts using wish \
+exec wish "$0" "$@"
+
+# Togl - a Tk OpenGL widget
+# Copyright (C) 1996-1997 Brian Paul and Ben Bederson
+# See the LICENSE file for copyright details.
+
+
+#
+# Test Togl using GL Gears Demo
+#
+# Copyright (C) 1997 Philip Quaife
+#
+
+load [file dirname [info script]]/gears[info sharedlibextension]
+
+proc setup {} {
+ global startx starty xangle0 yangle0 xangle yangle RotCnt
+ global vTime
+ set RotCnt 1
+ set xangle 0.0
+ set yangle 0.0
+ set vTime 100
+ wm title . "Rotating Gear Widget Test"
+
+ label .t -text "Click and drag to rotate image"
+ pack .t -side top -padx 2 -pady 10
+ frame .f
+ pack .f -side top
+ button .f.n1 -text " Add " -command AutoRot
+ button .f.r1 -text "Remove" -command DelRot
+ button .f.b1 -text " Quit " -command exit
+ entry .f.t -width 4 -textvariable vTime
+ pack .f.n1 .f.t .f.r1 .f.b1 -side left -anchor w -padx 5
+ newRot .w0 10
+
+}
+proc AutoRot {} {
+ global RotCnt vTime
+ newRot .w$RotCnt $vTime
+ set RotCnt [expr $RotCnt + 1]
+}
+
+proc DelRot {} {
+ global RotCnt vTime
+ if { $RotCnt != 0 } {
+ set RotCnt [expr $RotCnt - 1]
+ destroy .w$RotCnt
+ }
+}
+
+proc newRot {win {tick 100} } {
+ togl $win -width 200 -height 200 -rgba true -double true -depth true -privatecmap false -time $tick
+ bind $win {RotStart %x %y %W}
+ bind $win {RotMove %x %y %W}
+ pack $win -expand true -fill both
+}
+
+proc RotStart {x y W } {
+ global startx starty xangle0 yangle0 xangle yangle
+ set startx $x
+ set starty $y
+ set vPos [$W position]
+ set xangle0 [lindex $vPos 0]
+ set yangle0 [lindex $vPos 1]
+ }
+
+proc RotMove {x y W} {
+ global startx starty xangle0 yangle0 xangle yangle
+ set xangle [expr $xangle0 + ($x - $startx) ]
+ set yangle [expr $yangle0 + ($y - $starty) ]
+ $W rotate $xangle $yangle
+ }
+
+setup
diff --git a/ng/Togl-1.7/image.c b/ng/Togl-1.7/image.c
new file mode 100644
index 00000000..a4027ce7
--- /dev/null
+++ b/ng/Togl-1.7/image.c
@@ -0,0 +1,249 @@
+/*
+ * SGI rgb file reader borrowed from gltk library
+ */
+
+#include "togl.h" /* added by GG to include windows.h */
+#include
+#include
+#include
+#include "image.h"
+
+#ifndef SEEK_SET
+# define SEEK_SET 0
+#endif
+
+
+static void
+tkQuit(void)
+{
+ exit(0);
+}
+
+
+/******************************************************************************/
+
+typedef struct _rawImageRec
+{
+ unsigned short imagic;
+ unsigned short type;
+ unsigned short dim;
+ unsigned short sizeX, sizeY, sizeZ;
+ unsigned long min, max;
+ unsigned long wasteBytes;
+ char name[80];
+ unsigned long colorMap;
+ FILE *file;
+ unsigned char *tmp, *tmpR, *tmpG, *tmpB, *tmpA;
+ unsigned long rleEnd;
+ GLuint *rowStart;
+ GLint *rowSize;
+} rawImageRec;
+
+
+/******************************************************************************/
+
+static void
+ConvertShort(unsigned short *array, long length)
+{
+ unsigned long b1, b2;
+ unsigned char *ptr;
+
+ ptr = (unsigned char *) array;
+ while (length--) {
+ b1 = *ptr++;
+ b2 = *ptr++;
+ *array++ = (b1 << 8) | (b2);
+ }
+}
+
+static void
+ConvertLong(GLuint *array, long length)
+{
+ unsigned long b1, b2, b3, b4;
+ unsigned char *ptr;
+
+ ptr = (unsigned char *) array;
+ while (length--) {
+ b1 = *ptr++;
+ b2 = *ptr++;
+ b3 = *ptr++;
+ b4 = *ptr++;
+ *array++ = (b1 << 24) | (b2 << 16) | (b3 << 8) | (b4);
+ }
+}
+
+static rawImageRec *
+RawImageOpen(char *fileName)
+{
+ union
+ {
+ int testWord;
+ char testByte[4];
+ } endianTest;
+ rawImageRec *raw;
+ GLenum swapFlag;
+ int x;
+
+ endianTest.testWord = 1;
+ if (endianTest.testByte[0] == 1) {
+ swapFlag = GL_TRUE;
+ } else {
+ swapFlag = GL_FALSE;
+ }
+
+ raw = (rawImageRec *) malloc(sizeof (rawImageRec));
+ if (raw == NULL) {
+ fprintf(stderr, "Out of memory!\n");
+ tkQuit();
+ }
+ if ((raw->file = fopen(fileName, "rb")) == NULL) {
+ perror(fileName);
+ tkQuit();
+ }
+
+ fread(raw, 1, 12, raw->file);
+
+ if (swapFlag) {
+ ConvertShort(&raw->imagic, 6);
+ }
+
+ raw->tmp = (unsigned char *) malloc(raw->sizeX * 256);
+ raw->tmpR = (unsigned char *) malloc(raw->sizeX * 256);
+ raw->tmpG = (unsigned char *) malloc(raw->sizeX * 256);
+ raw->tmpB = (unsigned char *) malloc(raw->sizeX * 256);
+ raw->tmpA = (unsigned char *) malloc(raw->sizeX * 256);
+ if (raw->tmp == NULL || raw->tmpR == NULL || raw->tmpG == NULL ||
+ raw->tmpB == NULL || raw->tmpA == NULL) {
+ fprintf(stderr, "Out of memory!\n");
+ tkQuit();
+ }
+
+ if ((raw->type & 0xFF00) == 0x0100) {
+ x = raw->sizeY * raw->sizeZ * sizeof (GLuint);
+ raw->rowStart = (GLuint *) malloc(x);
+ raw->rowSize = (GLint *) malloc(x);
+ if (raw->rowStart == NULL || raw->rowSize == NULL) {
+ fprintf(stderr, "Out of memory!\n");
+ tkQuit();
+ }
+ raw->rleEnd = 512 + (2 * x);
+ fseek(raw->file, 512, SEEK_SET);
+ fread(raw->rowStart, 1, x, raw->file);
+ fread(raw->rowSize, 1, x, raw->file);
+ if (swapFlag) {
+ ConvertLong(raw->rowStart, x / sizeof (GLuint));
+ ConvertLong((GLuint *) raw->rowSize, x / sizeof (GLint));
+ }
+ }
+ return raw;
+}
+
+static void
+RawImageClose(rawImageRec * raw)
+{
+
+ fclose(raw->file);
+ free(raw->tmp);
+ free(raw->tmpR);
+ free(raw->tmpG);
+ free(raw->tmpB);
+ free(raw->tmpA);
+ free(raw);
+}
+
+static void
+RawImageGetRow(rawImageRec * raw, unsigned char *buf, int y, int z)
+{
+ unsigned char *iPtr, *oPtr, pixel;
+ int count;
+
+ if ((raw->type & 0xFF00) == 0x0100) {
+ fseek(raw->file, raw->rowStart[y + z * raw->sizeY], SEEK_SET);
+ fread(raw->tmp, 1, (unsigned int) raw->rowSize[y + z * raw->sizeY],
+ raw->file);
+
+ iPtr = raw->tmp;
+ oPtr = buf;
+ while (1) {
+ pixel = *iPtr++;
+ count = (int) (pixel & 0x7F);
+ if (!count) {
+ return;
+ }
+ if (pixel & 0x80) {
+ while (count--) {
+ *oPtr++ = *iPtr++;
+ }
+ } else {
+ pixel = *iPtr++;
+ while (count--) {
+ *oPtr++ = pixel;
+ }
+ }
+ }
+ } else {
+ fseek(raw->file, 512 + (y * raw->sizeX) + (z * raw->sizeX * raw->sizeY),
+ SEEK_SET);
+ fread(buf, 1, raw->sizeX, raw->file);
+ }
+}
+
+static void
+RawImageGetData(rawImageRec * raw, TK_RGBImageRec * final)
+{
+ unsigned char *ptr;
+ int i, j;
+
+ final->data =
+ (unsigned char *) malloc((raw->sizeX + 1) * (raw->sizeY + 1) * 4);
+ if (final->data == NULL) {
+ fprintf(stderr, "Out of memory!\n");
+ tkQuit();
+ }
+
+ ptr = final->data;
+ for (i = 0; i < (int) (raw->sizeY); i++) {
+ RawImageGetRow(raw, raw->tmpR, i, 0);
+ RawImageGetRow(raw, raw->tmpG, i, 1);
+ RawImageGetRow(raw, raw->tmpB, i, 2);
+ if (raw->sizeZ == 4) {
+ /* 4 components */
+ RawImageGetRow(raw, raw->tmpA, i, 3);
+ for (j = 0; j < (int) (raw->sizeX); j++) {
+ *ptr++ = *(raw->tmpR + j);
+ *ptr++ = *(raw->tmpG + j);
+ *ptr++ = *(raw->tmpB + j);
+ *ptr++ = *(raw->tmpA + j);
+ }
+ } else {
+ /* 3 components */
+ for (j = 0; j < (int) (raw->sizeX); j++) {
+ *ptr++ = *(raw->tmpR + j);
+ *ptr++ = *(raw->tmpG + j);
+ *ptr++ = *(raw->tmpB + j);
+ }
+ }
+ }
+}
+
+TK_RGBImageRec *
+tkRGBImageLoad(char *fileName)
+{
+ rawImageRec *raw;
+ TK_RGBImageRec *final;
+
+ raw = RawImageOpen(fileName);
+ final = (TK_RGBImageRec *) malloc(sizeof (TK_RGBImageRec));
+ if (final == NULL) {
+ fprintf(stderr, "Out of memory!\n");
+ tkQuit();
+ }
+ final->sizeX = raw->sizeX;
+ final->sizeY = raw->sizeY;
+ final->sizeZ = raw->sizeZ;
+ RawImageGetData(raw, final);
+ RawImageClose(raw);
+ return final;
+}
+
+/******************************************************************************/
diff --git a/ng/Togl-1.7/image.h b/ng/Togl-1.7/image.h
new file mode 100644
index 00000000..47babb74
--- /dev/null
+++ b/ng/Togl-1.7/image.h
@@ -0,0 +1,14 @@
+/* image.h */
+
+#ifndef IMAGE_H
+# define IMAGE_H
+
+typedef struct _TK_RGBImageRec
+{
+ int sizeX, sizeY, sizeZ;
+ unsigned char *data;
+} TK_RGBImageRec;
+
+extern TK_RGBImageRec *tkRGBImageLoad(char *fileName);
+
+#endif
diff --git a/ng/Togl-1.7/index.c b/ng/Togl-1.7/index.c
new file mode 100644
index 00000000..8e26e26c
--- /dev/null
+++ b/ng/Togl-1.7/index.c
@@ -0,0 +1,184 @@
+/* $Id: index.c,v 1.10 2005/04/23 07:49:13 gregcouch Exp $ */
+
+/*
+ * Togl - a Tk OpenGL widget
+ * Copyright (C) 1996-1997 Brian Paul and Ben Bederson
+ * See the LICENSE file for copyright details.
+ */
+
+
+/*
+ * An example Togl program using color-index mode.
+ */
+
+
+#include "togl.h"
+#include
+#include
+
+
+/*
+ * The following variable is a special hack that is needed in order for
+ * Sun shared libraries to be used for Tcl.
+ */
+#ifdef SUN
+extern int matherr();
+int *tclDummyMathPtr = (int *) matherr;
+#endif
+
+
+/* Our color indexes: */
+static unsigned long black, red, green, blue;
+
+/* Rotation angle */
+static float Angle = 0.0;
+
+
+/*
+ * Togl widget create callback. This is called by Tcl/Tk when the widget has
+ * been realized. Here's where one may do some one-time context setup or
+ * initializations.
+ */
+void
+create_cb(Togl *togl)
+{
+ /* allocate color indexes */
+ black = Togl_AllocColor(togl, 0.0, 0.0, 0.0);
+ red = Togl_AllocColor(togl, 1.0, 0.0, 0.0);
+ green = Togl_AllocColor(togl, 0.0, 1.0, 0.0);
+ blue = Togl_AllocColor(togl, 0.0, 0.0, 1.0);
+
+ /* If we were using a private read/write colormap we'd setup our color
+ * table with something like this: */
+ /*
+ * black = 1; Togl_SetColor( togl, black, 0.0, 0.0, 0.0 ); red = 2;
+ * Togl_SetColor( togl, red, 1.0, 0.0, 0.0 ); green = 3; Togl_SetColor(
+ * togl, green, 0.0, 1.0, 0.0 ); blue = 4; Togl_SetColor( togl, blue, 0.0,
+ * 0.0, 1.0 ); */
+
+ glShadeModel(GL_FLAT);
+ glDisable(GL_DITHER);
+}
+
+
+/*
+ * Togl widget reshape callback. This is called by Tcl/Tk when the widget
+ * has been resized. Typically, we call glViewport and perhaps setup the
+ * projection matrix.
+ */
+void
+reshape_cb(Togl *togl)
+{
+ int width = Togl_Width(togl);
+ int height = Togl_Height(togl);
+ float aspect = (float) width / (float) height;
+
+ glViewport(0, 0, width, height);
+
+ /* Set up projection transform */
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ glOrtho(-aspect, aspect, -1.0, 1.0, -1.0, 1.0);
+
+ /* Change back to model view transform for rendering */
+ glMatrixMode(GL_MODELVIEW);
+}
+
+
+/*
+ * Togl widget display callback. This is called by Tcl/Tk when the widget's
+ * contents have to be redrawn. Typically, we clear the color and depth
+ * buffers, render our objects, then swap the front/back color buffers.
+ */
+void
+display_cb(Togl *togl)
+{
+ glClearIndex(black);
+ glClear(GL_COLOR_BUFFER_BIT);
+
+ glPushMatrix();
+ glTranslatef(0.3, -0.3, 0.0);
+ glRotatef(Angle, 0.0, 0.0, 1.0);
+ glIndexi(red);
+ glBegin(GL_TRIANGLES);
+ glVertex2f(-0.5, -0.3);
+ glVertex2f(0.5, -0.3);
+ glVertex2f(0.0, 0.6);
+ glEnd();
+ glPopMatrix();
+
+ glPushMatrix();
+ glRotatef(Angle, 0.0, 0.0, 1.0);
+ glIndexi(green);
+ glBegin(GL_TRIANGLES);
+ glVertex2f(-0.5, -0.3);
+ glVertex2f(0.5, -0.3);
+ glVertex2f(0.0, 0.6);
+ glEnd();
+ glPopMatrix();
+
+ glPushMatrix();
+ glTranslatef(-0.3, 0.3, 0.0);
+ glRotatef(Angle, 0.0, 0.0, 1.0);
+ glIndexi(blue);
+ glBegin(GL_TRIANGLES);
+ glVertex2f(-0.5, -0.3);
+ glVertex2f(0.5, -0.3);
+ glVertex2f(0.0, 0.6);
+ glEnd();
+ glPopMatrix();
+
+ glFlush();
+ Togl_SwapBuffers(togl);
+}
+
+
+void
+timer_cb(Togl *togl)
+{
+ Angle += 5.0;
+ Togl_PostRedisplay(togl);
+}
+
+
+TOGL_EXTERN int
+Index_Init(Tcl_Interp *interp)
+{
+ /*
+ * Initialize Tcl, Tk, and the Togl widget module.
+ */
+#ifdef USE_TCL_STUBS
+ if (Tcl_InitStubs(interp, "8.1", 0) == NULL) {
+ return TCL_ERROR;
+ }
+#endif
+#ifdef USE_TK_STUBS
+ if (Tk_InitStubs(interp, "8.1", 0) == NULL) {
+ return TCL_ERROR;
+ }
+#endif
+
+ if (Togl_Init(interp) == TCL_ERROR) {
+ return TCL_ERROR;
+ }
+
+ /*
+ * Specify the C callback functions for widget creation, display,
+ * and reshape.
+ */
+ Togl_CreateFunc(create_cb);
+ Togl_DisplayFunc(display_cb);
+ Togl_ReshapeFunc(reshape_cb);
+ Togl_TimerFunc(timer_cb);
+
+ /*
+ * Make a new Togl widget command so the Tcl code can set a C variable.
+ */
+ /* NONE */
+
+ /*
+ * Call Tcl_CreateCommand for application-specific commands, if
+ * they weren't already created by the init procedures called above.
+ */
+ return TCL_OK;
+}
diff --git a/ng/Togl-1.7/index.tcl b/ng/Togl-1.7/index.tcl
new file mode 100644
index 00000000..ce6b7a7f
--- /dev/null
+++ b/ng/Togl-1.7/index.tcl
@@ -0,0 +1,51 @@
+#!/bin/sh
+# the next line restarts using wish \
+exec wish "$0" "$@"
+
+# $Id: index.tcl,v 1.5 2001/12/20 13:59:31 beskow Exp $
+
+# Togl - a Tk OpenGL widget
+# Copyright (C) 1996 Brian Paul and Ben Bederson
+# See the LICENSE file for copyright details.
+
+
+# $Log: index.tcl,v $
+# Revision 1.5 2001/12/20 13:59:31 beskow
+# Improved error-handling in togl.c in case of window creation failure
+# Added pkgIndex target to makefile
+# Updated documentation to reflect stubs-interface (Togl.html + new README.stubs)
+# Added tk8.4a3 headers
+# Removed obsolete Tk internal headers
+#
+# Revision 1.4 2001/01/29 18:11:53 brianp
+# Jonas Beskow's changes to use Tcl/Tk stub interface
+#
+# Revision 1.3 1998/01/24 14:05:50 brianp
+# added quit button (Ben Bederson)
+#
+# Revision 1.2 1997/04/11 01:37:34 brianp
+# added a timer to rotate the triangles
+#
+# Revision 1.1 1996/10/23 23:18:11 brianp
+# Initial revision
+#
+
+
+# A Tk/OpenGL widget demo using color-index mode.
+
+load [file dirname [info script]]/index[info sharedlibextension]
+
+proc setup {} {
+ wm title . "Color index demo"
+
+ togl .win -width 200 -height 200 -rgba false -double true -privatecmap false -time 10
+ button .btn -text Quit -command exit
+
+ pack .win -expand true -fill both
+ pack .btn -expand true -fill both
+}
+
+
+
+# Execution starts here!
+setup
diff --git a/ng/Togl-1.7/overlay.c b/ng/Togl-1.7/overlay.c
new file mode 100644
index 00000000..c4f403ff
--- /dev/null
+++ b/ng/Togl-1.7/overlay.c
@@ -0,0 +1,194 @@
+/* $Id: overlay.c,v 1.7 2005/04/23 07:49:13 gregcouch Exp $ */
+
+/*
+ * Togl - a Tk OpenGL widget
+ * Copyright (C) 1996-1997 Brian Paul and Ben Bederson
+ * See the LICENSE file for copyright details.
+ */
+
+
+/*
+ * An example Togl program using an overlay.
+ */
+
+
+#include "togl.h"
+#include
+#include
+
+
+/*
+ * The following variable is a special hack that is needed in order for
+ * Sun shared libraries to be used for Tcl.
+ */
+#ifdef SUN
+extern int matherr();
+int *tclDummyMathPtr = (int *) matherr;
+#endif
+
+
+/* Overlay color indexes: */
+static unsigned long Red, Green;
+
+
+/*
+ * Togl widget create callback. This is called by Tcl/Tk when the widget has
+ * been realized. Here's where one may do some one-time context setup or
+ * initializations.
+ */
+void
+create_cb(Togl *togl)
+{
+ /* allocate overlay color indexes */
+ Red = Togl_AllocColorOverlay(togl, 1.0, 0.0, 0.0);
+ Green = Togl_AllocColorOverlay(togl, 0.0, 1.0, 0.0);
+
+ /* in this demo we always show the overlay */
+ if (Togl_ExistsOverlay(togl)) {
+ Togl_ShowOverlay(togl);
+ printf("Red and green lines are in the overlay\n");
+ } else {
+ printf("Sorry, this display doesn't support overlays\n");
+ }
+}
+
+
+/*
+ * Togl widget reshape callback. This is called by Tcl/Tk when the widget
+ * has been resized. Typically, we call glViewport and perhaps setup the
+ * projection matrix.
+ */
+void
+reshape_cb(Togl *togl)
+{
+ int width = Togl_Width(togl);
+ int height = Togl_Height(togl);
+ float aspect = (float) width / (float) height;
+
+ /* Set up viewing for normal plane's context */
+ glViewport(0, 0, width, height);
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ glOrtho(-aspect, aspect, -1.0, 1.0, -1.0, 1.0);
+ glMatrixMode(GL_MODELVIEW);
+
+ /* Set up viewing for overlay plane's context */
+ if (Togl_ExistsOverlay(togl)) {
+ Togl_UseLayer(togl, TOGL_OVERLAY);
+ glViewport(0, 0, width, height);
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
+ glMatrixMode(GL_MODELVIEW);
+ Togl_UseLayer(togl, TOGL_NORMAL);
+ }
+}
+
+
+/*
+ * Togl widget overlay display callback. This is called by Tcl/Tk when the
+ * overlay has to be redrawn.
+ */
+void
+overlay_display_cb(Togl *togl)
+{
+ glClear(GL_COLOR_BUFFER_BIT);
+
+ glIndexi(Red);
+ glBegin(GL_LINES);
+ glVertex2f(-1.0, -1.0);
+ glVertex2f(1.0, 1.0);
+ glVertex2f(-1.0, 1.0);
+ glVertex2f(1.0, -1.0);
+ glEnd();
+
+ glIndexi(Green);
+ glBegin(GL_LINE_LOOP);
+ glVertex2f(-0.5, -0.5);
+ glVertex2f(0.5, -0.5);
+ glVertex2f(0.5, 0.5);
+ glVertex2f(-0.5, 0.5);
+ glEnd();
+ glFlush();
+}
+
+
+/*
+ * Togl widget display callback. This is called by Tcl/Tk when the widget's
+ * contents have to be redrawn. Typically, we clear the color and depth
+ * buffers, render our objects, then swap the front/back color buffers.
+ */
+void
+display_cb(Togl *togl)
+{
+ glClear(GL_COLOR_BUFFER_BIT);
+
+ glLoadIdentity();
+
+ glBegin(GL_TRIANGLES);
+
+ glColor3f(1.0, 0.0, 1.0);
+ glVertex2f(-0.5, -0.3);
+ glVertex2f(0.5, -0.3);
+ glVertex2f(0.0, 0.6);
+
+ glColor3f(1.0, 1.0, 0.0);
+ glVertex2f(-0.5 + 0.2, -0.3 - 0.2);
+ glVertex2f(0.5 + 0.2, -0.3 - 0.2);
+ glVertex2f(0.0 + 0.2, 0.6 - 0.2);
+
+ glColor3f(0.0, 1.0, 1.0);
+ glVertex2f(-0.5 + 0.4, -0.3 - 0.4);
+ glVertex2f(0.5 + 0.4, -0.3 - 0.4);
+ glVertex2f(0.0 + 0.4, 0.6 - 0.4);
+
+ glEnd();
+
+ glFlush();
+}
+
+
+/*
+ * Called by Tk_Main() to let me initialize the modules (Togl) I will need.
+ */
+TOGL_EXTERN int
+Overlay_Init(Tcl_Interp *interp)
+{
+ /*
+ * Initialize Tcl, Tk, and the Togl widget module.
+ */
+#ifdef USE_TCL_STUBS
+ if (Tcl_InitStubs(interp, "8.1", 0) == NULL) {
+ return TCL_ERROR;
+ }
+#endif
+#ifdef USE_TK_STUBS
+ if (Tk_InitStubs(interp, "8.1", 0) == NULL) {
+ return TCL_ERROR;
+ }
+#endif
+ if (Togl_Init(interp) == TCL_ERROR) {
+ return TCL_ERROR;
+ }
+
+ /*
+ * Specify the C callback functions for widget creation, display,
+ * and reshape.
+ */
+ Togl_CreateFunc(create_cb);
+ Togl_DisplayFunc(display_cb);
+ Togl_ReshapeFunc(reshape_cb);
+
+ Togl_OverlayDisplayFunc(overlay_display_cb);
+
+ /*
+ * Make a new Togl widget command so the Tcl code can set a C variable.
+ */
+ /* NONE */
+
+ /*
+ * Call Tcl_CreateCommand for application-specific commands, if
+ * they weren't already created by the init procedures called above.
+ */
+ return TCL_OK;
+}
diff --git a/ng/Togl-1.7/overlay.tcl b/ng/Togl-1.7/overlay.tcl
new file mode 100644
index 00000000..0be48bc6
--- /dev/null
+++ b/ng/Togl-1.7/overlay.tcl
@@ -0,0 +1,49 @@
+#!/bin/sh
+# the next line restarts using wish \
+exec wish "$0" "$@"
+
+# $Id: overlay.tcl,v 1.4 2001/12/20 13:59:31 beskow Exp $
+
+# Togl - a Tk OpenGL widget
+# Copyright (C) 1996 Brian Paul and Ben Bederson
+# See the LICENSE file for copyright details.
+
+
+# $Log: overlay.tcl,v $
+# Revision 1.4 2001/12/20 13:59:31 beskow
+# Improved error-handling in togl.c in case of window creation failure
+# Added pkgIndex target to makefile
+# Updated documentation to reflect stubs-interface (Togl.html + new README.stubs)
+# Added tk8.4a3 headers
+# Removed obsolete Tk internal headers
+#
+# Revision 1.3 2001/01/29 18:11:53 brianp
+# Jonas Beskow's changes to use Tcl/Tk stub interface
+#
+# Revision 1.2 1998/01/24 14:05:50 brianp
+# added quit button (Ben Bederson)
+#
+# Revision 1.1 1997/03/07 01:26:38 brianp
+# Initial revision
+#
+#
+
+
+# A Tk/OpenGL widget demo using an overlay.
+
+load [file dirname [info script]]/overlay[info sharedlibextension]
+
+proc setup {} {
+ wm title . "Overlay demo"
+
+ togl .win -width 200 -height 200 -rgba true -double false -overlay true
+ button .btn -text Quit -command exit
+
+ pack .win -expand true -fill both
+ pack .btn -expand true -fill both
+}
+
+
+
+# Execution starts here!
+setup
diff --git a/ng/Togl-1.7/pkgIndex.tcl.in b/ng/Togl-1.7/pkgIndex.tcl.in
new file mode 100644
index 00000000..af071e36
--- /dev/null
+++ b/ng/Togl-1.7/pkgIndex.tcl.in
@@ -0,0 +1,5 @@
+#
+# Tcl package index file
+#
+package ifneeded @PACKAGE_NAME@ @PACKAGE_VERSION@ \
+ [list load [file join $dir @PKG_LIB_FILE@]]
diff --git a/ng/Togl-1.7/stereo.c b/ng/Togl-1.7/stereo.c
new file mode 100644
index 00000000..0a33f1ee
--- /dev/null
+++ b/ng/Togl-1.7/stereo.c
@@ -0,0 +1,352 @@
+/* $Id: stereo.c,v 1.6 2005/04/23 07:49:13 gregcouch Exp $ */
+
+/*
+ * Togl - a Tk OpenGL widget
+ * Copyright (C) 1996-1997 Brian Paul and Ben Bederson
+ * See the LICENSE file for copyright details.
+ */
+
+#include "togl.h"
+#include
+#include
+
+/*
+ * The following variable is a special hack that is needed in order for
+ * Sun shared libraries to be used for Tcl.
+ */
+#ifdef SUN
+extern int matherr();
+int *tclDummyMathPtr = (int *) matherr;
+#endif
+
+
+static GLuint FontBase;
+static float xAngle = 0.0, yAngle = 0.0, zAngle = 0.0;
+static GLfloat CornerX, CornerY, CornerZ; /* where to print strings */
+static GLfloat scale = 1.0;
+
+
+
+/*
+ * Togl widget create callback. This is called by Tcl/Tk when the widget has
+ * been realized. Here's where one may do some one-time context setup or
+ * initializations.
+ */
+void
+create_cb(Togl *togl)
+{
+ FontBase = Togl_LoadBitmapFont(togl, TOGL_BITMAP_8_BY_13);
+ if (!FontBase) {
+ printf("Couldn't load font!\n");
+ exit(1);
+ }
+}
+
+
+/*
+ * Togl widget reshape callback. This is called by Tcl/Tk when the widget
+ * has been resized. Typically, we call glViewport and perhaps setup the
+ * projection matrix.
+ */
+void
+reshape_cb(Togl *togl)
+{
+ int width = Togl_Width(togl);
+ int height = Togl_Height(togl);
+ float aspect = (float) width / (float) height;
+
+ glViewport(0, 0, width, height);
+
+ /* Set up projection transform */
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ glFrustum(-aspect, aspect, -1.0, 1.0, 1.0, 10.0);
+
+ CornerX = -aspect;
+ CornerY = -1.0;
+ CornerZ = -1.1;
+
+ /* Change back to model view transform for rendering */
+ glMatrixMode(GL_MODELVIEW);
+}
+
+
+
+static void
+print_string(const char *s)
+{
+ glCallLists(strlen(s), GL_UNSIGNED_BYTE, s);
+}
+
+
+/*
+ * Togl widget display callback. This is called by Tcl/Tk when the widget's
+ * contents have to be redrawn. Typically, we clear the color and depth
+ * buffers, render our objects, then swap the front/back color buffers.
+ */
+void
+display_cb(Togl *togl)
+{
+ const char *ident;
+ GLfloat eyeDist = 2.0;
+ GLfloat eyeOffset = 0.05;
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ glLoadIdentity(); /* Reset modelview matrix to the identity
+ * matrix */
+ glTranslatef(0.0, 0.0, -3.0); /* Move the camera back three units */
+ glScalef(scale, scale, scale); /* Zoom in and out */
+ glRotatef(xAngle, 1.0, 0.0, 0.0); /* Rotate by X, Y, and Z angles */
+ glRotatef(yAngle, 0.0, 1.0, 0.0);
+ glRotatef(zAngle, 0.0, 0.0, 1.0);
+
+ glEnable(GL_DEPTH_TEST);
+
+ /* stereo right eye */
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ Togl_StereoFrustum(-1, 1, -1, 1, 1, 10, eyeDist, eyeOffset);
+ glMatrixMode(GL_MODELVIEW);
+#ifdef OLD_STEREO
+ Togl_OldStereoDrawBuffer(GL_BACK_RIGHT);
+ Togl_OldStereoClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+#else
+ glDrawBuffer(GL_BACK_RIGHT);
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+#endif
+
+ /* Front face */
+ glBegin(GL_QUADS);
+ glColor3f(0.0, 0.7, 0.1); /* Green */
+ glVertex3f(-1.0, 1.0, 1.0);
+ glVertex3f(1.0, 1.0, 1.0);
+ glVertex3f(1.0, -1.0, 1.0);
+ glVertex3f(-1.0, -1.0, 1.0);
+ /* Back face */
+ glColor3f(0.9, 1.0, 0.0); /* Yellow */
+ glVertex3f(-1.0, 1.0, -1.0);
+ glVertex3f(1.0, 1.0, -1.0);
+ glVertex3f(1.0, -1.0, -1.0);
+ glVertex3f(-1.0, -1.0, -1.0);
+ /* Top side face */
+ glColor3f(0.2, 0.2, 1.0); /* Blue */
+ glVertex3f(-1.0, 1.0, 1.0);
+ glVertex3f(1.0, 1.0, 1.0);
+ glVertex3f(1.0, 1.0, -1.0);
+ glVertex3f(-1.0, 1.0, -1.0);
+ /* Bottom side face */
+ glColor3f(0.7, 0.0, 0.1); /* Red */
+ glVertex3f(-1.0, -1.0, 1.0);
+ glVertex3f(1.0, -1.0, 1.0);
+ glVertex3f(1.0, -1.0, -1.0);
+ glVertex3f(-1.0, -1.0, -1.0);
+ glEnd();
+
+ /* stereo left eye */
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ Togl_StereoFrustum(-1, 1, -1, 1, 1, 10, eyeDist, -eyeOffset);
+ glMatrixMode(GL_MODELVIEW);
+
+#ifdef OLD_STEREO
+ Togl_OldStereoDrawBuffer(GL_BACK_LEFT);
+ Togl_OldStereoClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+#else
+ glDrawBuffer(GL_BACK_LEFT);
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+#endif
+
+ /* Front face */
+ glBegin(GL_QUADS);
+ glColor3f(0.0, 0.7, 0.1); /* Green */
+ glVertex3f(-1.0, 1.0, 1.0);
+ glVertex3f(1.0, 1.0, 1.0);
+ glVertex3f(1.0, -1.0, 1.0);
+ glVertex3f(-1.0, -1.0, 1.0);
+ /* Back face */
+ glColor3f(0.9, 1.0, 0.0); /* Yellow */
+ glVertex3f(-1.0, 1.0, -1.0);
+ glVertex3f(1.0, 1.0, -1.0);
+ glVertex3f(1.0, -1.0, -1.0);
+ glVertex3f(-1.0, -1.0, -1.0);
+ /* Top side face */
+ glColor3f(0.2, 0.2, 1.0); /* Blue */
+ glVertex3f(-1.0, 1.0, 1.0);
+ glVertex3f(1.0, 1.0, 1.0);
+ glVertex3f(1.0, 1.0, -1.0);
+ glVertex3f(-1.0, 1.0, -1.0);
+ /* Bottom side face */
+ glColor3f(0.7, 0.0, 0.1); /* Red */
+ glVertex3f(-1.0, -1.0, 1.0);
+ glVertex3f(1.0, -1.0, 1.0);
+ glVertex3f(1.0, -1.0, -1.0);
+ glVertex3f(-1.0, -1.0, -1.0);
+ glEnd();
+
+
+ glDisable(GL_DEPTH_TEST);
+ glLoadIdentity();
+ glColor3f(1.0, 1.0, 1.0);
+ glRasterPos3f(CornerX, CornerY, CornerZ);
+ glListBase(FontBase);
+ /* ident = Togl_Ident( togl ); if (strcmp(ident,"Single")==0) {
+ * print_string( "Single buffered" ); } else { print_string( "Double
+ * buffered" ); } */
+ print_string(Togl_Ident(togl));
+ Togl_SwapBuffers(togl);
+}
+
+
+int
+setXrot_cb(Togl *togl, int argc, CONST84 char *argv[])
+{
+ Tcl_Interp *interp = Togl_Interp(togl);
+
+ /* error checking */
+ if (argc != 3) {
+ Tcl_SetResult(interp,
+ "wrong # args: should be \"pathName setXrot ?angle?\"",
+ TCL_STATIC);
+ return TCL_ERROR;
+ }
+
+ xAngle = atof(argv[2]);
+
+ /* printf( "before %f ", xAngle ); */
+
+ if (xAngle < 0.0) {
+ xAngle += 360.0;
+ } else if (xAngle > 360.0) {
+ xAngle -= 360.0;
+ }
+
+ /* printf( "after %f \n", xAngle ); */
+
+ Togl_PostRedisplay(togl);
+
+ /* Let result string equal value */
+ strcpy(interp->result, argv[2]);
+ return TCL_OK;
+}
+
+
+int
+setYrot_cb(Togl *togl, int argc, CONST84 char *argv[])
+{
+ Tcl_Interp *interp = Togl_Interp(togl);
+
+ /* error checking */
+ if (argc != 3) {
+ Tcl_SetResult(interp,
+ "wrong # args: should be \"pathName setYrot ?angle?\"",
+ TCL_STATIC);
+ return TCL_ERROR;
+ }
+
+ yAngle = atof(argv[2]);
+
+ if (yAngle < 0.0) {
+ yAngle += 360.0;
+ } else if (yAngle > 360.0) {
+ yAngle -= 360.0;
+ }
+
+ Togl_PostRedisplay(togl);
+
+ /* Let result string equal value */
+ strcpy(interp->result, argv[2]);
+ return TCL_OK;
+}
+
+
+int
+getXrot_cb(ClientData clientData, Tcl_Interp *interp,
+ int argc, CONST84 char *argv[])
+{
+ sprintf(interp->result, "%d", (int) xAngle);
+ return TCL_OK;
+}
+
+
+int
+getYrot_cb(ClientData clientData, Tcl_Interp *interp,
+ int argc, CONST84 char *argv[])
+{
+ sprintf(interp->result, "%d", (int) yAngle);
+ return TCL_OK;
+}
+
+
+int
+scale_cb(Togl *togl, int argc, CONST84 char *argv[])
+{
+ Tcl_Interp *interp = Togl_Interp(togl);
+
+ /* error checking */
+ if (argc != 3) {
+ Tcl_SetResult(interp,
+ "wrong # args: should be \"pathName scale ?value?\"",
+ TCL_STATIC);
+ return TCL_ERROR;
+ }
+
+ scale = atof(argv[2]);
+
+ Togl_PostRedisplay(togl);
+
+ /* Let result string equal value */
+ strcpy(interp->result, argv[2]);
+ return TCL_OK;
+}
+
+
+TOGL_EXTERN int
+Stereo_Init(Tcl_Interp *interp)
+{
+ /*
+ * Initialize Tcl, Tk, and the Togl widget module.
+ */
+#ifdef USE_TCL_STUBS
+ if (Tcl_InitStubs(interp, "8.1", 0) == NULL) {
+ return TCL_ERROR;
+ }
+#endif
+#ifdef USE_TK_STUBS
+ if (Tk_InitStubs(interp, "8.1", 0) == NULL) {
+ return TCL_ERROR;
+ }
+#endif
+
+ if (Togl_Init(interp) == TCL_ERROR) {
+ return TCL_ERROR;
+ }
+
+ /*
+ * Specify the C callback functions for widget creation, display,
+ * and reshape.
+ */
+ Togl_CreateFunc(create_cb);
+ Togl_DisplayFunc(display_cb);
+ Togl_ReshapeFunc(reshape_cb);
+
+ /*
+ * Make a new Togl widget command so the Tcl code can set a C variable.
+ */
+
+ Togl_CreateCommand("setXrot", setXrot_cb);
+ Togl_CreateCommand("setYrot", setYrot_cb);
+ Togl_CreateCommand("scale", scale_cb);
+
+ /*
+ * Call Tcl_CreateCommand for application-specific commands, if
+ * they weren't already created by the init procedures called above.
+ */
+
+ Tcl_CreateCommand(interp, "getXrot", getXrot_cb, (ClientData) NULL,
+ (Tcl_CmdDeleteProc *) NULL);
+ Tcl_CreateCommand(interp, "getYrot", getYrot_cb, (ClientData) NULL,
+ (Tcl_CmdDeleteProc *) NULL);
+
+ return TCL_OK;
+}
diff --git a/ng/Togl-1.7/stereo.tcl b/ng/Togl-1.7/stereo.tcl
new file mode 100644
index 00000000..ea5fc89f
--- /dev/null
+++ b/ng/Togl-1.7/stereo.tcl
@@ -0,0 +1,108 @@
+#!/bin/sh
+# the next line restarts using wish \
+exec wish "$0" "$@"
+
+# $Id: stereo.tcl,v 1.4 2004/12/21 05:28:39 gregcouch Exp $
+
+# Togl - a Tk OpenGL widget
+# Copyright (C) 1996 Brian Paul and Ben Bederson
+# See the LICENSE file for copyright details.
+
+
+# $Log: stereo.tcl,v $
+# Revision 1.4 2004/12/21 05:28:39 gregcouch
+# Apply outstanding patches and Mac OS X support.
+#
+# Revision 1.3 2001/12/20 13:59:31 beskow
+# Improved error-handling in togl.c in case of window creation failure
+# Added pkgIndex target to makefile
+# Updated documentation to reflect stubs-interface (Togl.html + new README.stubs)
+# Added tk8.4a3 headers
+# Removed obsolete Tk internal headers
+#
+# Revision 1.2 2001/01/29 18:11:53 brianp
+# Jonas Beskow's changes to use Tcl/Tk stub interface
+#
+# Revision 1.1 1997/10/01 02:53:12 brianp
+# Initial revision
+#
+#
+# Revision 1.1 1997/9/28 18:54:46 Ben Evans
+# Initial revision. Based on double.tcl
+#
+
+
+# An Tk/OpenGL widget demo with two windows, one single buffered and the
+# other double buffered.
+
+load [file dirname [info script]]/stereo[info sharedlibextension]
+
+proc setup {} {
+ global scale
+ set scale 1.0
+ wm title . "Full Screen Stereo Buffering"
+
+ frame .f1
+ togl .f1.o1 -width 200 -height 200 -rgba true -stereo true -double true -depth true -ident "stereo buffer"
+
+ scale .sx -label {X Axis} -from 0 -to 360 -command {setAngle x} -orient horizontal
+ scale .sy -label {Y Axis} -from 0 -to 360 -command {setAngle y} -orient horizontal
+ button .btn -text Quit -command exit
+
+ bind .f1.o1 {
+ motion_event [lindex [%W config -width] 4] \
+ [lindex [%W config -height] 4] \
+ %x %y
+ }
+
+ bind .f1.o1 {
+ set startx %x
+ set starty %y
+ set scale0 $scale
+ }
+
+ bind .f1.o1 {
+ set q [ expr ($starty - %y) / 400.0 ]
+ set scale [expr $scale0 * exp($q)]
+ .f1.o1 scale $scale
+ }
+
+ pack .f1.o1 -side left -padx 3 -pady 3 -fill both -expand t
+ pack .f1 -fill both -expand t
+ pack .sx -fill x
+ pack .sy -fill x
+ pack .btn -fill x
+
+ if {[string first $::tcl_platform(os) IRIX] != -1} {
+ puts "use /usr/gfx/setmon -n 60 to reset display and /usr/gfx/setmon -n STR_RECT to put in display in stereo mode"
+ }
+
+}
+
+
+
+# This is called when mouse button 1 is pressed and moved in either of
+# the OpenGL windows.
+proc motion_event { width height x y } {
+ .f1.o1 setXrot [expr 360.0 * $y / $height]
+ .f1.o1 setYrot [expr 360.0 * ($width - $x) / $width]
+
+# .sx set [expr 360.0 * $y / $height]
+# .sy set [expr 360.0 * ($width - $x) / $width]
+
+ .sx set [getXrot]
+ .sy set [getYrot]
+}
+
+# This is called when a slider is changed.
+proc setAngle {axis value} {
+ global xAngle yAngle zAngle
+
+ switch -exact $axis {
+ x {.f1.o1 setXrot $value}
+ y {.f1.o1 setYrot $value}
+ }
+}
+
+# Execution starts here!
+setup
diff --git a/ng/Togl-1.7/tclconfig/README.txt b/ng/Togl-1.7/tclconfig/README.txt
new file mode 100644
index 00000000..59b5a3e8
--- /dev/null
+++ b/ng/Togl-1.7/tclconfig/README.txt
@@ -0,0 +1,26 @@
+These files comprise the basic building blocks for a Tcl Extension
+Architecture (TEA) extension. For more information on TEA see:
+
+ http://www.tcl.tk/doc/tea/
+
+This package is part of the Tcl project at SourceForge, and latest
+sources should be available there:
+
+ http://tcl.sourceforge.net/
+
+This package is a freely available open source package. You can do
+virtually anything you like with it, such as modifying it, redistributing
+it, and selling it either in whole or in part.
+
+CONTENTS
+========
+The following is a short description of the files you will find in
+the sample extension.
+
+README.txt This file
+
+install-sh Program used for copying binaries and script files
+ to their install locations.
+
+tcl.m4 Collection of Tcl autoconf macros. Included by a package's
+ aclocal.m4 to define TEA_* macros.
diff --git a/ng/Togl-1.7/tclconfig/install-sh b/ng/Togl-1.7/tclconfig/install-sh
new file mode 100644
index 00000000..0ff4b6a0
--- /dev/null
+++ b/ng/Togl-1.7/tclconfig/install-sh
@@ -0,0 +1,119 @@
+#!/bin/sh
+
+#
+# install - install a program, script, or datafile
+# This comes from X11R5; it is not part of GNU.
+#
+# $XConsortium: install.sh,v 1.2 89/12/18 14:47:22 jim Exp $
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.
+#
+
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit="${DOITPROG-}"
+
+
+# put in absolute paths if you don't have them in your path; or use env. vars.
+
+mvprog="${MVPROG-mv}"
+cpprog="${CPPROG-cp}"
+chmodprog="${CHMODPROG-chmod}"
+chownprog="${CHOWNPROG-chown}"
+chgrpprog="${CHGRPPROG-chgrp}"
+stripprog="${STRIPPROG-strip}"
+rmprog="${RMPROG-rm}"
+
+instcmd="$mvprog"
+chmodcmd=""
+chowncmd=""
+chgrpcmd=""
+stripcmd=""
+rmcmd="$rmprog -f"
+mvcmd="$mvprog"
+src=""
+dst=""
+
+while [ x"$1" != x ]; do
+ case $1 in
+ -c) instcmd="$cpprog"
+ shift
+ continue;;
+
+ -m) chmodcmd="$chmodprog $2"
+ shift
+ shift
+ continue;;
+
+ -o) chowncmd="$chownprog $2"
+ shift
+ shift
+ continue;;
+
+ -g) chgrpcmd="$chgrpprog $2"
+ shift
+ shift
+ continue;;
+
+ -s) stripcmd="$stripprog"
+ shift
+ continue;;
+
+ *) if [ x"$src" = x ]
+ then
+ src=$1
+ else
+ dst=$1
+ fi
+ shift
+ continue;;
+ esac
+done
+
+if [ x"$src" = x ]
+then
+ echo "install: no input file specified"
+ exit 1
+fi
+
+if [ x"$dst" = x ]
+then
+ echo "install: no destination specified"
+ exit 1
+fi
+
+
+# If destination is a directory, append the input filename; if your system
+# does not like double slashes in filenames, you may need to add some logic
+
+if [ -d $dst ]
+then
+ dst="$dst"/`basename $src`
+fi
+
+# Make a temp file name in the proper directory.
+
+dstdir=`dirname $dst`
+dsttmp=$dstdir/#inst.$$#
+
+# Move or copy the file name to the temp name
+
+$doit $instcmd $src $dsttmp
+
+# and set any options; do chmod last to preserve setuid bits
+
+if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; fi
+if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; fi
+if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; fi
+if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; fi
+
+# Now rename the file to the real destination.
+
+$doit $rmcmd $dst
+$doit $mvcmd $dsttmp $dst
+
+
+exit 0
diff --git a/ng/Togl-1.7/tclconfig/tcl.m4 b/ng/Togl-1.7/tclconfig/tcl.m4
new file mode 100644
index 00000000..2862ae18
--- /dev/null
+++ b/ng/Togl-1.7/tclconfig/tcl.m4
@@ -0,0 +1,3959 @@
+# tcl.m4 --
+#
+# This file provides a set of autoconf macros to help TEA-enable
+# a Tcl extension.
+#
+# Copyright (c) 1999-2000 Ajuba Solutions.
+# Copyright (c) 2002-2005 ActiveState Corporation.
+#
+# See the file "license.terms" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+#
+# RCS: @(#) $Id: tcl.m4,v 1.4 2006/01/06 00:09:00 gregcouch Exp $
+
+AC_PREREQ(2.50)
+
+# Possible values for key variables defined:
+#
+# TEA_WINDOWINGSYSTEM - win32 aqua x11 (mirrors 'tk windowingsystem')
+# TEA_PLATFORM - windows unix
+#
+
+#------------------------------------------------------------------------
+# TEA_PATH_TCLCONFIG --
+#
+# Locate the tclConfig.sh file and perform a sanity check on
+# the Tcl compile flags
+#
+# Arguments:
+# none
+#
+# Results:
+#
+# Adds the following arguments to configure:
+# --with-tcl=...
+#
+# Defines the following vars:
+# TCL_BIN_DIR Full path to the directory containing
+# the tclConfig.sh file
+#------------------------------------------------------------------------
+
+AC_DEFUN(TEA_PATH_TCLCONFIG, [
+ dnl Make sure we are initialized
+ AC_REQUIRE([TEA_INIT])
+ #
+ # Ok, lets find the tcl configuration
+ # First, look for one uninstalled.
+ # the alternative search directory is invoked by --with-tcl
+ #
+
+ if test x"${no_tcl}" = x ; then
+ # we reset no_tcl in case something fails here
+ no_tcl=true
+ AC_ARG_WITH(tcl, [ --with-tcl directory containing tcl configuration (tclConfig.sh)], with_tclconfig=${withval})
+ AC_MSG_CHECKING([for Tcl configuration])
+ AC_CACHE_VAL(ac_cv_c_tclconfig,[
+
+ # First check to see if --with-tcl was specified.
+ if test x"${with_tclconfig}" != x ; then
+ case ${with_tclconfig} in
+ */tclConfig.sh )
+ if test -f ${with_tclconfig}; then
+ AC_MSG_WARN([--with-tcl argument should refer to directory containing tclConfig.sh, not to tclConfig.sh itself])
+ with_tclconfig=`echo ${with_tclconfig} | sed 's!/tclConfig\.sh$!!'`
+ fi ;;
+ esac
+ if test -f "${with_tclconfig}/tclConfig.sh" ; then
+ ac_cv_c_tclconfig=`(cd ${with_tclconfig}; pwd)`
+ else
+ AC_MSG_ERROR([${with_tclconfig} directory doesn't contain tclConfig.sh])
+ fi
+ fi
+
+ # then check for a private Tcl installation
+ if test x"${ac_cv_c_tclconfig}" = x ; then
+ for i in \
+ ../tcl \
+ `ls -dr ../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
+ `ls -dr ../tcl[[8-9]].[[0-9]] 2>/dev/null` \
+ `ls -dr ../tcl[[8-9]].[[0-9]]* 2>/dev/null` \
+ ../../tcl \
+ `ls -dr ../../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
+ `ls -dr ../../tcl[[8-9]].[[0-9]] 2>/dev/null` \
+ `ls -dr ../../tcl[[8-9]].[[0-9]]* 2>/dev/null` \
+ ../../../tcl \
+ `ls -dr ../../../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
+ `ls -dr ../../../tcl[[8-9]].[[0-9]] 2>/dev/null` \
+ `ls -dr ../../../tcl[[8-9]].[[0-9]]* 2>/dev/null` ; do
+ if test -f "$i/unix/tclConfig.sh" ; then
+ ac_cv_c_tclconfig=`(cd $i/unix; pwd)`
+ break
+ fi
+ done
+ fi
+
+ # on Darwin, check in Framework installation locations
+ if test "`uname -s`" = "Darwin" -a x"${ac_cv_c_tclconfig}" = x ; then
+ for i in `ls -d ~/Library/Frameworks 2>/dev/null` \
+ `ls -d /Library/Frameworks 2>/dev/null` \
+ `ls -d /Network/Library/Frameworks 2>/dev/null` \
+ `ls -d /System/Library/Frameworks 2>/dev/null` \
+ ; do
+ if test -f "$i/Tcl.framework/tclConfig.sh" ; then
+ ac_cv_c_tclconfig=`(cd $i/Tcl.framework; pwd)`
+ break
+ fi
+ done
+ fi
+
+ # check in a few common install locations
+ if test x"${ac_cv_c_tclconfig}" = x ; then
+ for i in `ls -d ${libdir} 2>/dev/null` \
+ `ls -d ${exec_prefix}/lib 2>/dev/null` \
+ `ls -d ${prefix}/lib 2>/dev/null` \
+ `ls -d /usr/local/lib 2>/dev/null` \
+ `ls -d /usr/contrib/lib 2>/dev/null` \
+ `ls -d /usr/lib 2>/dev/null` \
+ ; do
+ if test -f "$i/tclConfig.sh" ; then
+ ac_cv_c_tclconfig=`(cd $i; pwd)`
+ break
+ fi
+ done
+ fi
+
+ # check in a few other private locations
+ if test x"${ac_cv_c_tclconfig}" = x ; then
+ for i in \
+ ${srcdir}/../tcl \
+ `ls -dr ${srcdir}/../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
+ `ls -dr ${srcdir}/../tcl[[8-9]].[[0-9]] 2>/dev/null` \
+ `ls -dr ${srcdir}/../tcl[[8-9]].[[0-9]]* 2>/dev/null` ; do
+ if test -f "$i/unix/tclConfig.sh" ; then
+ ac_cv_c_tclconfig=`(cd $i/unix; pwd)`
+ break
+ fi
+ done
+ fi
+ ])
+
+ if test x"${ac_cv_c_tclconfig}" = x ; then
+ TCL_BIN_DIR="# no Tcl configs found"
+ AC_MSG_WARN("Cannot find Tcl configuration definitions")
+ exit 0
+ else
+ no_tcl=
+ TCL_BIN_DIR=${ac_cv_c_tclconfig}
+ AC_MSG_RESULT([found $TCL_BIN_DIR/tclConfig.sh])
+ fi
+ fi
+])
+
+#------------------------------------------------------------------------
+# TEA_PATH_TKCONFIG --
+#
+# Locate the tkConfig.sh file
+#
+# Arguments:
+# none
+#
+# Results:
+#
+# Adds the following arguments to configure:
+# --with-tk=...
+#
+# Defines the following vars:
+# TK_BIN_DIR Full path to the directory containing
+# the tkConfig.sh file
+#------------------------------------------------------------------------
+
+AC_DEFUN(TEA_PATH_TKCONFIG, [
+ #
+ # Ok, lets find the tk configuration
+ # First, look for one uninstalled.
+ # the alternative search directory is invoked by --with-tk
+ #
+
+ if test x"${no_tk}" = x ; then
+ # we reset no_tk in case something fails here
+ no_tk=true
+ AC_ARG_WITH(tk, [ --with-tk directory containing tk configuration (tkConfig.sh)], with_tkconfig=${withval})
+ AC_MSG_CHECKING([for Tk configuration])
+ AC_CACHE_VAL(ac_cv_c_tkconfig,[
+
+ # First check to see if --with-tkconfig was specified.
+ if test x"${with_tkconfig}" != x ; then
+ case ${with_tkconfig} in
+ */tkConfig.sh )
+ if test -f ${with_tkconfig}; then
+ AC_MSG_WARN([--with-tk argument should refer to directory containing tkConfig.sh, not to tkConfig.sh itself])
+ with_tkconfig=`echo ${with_tkconfig} | sed 's!/tkConfig\.sh$!!'`
+ fi ;;
+ esac
+ if test -f "${with_tkconfig}/tkConfig.sh" ; then
+ ac_cv_c_tkconfig=`(cd ${with_tkconfig}; pwd)`
+ else
+ AC_MSG_ERROR([${with_tkconfig} directory doesn't contain tkConfig.sh])
+ fi
+ fi
+
+ # then check for a private Tk library
+ if test x"${ac_cv_c_tkconfig}" = x ; then
+ for i in \
+ ../tk \
+ `ls -dr ../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
+ `ls -dr ../tk[[8-9]].[[0-9]] 2>/dev/null` \
+ `ls -dr ../tk[[8-9]].[[0-9]]* 2>/dev/null` \
+ ../../tk \
+ `ls -dr ../../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
+ `ls -dr ../../tk[[8-9]].[[0-9]] 2>/dev/null` \
+ `ls -dr ../../tk[[8-9]].[[0-9]]* 2>/dev/null` \
+ ../../../tk \
+ `ls -dr ../../../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
+ `ls -dr ../../../tk[[8-9]].[[0-9]] 2>/dev/null` \
+ `ls -dr ../../../tk[[8-9]].[[0-9]]* 2>/dev/null` ; do
+ if test -f "$i/unix/tkConfig.sh" ; then
+ ac_cv_c_tkconfig=`(cd $i/unix; pwd)`
+ break
+ fi
+ done
+ fi
+
+ # on Darwin, check in Framework installation locations
+ if test "`uname -s`" = "Darwin" -a x"${ac_cv_c_tkconfig}" = x ; then
+ for i in `ls -d ~/Library/Frameworks 2>/dev/null` \
+ `ls -d /Library/Frameworks 2>/dev/null` \
+ `ls -d /Network/Library/Frameworks 2>/dev/null` \
+ `ls -d /System/Library/Frameworks 2>/dev/null` \
+ ; do
+ if test -f "$i/Tk.framework/tkConfig.sh" ; then
+ ac_cv_c_tkconfig=`(cd $i/Tk.framework; pwd)`
+ break
+ fi
+ done
+ fi
+
+ # check in a few common install locations
+ if test x"${ac_cv_c_tkconfig}" = x ; then
+ for i in `ls -d ${libdir} 2>/dev/null` \
+ `ls -d ${exec_prefix}/lib 2>/dev/null` \
+ `ls -d ${prefix}/lib 2>/dev/null` \
+ `ls -d /usr/local/lib 2>/dev/null` \
+ `ls -d /usr/contrib/lib 2>/dev/null` \
+ `ls -d /usr/lib 2>/dev/null` \
+ ; do
+ if test -f "$i/tkConfig.sh" ; then
+ ac_cv_c_tkconfig=`(cd $i; pwd)`
+ break
+ fi
+ done
+ fi
+ # check in a few other private locations
+ if test x"${ac_cv_c_tkconfig}" = x ; then
+ for i in \
+ ${srcdir}/../tk \
+ `ls -dr ${srcdir}/../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
+ `ls -dr ${srcdir}/../tk[[8-9]].[[0-9]] 2>/dev/null` \
+ `ls -dr ${srcdir}/../tk[[8-9]].[[0-9]]* 2>/dev/null` ; do
+ if test -f "$i/unix/tkConfig.sh" ; then
+ ac_cv_c_tkconfig=`(cd $i/unix; pwd)`
+ break
+ fi
+ done
+ fi
+ ])
+
+ if test x"${ac_cv_c_tkconfig}" = x ; then
+ TK_BIN_DIR="# no Tk configs found"
+ AC_MSG_WARN("Cannot find Tk configuration definitions")
+ exit 0
+ else
+ no_tk=
+ TK_BIN_DIR=${ac_cv_c_tkconfig}
+ AC_MSG_RESULT([found $TK_BIN_DIR/tkConfig.sh])
+ fi
+ fi
+])
+
+#------------------------------------------------------------------------
+# TEA_LOAD_TCLCONFIG --
+#
+# Load the tclConfig.sh file
+#
+# Arguments:
+#
+# Requires the following vars to be set:
+# TCL_BIN_DIR
+#
+# Results:
+#
+# Subst the following vars:
+# TCL_BIN_DIR
+# TCL_SRC_DIR
+# TCL_LIB_FILE
+#
+#------------------------------------------------------------------------
+
+AC_DEFUN(TEA_LOAD_TCLCONFIG, [
+ AC_MSG_CHECKING([for existence of $TCL_BIN_DIR/tclConfig.sh])
+
+ if test -f "$TCL_BIN_DIR/tclConfig.sh" ; then
+ AC_MSG_RESULT([loading])
+ . $TCL_BIN_DIR/tclConfig.sh
+ else
+ AC_MSG_RESULT([file not found])
+ fi
+
+ #
+ # If the TCL_BIN_DIR is the build directory (not the install directory),
+ # then set the common variable name to the value of the build variables.
+ # For example, the variable TCL_LIB_SPEC will be set to the value
+ # of TCL_BUILD_LIB_SPEC. An extension should make use of TCL_LIB_SPEC
+ # instead of TCL_BUILD_LIB_SPEC since it will work with both an
+ # installed and uninstalled version of Tcl.
+ #
+
+ if test -f $TCL_BIN_DIR/Makefile ; then
+ TCL_LIB_SPEC=${TCL_BUILD_LIB_SPEC}
+ TCL_STUB_LIB_SPEC=${TCL_BUILD_STUB_LIB_SPEC}
+ TCL_STUB_LIB_PATH=${TCL_BUILD_STUB_LIB_PATH}
+ fi
+
+ #
+ # eval is required to do the TCL_DBGX substitution
+ #
+
+ eval "TCL_LIB_FILE=\"${TCL_LIB_FILE}\""
+ eval "TCL_LIB_FLAG=\"${TCL_LIB_FLAG}\""
+ eval "TCL_LIB_SPEC=\"${TCL_LIB_SPEC}\""
+
+ eval "TCL_STUB_LIB_FILE=\"${TCL_STUB_LIB_FILE}\""
+ eval "TCL_STUB_LIB_FLAG=\"${TCL_STUB_LIB_FLAG}\""
+ eval "TCL_STUB_LIB_SPEC=\"${TCL_STUB_LIB_SPEC}\""
+
+ AC_SUBST(TCL_VERSION)
+ AC_SUBST(TCL_BIN_DIR)
+ AC_SUBST(TCL_SRC_DIR)
+
+ AC_SUBST(TCL_LIB_FILE)
+ AC_SUBST(TCL_LIB_FLAG)
+ AC_SUBST(TCL_LIB_SPEC)
+
+ AC_SUBST(TCL_STUB_LIB_FILE)
+ AC_SUBST(TCL_STUB_LIB_FLAG)
+ AC_SUBST(TCL_STUB_LIB_SPEC)
+
+ AC_SUBST(TCL_LIBS)
+ AC_SUBST(TCL_DEFS)
+ AC_SUBST(TCL_EXTRA_CFLAGS)
+ AC_SUBST(TCL_LD_FLAGS)
+ AC_SUBST(TCL_SHLIB_LD_LIBS)
+ #AC_SUBST(TCL_BUILD_LIB_SPEC)
+ #AC_SUBST(TCL_BUILD_STUB_LIB_SPEC)
+])
+
+#------------------------------------------------------------------------
+# TEA_LOAD_TKCONFIG --
+#
+# Load the tkConfig.sh file
+#
+# Arguments:
+#
+# Requires the following vars to be set:
+# TK_BIN_DIR
+#
+# Results:
+#
+# Sets the following vars that should be in tkConfig.sh:
+# TK_BIN_DIR
+#------------------------------------------------------------------------
+
+AC_DEFUN(TEA_LOAD_TKCONFIG, [
+ AC_MSG_CHECKING([for existence of ${TK_BIN_DIR}/tkConfig.sh])
+
+ if test -f "${TK_BIN_DIR}/tkConfig.sh" ; then
+ AC_MSG_RESULT([loading])
+ . $TK_BIN_DIR/tkConfig.sh
+ else
+ AC_MSG_RESULT([could not find ${TK_BIN_DIR}/tkConfig.sh])
+ fi
+
+ #
+ # If the TK_BIN_DIR is the build directory (not the install directory),
+ # then set the common variable name to the value of the build variables.
+ # For example, the variable TK_LIB_SPEC will be set to the value
+ # of TK_BUILD_LIB_SPEC. An extension should make use of TK_LIB_SPEC
+ # instead of TK_BUILD_LIB_SPEC since it will work with both an
+ # installed and uninstalled version of Tcl.
+ #
+
+ if test -f $TK_BIN_DIR/Makefile ; then
+ TK_LIB_SPEC=${TK_BUILD_LIB_SPEC}
+ TK_STUB_LIB_SPEC=${TK_BUILD_STUB_LIB_SPEC}
+ TK_STUB_LIB_PATH=${TK_BUILD_STUB_LIB_PATH}
+ fi
+
+ # Ensure windowingsystem is defined
+ if test "${TEA_PLATFORM}" = "unix" ; then
+ case ${TK_DEFS} in
+ *MAC_OSX_TK*)
+ AC_DEFINE(MAC_OSX_TK, 1, [Are we building against Mac OS X TkAqua?])
+ TEA_WINDOWINGSYSTEM="aqua"
+ ;;
+ *)
+ TEA_WINDOWINGSYSTEM="x11"
+ ;;
+ esac
+ elif test "${TEA_PLATFORM}" = "windows" ; then
+ TEA_WINDOWINGSYSTEM="win32"
+ fi
+
+ #
+ # eval is required to do the TK_DBGX substitution
+ #
+
+ eval "TK_LIB_FILE=\"${TK_LIB_FILE}\""
+ eval "TK_LIB_FLAG=\"${TK_LIB_FLAG}\""
+ eval "TK_LIB_SPEC=\"${TK_LIB_SPEC}\""
+
+ eval "TK_STUB_LIB_FILE=\"${TK_STUB_LIB_FILE}\""
+ eval "TK_STUB_LIB_FLAG=\"${TK_STUB_LIB_FLAG}\""
+ eval "TK_STUB_LIB_SPEC=\"${TK_STUB_LIB_SPEC}\""
+
+ AC_SUBST(TK_VERSION)
+ AC_SUBST(TK_BIN_DIR)
+ AC_SUBST(TK_SRC_DIR)
+
+ AC_SUBST(TK_LIB_FILE)
+ AC_SUBST(TK_LIB_FLAG)
+ AC_SUBST(TK_LIB_SPEC)
+
+ AC_SUBST(TK_STUB_LIB_FILE)
+ AC_SUBST(TK_STUB_LIB_FLAG)
+ AC_SUBST(TK_STUB_LIB_SPEC)
+
+ AC_SUBST(TK_LIBS)
+ AC_SUBST(TK_XINCLUDES)
+])
+
+#------------------------------------------------------------------------
+# TEA_ENABLE_SHARED --
+#
+# Allows the building of shared libraries
+#
+# Arguments:
+# none
+#
+# Results:
+#
+# Adds the following arguments to configure:
+# --enable-shared=yes|no
+#
+# Defines the following vars:
+# STATIC_BUILD Used for building import/export libraries
+# on Windows.
+#
+# Sets the following vars:
+# SHARED_BUILD Value of 1 or 0
+#------------------------------------------------------------------------
+
+AC_DEFUN(TEA_ENABLE_SHARED, [
+ AC_MSG_CHECKING([how to build libraries])
+ AC_ARG_ENABLE(shared,
+ [ --enable-shared build and link with shared libraries [--enable-shared]],
+ [tcl_ok=$enableval], [tcl_ok=yes])
+
+ if test "${enable_shared+set}" = set; then
+ enableval="$enable_shared"
+ tcl_ok=$enableval
+ else
+ tcl_ok=yes
+ fi
+
+ if test "$tcl_ok" = "yes" ; then
+ AC_MSG_RESULT([shared])
+ SHARED_BUILD=1
+ else
+ AC_MSG_RESULT([static])
+ SHARED_BUILD=0
+ AC_DEFINE(STATIC_BUILD, 1, [Is this a static build?])
+ fi
+ AC_SUBST(SHARED_BUILD)
+])
+
+#------------------------------------------------------------------------
+# TEA_ENABLE_THREADS --
+#
+# Specify if thread support should be enabled. If "yes" is specified
+# as an arg (optional), threads are enabled by default, "no" means
+# threads are disabled. "yes" is the default.
+#
+# TCL_THREADS is checked so that if you are compiling an extension
+# against a threaded core, your extension must be compiled threaded
+# as well.
+#
+# Note that it is legal to have a thread enabled extension run in a
+# threaded or non-threaded Tcl core, but a non-threaded extension may
+# only run in a non-threaded Tcl core.
+#
+# Arguments:
+# none
+#
+# Results:
+#
+# Adds the following arguments to configure:
+# --enable-threads
+#
+# Sets the following vars:
+# THREADS_LIBS Thread library(s)
+#
+# Defines the following vars:
+# TCL_THREADS
+# _REENTRANT
+#
+#------------------------------------------------------------------------
+
+AC_DEFUN(TEA_ENABLE_THREADS, [
+ AC_ARG_ENABLE(threads, [ --enable-threads build with threads],
+ [tcl_ok=$enableval], [tcl_ok=yes])
+
+ if test "${enable_threads+set}" = set; then
+ enableval="$enable_threads"
+ tcl_ok=$enableval
+ else
+ tcl_ok=yes
+ fi
+
+ if test "$tcl_ok" = "yes" -o "${TCL_THREADS}" = 1; then
+ TCL_THREADS=1
+
+ if test "${TEA_PLATFORM}" != "windows" ; then
+ # We are always OK on Windows, so check what this platform wants.
+ AC_DEFINE(USE_THREAD_ALLOC, 1,
+ [Do we want to use the threaded memory allocator?])
+ AC_DEFINE(_REENTRANT, 1, [Do we want the reentrant OS API?])
+ AC_DEFINE(_THREAD_SAFE, 1, [Do we want the thread-safe OS API?])
+ AC_CHECK_LIB(pthread,pthread_mutex_init,tcl_ok=yes,tcl_ok=no)
+ if test "$tcl_ok" = "no"; then
+ # Check a little harder for __pthread_mutex_init in the
+ # same library, as some systems hide it there until
+ # pthread.h is defined. We could alternatively do an
+ # AC_TRY_COMPILE with pthread.h, but that will work with
+ # libpthread really doesn't exist, like AIX 4.2.
+ # [Bug: 4359]
+ AC_CHECK_LIB(pthread, __pthread_mutex_init,
+ tcl_ok=yes, tcl_ok=no)
+ fi
+
+ if test "$tcl_ok" = "yes"; then
+ # The space is needed
+ THREADS_LIBS=" -lpthread"
+ else
+ AC_CHECK_LIB(pthreads, pthread_mutex_init,
+ tcl_ok=yes, tcl_ok=no)
+ if test "$tcl_ok" = "yes"; then
+ # The space is needed
+ THREADS_LIBS=" -lpthreads"
+ else
+ AC_CHECK_LIB(c, pthread_mutex_init,
+ tcl_ok=yes, tcl_ok=no)
+ if test "$tcl_ok" = "no"; then
+ AC_CHECK_LIB(c_r, pthread_mutex_init,
+ tcl_ok=yes, tcl_ok=no)
+ if test "$tcl_ok" = "yes"; then
+ # The space is needed
+ THREADS_LIBS=" -pthread"
+ else
+ TCL_THREADS=0
+ AC_MSG_WARN("Don t know how to find pthread lib on your system - thread support disabled")
+ fi
+ fi
+ fi
+ fi
+
+dnl # Not needed in TEA
+dnl # Does the pthread-implementation provide
+dnl # 'pthread_attr_setstacksize' ?
+dnl
+dnl ac_saved_libs=$LIBS
+dnl LIBS="$LIBS $THREADS_LIBS"
+dnl AC_CHECK_FUNCS(pthread_attr_setstacksize)
+dnl LIBS=$ac_saved_libs
+ fi
+ else
+ TCL_THREADS=0
+ fi
+ # Do checking message here to not mess up interleaved configure output
+ AC_MSG_CHECKING([for building with threads])
+ if test "${TCL_THREADS}" = "1"; then
+ AC_DEFINE(TCL_THREADS, 1, [Are we building with threads enabled?])
+ #LIBS="$LIBS $THREADS_LIBS"
+ AC_MSG_RESULT([yes (default)])
+ else
+ AC_MSG_RESULT([no])
+ fi
+ # TCL_THREADS sanity checking. See if our request for building with
+ # threads is the same as the way Tcl was built. If not, warn the user.
+ case ${TCL_DEFS} in
+ *THREADS=1*)
+ if test "${TCL_THREADS}" = "0"; then
+ AC_MSG_WARN([
+ Building ${PACKAGE_NAME} without threads enabled, but building against Tcl
+ that IS thread-enabled. It is recommended to use --enable-threads.])
+ fi
+ ;;
+ *)
+ if test "${TCL_THREADS}" = "1"; then
+ AC_MSG_WARN([
+ --enable-threads requested, but building against a Tcl that is NOT
+ thread-enabled. This is an OK configuration that will also run in
+ a thread-enabled core.])
+ fi
+ ;;
+ esac
+ AC_SUBST(TCL_THREADS)
+])
+
+#------------------------------------------------------------------------
+# TEA_ENABLE_SYMBOLS --
+#
+# Specify if debugging symbols should be used
+# Memory (TCL_MEM_DEBUG) debugging can also be enabled.
+#
+# Arguments:
+# none
+#
+# Requires the following vars to be set:
+# CFLAGS_DEBUG
+# CFLAGS_OPTIMIZE
+# LDFLAGS_DEBUG
+# LDFLAGS_OPTIMIZE
+#
+# Results:
+#
+# Adds the following arguments to configure:
+# --enable-symbols
+#
+# Defines the following vars:
+# CFLAGS_DEFAULT Sets to CFLAGS_DEBUG if true
+# Sets to CFLAGS_OPTIMIZE if false
+# LDFLAGS_DEFAULT Sets to LDFLAGS_DEBUG if true
+# Sets to LDFLAGS_OPTIMIZE if false
+# DBGX Formerly used as debug library extension;
+# always blank now.
+#
+#------------------------------------------------------------------------
+
+AC_DEFUN(TEA_ENABLE_SYMBOLS, [
+ dnl Make sure we are initialized
+ AC_REQUIRE([TEA_CONFIG_CFLAGS])
+
+ DBGX=""
+
+ AC_MSG_CHECKING([for build with symbols])
+ AC_ARG_ENABLE(symbols, [ --enable-symbols build with debugging symbols [--disable-symbols]], [tcl_ok=$enableval], [tcl_ok=no])
+ if test "$tcl_ok" = "no"; then
+ CFLAGS_DEFAULT="${CFLAGS_OPTIMIZE}"
+ LDFLAGS_DEFAULT="${LDFLAGS_OPTIMIZE}"
+ AC_MSG_RESULT([no])
+ else
+ CFLAGS_DEFAULT="${CFLAGS_DEBUG}"
+ LDFLAGS_DEFAULT="${LDFLAGS_DEBUG}"
+ if test "$tcl_ok" = "yes"; then
+ AC_MSG_RESULT([yes (standard debugging)])
+ fi
+ fi
+ if test "${TEA_PLATFORM}" != "windows" ; then
+ LDFLAGS_DEFAULT="${LDFLAGS}"
+ fi
+
+ AC_SUBST(TCL_DBGX)
+ AC_SUBST(CFLAGS_DEFAULT)
+ AC_SUBST(LDFLAGS_DEFAULT)
+
+ if test "$tcl_ok" = "mem" -o "$tcl_ok" = "all"; then
+ AC_DEFINE(TCL_MEM_DEBUG, 1, [Is memory debugging enabled?])
+ fi
+
+ if test "$tcl_ok" != "yes" -a "$tcl_ok" != "no"; then
+ if test "$tcl_ok" = "all"; then
+ AC_MSG_RESULT([enabled symbols mem debugging])
+ else
+ AC_MSG_RESULT([enabled $tcl_ok debugging])
+ fi
+ fi
+])
+
+#------------------------------------------------------------------------
+# TEA_ENABLE_LANGINFO --
+#
+# Allows use of modern nl_langinfo check for better l10n.
+# This is only relevant for Unix.
+#
+# Arguments:
+# none
+#
+# Results:
+#
+# Adds the following arguments to configure:
+# --enable-langinfo=yes|no (default is yes)
+#
+# Defines the following vars:
+# HAVE_LANGINFO Triggers use of nl_langinfo if defined.
+#
+#------------------------------------------------------------------------
+
+AC_DEFUN(TEA_ENABLE_LANGINFO, [
+ AC_ARG_ENABLE(langinfo,
+ [ --enable-langinfo use nl_langinfo if possible to determine
+ encoding at startup, otherwise use old heuristic],
+ [langinfo_ok=$enableval], [langinfo_ok=yes])
+
+ HAVE_LANGINFO=0
+ if test "$langinfo_ok" = "yes"; then
+ AC_CHECK_HEADER(langinfo.h,[langinfo_ok=yes],[langinfo_ok=no])
+ fi
+ AC_MSG_CHECKING([whether to use nl_langinfo])
+ if test "$langinfo_ok" = "yes"; then
+ AC_CACHE_VAL(tcl_cv_langinfo_h,
+ AC_TRY_COMPILE([#include ], [nl_langinfo(CODESET);],
+ [tcl_cv_langinfo_h=yes],[tcl_cv_langinfo_h=no]))
+ AC_MSG_RESULT($tcl_cv_langinfo_h)
+ if test $tcl_cv_langinfo_h = yes; then
+ AC_DEFINE(HAVE_LANGINFO, 1, [Do we have nl_langinfo()?])
+ fi
+ else
+ AC_MSG_RESULT([$langinfo_ok])
+ fi
+])
+
+#--------------------------------------------------------------------
+# TEA_CONFIG_CFLAGS
+#
+# Try to determine the proper flags to pass to the compiler
+# for building shared libraries and other such nonsense.
+#
+# Arguments:
+# none
+#
+# Results:
+#
+# Defines the following vars:
+#
+# DL_OBJS - Name of the object file that implements dynamic
+# loading for Tcl on this system.
+# DL_LIBS - Library file(s) to include in tclsh and other base
+# applications in order for the "load" command to work.
+# LDFLAGS - Flags to pass to the compiler when linking object
+# files into an executable application binary such
+# as tclsh.
+# LD_SEARCH_FLAGS-Flags to pass to ld, such as "-R /usr/local/tcl/lib",
+# that tell the run-time dynamic linker where to look
+# for shared libraries such as libtcl.so. Depends on
+# the variable LIB_RUNTIME_DIR in the Makefile.
+# SHLIB_CFLAGS - Flags to pass to cc when compiling the components
+# of a shared library (may request position-independent
+# code, among other things).
+# SHLIB_LD - Base command to use for combining object files
+# into a shared library.
+# SHLIB_LD_LIBS - Dependent libraries for the linker to scan when
+# creating shared libraries. This symbol typically
+# goes at the end of the "ld" commands that build
+# shared libraries. The value of the symbol is
+# "${LIBS}" if all of the dependent libraries should
+# be specified when creating a shared library. If
+# dependent libraries should not be specified (as on
+# SunOS 4.x, where they cause the link to fail, or in
+# general if Tcl and Tk aren't themselves shared
+# libraries), then this symbol has an empty string
+# as its value.
+# SHLIB_SUFFIX - Suffix to use for the names of dynamically loadable
+# extensions. An empty string means we don't know how
+# to use shared libraries on this platform.
+# TCL_LIB_FILE - Name of the file that contains the Tcl library, such
+# as libtcl7.8.so or libtcl7.8.a.
+# TCL_LIB_SUFFIX -Specifies everything that comes after the "libtcl"
+# in the shared library name, using the
+# ${PACKAGE_VERSION} variable to put the version in
+# the right place. This is used by platforms that
+# need non-standard library names.
+# Examples: ${PACKAGE_VERSION}.so.1.1 on NetBSD,
+# since it needs to have a version after the .so, and
+# ${PACKAGE_VERSION}.a on AIX, since the Tcl shared
+# library needs to have a .a extension whereas shared
+# objects for loadable extensions have a .so
+# extension. Defaults to
+# ${PACKAGE_VERSION}${SHLIB_SUFFIX}.
+# TCL_NEEDS_EXP_FILE -
+# 1 means that an export file is needed to link to a
+# shared library.
+# TCL_EXP_FILE - The name of the installed export / import file which
+# should be used to link to the Tcl shared library.
+# Empty if Tcl is unshared.
+# TCL_BUILD_EXP_FILE -
+# The name of the built export / import file which
+# should be used to link to the Tcl shared library.
+# Empty if Tcl is unshared.
+# CFLAGS_DEBUG -
+# Flags used when running the compiler in debug mode
+# CFLAGS_OPTIMIZE -
+# Flags used when running the compiler in optimize mode
+# CFLAGS - We add CFLAGS to pass to the compiler
+#
+# Subst's the following vars:
+# DL_LIBS
+# CFLAGS_DEBUG
+# CFLAGS_OPTIMIZE
+# CFLAGS_WARNING
+#
+# STLIB_LD
+# SHLIB_LD
+# SHLIB_CFLAGS
+# LDFLAGS_DEBUG
+# LDFLAGS_OPTIMIZE
+#--------------------------------------------------------------------
+
+AC_DEFUN(TEA_CONFIG_CFLAGS, [
+ dnl Make sure we are initialized
+ AC_REQUIRE([TEA_INIT])
+
+ # Step 0: Enable 64 bit support?
+
+ AC_MSG_CHECKING([if 64bit support is enabled])
+ AC_ARG_ENABLE(64bit,[ --enable-64bit enable 64bit support (where applicable)], [do64bit=$enableval], [do64bit=no])
+ AC_MSG_RESULT([$do64bit])
+
+ # Step 0.b: Enable Solaris 64 bit VIS support?
+
+ AC_MSG_CHECKING([if 64bit Sparc VIS support is requested])
+ AC_ARG_ENABLE(64bit-vis,[ --enable-64bit-vis enable 64bit Sparc VIS support], [do64bitVIS=$enableval], [do64bitVIS=no])
+ AC_MSG_RESULT([$do64bitVIS])
+
+ if test "$do64bitVIS" = "yes"; then
+ # Force 64bit on with VIS
+ do64bit=yes
+ fi
+
+ # Step 0.c: Cross-compiling options for Windows/CE builds?
+
+ if test "${TEA_PLATFORM}" = "windows" ; then
+ AC_MSG_CHECKING([if Windows/CE build is requested])
+ AC_ARG_ENABLE(wince,[ --enable-wince enable Win/CE support (where applicable)], [doWince=$enableval], [doWince=no])
+ AC_MSG_RESULT($doWince)
+ fi
+
+ # Step 1: set the variable "system" to hold the name and version number
+ # for the system. This can usually be done via the "uname" command, but
+ # there are a few systems, like Next, where this doesn't work.
+
+ AC_MSG_CHECKING([system version (for dynamic loading)])
+ if test -f /usr/lib/NextStep/software_version; then
+ system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version`
+ else
+ system=`uname -s`-`uname -r`
+ if test "$?" -ne 0 ; then
+ AC_MSG_RESULT([unknown (can't find uname command)])
+ system=unknown
+ else
+ # Special check for weird MP-RAS system (uname returns weird
+ # results, and the version is kept in special file).
+
+ if test -r /etc/.relid -a "X`uname -n`" = "X`uname -s`" ; then
+ system=MP-RAS-`awk '{print $3}' /etc/.relid`
+ fi
+ if test "`uname -s`" = "AIX" ; then
+ system=AIX-`uname -v`.`uname -r`
+ fi
+ if test "${TEA_PLATFORM}" = "windows" ; then
+ system=windows
+ fi
+ AC_MSG_RESULT([$system])
+ fi
+ fi
+
+ # Step 2: check for existence of -ldl library. This is needed because
+ # Linux can use either -ldl or -ldld for dynamic loading.
+
+ AC_CHECK_LIB(dl, dlopen, have_dl=yes, have_dl=no)
+
+ # Step 3: set configuration options based on system name and version.
+ # This is similar to Tcl's unix/tcl.m4 except that we've added a
+ # "windows" case and CC_SEARCH_FLAGS becomes LD_SEARCH_FLAGS for us
+ # (and we have no CC_SEARCH_FLAGS).
+
+ do64bit_ok=no
+ LDFLAGS_ORIG="$LDFLAGS"
+ TCL_EXPORT_FILE_SUFFIX=""
+ UNSHARED_LIB_SUFFIX=""
+ TCL_TRIM_DOTS='`echo ${PACKAGE_VERSION} | tr -d .`'
+ ECHO_VERSION='`echo ${PACKAGE_VERSION}`'
+ TCL_LIB_VERSIONS_OK=ok
+ CFLAGS_DEBUG=-g
+ if test "$GCC" = "yes" ; then
+ CFLAGS_OPTIMIZE=-O2
+ CFLAGS_WARNING="-Wall -Wno-implicit-int"
+ else
+ CFLAGS_OPTIMIZE=-O
+ CFLAGS_WARNING=""
+ fi
+ TCL_NEEDS_EXP_FILE=0
+ TCL_BUILD_EXP_FILE=""
+ TCL_EXP_FILE=""
+dnl FIXME: Replace AC_CHECK_PROG with AC_CHECK_TOOL once cross compiling is fixed.
+dnl AC_CHECK_TOOL(AR, ar, :)
+ AC_CHECK_PROG(AR, ar, ar)
+ STLIB_LD='${AR} cr'
+ LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH"
+ case $system in
+ windows)
+ # This is a 2-stage check to make sure we have the 64-bit SDK
+ # We have to know where the SDK is installed.
+ # This magic is based on MS Platform SDK for Win2003 SP1 - hobbs
+ # MACHINE is IX86 for LINK, but this is used by the manifest,
+ # which requires x86|amd64|ia64.
+ MACHINE="X86"
+ if test "$do64bit" != "no" ; then
+ if test "x${MSSDK}x" = "xx" ; then
+ MSSDK="C:/Progra~1/Microsoft Platform SDK"
+ fi
+ MSSDK=`echo "$MSSDK" | sed -e 's!\\\!/!g'`
+ PATH64=""
+ case "$do64bit" in
+ amd64|x64|yes)
+ MACHINE="AMD64" ; # default to AMD64 64-bit build
+ PATH64="${MSSDK}/Bin/Win64/x86/AMD64"
+ ;;
+ ia64)
+ MACHINE="IA64"
+ PATH64="${MSSDK}/Bin/Win64"
+ ;;
+ esac
+ if test ! -d "${PATH64}" ; then
+ AC_MSG_WARN([Could not find 64-bit $MACHINE SDK to enable 64bit mode])
+ AC_MSG_WARN([Ensure latest Platform SDK is installed])
+ do64bit="no"
+ else
+ AC_MSG_RESULT([ Using 64-bit $MACHINE mode])
+ do64bit_ok="yes"
+ fi
+ fi
+
+ if test "$doWince" != "no" ; then
+ if test "$do64bit" != "no" ; then
+ AC_MSG_ERROR([Windows/CE and 64-bit builds incompatible])
+ fi
+ if test "$GCC" = "yes" ; then
+ AC_MSG_ERROR([Windows/CE and GCC builds incompatible])
+ fi
+ TEA_PATH_CELIB
+ # Set defaults for common evc4/PPC2003 setup
+ # Currently Tcl requires 300+, possibly 420+ for sockets
+ CEVERSION=420; # could be 211 300 301 400 420 ...
+ TARGETCPU=ARMV4; # could be ARMV4 ARM MIPS SH3 X86 ...
+ ARCH=ARM; # could be ARM MIPS X86EM ...
+ PLATFORM="Pocket PC 2003"; # or "Pocket PC 2002"
+ if test "$doWince" != "yes"; then
+ # If !yes then the user specified something
+ # Reset ARCH to allow user to skip specifying it
+ ARCH=
+ eval `echo $doWince | awk -F, '{ \
+ if (length([$]1)) { printf "CEVERSION=\"%s\"\n", [$]1; \
+ if ([$]1 < 400) { printf "PLATFORM=\"Pocket PC 2002\"\n" } }; \
+ if (length([$]2)) { printf "TARGETCPU=\"%s\"\n", toupper([$]2) }; \
+ if (length([$]3)) { printf "ARCH=\"%s\"\n", toupper([$]3) }; \
+ if (length([$]4)) { printf "PLATFORM=\"%s\"\n", [$]4 }; \
+ }'`
+ if test "x${ARCH}" = "x" ; then
+ ARCH=$TARGETCPU;
+ fi
+ fi
+ OSVERSION=WCE$CEVERSION;
+ if test "x${WCEROOT}" = "x" ; then
+ WCEROOT="C:/Program Files/Microsoft eMbedded C++ 4.0"
+ if test ! -d "${WCEROOT}" ; then
+ WCEROOT="C:/Program Files/Microsoft eMbedded Tools"
+ fi
+ fi
+ if test "x${SDKROOT}" = "x" ; then
+ SDKROOT="C:/Program Files/Windows CE Tools"
+ if test ! -d "${SDKROOT}" ; then
+ SDKROOT="C:/Windows CE Tools"
+ fi
+ fi
+ WCEROOT=`echo "$WCEROOT" | sed -e 's!\\\!/!g'`
+ SDKROOT=`echo "$SDKROOT" | sed -e 's!\\\!/!g'`
+ if test ! -d "${SDKROOT}/${OSVERSION}/${PLATFORM}/Lib/${TARGETCPU}" \
+ -o ! -d "${WCEROOT}/EVC/${OSVERSION}/bin"; then
+ AC_MSG_ERROR([could not find PocketPC SDK or target compiler to enable WinCE mode [$CEVERSION,$TARGETCPU,$ARCH,$PLATFORM]])
+ doWince="no"
+ else
+ # We could PATH_NOSPACE these, but that's not important,
+ # as long as we quote them when used.
+ CEINCLUDE="${SDKROOT}/${OSVERSION}/${PLATFORM}/include"
+ if test -d "${CEINCLUDE}/${TARGETCPU}" ; then
+ CEINCLUDE="${CEINCLUDE}/${TARGETCPU}"
+ fi
+ CELIBPATH="${SDKROOT}/${OSVERSION}/${PLATFORM}/Lib/${TARGETCPU}"
+ fi
+ fi
+
+ if test "$GCC" != "yes" ; then
+ if test "${SHARED_BUILD}" = "0" ; then
+ runtime=-MT
+ else
+ runtime=-MD
+ fi
+
+ if test "$do64bit" != "no" ; then
+ # All this magic is necessary for the Win64 SDK RC1 - hobbs
+ CC="\"${PATH64}/cl.exe\""
+ CFLAGS="${CFLAGS} -I\"${MSSDK}/Include\" -I\"${MSSDK}/Include/crt\" -I\"${MSSDK}/Include/crt/sys\""
+ RC="\"${MSSDK}/bin/rc.exe\""
+ lflags="-nologo -MACHINE:${MACHINE} -LIBPATH:\"${MSSDK}/Lib/${MACHINE}\""
+ LINKBIN="\"${PATH64}/link.exe\""
+ CFLAGS_DEBUG="-nologo -Zi -Od -W3 ${runtime}d"
+ CFLAGS_OPTIMIZE="-nologo -O2 -W2 ${runtime}"
+ # Avoid 'unresolved external symbol __security_cookie'
+ # errors, c.f. http://support.microsoft.com/?id=894573
+ TEA_ADD_LIBS([bufferoverflowU.lib])
+ elif test "$doWince" != "no" ; then
+ CEBINROOT="${WCEROOT}/EVC/${OSVERSION}/bin"
+ if test "${TARGETCPU}" = "X86"; then
+ CC="\"${CEBINROOT}/cl.exe\""
+ else
+ CC="\"${CEBINROOT}/cl${ARCH}.exe\""
+ fi
+ CFLAGS="$CFLAGS -I\"${CELIB_DIR}/inc\" -I\"${CEINCLUDE}\""
+ RC="\"${WCEROOT}/Common/EVC/bin/rc.exe\""
+ arch=`echo ${ARCH} | awk '{print tolower([$]0)}'`
+ defs="${ARCH} _${ARCH}_ ${arch} PALM_SIZE _MT _WINDOWS"
+ if test "${SHARED_BUILD}" = "1" ; then
+ # Static CE builds require static celib as well
+ defs="${defs} _DLL"
+ fi
+ for i in $defs ; do
+ AC_DEFINE_UNQUOTED($i, 1, [WinCE def ]$i)
+ done
+ AC_DEFINE_UNQUOTED(_WIN32_WCE, $CEVERSION, [_WIN32_WCE version])
+ AC_DEFINE_UNQUOTED(UNDER_CE, $CEVERSION, [UNDER_CE version])
+ CFLAGS_DEBUG="-nologo -Zi -Od"
+ CFLAGS_OPTIMIZE="-nologo -Ox"
+ lversion=`echo ${CEVERSION} | sed -e 's/\(.\)\(..\)/\1\.\2/'`
+ lflags="-MACHINE:${ARCH} -LIBPATH:\"${CELIBPATH}\" -subsystem:windowsce,${lversion} -nologo"
+ LINKBIN="\"${CEBINROOT}/link.exe\""
+ AC_SUBST(CELIB_DIR)
+ else
+ RC="rc"
+ lflags="-nologo"
+ LINKBIN="link"
+ CFLAGS_DEBUG="-nologo -Z7 -Od -W3 -WX ${runtime}d"
+ CFLAGS_OPTIMIZE="-nologo -O2 -W2 ${runtime}"
+ fi
+ fi
+
+ if test "$GCC" = "yes"; then
+ # mingw gcc mode
+ RC="windres"
+ CFLAGS_DEBUG="-g"
+ CFLAGS_OPTIMIZE="-O2 -fomit-frame-pointer"
+ SHLIB_LD="$CC -shared"
+ UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
+ LDFLAGS_CONSOLE="-wl,--subsystem,console ${lflags}"
+ LDFLAGS_WINDOW="-wl,--subsystem,windows ${lflags}"
+ else
+ SHLIB_LD="${LINKBIN} -dll ${lflags}"
+ # link -lib only works when -lib is the first arg
+ STLIB_LD="${LINKBIN} -lib ${lflags}"
+ UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.lib'
+ PATHTYPE=-w
+ # For information on what debugtype is most useful, see:
+ # http://msdn.microsoft.com/library/en-us/dnvc60/html/gendepdebug.asp
+ # This essentially turns it all on.
+ LDFLAGS_DEBUG="-debug:full -debugtype:both -warn:2"
+ LDFLAGS_OPTIMIZE="-release"
+ if test "$doWince" != "no" ; then
+ LDFLAGS_CONSOLE="-link ${lflags}"
+ LDFLAGS_WINDOW=${LDFLAGS_CONSOLE}
+ else
+ LDFLAGS_CONSOLE="-link -subsystem:console ${lflags}"
+ LDFLAGS_WINDOW="-link -subsystem:windows ${lflags}"
+ fi
+ fi
+
+ SHLIB_LD_LIBS='${LIBS}'
+ SHLIB_SUFFIX=".dll"
+ SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.dll'
+
+ TCL_LIB_VERSIONS_OK=nodots
+ # Bogus to avoid getting this turned off
+ DL_OBJS="tclLoadNone.obj"
+ ;;
+ AIX-*)
+ if test "${TCL_THREADS}" = "1" -a "$GCC" != "yes" ; then
+ # AIX requires the _r compiler when gcc isn't being used
+ case "${CC}" in
+ *_r)
+ # ok ...
+ ;;
+ *)
+ CC=${CC}_r
+ ;;
+ esac
+ AC_MSG_RESULT([Using $CC for compiling with threads])
+ fi
+ LIBS="$LIBS -lc"
+ SHLIB_CFLAGS=""
+ SHLIB_SUFFIX=".so"
+ SHLIB_LD_LIBS='${LIBS}'
+
+ DL_OBJS="tclLoadDl.o"
+ LD_LIBRARY_PATH_VAR="LIBPATH"
+
+ # AIX v<=4.1 has some different flags than 4.2+
+ if test "$system" = "AIX-4.1" -o "`uname -v`" -lt "4" ; then
+ #LIBOBJS="$LIBOBJS tclLoadAix.o"
+ AC_LIBOBJ([tclLoadAix])
+ DL_LIBS="-lld"
+ fi
+
+ # Check to enable 64-bit flags for compiler/linker on AIX 4+
+ if test "$do64bit" = "yes" -a "`uname -v`" -gt "3" ; then
+ if test "$GCC" = "yes" ; then
+ AC_MSG_WARN("64bit mode not supported with GCC on $system")
+ else
+ do64bit_ok=yes
+ CFLAGS="$CFLAGS -q64"
+ LDFLAGS="$LDFLAGS -q64"
+ RANLIB="${RANLIB} -X64"
+ AR="${AR} -X64"
+ SHLIB_LD_FLAGS="-b64"
+ fi
+ fi
+
+ if test "`uname -m`" = "ia64" ; then
+ # AIX-5 uses ELF style dynamic libraries on IA-64, but not PPC
+ SHLIB_LD="/usr/ccs/bin/ld -G -z text"
+ # AIX-5 has dl* in libc.so
+ DL_LIBS=""
+ if test "$GCC" = "yes" ; then
+ LD_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
+ else
+ LD_SEARCH_FLAGS='-R${LIB_RUNTIME_DIR}'
+ fi
+ else
+ if test "$GCC" = "yes" ; then
+ SHLIB_LD="gcc -shared"
+ else
+ SHLIB_LD="/bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry"
+ fi
+ SHLIB_LD="${TCL_SRC_DIR}/unix/ldAix ${SHLIB_LD} ${SHLIB_LD_FLAGS}"
+ DL_LIBS="-ldl"
+ LD_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+ TCL_NEEDS_EXP_FILE=1
+ TCL_EXPORT_FILE_SUFFIX='${PACKAGE_VERSION}.exp'
+ fi
+
+ # On AIX <=v4 systems, libbsd.a has to be linked in to support
+ # non-blocking file IO. This library has to be linked in after
+ # the MATH_LIBS or it breaks the pow() function. The way to
+ # insure proper sequencing, is to add it to the tail of MATH_LIBS.
+ # This library also supplies gettimeofday.
+ #
+ # AIX does not have a timezone field in struct tm. When the AIX
+ # bsd library is used, the timezone global and the gettimeofday
+ # methods are to be avoided for timezone deduction instead, we
+ # deduce the timezone by comparing the localtime result on a
+ # known GMT value.
+
+ AC_CHECK_LIB(bsd, gettimeofday, libbsd=yes, libbsd=no)
+ if test $libbsd = yes; then
+ MATH_LIBS="$MATH_LIBS -lbsd"
+ AC_DEFINE(USE_DELTA_FOR_TZ, 1, [Do we need a special AIX hack for timezones?])
+ fi
+ ;;
+ BeOS*)
+ SHLIB_CFLAGS="-fPIC"
+ SHLIB_LD="${CC} -nostart"
+ SHLIB_LD_LIBS='${LIBS}'
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS="-ldl"
+ ;;
+ BSD/OS-2.1*|BSD/OS-3*)
+ SHLIB_CFLAGS=""
+ SHLIB_LD="shlicc -r"
+ SHLIB_LD_LIBS='${LIBS}'
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS="-ldl"
+ LD_SEARCH_FLAGS=""
+ ;;
+ BSD/OS-4.*)
+ SHLIB_CFLAGS="-export-dynamic -fPIC"
+ SHLIB_LD="cc -shared"
+ SHLIB_LD_LIBS='${LIBS}'
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS="-ldl"
+ LDFLAGS="$LDFLAGS -export-dynamic"
+ LD_SEARCH_FLAGS=""
+ ;;
+ dgux*)
+ SHLIB_CFLAGS="-K PIC"
+ SHLIB_LD="cc -G"
+ SHLIB_LD_LIBS=""
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS="-ldl"
+ LD_SEARCH_FLAGS=""
+ ;;
+ HP-UX-*.11.*)
+ # Use updated header definitions where possible
+ AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, [Do we want to use the XOPEN network library?])
+
+ SHLIB_SUFFIX=".sl"
+ AC_CHECK_LIB(dld, shl_load, tcl_ok=yes, tcl_ok=no)
+ if test "$tcl_ok" = yes; then
+ SHLIB_CFLAGS="+z"
+ SHLIB_LD="ld -b"
+ SHLIB_LD_LIBS='${LIBS}'
+ DL_OBJS="tclLoadShl.o"
+ DL_LIBS="-ldld"
+ LDFLAGS="$LDFLAGS -Wl,-E"
+ LD_SEARCH_FLAGS='+s +b ${LIB_RUNTIME_DIR}:.'
+ LD_LIBRARY_PATH_VAR="SHLIB_PATH"
+ fi
+ if test "$GCC" = "yes" ; then
+ SHLIB_LD="gcc -shared"
+ SHLIB_LD_LIBS='${LIBS}'
+ LD_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.'
+ fi
+
+ # Users may want PA-RISC 1.1/2.0 portable code - needs HP cc
+ #CFLAGS="$CFLAGS +DAportable"
+
+ # Check to enable 64-bit flags for compiler/linker
+ if test "$do64bit" = "yes" ; then
+ if test "$GCC" = "yes" ; then
+ hpux_arch=`${CC} -dumpmachine`
+ case $hpux_arch in
+ hppa64*)
+ # 64-bit gcc in use. Fix flags for GNU ld.
+ do64bit_ok=yes
+ SHLIB_LD="${CC} -shared"
+ SHLIB_LD_LIBS='${LIBS}'
+ ;;
+ *)
+ AC_MSG_WARN("64bit mode not supported with GCC on $system")
+ ;;
+ esac
+ else
+ do64bit_ok=yes
+ CFLAGS="$CFLAGS +DD64"
+ LDFLAGS="$LDFLAGS +DD64"
+ fi
+ fi
+ ;;
+ HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*)
+ SHLIB_SUFFIX=".sl"
+ AC_CHECK_LIB(dld, shl_load, tcl_ok=yes, tcl_ok=no)
+ if test "$tcl_ok" = yes; then
+ SHLIB_CFLAGS="+z"
+ SHLIB_LD="ld -b"
+ SHLIB_LD_LIBS=""
+ DL_OBJS="tclLoadShl.o"
+ DL_LIBS="-ldld"
+ LDFLAGS="$LDFLAGS -Wl,-E"
+ LD_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.'
+ fi
+ LD_LIBRARY_PATH_VAR="SHLIB_PATH"
+ ;;
+ IRIX-4.*)
+ SHLIB_CFLAGS="-G 0"
+ SHLIB_SUFFIX=".a"
+ SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r -G 0"
+ SHLIB_LD_LIBS='${LIBS}'
+ DL_OBJS="tclLoadAout.o"
+ DL_LIBS=""
+ LDFLAGS="$LDFLAGS -Wl,-D,08000000"
+ LD_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+ SHARED_LIB_SUFFIX='${PACKAGE_VERSION}.a'
+ ;;
+ IRIX-5.*)
+ SHLIB_CFLAGS=""
+ SHLIB_LD="ld -shared -rdata_shared"
+ SHLIB_LD_LIBS='${LIBS}'
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS=""
+ LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+ ;;
+ IRIX-6.*|IRIX64-6.5*)
+ SHLIB_CFLAGS=""
+ SHLIB_LD="ld -n32 -shared -rdata_shared"
+ SHLIB_LD_LIBS='${LIBS}'
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS=""
+ LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+ if test "$GCC" = "yes" ; then
+ CFLAGS="$CFLAGS -mabi=n32"
+ LDFLAGS="$LDFLAGS -mabi=n32"
+ else
+ case $system in
+ IRIX-6.3)
+ # Use to build 6.2 compatible binaries on 6.3.
+ CFLAGS="$CFLAGS -n32 -D_OLD_TERMIOS"
+ ;;
+ *)
+ CFLAGS="$CFLAGS -n32"
+ ;;
+ esac
+ LDFLAGS="$LDFLAGS -n32"
+ fi
+ ;;
+ IRIX64-6.*)
+ SHLIB_CFLAGS=""
+ SHLIB_LD="ld -n32 -shared -rdata_shared"
+ SHLIB_LD_LIBS='${LIBS}'
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS=""
+ LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+
+ # Check to enable 64-bit flags for compiler/linker
+
+ if test "$do64bit" = "yes" ; then
+ if test "$GCC" = "yes" ; then
+ AC_MSG_WARN([64bit mode not supported by gcc])
+ else
+ do64bit_ok=yes
+ SHLIB_LD="ld -64 -shared -rdata_shared"
+ CFLAGS="$CFLAGS -64"
+ LDFLAGS="$LDFLAGS -64"
+ fi
+ fi
+ ;;
+ Linux*)
+ SHLIB_CFLAGS="-fPIC"
+ SHLIB_LD_LIBS='${LIBS}'
+ SHLIB_SUFFIX=".so"
+
+ CFLAGS_OPTIMIZE="-O2 -fomit-frame-pointer"
+ # egcs-2.91.66 on Redhat Linux 6.0 generates lots of warnings
+ # when you inline the string and math operations. Turn this off to
+ # get rid of the warnings.
+
+ #CFLAGS_OPTIMIZE="${CFLAGS_OPTIMIZE} -D__NO_STRING_INLINES -D__NO_MATH_INLINES"
+
+ if test "$have_dl" = yes; then
+ SHLIB_LD="${CC} -shared"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS="-ldl"
+ LDFLAGS="$LDFLAGS -Wl,--export-dynamic"
+ LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+ else
+ AC_CHECK_HEADER(dld.h, [
+ SHLIB_LD="ld -shared"
+ DL_OBJS="tclLoadDld.o"
+ DL_LIBS="-ldld"
+ LD_SEARCH_FLAGS=""])
+ fi
+ if test "`uname -m`" = "alpha" ; then
+ CFLAGS="$CFLAGS -mieee"
+ fi
+
+ # The combo of gcc + glibc has a bug related
+ # to inlining of functions like strtod(). The
+ # -fno-builtin flag should address this problem
+ # but it does not work. The -fno-inline flag
+ # is kind of overkill but it works.
+ # Disable inlining only when one of the
+ # files in compat/*.c is being linked in.
+ if test x"${USE_COMPAT}" != x ; then
+ CFLAGS="$CFLAGS -fno-inline"
+ fi
+
+ ;;
+ GNU*)
+ SHLIB_CFLAGS="-fPIC"
+ SHLIB_LD_LIBS='${LIBS}'
+ SHLIB_SUFFIX=".so"
+
+ if test "$have_dl" = yes; then
+ SHLIB_LD="${CC} -shared"
+ DL_OBJS=""
+ DL_LIBS="-ldl"
+ LDFLAGS="$LDFLAGS -Wl,--export-dynamic"
+ LD_SEARCH_FLAGS=""
+ else
+ AC_CHECK_HEADER(dld.h, [
+ SHLIB_LD="ld -shared"
+ DL_OBJS=""
+ DL_LIBS="-ldld"
+ LD_SEARCH_FLAGS=""])
+ fi
+ if test "`uname -m`" = "alpha" ; then
+ CFLAGS="$CFLAGS -mieee"
+ fi
+ ;;
+ MP-RAS-02*)
+ SHLIB_CFLAGS="-K PIC"
+ SHLIB_LD="cc -G"
+ SHLIB_LD_LIBS=""
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS="-ldl"
+ LD_SEARCH_FLAGS=""
+ ;;
+ MP-RAS-*)
+ SHLIB_CFLAGS="-K PIC"
+ SHLIB_LD="cc -G"
+ SHLIB_LD_LIBS=""
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS="-ldl"
+ LDFLAGS="$LDFLAGS -Wl,-Bexport"
+ LD_SEARCH_FLAGS=""
+ ;;
+ NetBSD-*|FreeBSD-[[1-2]].*)
+ # Not available on all versions: check for include file.
+ AC_CHECK_HEADER(dlfcn.h, [
+ # NetBSD/SPARC needs -fPIC, -fpic will not do.
+ SHLIB_CFLAGS="-fPIC"
+ SHLIB_LD="ld -Bshareable -x"
+ SHLIB_LD_LIBS=""
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS=""
+ LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+ AC_MSG_CHECKING([for ELF])
+ AC_EGREP_CPP(yes, [
+#ifdef __ELF__
+ yes
+#endif
+ ],
+ AC_MSG_RESULT([yes])
+ SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so',
+ AC_MSG_RESULT([no])
+ SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.1.0'
+ )
+ ], [
+ SHLIB_CFLAGS=""
+ SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r"
+ SHLIB_LD_LIBS='${LIBS}'
+ SHLIB_SUFFIX=".a"
+ DL_OBJS="tclLoadAout.o"
+ DL_LIBS=""
+ LD_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+ SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
+ ])
+
+ # FreeBSD doesn't handle version numbers with dots.
+
+ UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
+ TCL_LIB_VERSIONS_OK=nodots
+ ;;
+ OpenBSD-*)
+ SHLIB_LD="${CC} -shared"
+ SHLIB_LD_LIBS='${LIBS}'
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS=""
+ LD_SEARCH_FLAGS=""
+ AC_MSG_CHECKING(for ELF)
+ AC_EGREP_CPP(yes, [
+#ifdef __ELF__
+ yes
+#endif
+ ],
+ [AC_MSG_RESULT(yes)
+ SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.1.0'],
+ [AC_MSG_RESULT(no)
+ SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.1.0']
+ )
+
+ # OpenBSD doesn't do version numbers with dots.
+ UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
+ TCL_LIB_VERSIONS_OK=nodots
+ ;;
+ FreeBSD-*)
+ # FreeBSD 3.* and greater have ELF.
+ SHLIB_CFLAGS="-fPIC"
+ SHLIB_LD="ld -Bshareable -x"
+ SHLIB_LD_LIBS='${LIBS}'
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS=""
+ LDFLAGS="$LDFLAGS -export-dynamic"
+ LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+ if test "${TCL_THREADS}" = "1" ; then
+ # The -pthread needs to go in the CFLAGS, not LIBS
+ LIBS=`echo $LIBS | sed s/-pthread//`
+ CFLAGS="$CFLAGS -pthread"
+ LDFLAGS="$LDFLAGS -pthread"
+ fi
+ case $system in
+ FreeBSD-3.*)
+ # FreeBSD-3 doesn't handle version numbers with dots.
+ UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
+ SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so'
+ TCL_LIB_VERSIONS_OK=nodots
+ ;;
+ esac
+ ;;
+ Darwin-*)
+ CFLAGS_OPTIMIZE="-Os"
+ SHLIB_CFLAGS="-fno-common"
+ if test $do64bit = yes; then
+ do64bit_ok=yes
+ CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5"
+ fi
+ SHLIB_LD='${CC} -dynamiclib ${CFLAGS} ${LDFLAGS}'
+ AC_CACHE_CHECK([if ld accepts -single_module flag], tcl_cv_ld_single_module, [
+ hold_ldflags=$LDFLAGS
+ LDFLAGS="$LDFLAGS -dynamiclib -Wl,-single_module"
+ AC_TRY_LINK(, [int i;], tcl_cv_ld_single_module=yes, tcl_cv_ld_single_module=no)
+ LDFLAGS=$hold_ldflags])
+ if test $tcl_cv_ld_single_module = yes; then
+ SHLIB_LD="${SHLIB_LD} -Wl,-single_module"
+ fi
+ SHLIB_LD_LIBS='${LIBS}'
+ SHLIB_SUFFIX=".dylib"
+ DL_OBJS="tclLoadDyld.o"
+ DL_LIBS=""
+ # Don't use -prebind when building for Mac OS X 10.4 or later only:
+ test -z "${MACOSX_DEPLOYMENT_TARGET}" || \
+ test "`echo "${MACOSX_DEPLOYMENT_TARGET}" | awk -F. '{print [$]2}'`" -lt 4 && \
+ LDFLAGS="$LDFLAGS -prebind"
+ LDFLAGS="$LDFLAGS -headerpad_max_install_names"
+ AC_CACHE_CHECK([if ld accepts -search_paths_first flag], tcl_cv_ld_search_paths_first, [
+ hold_ldflags=$LDFLAGS
+ LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
+ AC_TRY_LINK(, [int i;], tcl_cv_ld_search_paths_first=yes, tcl_cv_ld_search_paths_first=no)
+ LDFLAGS=$hold_ldflags])
+ if test $tcl_cv_ld_search_paths_first = yes; then
+ LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
+ fi
+ LD_SEARCH_FLAGS=""
+ LD_LIBRARY_PATH_VAR="DYLD_LIBRARY_PATH"
+ ;;
+ NEXTSTEP-*)
+ SHLIB_CFLAGS=""
+ SHLIB_LD="cc -nostdlib -r"
+ SHLIB_LD_LIBS=""
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadNext.o"
+ DL_LIBS=""
+ LD_SEARCH_FLAGS=""
+ ;;
+ OS/390-*)
+ CFLAGS_OPTIMIZE="" # Optimizer is buggy
+ AC_DEFINE(_OE_SOCKETS, 1, # needed in sys/socket.h
+ [Should OS/390 do the right thing with sockets?])
+ ;;
+ OSF1-1.0|OSF1-1.1|OSF1-1.2)
+ # OSF/1 1.[012] from OSF, and derivatives, including Paragon OSF/1
+ SHLIB_CFLAGS=""
+ # Hack: make package name same as library name
+ SHLIB_LD='ld -R -export $@:'
+ SHLIB_LD_LIBS=""
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadOSF.o"
+ DL_LIBS=""
+ LD_SEARCH_FLAGS=""
+ ;;
+ OSF1-1.*)
+ # OSF/1 1.3 from OSF using ELF, and derivatives, including AD2
+ SHLIB_CFLAGS="-fPIC"
+ if test "$SHARED_BUILD" = "1" ; then
+ SHLIB_LD="ld -shared"
+ else
+ SHLIB_LD="ld -non_shared"
+ fi
+ SHLIB_LD_LIBS=""
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS=""
+ LD_SEARCH_FLAGS=""
+ ;;
+ OSF1-V*)
+ # Digital OSF/1
+ SHLIB_CFLAGS=""
+ if test "$SHARED_BUILD" = "1" ; then
+ SHLIB_LD="${CC} -shared"
+ else
+ SHLIB_LD="${CC} -non_shared"
+ fi
+ SHLIB_LD_LIBS='${LIBS}'
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS=""
+ LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
+ if test "$GCC" = "yes" ; then
+ CFLAGS="$CFLAGS -mieee"
+ else
+ CFLAGS="$CFLAGS -DHAVE_TZSET -std1 -ieee"
+ fi
+ # see pthread_intro(3) for pthread support on osf1, k.furukawa
+ if test "${TCL_THREADS}" = "1" ; then
+ CFLAGS="$CFLAGS -DHAVE_PTHREAD_ATTR_SETSTACKSIZE"
+ CFLAGS="$CFLAGS -DTCL_THREAD_STACK_MIN=PTHREAD_STACK_MIN*64"
+ LIBS=`echo $LIBS | sed s/-lpthreads//`
+ if test "$GCC" = "yes" ; then
+ LIBS="$LIBS -lpthread -lmach -lexc"
+ else
+ CFLAGS="$CFLAGS -pthread"
+ LDFLAGS="$LDFLAGS -pthread"
+ fi
+ fi
+
+ ;;
+ QNX-6*)
+ # QNX RTP
+ # This may work for all QNX, but it was only reported for v6.
+ SHLIB_CFLAGS="-fPIC"
+ SHLIB_LD="ld -Bshareable -x"
+ SHLIB_LD_LIBS=""
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ # dlopen is in -lc on QNX
+ DL_LIBS=""
+ LD_SEARCH_FLAGS=""
+ ;;
+ RISCos-*)
+ SHLIB_CFLAGS="-G 0"
+ SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r -G 0"
+ SHLIB_LD_LIBS='${LIBS}'
+ SHLIB_SUFFIX=".a"
+ DL_OBJS="tclLoadAout.o"
+ DL_LIBS=""
+ LDFLAGS="$LDFLAGS -Wl,-D,08000000"
+ LD_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+ ;;
+ SCO_SV-3.2*)
+ # Note, dlopen is available only on SCO 3.2.5 and greater. However,
+ # this test works, since "uname -s" was non-standard in 3.2.4 and
+ # below.
+ if test "$GCC" = "yes" ; then
+ SHLIB_CFLAGS="-fPIC -melf"
+ LDFLAGS="$LDFLAGS -melf -Wl,-Bexport"
+ else
+ SHLIB_CFLAGS="-Kpic -belf"
+ LDFLAGS="$LDFLAGS -belf -Wl,-Bexport"
+ fi
+ SHLIB_LD="ld -G"
+ SHLIB_LD_LIBS=""
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS=""
+ LD_SEARCH_FLAGS=""
+ ;;
+ SINIX*5.4*)
+ SHLIB_CFLAGS="-K PIC"
+ SHLIB_LD="cc -G"
+ SHLIB_LD_LIBS=""
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS="-ldl"
+ LD_SEARCH_FLAGS=""
+ ;;
+ SunOS-4*)
+ SHLIB_CFLAGS="-PIC"
+ SHLIB_LD="ld"
+ SHLIB_LD_LIBS=""
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS="-ldl"
+ LD_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+
+ # SunOS can't handle version numbers with dots in them in library
+ # specs, like -ltcl7.5, so use -ltcl75 instead. Also, it
+ # requires an extra version number at the end of .so file names.
+ # So, the library has to have a name like libtcl75.so.1.0
+
+ SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.1.0'
+ UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
+ TCL_LIB_VERSIONS_OK=nodots
+ ;;
+ SunOS-5.[[0-6]])
+ # Careful to not let 5.10+ fall into this case
+
+ # Note: If _REENTRANT isn't defined, then Solaris
+ # won't define thread-safe library routines.
+
+ AC_DEFINE(_REENTRANT, 1, [Do we want the reentrant OS API?])
+ AC_DEFINE(_POSIX_PTHREAD_SEMANTICS, 1,
+ [Do we really want to follow the standard? Yes we do!])
+
+ SHLIB_CFLAGS="-KPIC"
+
+ # Note: need the LIBS below, otherwise Tk won't find Tcl's
+ # symbols when dynamically loaded into tclsh.
+
+ SHLIB_LD_LIBS='${LIBS}'
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS="-ldl"
+ if test "$GCC" = "yes" ; then
+ SHLIB_LD="$CC -shared"
+ LD_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
+ else
+ SHLIB_LD="/usr/ccs/bin/ld -G -z text"
+ LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}'
+ fi
+ ;;
+ SunOS-5*)
+
+ # Note: If _REENTRANT isn't defined, then Solaris
+ # won't define thread-safe library routines.
+
+ AC_DEFINE(_REENTRANT, 1, [Do we want the reentrant OS API?])
+ AC_DEFINE(_POSIX_PTHREAD_SEMANTICS, 1,
+ [Do we really want to follow the standard? Yes we do!])
+
+ SHLIB_CFLAGS="-KPIC"
+
+ # Check to enable 64-bit flags for compiler/linker
+ if test "$do64bit" = "yes" ; then
+ arch=`isainfo`
+ if test "$arch" = "sparcv9 sparc" ; then
+ if test "$GCC" = "yes" ; then
+ if test "`gcc -dumpversion` | awk -F. '{print $1}'" -lt "3" ; then
+ AC_MSG_WARN([64bit mode not supported with GCC < 3.2 on $system])
+ else
+ do64bit_ok=yes
+ CFLAGS="$CFLAGS -m64 -mcpu=v9"
+ LDFLAGS="$LDFLAGS -m64 -mcpu=v9"
+ SHLIB_CFLAGS="-fPIC"
+ fi
+ else
+ do64bit_ok=yes
+ if test "$do64bitVIS" = "yes" ; then
+ CFLAGS="$CFLAGS -xarch=v9a"
+ LDFLAGS="$LDFLAGS -xarch=v9a"
+ else
+ CFLAGS="$CFLAGS -xarch=v9"
+ LDFLAGS="$LDFLAGS -xarch=v9"
+ fi
+ # Solaris 64 uses this as well
+ #LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH_64"
+ fi
+ elif test "$arch" = "amd64 i386" ; then
+ if test "$GCC" = "yes" ; then
+ AC_MSG_WARN([64bit mode not supported with GCC on $system])
+ else
+ do64bit_ok=yes
+ CFLAGS="$CFLAGS -xarch=amd64"
+ LDFLAGS="$LDFLAGS -xarch=amd64"
+ fi
+ else
+ AC_MSG_WARN([64bit mode not supported for $arch])
+ fi
+ fi
+
+ # Note: need the LIBS below, otherwise Tk won't find Tcl's
+ # symbols when dynamically loaded into tclsh.
+
+ SHLIB_LD_LIBS='${LIBS}'
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS="-ldl"
+ if test "$GCC" = "yes" ; then
+ SHLIB_LD="$CC -shared"
+ LD_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
+ if test "$do64bit" = "yes" ; then
+ # We need to specify -static-libgcc or we need to
+ # add the path to the sparv9 libgcc.
+ # JH: static-libgcc is necessary for core Tcl, but may
+ # not be necessary for extensions.
+ SHLIB_LD="$SHLIB_LD -m64 -mcpu=v9 -static-libgcc"
+ # for finding sparcv9 libgcc, get the regular libgcc
+ # path, remove so name and append 'sparcv9'
+ #v9gcclibdir="`gcc -print-file-name=libgcc_s.so` | ..."
+ #LD_SEARCH_FLAGS="${LD_SEARCH_FLAGS},-R,$v9gcclibdir"
+ fi
+ else
+ SHLIB_LD="/usr/ccs/bin/ld -G -z text"
+ LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}'
+ fi
+ ;;
+ ULTRIX-4.*)
+ SHLIB_CFLAGS="-G 0"
+ SHLIB_SUFFIX=".a"
+ SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r -G 0"
+ SHLIB_LD_LIBS='${LIBS}'
+ DL_OBJS="tclLoadAout.o"
+ DL_LIBS=""
+ LDFLAGS="$LDFLAGS -Wl,-D,08000000"
+ LD_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+ if test "$GCC" != "yes" ; then
+ CFLAGS="$CFLAGS -DHAVE_TZSET -std1"
+ fi
+ ;;
+ UNIX_SV* | UnixWare-5*)
+ SHLIB_CFLAGS="-KPIC"
+ SHLIB_LD="cc -G"
+ SHLIB_LD_LIBS=""
+ SHLIB_SUFFIX=".so"
+ DL_OBJS="tclLoadDl.o"
+ DL_LIBS="-ldl"
+ # Some UNIX_SV* systems (unixware 1.1.2 for example) have linkers
+ # that don't grok the -Bexport option. Test that it does.
+ hold_ldflags=$LDFLAGS
+ AC_MSG_CHECKING(for ld accepts -Bexport flag)
+ LDFLAGS="$LDFLAGS -Wl,-Bexport"
+ AC_TRY_LINK(, [int i;], [found=yes],
+ [LDFLAGS=$hold_ldflags found=no])
+ AC_MSG_RESULT([$found])
+ LD_SEARCH_FLAGS=""
+ ;;
+ esac
+
+ if test "$do64bit" != "no" -a "$do64bit_ok" = "no" ; then
+ AC_MSG_WARN([64bit support being disabled -- don't know magic for this platform])
+ fi
+
+ # Step 4: If pseudo-static linking is in use (see K. B. Kenny, "Dynamic
+ # Loading for Tcl -- What Became of It?". Proc. 2nd Tcl/Tk Workshop,
+ # New Orleans, LA, Computerized Processes Unlimited, 1994), then we need
+ # to determine which of several header files defines the a.out file
+ # format (a.out.h, sys/exec.h, or sys/exec_aout.h). At present, we
+ # support only a file format that is more or less version-7-compatible.
+ # In particular,
+ # - a.out files must begin with `struct exec'.
+ # - the N_TXTOFF on the `struct exec' must compute the seek address
+ # of the text segment
+ # - The `struct exec' must contain a_magic, a_text, a_data, a_bss
+ # and a_entry fields.
+ # The following compilation should succeed if and only if either sys/exec.h
+ # or a.out.h is usable for the purpose.
+ #
+ # Note that the modified COFF format used on MIPS Ultrix 4.x is usable; the
+ # `struct exec' includes a second header that contains information that
+ # duplicates the v7 fields that are needed.
+
+ if test "x$DL_OBJS" = "xtclLoadAout.o" ; then
+ AC_MSG_CHECKING([sys/exec.h])
+ AC_TRY_COMPILE([#include ],[
+ struct exec foo;
+ unsigned long seek;
+ int flag;
+#if defined(__mips) || defined(mips)
+ seek = N_TXTOFF (foo.ex_f, foo.ex_o);
+#else
+ seek = N_TXTOFF (foo);
+#endif
+ flag = (foo.a_magic == OMAGIC);
+ return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry;
+ ], tcl_ok=usable, tcl_ok=unusable)
+ AC_MSG_RESULT([$tcl_ok])
+ if test $tcl_ok = usable; then
+ AC_DEFINE(USE_SYS_EXEC_H, 1,
+ [Should we use when doing dynamic loading?])
+ else
+ AC_MSG_CHECKING([a.out.h])
+ AC_TRY_COMPILE([#include ],[
+ struct exec foo;
+ unsigned long seek;
+ int flag;
+#if defined(__mips) || defined(mips)
+ seek = N_TXTOFF (foo.ex_f, foo.ex_o);
+#else
+ seek = N_TXTOFF (foo);
+#endif
+ flag = (foo.a_magic == OMAGIC);
+ return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry;
+ ], tcl_ok=usable, tcl_ok=unusable)
+ AC_MSG_RESULT([$tcl_ok])
+ if test $tcl_ok = usable; then
+ AC_DEFINE(USE_A_OUT_H, 1,
+ [Should we use when doing dynamic loading?])
+ else
+ AC_MSG_CHECKING([sys/exec_aout.h])
+ AC_TRY_COMPILE([#include ],[
+ struct exec foo;
+ unsigned long seek;
+ int flag;
+#if defined(__mips) || defined(mips)
+ seek = N_TXTOFF (foo.ex_f, foo.ex_o);
+#else
+ seek = N_TXTOFF (foo);
+#endif
+ flag = (foo.a_midmag == OMAGIC);
+ return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry;
+ ], tcl_ok=usable, tcl_ok=unusable)
+ AC_MSG_RESULT([$tcl_ok])
+ if test $tcl_ok = usable; then
+ AC_DEFINE(USE_SYS_EXEC_AOUT_H, 1,
+ [Should we use when doing dynamic loading?])
+ else
+ DL_OBJS=""
+ fi
+ fi
+ fi
+ fi
+
+ # Step 5: disable dynamic loading if requested via a command-line switch.
+
+ AC_ARG_ENABLE(load, [ --disable-load disallow dynamic loading and "load" command],
+ [tcl_ok=$enableval], [tcl_ok=yes])
+ if test "$tcl_ok" = "no"; then
+ DL_OBJS=""
+ fi
+
+ if test "x$DL_OBJS" != "x" ; then
+ BUILD_DLTEST="\$(DLTEST_TARGETS)"
+ else
+ echo "Can't figure out how to do dynamic loading or shared libraries"
+ echo "on this system."
+ SHLIB_CFLAGS=""
+ SHLIB_LD=""
+ SHLIB_SUFFIX=""
+ DL_OBJS="tclLoadNone.o"
+ DL_LIBS=""
+ LDFLAGS="$LDFLAGS_ORIG"
+ LD_SEARCH_FLAGS=""
+ BUILD_DLTEST=""
+ fi
+
+ # If we're running gcc, then change the C flags for compiling shared
+ # libraries to the right flags for gcc, instead of those for the
+ # standard manufacturer compiler.
+
+ if test "$DL_OBJS" != "tclLoadNone.o" ; then
+ if test "$GCC" = "yes" ; then
+ case $system in
+ AIX-*)
+ ;;
+ BSD/OS*)
+ ;;
+ IRIX*)
+ ;;
+ NetBSD-*|FreeBSD-*)
+ ;;
+ Darwin-*)
+ ;;
+ RISCos-*)
+ ;;
+ SCO_SV-3.2*)
+ ;;
+ ULTRIX-4.*)
+ ;;
+ windows)
+ ;;
+ *)
+ SHLIB_CFLAGS="-fPIC"
+ ;;
+ esac
+ fi
+ fi
+
+ if test "$SHARED_LIB_SUFFIX" = "" ; then
+ SHARED_LIB_SUFFIX='${PACKAGE_VERSION}${SHLIB_SUFFIX}'
+ fi
+ if test "$UNSHARED_LIB_SUFFIX" = "" ; then
+ UNSHARED_LIB_SUFFIX='${PACKAGE_VERSION}.a'
+ fi
+
+ AC_SUBST(DL_LIBS)
+ AC_SUBST(CFLAGS_DEBUG)
+ AC_SUBST(CFLAGS_OPTIMIZE)
+ AC_SUBST(CFLAGS_WARNING)
+
+ AC_SUBST(STLIB_LD)
+ AC_SUBST(SHLIB_LD)
+ AC_SUBST(SHLIB_CFLAGS)
+ AC_SUBST(SHLIB_LD_LIBS)
+ AC_SUBST(LDFLAGS_DEBUG)
+ AC_SUBST(LDFLAGS_OPTIMIZE)
+ AC_SUBST(LD_LIBRARY_PATH_VAR)
+
+ # These must be called after we do the basic CFLAGS checks and
+ # verify any possible 64-bit or similar switches are necessary
+ TEA_TCL_EARLY_FLAGS
+ TEA_TCL_64BIT_FLAGS
+])
+
+#--------------------------------------------------------------------
+# TEA_SERIAL_PORT
+#
+# Determine which interface to use to talk to the serial port.
+# Note that #include lines must begin in leftmost column for
+# some compilers to recognize them as preprocessor directives,
+# and some build environments have stdin not pointing at a
+# pseudo-terminal (usually /dev/null instead.)
+#
+# Arguments:
+# none
+#
+# Results:
+#
+# Defines only one of the following vars:
+# HAVE_SYS_MODEM_H
+# USE_TERMIOS
+# USE_TERMIO
+# USE_SGTTY
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN(TEA_SERIAL_PORT, [
+ AC_CHECK_HEADERS(sys/modem.h)
+ AC_MSG_CHECKING([termios vs. termio vs. sgtty])
+ AC_CACHE_VAL(tcl_cv_api_serial, [
+ AC_TRY_RUN([
+#include
+
+int main() {
+ struct termios t;
+ if (tcgetattr(0, &t) == 0) {
+ cfsetospeed(&t, 0);
+ t.c_cflag |= PARENB | PARODD | CSIZE | CSTOPB;
+ return 0;
+ }
+ return 1;
+}], tcl_cv_api_serial=termios, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
+ if test $tcl_cv_api_serial = no ; then
+ AC_TRY_RUN([
+#include
+
+int main() {
+ struct termio t;
+ if (ioctl(0, TCGETA, &t) == 0) {
+ t.c_cflag |= CBAUD | PARENB | PARODD | CSIZE | CSTOPB;
+ return 0;
+ }
+ return 1;
+}], tcl_cv_api_serial=termio, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
+ fi
+ if test $tcl_cv_api_serial = no ; then
+ AC_TRY_RUN([
+#include
+
+int main() {
+ struct sgttyb t;
+ if (ioctl(0, TIOCGETP, &t) == 0) {
+ t.sg_ospeed = 0;
+ t.sg_flags |= ODDP | EVENP | RAW;
+ return 0;
+ }
+ return 1;
+}], tcl_cv_api_serial=sgtty, tcl_cv_api_serial=none, tcl_cv_api_serial=none)
+ fi
+ if test $tcl_cv_api_serial = no ; then
+ AC_TRY_RUN([
+#include
+#include
+
+int main() {
+ struct termios t;
+ if (tcgetattr(0, &t) == 0
+ || errno == ENOTTY || errno == ENXIO || errno == EINVAL) {
+ cfsetospeed(&t, 0);
+ t.c_cflag |= PARENB | PARODD | CSIZE | CSTOPB;
+ return 0;
+ }
+ return 1;
+}], tcl_cv_api_serial=termios, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
+ fi
+ if test $tcl_cv_api_serial = no; then
+ AC_TRY_RUN([
+#include
+#include
+
+int main() {
+ struct termio t;
+ if (ioctl(0, TCGETA, &t) == 0
+ || errno == ENOTTY || errno == ENXIO || errno == EINVAL) {
+ t.c_cflag |= CBAUD | PARENB | PARODD | CSIZE | CSTOPB;
+ return 0;
+ }
+ return 1;
+ }], tcl_cv_api_serial=termio, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
+ fi
+ if test $tcl_cv_api_serial = no; then
+ AC_TRY_RUN([
+#include
+#include
+
+int main() {
+ struct sgttyb t;
+ if (ioctl(0, TIOCGETP, &t) == 0
+ || errno == ENOTTY || errno == ENXIO || errno == EINVAL) {
+ t.sg_ospeed = 0;
+ t.sg_flags |= ODDP | EVENP | RAW;
+ return 0;
+ }
+ return 1;
+}], tcl_cv_api_serial=sgtty, tcl_cv_api_serial=none, tcl_cv_api_serial=none)
+ fi])
+ case $tcl_cv_api_serial in
+ termios) AC_DEFINE(USE_TERMIOS, 1, [Use the termios API for serial lines]);;
+ termio) AC_DEFINE(USE_TERMIO, 1, [Use the termio API for serial lines]);;
+ sgtty) AC_DEFINE(USE_SGTTY, 1, [Use the sgtty API for serial lines]);;
+ esac
+ AC_MSG_RESULT([$tcl_cv_api_serial])
+])
+
+#--------------------------------------------------------------------
+# TEA_MISSING_POSIX_HEADERS
+#
+# Supply substitutes for missing POSIX header files. Special
+# notes:
+# - stdlib.h doesn't define strtol, strtoul, or
+# strtod insome versions of SunOS
+# - some versions of string.h don't declare procedures such
+# as strstr
+#
+# Arguments:
+# none
+#
+# Results:
+#
+# Defines some of the following vars:
+# NO_DIRENT_H
+# NO_ERRNO_H
+# NO_VALUES_H
+# HAVE_LIMITS_H or NO_LIMITS_H
+# NO_STDLIB_H
+# NO_STRING_H
+# NO_SYS_WAIT_H
+# NO_DLFCN_H
+# HAVE_SYS_PARAM_H
+#
+# HAVE_STRING_H ?
+#
+# tkUnixPort.h checks for HAVE_LIMITS_H, so do both HAVE and
+# CHECK on limits.h
+#--------------------------------------------------------------------
+
+AC_DEFUN(TEA_MISSING_POSIX_HEADERS, [
+ AC_MSG_CHECKING([dirent.h])
+ AC_CACHE_VAL(tcl_cv_dirent_h,
+ AC_TRY_LINK([#include
+#include ], [
+#ifndef _POSIX_SOURCE
+# ifdef __Lynx__
+ /*
+ * Generate compilation error to make the test fail: Lynx headers
+ * are only valid if really in the POSIX environment.
+ */
+
+ missing_procedure();
+# endif
+#endif
+DIR *d;
+struct dirent *entryPtr;
+char *p;
+d = opendir("foobar");
+entryPtr = readdir(d);
+p = entryPtr->d_name;
+closedir(d);
+], tcl_cv_dirent_h=yes, tcl_cv_dirent_h=no))
+
+ if test $tcl_cv_dirent_h = no; then
+ AC_DEFINE(NO_DIRENT_H, 1, [Do we have ?])
+ fi
+
+ AC_MSG_RESULT([$tcl_ok])
+ AC_CHECK_HEADER(errno.h, , [AC_DEFINE(NO_ERRNO_H, 1, [Do we have ?])])
+ AC_CHECK_HEADER(float.h, , [AC_DEFINE(NO_FLOAT_H, 1, [Do we have ?])])
+ AC_CHECK_HEADER(values.h, , [AC_DEFINE(NO_VALUES_H, 1, [Do we have ?])])
+ AC_CHECK_HEADER(limits.h,
+ [AC_DEFINE(HAVE_LIMITS_H, 1, [Do we have ?])],
+ [AC_DEFINE(NO_LIMITS_H, 1, [Do we have ?])])
+ AC_CHECK_HEADER(stdlib.h, tcl_ok=1, tcl_ok=0)
+ AC_EGREP_HEADER(strtol, stdlib.h, , tcl_ok=0)
+ AC_EGREP_HEADER(strtoul, stdlib.h, , tcl_ok=0)
+ AC_EGREP_HEADER(strtod, stdlib.h, , tcl_ok=0)
+ if test $tcl_ok = 0; then
+ AC_DEFINE(NO_STDLIB_H, 1, [Do we have ?])
+ fi
+ AC_CHECK_HEADER(string.h, tcl_ok=1, tcl_ok=0)
+ AC_EGREP_HEADER(strstr, string.h, , tcl_ok=0)
+ AC_EGREP_HEADER(strerror, string.h, , tcl_ok=0)
+
+ # See also memmove check below for a place where NO_STRING_H can be
+ # set and why.
+
+ if test $tcl_ok = 0; then
+ AC_DEFINE(NO_STRING_H, 1, [Do we have ?])
+ fi
+
+ AC_CHECK_HEADER(sys/wait.h, , [AC_DEFINE(NO_SYS_WAIT_H, 1, [Do we have ?])])
+ AC_CHECK_HEADER(dlfcn.h, , [AC_DEFINE(NO_DLFCN_H, 1, [Do we have ?])])
+
+ # OS/390 lacks sys/param.h (and doesn't need it, by chance).
+ AC_HAVE_HEADERS(sys/param.h)
+
+])
+
+#--------------------------------------------------------------------
+# TEA_PATH_X
+#
+# Locate the X11 header files and the X11 library archive. Try
+# the ac_path_x macro first, but if it doesn't find the X stuff
+# (e.g. because there's no xmkmf program) then check through
+# a list of possible directories. Under some conditions the
+# autoconf macro will return an include directory that contains
+# no include files, so double-check its result just to be safe.
+#
+# This should be called after TEA_CONFIG_CFLAGS as setting the
+# LIBS line can confuse some configure macro magic.
+#
+# Arguments:
+# none
+#
+# Results:
+#
+# Sets the following vars:
+# XINCLUDES
+# XLIBSW
+# LIBS (appends to)
+# TEA_WINDOWINGSYSTEM
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN(TEA_PATH_X, [
+ if test "${TEA_WINDOWINGSYSTEM}" = "x11" ; then
+ TEA_PATH_UNIX_X
+ fi
+])
+
+AC_DEFUN(TEA_PATH_UNIX_X, [
+ AC_PATH_X
+ not_really_there=""
+ if test "$no_x" = ""; then
+ if test "$x_includes" = ""; then
+ AC_TRY_CPP([#include ], , not_really_there="yes")
+ else
+ if test ! -r $x_includes/X11/Intrinsic.h; then
+ not_really_there="yes"
+ fi
+ fi
+ fi
+ if test "$no_x" = "yes" -o "$not_really_there" = "yes"; then
+ AC_MSG_CHECKING([for X11 header files])
+ XINCLUDES="# no special path needed"
+ AC_TRY_CPP([#include ], , XINCLUDES="nope")
+ if test "$XINCLUDES" = nope; then
+ dirs="/usr/unsupported/include /usr/local/include /usr/X386/include /usr/X11R6/include /usr/X11R5/include /usr/include/X11R5 /usr/include/X11R4 /usr/openwin/include /usr/X11/include /usr/sww/include"
+ for i in $dirs ; do
+ if test -r $i/X11/Intrinsic.h; then
+ AC_MSG_RESULT([$i])
+ XINCLUDES=" -I$i"
+ break
+ fi
+ done
+ fi
+ else
+ if test "$x_includes" != ""; then
+ XINCLUDES=-I$x_includes
+ else
+ XINCLUDES="# no special path needed"
+ fi
+ fi
+ if test "$XINCLUDES" = nope; then
+ AC_MSG_RESULT([could not find any!])
+ XINCLUDES="# no include files found"
+ fi
+
+ if test "$no_x" = yes; then
+ AC_MSG_CHECKING([for X11 libraries])
+ XLIBSW=nope
+ dirs="/usr/unsupported/lib /usr/local/lib /usr/X386/lib /usr/X11R6/lib /usr/X11R5/lib /usr/lib/X11R5 /usr/lib/X11R4 /usr/openwin/lib /usr/X11/lib /usr/sww/X11/lib"
+ for i in $dirs ; do
+ if test -r $i/libX11.a -o -r $i/libX11.so -o -r $i/libX11.sl; then
+ AC_MSG_RESULT([$i])
+ XLIBSW="-L$i -lX11"
+ x_libraries="$i"
+ break
+ fi
+ done
+ else
+ if test "$x_libraries" = ""; then
+ XLIBSW=-lX11
+ else
+ XLIBSW="-L$x_libraries -lX11"
+ fi
+ fi
+ if test "$XLIBSW" = nope ; then
+ AC_CHECK_LIB(Xwindow, XCreateWindow, XLIBSW=-lXwindow)
+ fi
+ if test "$XLIBSW" = nope ; then
+ AC_MSG_RESULT([could not find any! Using -lX11.])
+ XLIBSW=-lX11
+ fi
+ if test x"${XLIBSW}" != x ; then
+ PKG_LIBS="${PKG_LIBS} ${XLIBSW}"
+ fi
+])
+
+#--------------------------------------------------------------------
+# TEA_BLOCKING_STYLE
+#
+# The statements below check for systems where POSIX-style
+# non-blocking I/O (O_NONBLOCK) doesn't work or is unimplemented.
+# On these systems (mostly older ones), use the old BSD-style
+# FIONBIO approach instead.
+#
+# Arguments:
+# none
+#
+# Results:
+#
+# Defines some of the following vars:
+# HAVE_SYS_IOCTL_H
+# HAVE_SYS_FILIO_H
+# USE_FIONBIO
+# O_NONBLOCK
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN(TEA_BLOCKING_STYLE, [
+ AC_CHECK_HEADERS(sys/ioctl.h)
+ AC_CHECK_HEADERS(sys/filio.h)
+ AC_MSG_CHECKING([FIONBIO vs. O_NONBLOCK for nonblocking I/O])
+ if test -f /usr/lib/NextStep/software_version; then
+ system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version`
+ else
+ system=`uname -s`-`uname -r`
+ if test "$?" -ne 0 ; then
+ system=unknown
+ else
+ # Special check for weird MP-RAS system (uname returns weird
+ # results, and the version is kept in special file).
+
+ if test -r /etc/.relid -a "X`uname -n`" = "X`uname -s`" ; then
+ system=MP-RAS-`awk '{print $3}' /etc/.relid`
+ fi
+ if test "`uname -s`" = "AIX" ; then
+ system=AIX-`uname -v`.`uname -r`
+ fi
+ fi
+ fi
+ case $system in
+ # There used to be code here to use FIONBIO under AIX. However, it
+ # was reported that FIONBIO doesn't work under AIX 3.2.5. Since
+ # using O_NONBLOCK seems fine under AIX 4.*, I removed the FIONBIO
+ # code (JO, 5/31/97).
+
+ OSF*)
+ AC_DEFINE(USE_FIONBIO, 1, [Should we use FIONBIO?])
+ AC_MSG_RESULT([FIONBIO])
+ ;;
+ SunOS-4*)
+ AC_DEFINE(USE_FIONBIO, 1, [Should we use FIONBIO?])
+ AC_MSG_RESULT([FIONBIO])
+ ;;
+ ULTRIX-4.*)
+ AC_DEFINE(USE_FIONBIO, 1, [Should we use FIONBIO?])
+ AC_MSG_RESULT([FIONBIO])
+ ;;
+ *)
+ AC_MSG_RESULT([O_NONBLOCK])
+ ;;
+ esac
+])
+
+#--------------------------------------------------------------------
+# TEA_TIME_HANLDER
+#
+# Checks how the system deals with time.h, what time structures
+# are used on the system, and what fields the structures have.
+#
+# Arguments:
+# none
+#
+# Results:
+#
+# Defines some of the following vars:
+# USE_DELTA_FOR_TZ
+# HAVE_TM_GMTOFF
+# HAVE_TM_TZADJ
+# HAVE_TIMEZONE_VAR
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN(TEA_TIME_HANDLER, [
+ AC_CHECK_HEADERS(sys/time.h)
+ AC_HEADER_TIME
+ AC_STRUCT_TIMEZONE
+
+ AC_CHECK_FUNCS(gmtime_r localtime_r)
+
+ AC_MSG_CHECKING([tm_tzadj in struct tm])
+ AC_CACHE_VAL(tcl_cv_member_tm_tzadj,
+ AC_TRY_COMPILE([#include ], [struct tm tm; tm.tm_tzadj;],
+ tcl_cv_member_tm_tzadj=yes, tcl_cv_member_tm_tzadj=no))
+ AC_MSG_RESULT([$tcl_cv_member_tm_tzadj])
+ if test $tcl_cv_member_tm_tzadj = yes ; then
+ AC_DEFINE(HAVE_TM_TZADJ, 1, [Should we use the tm_tzadj field of struct tm?])
+ fi
+
+ AC_MSG_CHECKING([tm_gmtoff in struct tm])
+ AC_CACHE_VAL(tcl_cv_member_tm_gmtoff,
+ AC_TRY_COMPILE([#include ], [struct tm tm; tm.tm_gmtoff;],
+ tcl_cv_member_tm_gmtoff=yes, tcl_cv_member_tm_gmtoff=no))
+ AC_MSG_RESULT([$tcl_cv_member_tm_gmtoff])
+ if test $tcl_cv_member_tm_gmtoff = yes ; then
+ AC_DEFINE(HAVE_TM_GMTOFF, 1, [Should we use the tm_gmtoff field of struct tm?])
+ fi
+
+ #
+ # Its important to include time.h in this check, as some systems
+ # (like convex) have timezone functions, etc.
+ #
+ AC_MSG_CHECKING([long timezone variable])
+ AC_CACHE_VAL(tcl_cv_timezone_long,
+ AC_TRY_COMPILE([#include ],
+ [extern long timezone;
+ timezone += 1;
+ exit (0);],
+ tcl_cv_timezone_long=yes, tcl_cv_timezone_long=no))
+ AC_MSG_RESULT([$tcl_cv_timezone_long])
+ if test $tcl_cv_timezone_long = yes ; then
+ AC_DEFINE(HAVE_TIMEZONE_VAR, 1, [Should we use the global timezone variable?])
+ else
+ #
+ # On some systems (eg IRIX 6.2), timezone is a time_t and not a long.
+ #
+ AC_MSG_CHECKING([time_t timezone variable])
+ AC_CACHE_VAL(tcl_cv_timezone_time,
+ AC_TRY_COMPILE([#include ],
+ [extern time_t timezone;
+ timezone += 1;
+ exit (0);],
+ tcl_cv_timezone_time=yes, tcl_cv_timezone_time=no))
+ AC_MSG_RESULT([$tcl_cv_timezone_time])
+ if test $tcl_cv_timezone_time = yes ; then
+ AC_DEFINE(HAVE_TIMEZONE_VAR, 1, [Should we use the global timezone variable?])
+ fi
+ fi
+])
+
+#--------------------------------------------------------------------
+# TEA_BUGGY_STRTOD
+#
+# Under Solaris 2.4, strtod returns the wrong value for the
+# terminating character under some conditions. Check for this
+# and if the problem exists use a substitute procedure
+# "fixstrtod" (provided by Tcl) that corrects the error.
+# Also, on Compaq's Tru64 Unix 5.0,
+# strtod(" ") returns 0.0 instead of a failure to convert.
+#
+# Arguments:
+# none
+#
+# Results:
+#
+# Might defines some of the following vars:
+# strtod (=fixstrtod)
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN(TEA_BUGGY_STRTOD, [
+ AC_CHECK_FUNC(strtod, tcl_strtod=1, tcl_strtod=0)
+ if test "$tcl_strtod" = 1; then
+ AC_MSG_CHECKING([for Solaris2.4/Tru64 strtod bugs])
+ AC_CACHE_VAL(tcl_cv_strtod_buggy,[
+ AC_TRY_RUN([
+ extern double strtod();
+ int main()
+ {
+ char *string = "NaN", *spaceString = " ";
+ char *term;
+ double value;
+ value = strtod(string, &term);
+ if ((term != string) && (term[-1] == 0)) {
+ exit(1);
+ }
+ value = strtod(spaceString, &term);
+ if (term == (spaceString+1)) {
+ exit(1);
+ }
+ exit(0);
+ }], tcl_cv_strtod_buggy=1, tcl_cv_strtod_buggy=0, tcl_cv_strtod_buggy=0)])
+ if test "$tcl_cv_strtod_buggy" = 1; then
+ AC_MSG_RESULT([ok])
+ else
+ AC_MSG_RESULT([buggy])
+ #LIBOBJS="$LIBOBJS fixstrtod.o"
+ AC_LIBOBJ([fixstrtod])
+ USE_COMPAT=1
+ AC_DEFINE(strtod, fixstrtod, [Do we want to use the strtod() in compat?])
+ fi
+ fi
+])
+
+#--------------------------------------------------------------------
+# TEA_TCL_LINK_LIBS
+#
+# Search for the libraries needed to link the Tcl shell.
+# Things like the math library (-lm) and socket stuff (-lsocket vs.
+# -lnsl) are dealt with here.
+#
+# Arguments:
+# Requires the following vars to be set in the Makefile:
+# DL_LIBS
+# LIBS
+# MATH_LIBS
+#
+# Results:
+#
+# Subst's the following var:
+# TCL_LIBS
+# MATH_LIBS
+#
+# Might append to the following vars:
+# LIBS
+#
+# Might define the following vars:
+# HAVE_NET_ERRNO_H
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN(TEA_TCL_LINK_LIBS, [
+ #--------------------------------------------------------------------
+ # On a few very rare systems, all of the libm.a stuff is
+ # already in libc.a. Set compiler flags accordingly.
+ # Also, Linux requires the "ieee" library for math to work
+ # right (and it must appear before "-lm").
+ #--------------------------------------------------------------------
+
+ AC_CHECK_FUNC(sin, MATH_LIBS="", MATH_LIBS="-lm")
+ AC_CHECK_LIB(ieee, main, [MATH_LIBS="-lieee $MATH_LIBS"])
+
+ #--------------------------------------------------------------------
+ # Interactive UNIX requires -linet instead of -lsocket, plus it
+ # needs net/errno.h to define the socket-related error codes.
+ #--------------------------------------------------------------------
+
+ AC_CHECK_LIB(inet, main, [LIBS="$LIBS -linet"])
+ AC_CHECK_HEADER(net/errno.h, [
+ AC_DEFINE(HAVE_NET_ERRNO_H, 1, [Do we have ?])])
+
+ #--------------------------------------------------------------------
+ # Check for the existence of the -lsocket and -lnsl libraries.
+ # The order here is important, so that they end up in the right
+ # order in the command line generated by make. Here are some
+ # special considerations:
+ # 1. Use "connect" and "accept" to check for -lsocket, and
+ # "gethostbyname" to check for -lnsl.
+ # 2. Use each function name only once: can't redo a check because
+ # autoconf caches the results of the last check and won't redo it.
+ # 3. Use -lnsl and -lsocket only if they supply procedures that
+ # aren't already present in the normal libraries. This is because
+ # IRIX 5.2 has libraries, but they aren't needed and they're
+ # bogus: they goof up name resolution if used.
+ # 4. On some SVR4 systems, can't use -lsocket without -lnsl too.
+ # To get around this problem, check for both libraries together
+ # if -lsocket doesn't work by itself.
+ #--------------------------------------------------------------------
+
+ tcl_checkBoth=0
+ AC_CHECK_FUNC(connect, tcl_checkSocket=0, tcl_checkSocket=1)
+ if test "$tcl_checkSocket" = 1; then
+ AC_CHECK_FUNC(setsockopt, , [AC_CHECK_LIB(socket, setsockopt,
+ LIBS="$LIBS -lsocket", tcl_checkBoth=1)])
+ fi
+ if test "$tcl_checkBoth" = 1; then
+ tk_oldLibs=$LIBS
+ LIBS="$LIBS -lsocket -lnsl"
+ AC_CHECK_FUNC(accept, tcl_checkNsl=0, [LIBS=$tk_oldLibs])
+ fi
+ AC_CHECK_FUNC(gethostbyname, , [AC_CHECK_LIB(nsl, gethostbyname,
+ [LIBS="$LIBS -lnsl"])])
+
+ # Don't perform the eval of the libraries here because DL_LIBS
+ # won't be set until we call TEA_CONFIG_CFLAGS
+
+ TCL_LIBS='${DL_LIBS} ${LIBS} ${MATH_LIBS}'
+ AC_SUBST(TCL_LIBS)
+ AC_SUBST(MATH_LIBS)
+])
+
+#--------------------------------------------------------------------
+# TEA_TCL_EARLY_FLAGS
+#
+# Check for what flags are needed to be passed so the correct OS
+# features are available.
+#
+# Arguments:
+# None
+#
+# Results:
+#
+# Might define the following vars:
+# _ISOC99_SOURCE
+# _LARGEFILE64_SOURCE
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN(TEA_TCL_EARLY_FLAG,[
+ AC_CACHE_VAL([tcl_cv_flag_]translit($1,[A-Z],[a-z]),
+ AC_TRY_COMPILE([$2], $3, [tcl_cv_flag_]translit($1,[A-Z],[a-z])=no,
+ AC_TRY_COMPILE([[#define ]$1[ 1
+]$2], $3,
+ [tcl_cv_flag_]translit($1,[A-Z],[a-z])=yes,
+ [tcl_cv_flag_]translit($1,[A-Z],[a-z])=no)))
+ if test ["x${tcl_cv_flag_]translit($1,[A-Z],[a-z])[}" = "xyes"] ; then
+ AC_DEFINE($1, 1, [Add the ]$1[ flag when building])
+ tcl_flags="$tcl_flags $1"
+ fi
+])
+
+AC_DEFUN(TEA_TCL_EARLY_FLAGS,[
+ AC_MSG_CHECKING([for required early compiler flags])
+ tcl_flags=""
+ TEA_TCL_EARLY_FLAG(_ISOC99_SOURCE,[#include ],
+ [char *p = (char *)strtoll; char *q = (char *)strtoull;])
+ TEA_TCL_EARLY_FLAG(_LARGEFILE64_SOURCE,[#include ],
+ [struct stat64 buf; int i = stat64("/", &buf);])
+ if test "x${tcl_flags}" = "x" ; then
+ AC_MSG_RESULT([none])
+ else
+ AC_MSG_RESULT([${tcl_flags}])
+ fi
+])
+
+#--------------------------------------------------------------------
+# TEA_TCL_64BIT_FLAGS
+#
+# Check for what is defined in the way of 64-bit features.
+#
+# Arguments:
+# None
+#
+# Results:
+#
+# Might define the following vars:
+# TCL_WIDE_INT_IS_LONG
+# TCL_WIDE_INT_TYPE
+# HAVE_STRUCT_DIRENT64
+# HAVE_STRUCT_STAT64
+# HAVE_TYPE_OFF64_T
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN(TEA_TCL_64BIT_FLAGS, [
+ AC_MSG_CHECKING([for 64-bit integer type])
+ AC_CACHE_VAL(tcl_cv_type_64bit,[
+ tcl_cv_type_64bit=none
+ # See if the compiler knows natively about __int64
+ AC_TRY_COMPILE(,[__int64 value = (__int64) 0;],
+ tcl_type_64bit=__int64, tcl_type_64bit="long long")
+ # See if we should use long anyway Note that we substitute in the
+ # type that is our current guess for a 64-bit type inside this check
+ # program, so it should be modified only carefully...
+ AC_TRY_COMPILE(,[switch (0) {
+ case 1: case (sizeof(]${tcl_type_64bit}[)==sizeof(long)): ;
+ }],tcl_cv_type_64bit=${tcl_type_64bit})])
+ if test "${tcl_cv_type_64bit}" = none ; then
+ AC_DEFINE(TCL_WIDE_INT_IS_LONG, 1, [Are wide integers to be implemented with C 'long's?])
+ AC_MSG_RESULT([using long])
+ elif test "${tcl_cv_type_64bit}" = "__int64" \
+ -a "${TEA_PLATFORM}" = "windows" ; then
+ # We actually want to use the default tcl.h checks in this
+ # case to handle both TCL_WIDE_INT_TYPE and TCL_LL_MODIFIER*
+ AC_MSG_RESULT([using Tcl header defaults])
+ else
+ AC_DEFINE_UNQUOTED(TCL_WIDE_INT_TYPE,${tcl_cv_type_64bit},
+ [What type should be used to define wide integers?])
+ AC_MSG_RESULT([${tcl_cv_type_64bit}])
+
+ # Now check for auxiliary declarations
+ AC_MSG_CHECKING([for struct dirent64])
+ AC_CACHE_VAL(tcl_cv_struct_dirent64,[
+ AC_TRY_COMPILE([#include
+#include ],[struct dirent64 p;],
+ tcl_cv_struct_dirent64=yes,tcl_cv_struct_dirent64=no)])
+ if test "x${tcl_cv_struct_dirent64}" = "xyes" ; then
+ AC_DEFINE(HAVE_STRUCT_DIRENT64, 1, [Is 'struct dirent64' in ?])
+ fi
+ AC_MSG_RESULT([${tcl_cv_struct_dirent64}])
+
+ AC_MSG_CHECKING([for struct stat64])
+ AC_CACHE_VAL(tcl_cv_struct_stat64,[
+ AC_TRY_COMPILE([#include ],[struct stat64 p;
+],
+ tcl_cv_struct_stat64=yes,tcl_cv_struct_stat64=no)])
+ if test "x${tcl_cv_struct_stat64}" = "xyes" ; then
+ AC_DEFINE(HAVE_STRUCT_STAT64, 1, [Is 'struct stat64' in ?])
+ fi
+ AC_MSG_RESULT([${tcl_cv_struct_stat64}])
+
+ AC_MSG_CHECKING([for off64_t])
+ AC_CACHE_VAL(tcl_cv_type_off64_t,[
+ AC_TRY_COMPILE([#include ],[off64_t offset;
+],
+ tcl_cv_type_off64_t=yes,tcl_cv_type_off64_t=no)])
+ if test "x${tcl_cv_type_off64_t}" = "xyes" ; then
+ AC_DEFINE(HAVE_TYPE_OFF64_T, 1, [Is off64_t in ?])
+ fi
+ AC_MSG_RESULT([${tcl_cv_type_off64_t}])
+ fi
+])
+
+##
+## Here ends the standard Tcl configuration bits and starts the
+## TEA specific functions
+##
+
+#------------------------------------------------------------------------
+# TEA_INIT --
+#
+# Init various Tcl Extension Architecture (TEA) variables.
+# This should be the first called TEA_* macro.
+#
+# Arguments:
+# none
+#
+# Results:
+#
+# Defines and substs the following vars:
+# CYGPATH
+# EXEEXT
+# Defines only:
+# TEA_INITED
+# TEA_PLATFORM (windows or unix)
+#
+# "cygpath" is used on windows to generate native path names for include
+# files. These variables should only be used with the compiler and linker
+# since they generate native path names.
+#
+# EXEEXT
+# Select the executable extension based on the host type. This
+# is a lightweight replacement for AC_EXEEXT that doesn't require
+# a compiler.
+#------------------------------------------------------------------------
+
+AC_DEFUN(TEA_INIT, [
+ # TEA extensions pass this us the version of TEA they think they
+ # are compatible with.
+ TEA_VERSION="3.4"
+
+ AC_MSG_CHECKING([for correct TEA configuration])
+ if test x"${PACKAGE_NAME}" = x ; then
+ AC_MSG_ERROR([
+The PACKAGE_NAME variable must be defined by your TEA configure.in])
+ fi
+ if test x"$1" = x ; then
+ AC_MSG_ERROR([
+TEA version not specified.])
+ elif test "$1" != "${TEA_VERSION}" ; then
+ AC_MSG_RESULT([warning: requested TEA version "$1", have "${TEA_VERSION}"])
+ else
+ AC_MSG_RESULT([ok (TEA ${TEA_VERSION})])
+ fi
+ case "`uname -s`" in
+ *win32*|*WIN32*|*CYGWIN_NT*|*CYGWIN_9*|*CYGWIN_ME*|*MINGW32_*)
+ AC_CHECK_PROG(CYGPATH, cygpath, cygpath -w, echo)
+ EXEEXT=".exe"
+ TEA_PLATFORM="windows"
+ ;;
+ *)
+ CYGPATH=echo
+ EXEEXT=""
+ TEA_PLATFORM="unix"
+ ;;
+ esac
+
+ # Check if exec_prefix is set. If not use fall back to prefix.
+ # Note when adjusted, so that TEA_PREFIX can correct for this.
+ # This is needed for recursive configures, since autoconf propagates
+ # $prefix, but not $exec_prefix (doh!).
+ if test x$exec_prefix = xNONE ; then
+ exec_prefix_default=yes
+ exec_prefix=$prefix
+ fi
+
+ AC_SUBST(EXEEXT)
+ AC_SUBST(CYGPATH)
+
+ # This package name must be replaced statically for AC_SUBST to work
+ AC_SUBST(PKG_LIB_FILE)
+ # Substitute STUB_LIB_FILE in case package creates a stub library too.
+ AC_SUBST(PKG_STUB_LIB_FILE)
+
+ # We AC_SUBST these here to ensure they are subst'ed,
+ # in case the user doesn't call TEA_ADD_...
+ AC_SUBST(PKG_STUB_SOURCES)
+ AC_SUBST(PKG_STUB_OBJECTS)
+ AC_SUBST(PKG_TCL_SOURCES)
+ AC_SUBST(PKG_HEADERS)
+ AC_SUBST(PKG_INCLUDES)
+ AC_SUBST(PKG_LIBS)
+ AC_SUBST(PKG_CFLAGS)
+])
+
+#------------------------------------------------------------------------
+# TEA_ADD_SOURCES --
+#
+# Specify one or more source files. Users should check for
+# the right platform before adding to their list.
+# It is not important to specify the directory, as long as it is
+# in the generic, win or unix subdirectory of $(srcdir).
+#
+# Arguments:
+# one or more file names
+#
+# Results:
+#
+# Defines and substs the following vars:
+# PKG_SOURCES
+# PKG_OBJECTS
+#------------------------------------------------------------------------
+AC_DEFUN(TEA_ADD_SOURCES, [
+ vars="$@"
+ for i in $vars; do
+ case $i in
+ [\$]*)
+ # allow $-var names
+ PKG_SOURCES="$PKG_SOURCES $i"
+ PKG_OBJECTS="$PKG_OBJECTS $i"
+ ;;
+ *)
+ # check for existence - allows for generic/win/unix VPATH
+ if test ! -f "${srcdir}/$i" -a ! -f "${srcdir}/generic/$i" \
+ -a ! -f "${srcdir}/win/$i" -a ! -f "${srcdir}/unix/$i" \
+ ; then
+ AC_MSG_ERROR([could not find source file '$i'])
+ fi
+ PKG_SOURCES="$PKG_SOURCES $i"
+ # this assumes it is in a VPATH dir
+ i=`basename $i`
+ # handle user calling this before or after TEA_SETUP_COMPILER
+ if test x"${OBJEXT}" != x ; then
+ j="`echo $i | sed -e 's/\.[[^.]]*$//'`.${OBJEXT}"
+ else
+ j="`echo $i | sed -e 's/\.[[^.]]*$//'`.\${OBJEXT}"
+ fi
+ PKG_OBJECTS="$PKG_OBJECTS $j"
+ ;;
+ esac
+ done
+ AC_SUBST(PKG_SOURCES)
+ AC_SUBST(PKG_OBJECTS)
+])
+
+#------------------------------------------------------------------------
+# TEA_ADD_STUB_SOURCES --
+#
+# Specify one or more source files. Users should check for
+# the right platform before adding to their list.
+# It is not important to specify the directory, as long as it is
+# in the generic, win or unix subdirectory of $(srcdir).
+#
+# Arguments:
+# one or more file names
+#
+# Results:
+#
+# Defines and substs the following vars:
+# PKG_STUB_SOURCES
+# PKG_STUB_OBJECTS
+#------------------------------------------------------------------------
+AC_DEFUN(TEA_ADD_STUB_SOURCES, [
+ vars="$@"
+ for i in $vars; do
+ # check for existence - allows for generic/win/unix VPATH
+ if test ! -f "${srcdir}/$i" -a ! -f "${srcdir}/generic/$i" \
+ -a ! -f "${srcdir}/win/$i" -a ! -f "${srcdir}/unix/$i" \
+ ; then
+ AC_MSG_ERROR([could not find stub source file '$i'])
+ fi
+ PKG_STUB_SOURCES="$PKG_STUB_SOURCES $i"
+ # this assumes it is in a VPATH dir
+ i=`basename $i`
+ # handle user calling this before or after TEA_SETUP_COMPILER
+ if test x"${OBJEXT}" != x ; then
+ j="`echo $i | sed -e 's/\.[[^.]]*$//'`.${OBJEXT}"
+ else
+ j="`echo $i | sed -e 's/\.[[^.]]*$//'`.\${OBJEXT}"
+ fi
+ PKG_STUB_OBJECTS="$PKG_STUB_OBJECTS $j"
+ done
+ AC_SUBST(PKG_STUB_SOURCES)
+ AC_SUBST(PKG_STUB_OBJECTS)
+])
+
+#------------------------------------------------------------------------
+# TEA_ADD_TCL_SOURCES --
+#
+# Specify one or more Tcl source files. These should be platform
+# independent runtime files.
+#
+# Arguments:
+# one or more file names
+#
+# Results:
+#
+# Defines and substs the following vars:
+# PKG_TCL_SOURCES
+#------------------------------------------------------------------------
+AC_DEFUN(TEA_ADD_TCL_SOURCES, [
+ vars="$@"
+ for i in $vars; do
+ # check for existence, be strict because it is installed
+ if test ! -f "${srcdir}/$i" ; then
+ AC_MSG_ERROR([could not find tcl source file '${srcdir}/$i'])
+ fi
+ PKG_TCL_SOURCES="$PKG_TCL_SOURCES $i"
+ done
+ AC_SUBST(PKG_TCL_SOURCES)
+])
+
+#------------------------------------------------------------------------
+# TEA_ADD_HEADERS --
+#
+# Specify one or more source headers. Users should check for
+# the right platform before adding to their list.
+#
+# Arguments:
+# one or more file names
+#
+# Results:
+#
+# Defines and substs the following vars:
+# PKG_HEADERS
+#------------------------------------------------------------------------
+AC_DEFUN(TEA_ADD_HEADERS, [
+ vars="$@"
+ for i in $vars; do
+ # check for existence, be strict because it is installed
+ if test ! -f "${srcdir}/$i" ; then
+ AC_MSG_ERROR([could not find header file '${srcdir}/$i'])
+ fi
+ PKG_HEADERS="$PKG_HEADERS $i"
+ done
+ AC_SUBST(PKG_HEADERS)
+])
+
+#------------------------------------------------------------------------
+# TEA_ADD_INCLUDES --
+#
+# Specify one or more include dirs. Users should check for
+# the right platform before adding to their list.
+#
+# Arguments:
+# one or more file names
+#
+# Results:
+#
+# Defines and substs the following vars:
+# PKG_INCLUDES
+#------------------------------------------------------------------------
+AC_DEFUN(TEA_ADD_INCLUDES, [
+ vars="$@"
+ for i in $vars; do
+ PKG_INCLUDES="$PKG_INCLUDES $i"
+ done
+ AC_SUBST(PKG_INCLUDES)
+])
+
+#------------------------------------------------------------------------
+# TEA_ADD_LIBS --
+#
+# Specify one or more libraries. Users should check for
+# the right platform before adding to their list. For Windows,
+# libraries provided in "foo.lib" format will be converted to
+# "-lfoo" when using GCC (mingw).
+#
+# Arguments:
+# one or more file names
+#
+# Results:
+#
+# Defines and substs the following vars:
+# PKG_LIBS
+#------------------------------------------------------------------------
+AC_DEFUN(TEA_ADD_LIBS, [
+ vars="$@"
+ for i in $vars; do
+ if test "${TEA_PLATFORM}" = "windows" -a "$GCC" = "yes" ; then
+ # Convert foo.lib to -lfoo for GCC. No-op if not *.lib
+ i=`echo "$i" | sed -e 's/^\([[^-]].*\)\.lib[$]/-l\1/i'`
+ fi
+ PKG_LIBS="$PKG_LIBS $i"
+ done
+ AC_SUBST(PKG_LIBS)
+])
+
+#------------------------------------------------------------------------
+# TEA_ADD_CFLAGS --
+#
+# Specify one or more CFLAGS. Users should check for
+# the right platform before adding to their list.
+#
+# Arguments:
+# one or more file names
+#
+# Results:
+#
+# Defines and substs the following vars:
+# PKG_CFLAGS
+#------------------------------------------------------------------------
+AC_DEFUN(TEA_ADD_CFLAGS, [
+ PKG_CFLAGS="$PKG_CFLAGS $@"
+ AC_SUBST(PKG_CFLAGS)
+])
+
+#------------------------------------------------------------------------
+# TEA_PREFIX --
+#
+# Handle the --prefix=... option by defaulting to what Tcl gave
+#
+# Arguments:
+# none
+#
+# Results:
+#
+# If --prefix or --exec-prefix was not specified, $prefix and
+# $exec_prefix will be set to the values given to Tcl when it was
+# configured.
+#------------------------------------------------------------------------
+AC_DEFUN(TEA_PREFIX, [
+ if test "${prefix}" = "NONE"; then
+ prefix_default=yes
+ if test x"${TCL_PREFIX}" != x; then
+ AC_MSG_NOTICE([--prefix defaulting to TCL_PREFIX ${TCL_PREFIX}])
+ prefix=${TCL_PREFIX}
+ else
+ AC_MSG_NOTICE([--prefix defaulting to /usr/local])
+ prefix=/usr/local
+ fi
+ fi
+ if test "${exec_prefix}" = "NONE" -a x"${prefix_default}" = x"yes" \
+ -o x"${exec_prefix_default}" = x"yes" ; then
+ if test x"${TCL_EXEC_PREFIX}" != x; then
+ AC_MSG_NOTICE([--exec-prefix defaulting to TCL_EXEC_PREFIX ${TCL_EXEC_PREFIX}])
+ exec_prefix=${TCL_EXEC_PREFIX}
+ else
+ AC_MSG_NOTICE([--exec-prefix defaulting to ${prefix}])
+ exec_prefix=$prefix
+ fi
+ fi
+])
+
+#------------------------------------------------------------------------
+# TEA_SETUP_COMPILER_CC --
+#
+# Do compiler checks the way we want. This is just a replacement
+# for AC_PROG_CC in TEA configure.in files to make them cleaner.
+#
+# Arguments:
+# none
+#
+# Results:
+#
+# Sets up CC var and other standard bits we need to make executables.
+#------------------------------------------------------------------------
+AC_DEFUN(TEA_SETUP_COMPILER_CC, [
+ # Don't put any macros that use the compiler (e.g. AC_TRY_COMPILE)
+ # in this macro, they need to go into TEA_SETUP_COMPILER instead.
+
+ # If the user did not set CFLAGS, set it now to keep
+ # the AC_PROG_CC macro from adding "-g -O2".
+ if test "${CFLAGS+set}" != "set" ; then
+ CFLAGS=""
+ fi
+
+ AC_PROG_CC
+ AC_PROG_CPP
+
+ AC_PROG_INSTALL
+
+ #--------------------------------------------------------------------
+ # Checks to see if the make program sets the $MAKE variable.
+ #--------------------------------------------------------------------
+
+ AC_PROG_MAKE_SET
+
+ #--------------------------------------------------------------------
+ # Find ranlib
+ #--------------------------------------------------------------------
+
+ AC_PROG_RANLIB
+
+ #--------------------------------------------------------------------
+ # Determines the correct binary file extension (.o, .obj, .exe etc.)
+ #--------------------------------------------------------------------
+
+ AC_OBJEXT
+ AC_EXEEXT
+])
+
+#------------------------------------------------------------------------
+# TEA_SETUP_COMPILER --
+#
+# Do compiler checks that use the compiler. This must go after
+# TEA_SETUP_COMPILER_CC, which does the actual compiler check.
+#
+# Arguments:
+# none
+#
+# Results:
+#
+# Sets up CC var and other standard bits we need to make executables.
+#------------------------------------------------------------------------
+AC_DEFUN(TEA_SETUP_COMPILER, [
+ # Any macros that use the compiler (e.g. AC_TRY_COMPILE) have to go here.
+ AC_REQUIRE([TEA_SETUP_COMPILER_CC])
+
+ #------------------------------------------------------------------------
+ # If we're using GCC, see if the compiler understands -pipe. If so, use it.
+ # It makes compiling go faster. (This is only a performance feature.)
+ #------------------------------------------------------------------------
+
+ if test -z "$no_pipe" -a -n "$GCC"; then
+ AC_MSG_CHECKING([if the compiler understands -pipe])
+ OLDCC="$CC"
+ CC="$CC -pipe"
+ AC_TRY_COMPILE(,, AC_MSG_RESULT([yes]), CC="$OLDCC"
+ AC_MSG_RESULT([no]))
+ fi
+
+ #--------------------------------------------------------------------
+ # Common compiler flag setup
+ #--------------------------------------------------------------------
+
+ AC_C_BIGENDIAN
+ if test "${TEA_PLATFORM}" = "unix" ; then
+ TEA_TCL_LINK_LIBS
+ TEA_MISSING_POSIX_HEADERS
+ # Let the user call this, because if it triggers, they will
+ # need a compat/strtod.c that is correct. Users can also
+ # use Tcl_GetDouble(FromObj) instead.
+ #TEA_BUGGY_STRTOD
+ fi
+])
+
+#------------------------------------------------------------------------
+# TEA_MAKE_LIB --
+#
+# Generate a line that can be used to build a shared/unshared library
+# in a platform independent manner.
+#
+# Arguments:
+# none
+#
+# Requires:
+#
+# Results:
+#
+# Defines the following vars:
+# CFLAGS - Done late here to note disturb other AC macros
+# MAKE_LIB - Command to execute to build the Tcl library;
+# differs depending on whether or not Tcl is being
+# compiled as a shared library.
+# MAKE_SHARED_LIB Makefile rule for building a shared library
+# MAKE_STATIC_LIB Makefile rule for building a static library
+# MAKE_STUB_LIB Makefile rule for building a stub library
+#------------------------------------------------------------------------
+
+AC_DEFUN(TEA_MAKE_LIB, [
+ if test "${TEA_PLATFORM}" = "windows" -a "$GCC" != "yes"; then
+ MAKE_STATIC_LIB="\${STLIB_LD} -out:\[$]@ \$(PKG_OBJECTS)"
+ MAKE_SHARED_LIB="\${SHLIB_LD} \${SHLIB_LD_LIBS} \${LDFLAGS_DEFAULT} -out:\[$]@ \$(PKG_OBJECTS)"
+ MAKE_STUB_LIB="\${STLIB_LD} -out:\[$]@ \$(PKG_STUB_OBJECTS)"
+ else
+ MAKE_STATIC_LIB="\${STLIB_LD} \[$]@ \$(PKG_OBJECTS)"
+ MAKE_SHARED_LIB="\${SHLIB_LD} -o \[$]@ \$(PKG_OBJECTS) \${SHLIB_LD_LIBS}"
+ MAKE_STUB_LIB="\${STLIB_LD} \[$]@ \$(PKG_STUB_OBJECTS)"
+ fi
+
+ if test "${SHARED_BUILD}" = "1" ; then
+ MAKE_LIB="${MAKE_SHARED_LIB} "
+ else
+ MAKE_LIB="${MAKE_STATIC_LIB} "
+ fi
+
+ #--------------------------------------------------------------------
+ # Shared libraries and static libraries have different names.
+ # Use the double eval to make sure any variables in the suffix is
+ # substituted. (@@@ Might not be necessary anymore)
+ #--------------------------------------------------------------------
+
+ if test "${TEA_PLATFORM}" = "windows" ; then
+ if test "${SHARED_BUILD}" = "1" ; then
+ # We force the unresolved linking of symbols that are really in
+ # the private libraries of Tcl and Tk.
+ SHLIB_LD_LIBS="${SHLIB_LD_LIBS} \"`${CYGPATH} ${TCL_BIN_DIR}/${TCL_STUB_LIB_FILE}`\""
+ if test x"${TK_BIN_DIR}" != x ; then
+ SHLIB_LD_LIBS="${SHLIB_LD_LIBS} \"`${CYGPATH} ${TK_BIN_DIR}/${TK_STUB_LIB_FILE}`\""
+ fi
+ eval eval "PKG_LIB_FILE=${PACKAGE_NAME}${SHARED_LIB_SUFFIX}"
+ else
+ eval eval "PKG_LIB_FILE=${PACKAGE_NAME}${UNSHARED_LIB_SUFFIX}"
+ fi
+ # Some packages build there own stubs libraries
+ eval eval "PKG_STUB_LIB_FILE=${PACKAGE_NAME}stub${UNSHARED_LIB_SUFFIX}"
+ # These aren't needed on Windows (either MSVC or gcc)
+ RANLIB=:
+ RANLIB_STUB=:
+ else
+ RANLIB_STUB="${RANLIB}"
+ if test "${SHARED_BUILD}" = "1" ; then
+ SHLIB_LD_LIBS="${SHLIB_LD_LIBS} ${TCL_STUB_LIB_SPEC}"
+ if test x"${TK_BIN_DIR}" != x ; then
+ SHLIB_LD_LIBS="${SHLIB_LD_LIBS} ${TK_STUB_LIB_SPEC}"
+ fi
+ eval eval "PKG_LIB_FILE=lib${PACKAGE_NAME}${SHARED_LIB_SUFFIX}"
+ RANLIB=:
+ else
+ eval eval "PKG_LIB_FILE=lib${PACKAGE_NAME}${UNSHARED_LIB_SUFFIX}"
+ fi
+ # Some packages build there own stubs libraries
+ eval eval "PKG_STUB_LIB_FILE=lib${PACKAGE_NAME}stub${UNSHARED_LIB_SUFFIX}"
+ fi
+
+ # These are escaped so that only CFLAGS is picked up at configure time.
+ # The other values will be substituted at make time.
+ CFLAGS="${CFLAGS} \${CFLAGS_DEFAULT} \${CFLAGS_WARNING}"
+ if test "${SHARED_BUILD}" = "1" ; then
+ CFLAGS="${CFLAGS} \${SHLIB_CFLAGS}"
+ fi
+
+ AC_SUBST(MAKE_LIB)
+ AC_SUBST(MAKE_SHARED_LIB)
+ AC_SUBST(MAKE_STATIC_LIB)
+ AC_SUBST(MAKE_STUB_LIB)
+ AC_SUBST(RANLIB_STUB)
+])
+
+#------------------------------------------------------------------------
+# TEA_LIB_SPEC --
+#
+# Compute the name of an existing object library located in libdir
+# from the given base name and produce the appropriate linker flags.
+#
+# Arguments:
+# basename The base name of the library without version
+# numbers, extensions, or "lib" prefixes.
+# extra_dir Extra directory in which to search for the
+# library. This location is used first, then
+# $prefix/$exec-prefix, then some defaults.
+#
+# Requires:
+# TEA_INIT and TEA_PREFIX must be called first.
+#
+# Results:
+#
+# Defines the following vars:
+# ${basename}_LIB_NAME The computed library name.
+# ${basename}_LIB_SPEC The computed linker flags.
+#------------------------------------------------------------------------
+
+AC_DEFUN(TEA_LIB_SPEC, [
+ AC_MSG_CHECKING([for $1 library])
+
+ # Look in exec-prefix for the library (defined by TEA_PREFIX).
+
+ tea_lib_name_dir="${exec_prefix}/lib"
+
+ # Or in a user-specified location.
+
+ if test x"$2" != x ; then
+ tea_extra_lib_dir=$2
+ else
+ tea_extra_lib_dir=NONE
+ fi
+
+ for i in \
+ `ls -dr ${tea_extra_lib_dir}/$1[[0-9]]*.lib 2>/dev/null ` \
+ `ls -dr ${tea_extra_lib_dir}/lib$1[[0-9]]* 2>/dev/null ` \
+ `ls -dr ${tea_lib_name_dir}/$1[[0-9]]*.lib 2>/dev/null ` \
+ `ls -dr ${tea_lib_name_dir}/lib$1[[0-9]]* 2>/dev/null ` \
+ `ls -dr /usr/lib/$1[[0-9]]*.lib 2>/dev/null ` \
+ `ls -dr /usr/lib/lib$1[[0-9]]* 2>/dev/null ` \
+ `ls -dr /usr/local/lib/$1[[0-9]]*.lib 2>/dev/null ` \
+ `ls -dr /usr/local/lib/lib$1[[0-9]]* 2>/dev/null ` ; do
+ if test -f "$i" ; then
+ tea_lib_name_dir=`dirname $i`
+ $1_LIB_NAME=`basename $i`
+ $1_LIB_PATH_NAME=$i
+ break
+ fi
+ done
+
+ if test "${TEA_PLATFORM}" = "windows"; then
+ $1_LIB_SPEC=\"`${CYGPATH} ${$1_LIB_PATH_NAME} 2>/dev/null`\"
+ else
+ # Strip off the leading "lib" and trailing ".a" or ".so"
+
+ tea_lib_name_lib=`echo ${$1_LIB_NAME}|sed -e 's/^lib//' -e 's/\.[[^.]]*$//' -e 's/\.so.*//'`
+ $1_LIB_SPEC="-L${tea_lib_name_dir} -l${tea_lib_name_lib}"
+ fi
+
+ if test "x${$1_LIB_NAME}" = x ; then
+ AC_MSG_ERROR([not found])
+ else
+ AC_MSG_RESULT([${$1_LIB_SPEC}])
+ fi
+])
+
+#------------------------------------------------------------------------
+# TEA_PRIVATE_TCL_HEADERS --
+#
+# Locate the private Tcl include files
+#
+# Arguments:
+#
+# Requires:
+# TCL_SRC_DIR Assumes that TEA_LOAD_TCLCONFIG has
+# already been called.
+#
+# Results:
+#
+# Substs the following vars:
+# TCL_TOP_DIR_NATIVE
+# TCL_GENERIC_DIR_NATIVE
+# TCL_UNIX_DIR_NATIVE
+# TCL_WIN_DIR_NATIVE
+# TCL_BMAP_DIR_NATIVE
+# TCL_TOOL_DIR_NATIVE
+# TCL_PLATFORM_DIR_NATIVE
+# TCL_BIN_DIR_NATIVE
+# TCL_INCLUDES
+#------------------------------------------------------------------------
+
+AC_DEFUN(TEA_PRIVATE_TCL_HEADERS, [
+ AC_MSG_CHECKING([for Tcl private include files])
+
+ TCL_SRC_DIR_NATIVE=`${CYGPATH} ${TCL_SRC_DIR}`
+ TCL_TOP_DIR_NATIVE=\"${TCL_SRC_DIR_NATIVE}\"
+ TCL_GENERIC_DIR_NATIVE=\"${TCL_SRC_DIR_NATIVE}/generic\"
+ TCL_UNIX_DIR_NATIVE=\"${TCL_SRC_DIR_NATIVE}/unix\"
+ TCL_WIN_DIR_NATIVE=\"${TCL_SRC_DIR_NATIVE}/win\"
+ TCL_BMAP_DIR_NATIVE=\"${TCL_SRC_DIR_NATIVE}/bitmaps\"
+ TCL_TOOL_DIR_NATIVE=\"${TCL_SRC_DIR_NATIVE}/tools\"
+ TCL_COMPAT_DIR_NATIVE=\"${TCL_SRC_DIR_NATIVE}/compat\"
+
+ if test "${TEA_PLATFORM}" = "windows"; then
+ TCL_PLATFORM_DIR_NATIVE=${TCL_WIN_DIR_NATIVE}
+ else
+ TCL_PLATFORM_DIR_NATIVE=${TCL_UNIX_DIR_NATIVE}
+ fi
+ # We want to ensure these are substituted so as not to require
+ # any *_NATIVE vars be defined in the Makefile
+ TCL_INCLUDES="-I${TCL_GENERIC_DIR_NATIVE} -I${TCL_PLATFORM_DIR_NATIVE}"
+ if test "`uname -s`" = "Darwin"; then
+ # If Tcl was built as a framework, attempt to use
+ # the framework's Headers and PrivateHeaders directories
+ case ${TCL_DEFS} in
+ *TCL_FRAMEWORK*)
+ if test -d "${TCL_BIN_DIR}/Headers" -a -d "${TCL_BIN_DIR}/PrivateHeaders"; then
+ TCL_INCLUDES="-I\"${TCL_BIN_DIR}/Headers\" -I\"${TCL_BIN_DIR}/PrivateHeaders\" ${TCL_INCLUDES}"; else
+ TCL_INCLUDES="${TCL_INCLUDES} ${TCL_INCLUDE_SPEC} `echo "${TCL_INCLUDE_SPEC}" | sed -e 's/Headers/PrivateHeaders/'`"; fi
+ ;;
+ esac
+ fi
+
+ AC_SUBST(TCL_TOP_DIR_NATIVE)
+ AC_SUBST(TCL_GENERIC_DIR_NATIVE)
+ AC_SUBST(TCL_UNIX_DIR_NATIVE)
+ AC_SUBST(TCL_WIN_DIR_NATIVE)
+ AC_SUBST(TCL_BMAP_DIR_NATIVE)
+ AC_SUBST(TCL_TOOL_DIR_NATIVE)
+ AC_SUBST(TCL_PLATFORM_DIR_NATIVE)
+
+ AC_SUBST(TCL_INCLUDES)
+ AC_MSG_RESULT([Using srcdir found in tclConfig.sh: ${TCL_SRC_DIR}])
+])
+
+#------------------------------------------------------------------------
+# TEA_PUBLIC_TCL_HEADERS --
+#
+# Locate the installed public Tcl header files
+#
+# Arguments:
+# None.
+#
+# Requires:
+# CYGPATH must be set
+#
+# Results:
+#
+# Adds a --with-tclinclude switch to configure.
+# Result is cached.
+#
+# Substs the following vars:
+# TCL_INCLUDES
+#------------------------------------------------------------------------
+
+AC_DEFUN(TEA_PUBLIC_TCL_HEADERS, [
+ AC_MSG_CHECKING([for Tcl public headers])
+
+ AC_ARG_WITH(tclinclude, [ --with-tclinclude directory containing the public Tcl header files], with_tclinclude=${withval})
+
+ AC_CACHE_VAL(ac_cv_c_tclh, [
+ # Use the value from --with-tclinclude, if it was given
+
+ if test x"${with_tclinclude}" != x ; then
+ if test -f "${with_tclinclude}/tcl.h" ; then
+ ac_cv_c_tclh=${with_tclinclude}
+ else
+ AC_MSG_ERROR([${with_tclinclude} directory does not contain tcl.h])
+ fi
+ else
+ # If Tcl was built as a framework, attempt to use
+ # the framework's Headers directory
+ case ${TCL_DEFS} in
+ *TCL_FRAMEWORK*)
+ list="`ls -d ${TCL_BIN_DIR}/Headers 2>/dev/null`"
+ ;;
+ *)
+ list=""
+ ;;
+ esac
+
+ # Look in the source dir only if Tcl is not installed,
+ # and in that situation, look there before installed locations.
+ if test -f "$TCL_BIN_DIR/Makefile" ; then
+ list="$list `ls -d ${TCL_SRC_DIR}/generic 2>/dev/null`"
+ fi
+
+ # Check order: pkg --prefix location, Tcl's --prefix location,
+ # relative to directory of tclConfig.sh.
+
+ eval "temp_includedir=${includedir}"
+ list="$list \
+ `ls -d ${temp_includedir} 2>/dev/null` \
+ `ls -d ${TCL_PREFIX}/include 2>/dev/null` \
+ `ls -d ${TCL_BIN_DIR}/../include 2>/dev/null`"
+ if test "${TEA_PLATFORM}" != "windows" -o "$GCC" = "yes"; then
+ list="$list /usr/local/include /usr/include"
+ if test x"${TCL_INCLUDE_SPEC}" != x ; then
+ d=`echo "${TCL_INCLUDE_SPEC}" | sed -e 's/^-I//'`
+ list="$list `ls -d ${d} 2>/dev/null`"
+ fi
+ fi
+ for i in $list ; do
+ if test -f "$i/tcl.h" ; then
+ ac_cv_c_tclh=$i
+ break
+ fi
+ done
+ fi
+ ])
+
+ # Print a message based on how we determined the include path
+
+ if test x"${ac_cv_c_tclh}" = x ; then
+ AC_MSG_ERROR([tcl.h not found. Please specify its location with --with-tclinclude])
+ else
+ AC_MSG_RESULT([${ac_cv_c_tclh}])
+ fi
+
+ # Convert to a native path and substitute into the output files.
+
+ INCLUDE_DIR_NATIVE=`${CYGPATH} ${ac_cv_c_tclh}`
+
+ TCL_INCLUDES=-I\"${INCLUDE_DIR_NATIVE}\"
+
+ AC_SUBST(TCL_INCLUDES)
+])
+
+#------------------------------------------------------------------------
+# TEA_PRIVATE_TK_HEADERS --
+#
+# Locate the private Tk include files
+#
+# Arguments:
+#
+# Requires:
+# TK_SRC_DIR Assumes that TEA_LOAD_TKCONFIG has
+# already been called.
+#
+# Results:
+#
+# Substs the following vars:
+# TK_INCLUDES
+#------------------------------------------------------------------------
+
+AC_DEFUN(TEA_PRIVATE_TK_HEADERS, [
+ AC_MSG_CHECKING([for Tk private include files])
+
+ TK_SRC_DIR_NATIVE=`${CYGPATH} ${TK_SRC_DIR}`
+ TK_TOP_DIR_NATIVE=\"${TK_SRC_DIR_NATIVE}\"
+ TK_UNIX_DIR_NATIVE=\"${TK_SRC_DIR_NATIVE}/unix\"
+ TK_WIN_DIR_NATIVE=\"${TK_SRC_DIR_NATIVE}/win\"
+ TK_GENERIC_DIR_NATIVE=\"${TK_SRC_DIR_NATIVE}/generic\"
+ TK_XLIB_DIR_NATIVE=\"${TK_SRC_DIR_NATIVE}/xlib\"
+ if test "${TEA_PLATFORM}" = "windows"; then
+ TK_PLATFORM_DIR_NATIVE=${TK_WIN_DIR_NATIVE}
+ else
+ TK_PLATFORM_DIR_NATIVE=${TK_UNIX_DIR_NATIVE}
+ fi
+ # We want to ensure these are substituted so as not to require
+ # any *_NATIVE vars be defined in the Makefile
+ TK_INCLUDES="-I${TK_GENERIC_DIR_NATIVE} -I${TK_PLATFORM_DIR_NATIVE}"
+ if test "${TEA_WINDOWINGSYSTEM}" = "win32" \
+ -o "${TEA_WINDOWINGSYSTEM}" = "aqua"; then
+ TK_INCLUDES="${TK_INCLUDES} -I${TK_XLIB_DIR_NATIVE}"
+ fi
+ if test "${TEA_WINDOWINGSYSTEM}" = "aqua"; then
+ TK_INCLUDES="${TK_INCLUDES} -I${TK_SRC_DIR_NATIVE}/macosx"
+ fi
+ if test "`uname -s`" = "Darwin"; then
+ # If Tk was built as a framework, attempt to use
+ # the framework's Headers and PrivateHeaders directories
+ case ${TK_DEFS} in
+ *TK_FRAMEWORK*)
+ if test -d "${TK_BIN_DIR}/Headers" -a -d "${TK_BIN_DIR}/PrivateHeaders"; then
+ TK_INCLUDES="-I\"${TK_BIN_DIR}/Headers\" -I\"${TK_BIN_DIR}/PrivateHeaders\" ${TK_INCLUDES}"; fi
+ ;;
+ esac
+ fi
+
+ AC_SUBST(TK_TOP_DIR_NATIVE)
+ AC_SUBST(TK_UNIX_DIR_NATIVE)
+ AC_SUBST(TK_WIN_DIR_NATIVE)
+ AC_SUBST(TK_GENERIC_DIR_NATIVE)
+ AC_SUBST(TK_XLIB_DIR_NATIVE)
+ AC_SUBST(TK_PLATFORM_DIR_NATIVE)
+
+ AC_SUBST(TK_INCLUDES)
+ AC_MSG_RESULT([Using srcdir found in tkConfig.sh: ${TK_SRC_DIR}])
+])
+
+#------------------------------------------------------------------------
+# TEA_PUBLIC_TK_HEADERS --
+#
+# Locate the installed public Tk header files
+#
+# Arguments:
+# None.
+#
+# Requires:
+# CYGPATH must be set
+#
+# Results:
+#
+# Adds a --with-tkinclude switch to configure.
+# Result is cached.
+#
+# Substs the following vars:
+# TK_INCLUDES
+#------------------------------------------------------------------------
+
+AC_DEFUN(TEA_PUBLIC_TK_HEADERS, [
+ AC_MSG_CHECKING([for Tk public headers])
+
+ AC_ARG_WITH(tkinclude, [ --with-tkinclude directory containing the public Tk header files.], with_tkinclude=${withval})
+
+ AC_CACHE_VAL(ac_cv_c_tkh, [
+ # Use the value from --with-tkinclude, if it was given
+
+ if test x"${with_tkinclude}" != x ; then
+ if test -f "${with_tkinclude}/tk.h" ; then
+ ac_cv_c_tkh=${with_tkinclude}
+ else
+ AC_MSG_ERROR([${with_tkinclude} directory does not contain tk.h])
+ fi
+ else
+ # If Tk was built as a framework, attempt to use
+ # the framework's Headers directory.
+ case ${TK_DEFS} in
+ *TK_FRAMEWORK*)
+ list="`ls -d ${TK_BIN_DIR}/Headers 2>/dev/null`"
+ ;;
+ *)
+ list=""
+ ;;
+ esac
+
+ # Look in the source dir only if Tk is not installed,
+ # and in that situation, look there before installed locations.
+ if test -f "$TK_BIN_DIR/Makefile" ; then
+ list="$list `ls -d ${TK_SRC_DIR}/generic 2>/dev/null`"
+ fi
+
+ # Check order: pkg --prefix location, Tk's --prefix location,
+ # relative to directory of tkConfig.sh, Tcl's --prefix location,
+ # relative to directory of tclConfig.sh.
+
+ eval "temp_includedir=${includedir}"
+ list="$list \
+ `ls -d ${temp_includedir} 2>/dev/null` \
+ `ls -d ${TK_PREFIX}/include 2>/dev/null` \
+ `ls -d ${TK_BIN_DIR}/../include 2>/dev/null` \
+ `ls -d ${TCL_PREFIX}/include 2>/dev/null` \
+ `ls -d ${TCL_BIN_DIR}/../include 2>/dev/null`"
+ if test "${TEA_PLATFORM}" != "windows" -o "$GCC" = "yes"; then
+ list="$list /usr/local/include /usr/include"
+ fi
+ for i in $list ; do
+ if test -f "$i/tk.h" ; then
+ ac_cv_c_tkh=$i
+ break
+ fi
+ done
+ fi
+ ])
+
+ # Print a message based on how we determined the include path
+
+ if test x"${ac_cv_c_tkh}" = x ; then
+ AC_MSG_ERROR([tk.h not found. Please specify its location with --with-tkinclude])
+ else
+ AC_MSG_RESULT([${ac_cv_c_tkh}])
+ fi
+
+ # Convert to a native path and substitute into the output files.
+
+ INCLUDE_DIR_NATIVE=`${CYGPATH} ${ac_cv_c_tkh}`
+
+ TK_INCLUDES=-I\"${INCLUDE_DIR_NATIVE}\"
+
+ AC_SUBST(TK_INCLUDES)
+
+ if test "${TEA_WINDOWINGSYSTEM}" = "win32" \
+ -o "${TEA_WINDOWINGSYSTEM}" = "aqua"; then
+ # On Windows and Aqua, we need the X compat headers
+ AC_MSG_CHECKING([for X11 header files])
+ if test ! -r "${INCLUDE_DIR_NATIVE}/X11/Xlib.h"; then
+ INCLUDE_DIR_NATIVE="`${CYGPATH} ${TK_SRC_DIR}/xlib`"
+ TK_XINCLUDES=-I\"${INCLUDE_DIR_NATIVE}\"
+ AC_SUBST(TK_XINCLUDES)
+ fi
+ AC_MSG_RESULT([${INCLUDE_DIR_NATIVE}])
+ fi
+])
+
+#------------------------------------------------------------------------
+# TEA_PROG_TCLSH
+# Determine the fully qualified path name of the tclsh executable
+# in the Tcl build directory or the tclsh installed in a bin
+# directory. This macro will correctly determine the name
+# of the tclsh executable even if tclsh has not yet been
+# built in the build directory. The tclsh found is always
+# associated with a tclConfig.sh file. This tclsh should be used
+# only for running extension test cases. It should never be
+# or generation of files (like pkgIndex.tcl) at build time.
+#
+# Arguments
+# none
+#
+# Results
+# Subst's the following values:
+# TCLSH_PROG
+#------------------------------------------------------------------------
+
+AC_DEFUN(TEA_PROG_TCLSH, [
+ AC_MSG_CHECKING([for tclsh])
+ if test -f "${TCL_BIN_DIR}/Makefile" ; then
+ # tclConfig.sh is in Tcl build directory
+ if test "${TEA_PLATFORM}" = "windows"; then
+ TCLSH_PROG="${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${TCL_DBGX}${EXEEXT}"
+ else
+ TCLSH_PROG="${TCL_BIN_DIR}/tclsh"
+ fi
+ else
+ # tclConfig.sh is in install location
+ if test "${TEA_PLATFORM}" = "windows"; then
+ TCLSH_PROG="tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${TCL_DBGX}${EXEEXT}"
+ else
+ TCLSH_PROG="tclsh${TCL_MAJOR_VERSION}.${TCL_MINOR_VERSION}${TCL_DBGX}"
+ fi
+ list="`ls -d ${TCL_PREFIX}/bin 2>/dev/null` \
+ `ls -d ${TCL_BIN_DIR}/../bin 2>/dev/null`"
+ for i in $list ; do
+ if test -f "$i/${TCLSH_PROG}" ; then
+ REAL_TCL_BIN_DIR="`cd "$i"; pwd`"
+ break
+ fi
+ done
+ TCLSH_PROG="${REAL_TCL_BIN_DIR}/${TCLSH_PROG}"
+ fi
+ AC_MSG_RESULT(${TCLSH_PROG})
+ AC_SUBST(TCLSH_PROG)
+])
+
+#------------------------------------------------------------------------
+# TEA_PROG_WISH
+# Determine the fully qualified path name of the wish executable
+# in the Tk build directory or the wish installed in a bin
+# directory. This macro will correctly determine the name
+# of the wish executable even if wish has not yet been
+# built in the build directory. The wish found is always
+# associated with a tkConfig.sh file. This wish should be used
+# only for running extension test cases. It should never be
+# or generation of files (like pkgIndex.tcl) at build time.
+#
+# Arguments
+# none
+#
+# Results
+# Subst's the following values:
+# WISH_PROG
+#------------------------------------------------------------------------
+
+AC_DEFUN(TEA_PROG_WISH, [
+ AC_MSG_CHECKING([for wish])
+ if test -f "${TK_BIN_DIR}/Makefile" ; then
+ # tkConfig.sh is in Tk build directory
+ if test "${TEA_PLATFORM}" = "windows"; then
+ WISH_PROG="${TK_BIN_DIR}/wish${TK_MAJOR_VERSION}${TK_MINOR_VERSION}${TK_DBGX}${EXEEXT}"
+ else
+ WISH_PROG="${TK_BIN_DIR}/wish"
+ fi
+ else
+ # tkConfig.sh is in install location
+ if test "${TEA_PLATFORM}" = "windows"; then
+ WISH_PROG="wish${TK_MAJOR_VERSION}${TK_MINOR_VERSION}${TK_DBGX}${EXEEXT}"
+ else
+ WISH_PROG="wish${TK_MAJOR_VERSION}.${TK_MINOR_VERSION}${TK_DBGX}"
+ fi
+ list="`ls -d ${TK_PREFIX}/bin 2>/dev/null` \
+ `ls -d ${TK_BIN_DIR}/../bin 2>/dev/null`"
+ for i in $list ; do
+ if test -f "$i/${WISH_PROG}" ; then
+ REAL_TK_BIN_DIR="`cd "$i"; pwd`"
+ break
+ fi
+ done
+ WISH_PROG="${REAL_TK_BIN_DIR}/${WISH_PROG}"
+ fi
+ AC_MSG_RESULT(${WISH_PROG})
+ AC_SUBST(WISH_PROG)
+])
+
+#------------------------------------------------------------------------
+# TEA_PATH_CONFIG --
+#
+# Locate the ${1}Config.sh file and perform a sanity check on
+# the ${1} compile flags. These are used by packages like
+# [incr Tk] that load *Config.sh files from more than Tcl and Tk.
+#
+# Arguments:
+# none
+#
+# Results:
+#
+# Adds the following arguments to configure:
+# --with-$1=...
+#
+# Defines the following vars:
+# $1_BIN_DIR Full path to the directory containing
+# the $1Config.sh file
+#------------------------------------------------------------------------
+
+AC_DEFUN(TEA_PATH_CONFIG, [
+ #
+ # Ok, lets find the $1 configuration
+ # First, look for one uninstalled.
+ # the alternative search directory is invoked by --with-$1
+ #
+
+ if test x"${no_$1}" = x ; then
+ # we reset no_$1 in case something fails here
+ no_$1=true
+ AC_ARG_WITH($1, [ --with-$1 directory containing $1 configuration ($1Config.sh)], with_$1config=${withval})
+ AC_MSG_CHECKING([for $1 configuration])
+ AC_CACHE_VAL(ac_cv_c_$1config,[
+
+ # First check to see if --with-$1 was specified.
+ if test x"${with_$1config}" != x ; then
+ case ${with_$1config} in
+ */$1Config.sh )
+ if test -f ${with_$1config}; then
+ AC_MSG_WARN([--with-$1 argument should refer to directory containing $1Config.sh, not to $1Config.sh itself])
+ with_$1config=`echo ${with_$1config} | sed 's!/$1Config\.sh$!!'`
+ fi;;
+ esac
+ if test -f "${with_$1config}/$1Config.sh" ; then
+ ac_cv_c_$1config=`(cd ${with_$1config}; pwd)`
+ else
+ AC_MSG_ERROR([${with_$1config} directory doesn't contain $1Config.sh])
+ fi
+ fi
+
+ # then check for a private $1 installation
+ if test x"${ac_cv_c_$1config}" = x ; then
+ for i in \
+ ../$1 \
+ `ls -dr ../$1*[[0-9]].[[0-9]]*.[[0-9]]* 2>/dev/null` \
+ `ls -dr ../$1*[[0-9]].[[0-9]][[0-9]] 2>/dev/null` \
+ `ls -dr ../$1*[[0-9]].[[0-9]] 2>/dev/null` \
+ `ls -dr ../$1*[[0-9]].[[0-9]]* 2>/dev/null` \
+ ../../$1 \
+ `ls -dr ../../$1*[[0-9]].[[0-9]]*.[[0-9]]* 2>/dev/null` \
+ `ls -dr ../../$1*[[0-9]].[[0-9]][[0-9]] 2>/dev/null` \
+ `ls -dr ../../$1*[[0-9]].[[0-9]] 2>/dev/null` \
+ `ls -dr ../../$1*[[0-9]].[[0-9]]* 2>/dev/null` \
+ ../../../$1 \
+ `ls -dr ../../../$1*[[0-9]].[[0-9]]*.[[0-9]]* 2>/dev/null` \
+ `ls -dr ../../../$1*[[0-9]].[[0-9]][[0-9]] 2>/dev/null` \
+ `ls -dr ../../../$1*[[0-9]].[[0-9]] 2>/dev/null` \
+ `ls -dr ../../../$1*[[0-9]].[[0-9]]* 2>/dev/null` \
+ ${srcdir}/../$1 \
+ `ls -dr ${srcdir}/../$1*[[0-9]].[[0-9]]*.[[0-9]]* 2>/dev/null` \
+ `ls -dr ${srcdir}/../$1*[[0-9]].[[0-9]][[0-9]] 2>/dev/null` \
+ `ls -dr ${srcdir}/../$1*[[0-9]].[[0-9]] 2>/dev/null` \
+ `ls -dr ${srcdir}/../$1*[[0-9]].[[0-9]]* 2>/dev/null` \
+ ; do
+ if test -f "$i/$1Config.sh" ; then
+ ac_cv_c_$1config=`(cd $i; pwd)`
+ break
+ fi
+ if test -f "$i/unix/$1Config.sh" ; then
+ ac_cv_c_$1config=`(cd $i/unix; pwd)`
+ break
+ fi
+ done
+ fi
+
+ # check in a few common install locations
+ if test x"${ac_cv_c_$1config}" = x ; then
+ for i in `ls -d ${libdir} 2>/dev/null` \
+ `ls -d ${exec_prefix}/lib 2>/dev/null` \
+ `ls -d ${prefix}/lib 2>/dev/null` \
+ `ls -d /usr/local/lib 2>/dev/null` \
+ `ls -d /usr/contrib/lib 2>/dev/null` \
+ `ls -d /usr/lib 2>/dev/null` \
+ ; do
+ if test -f "$i/$1Config.sh" ; then
+ ac_cv_c_$1config=`(cd $i; pwd)`
+ break
+ fi
+ done
+ fi
+ ])
+
+ if test x"${ac_cv_c_$1config}" = x ; then
+ $1_BIN_DIR="# no $1 configs found"
+ AC_MSG_WARN("Cannot find $1 configuration definitions")
+ exit 0
+ else
+ no_$1=
+ $1_BIN_DIR=${ac_cv_c_$1config}
+ AC_MSG_RESULT([found $$1_BIN_DIR/$1Config.sh])
+ fi
+ fi
+])
+
+#------------------------------------------------------------------------
+# TEA_LOAD_CONFIG --
+#
+# Load the $1Config.sh file
+#
+# Arguments:
+#
+# Requires the following vars to be set:
+# $1_BIN_DIR
+#
+# Results:
+#
+# Subst the following vars:
+# $1_SRC_DIR
+# $1_LIB_FILE
+# $1_LIB_SPEC
+#
+#------------------------------------------------------------------------
+
+AC_DEFUN(TEA_LOAD_CONFIG, [
+ AC_MSG_CHECKING([for existence of ${$1_BIN_DIR}/$1Config.sh])
+
+ if test -f "${$1_BIN_DIR}/$1Config.sh" ; then
+ AC_MSG_RESULT([loading])
+ . ${$1_BIN_DIR}/$1Config.sh
+ else
+ AC_MSG_RESULT([file not found])
+ fi
+
+ #
+ # If the $1_BIN_DIR is the build directory (not the install directory),
+ # then set the common variable name to the value of the build variables.
+ # For example, the variable $1_LIB_SPEC will be set to the value
+ # of $1_BUILD_LIB_SPEC. An extension should make use of $1_LIB_SPEC
+ # instead of $1_BUILD_LIB_SPEC since it will work with both an
+ # installed and uninstalled version of Tcl.
+ #
+
+ if test -f ${$1_BIN_DIR}/Makefile ; then
+ AC_MSG_WARN([Found Makefile - using build library specs for $1])
+ $1_LIB_SPEC=${$1_BUILD_LIB_SPEC}
+ $1_STUB_LIB_SPEC=${$1_BUILD_STUB_LIB_SPEC}
+ $1_STUB_LIB_PATH=${$1_BUILD_STUB_LIB_PATH}
+ fi
+
+ AC_SUBST($1_VERSION)
+ AC_SUBST($1_BIN_DIR)
+ AC_SUBST($1_SRC_DIR)
+
+ AC_SUBST($1_LIB_FILE)
+ AC_SUBST($1_LIB_SPEC)
+
+ AC_SUBST($1_STUB_LIB_FILE)
+ AC_SUBST($1_STUB_LIB_SPEC)
+ AC_SUBST($1_STUB_LIB_PATH)
+])
+
+#------------------------------------------------------------------------
+# TEA_PATH_CELIB --
+#
+# Locate Keuchel's celib emulation layer for targeting Win/CE
+#
+# Arguments:
+# none
+#
+# Results:
+#
+# Adds the following arguments to configure:
+# --with-celib=...
+#
+# Defines the following vars:
+# CELIB_DIR Full path to the directory containing
+# the include and platform lib files
+#------------------------------------------------------------------------
+
+AC_DEFUN(TEA_PATH_CELIB, [
+ # First, look for one uninstalled.
+ # the alternative search directory is invoked by --with-celib
+
+ if test x"${no_celib}" = x ; then
+ # we reset no_celib in case something fails here
+ no_celib=true
+ AC_ARG_WITH(celib,[ --with-celib=DIR use Windows/CE support library from DIR], with_celibconfig=${withval})
+ AC_MSG_CHECKING([for Windows/CE celib directory])
+ AC_CACHE_VAL(ac_cv_c_celibconfig,[
+ # First check to see if --with-celibconfig was specified.
+ if test x"${with_celibconfig}" != x ; then
+ if test -d "${with_celibconfig}/inc" ; then
+ ac_cv_c_celibconfig=`(cd ${with_celibconfig}; pwd)`
+ else
+ AC_MSG_ERROR([${with_celibconfig} directory doesn't contain inc directory])
+ fi
+ fi
+
+ # then check for a celib library
+ if test x"${ac_cv_c_celibconfig}" = x ; then
+ for i in \
+ ../celib-palm-3.0 \
+ ../celib \
+ ../../celib-palm-3.0 \
+ ../../celib \
+ `ls -dr ../celib-*3.[[0-9]]* 2>/dev/null` \
+ ${srcdir}/../celib-palm-3.0 \
+ ${srcdir}/../celib \
+ `ls -dr ${srcdir}/../celib-*3.[[0-9]]* 2>/dev/null` \
+ ; do
+ if test -d "$i/inc" ; then
+ ac_cv_c_celibconfig=`(cd $i; pwd)`
+ break
+ fi
+ done
+ fi
+ ])
+ if test x"${ac_cv_c_celibconfig}" = x ; then
+ AC_MSG_ERROR([Cannot find celib support library directory])
+ else
+ no_celib=
+ CELIB_DIR=${ac_cv_c_celibconfig}
+ CELIB_DIR=`echo "$CELIB_DIR" | sed -e 's!\\\!/!g'`
+ AC_MSG_RESULT([found $CELIB_DIR])
+ fi
+ fi
+])
diff --git a/ng/Togl-1.7/texture.c b/ng/Togl-1.7/texture.c
new file mode 100644
index 00000000..6a6f39f9
--- /dev/null
+++ b/ng/Togl-1.7/texture.c
@@ -0,0 +1,608 @@
+/* $Id: texture.c,v 1.10 2005/04/23 07:49:14 gregcouch Exp $ */
+
+/*
+ * Togl - a Tk OpenGL widget
+ * Copyright (C) 1996-1997 Brian Paul and Ben Bederson
+ * See the LICENSE file for copyright details.
+ */
+
+
+/*
+ * An example Togl program demonstrating texture mapping
+ */
+
+
+#include "togl.h"
+#include
+#include
+#if defined(TOGL_AGL) || defined(TOGL_AGL_CLASSIC)
+# include
+#else
+# include
+#endif
+#include "image.h"
+
+
+/*
+ * The following variable is a special hack that is needed in order for
+ * Sun shared libraries to be used for Tcl.
+ */
+#ifdef SUN
+extern int matherr();
+int *tclDummyMathPtr = (int *) matherr;
+#endif
+
+#define CHECKER 0
+#define FACE 1
+#define TREE 2
+
+
+static GLenum minfilter = GL_NEAREST_MIPMAP_LINEAR;
+static GLenum magfilter = GL_LINEAR;
+static GLenum swrap = GL_REPEAT;
+static GLenum twrap = GL_REPEAT;
+static GLenum envmode = GL_MODULATE;
+static GLubyte polycolor[4] = { 255, 255, 255, 255 };
+static int image = CHECKER;
+static GLfloat coord_scale = 1.0;
+static GLfloat xrot = 0.0;
+static GLfloat yrot = 0.0;
+static GLfloat scale = 1.0;
+
+static GLint width, height;
+
+static GLboolean blend = GL_FALSE;
+
+
+/*
+ * Load a texture image. n is one of CHECKER, FACE or TREE.
+ */
+void
+texture_image(int n)
+{
+ if (n == CHECKER) {
+#define WIDTH 64
+#define HEIGHT 64
+ GLubyte teximage[WIDTH * HEIGHT][4];
+ int i, j;
+
+ for (i = 0; i < HEIGHT; i++) {
+ for (j = 0; j < WIDTH; j++) {
+ GLubyte value;
+
+ value = ((i / 4 + j / 4) % 2) ? 0xff : 0x00;
+ teximage[i * WIDTH + j][0] = value;
+ teximage[i * WIDTH + j][1] = value;
+ teximage[i * WIDTH + j][2] = value;
+ teximage[i * WIDTH + j][3] = value;
+ }
+ }
+
+ glEnable(GL_TEXTURE_2D);
+ gluBuild2DMipmaps(GL_TEXTURE_2D, 4, WIDTH, HEIGHT,
+ GL_RGBA, GL_UNSIGNED_BYTE, teximage);
+ blend = GL_FALSE;
+
+#undef WIDTH
+#undef HEIGHT
+ } else if (n == FACE) {
+ TK_RGBImageRec *img = tkRGBImageLoad("ben.rgb");
+
+ if (img) {
+ glEnable(GL_TEXTURE_2D);
+ glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
+ gluBuild2DMipmaps(GL_TEXTURE_2D, img->sizeZ, img->sizeX, img->sizeY,
+ img->sizeZ == 3 ? GL_RGB : GL_RGBA,
+ GL_UNSIGNED_BYTE, img->data);
+
+ blend = GL_TRUE;
+ }
+ } else if (n == TREE) {
+ TK_RGBImageRec *img = tkRGBImageLoad("tree2.rgba");
+
+ if (img) {
+ glEnable(GL_TEXTURE_2D);
+ glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
+ gluBuild2DMipmaps(GL_TEXTURE_2D, img->sizeZ, img->sizeX, img->sizeY,
+ img->sizeZ == 3 ? GL_RGB : GL_RGBA,
+ GL_UNSIGNED_BYTE, img->data);
+
+ blend = GL_TRUE;
+ }
+ } else {
+ abort();
+ }
+}
+
+
+/*
+ * Togl widget create callback. This is called by Tcl/Tk when the widget has
+ * been realized. Here's where one may do some one-time context setup or
+ * initializations.
+ */
+void
+create_cb(Togl *togl)
+{
+ glEnable(GL_DEPTH_TEST); /* Enable depth buffering */
+
+ texture_image(CHECKER);
+
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, magfilter);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, minfilter);
+}
+
+
+/*
+ * Togl widget reshape callback. This is called by Tcl/Tk when the widget
+ * has been resized. Typically, we call glViewport and perhaps setup the
+ * projection matrix.
+ */
+void
+reshape_cb(Togl *togl)
+{
+ width = Togl_Width(togl);
+ height = Togl_Height(togl);
+
+ glViewport(0, 0, width, height);
+
+}
+
+
+static void
+check_error(char *where)
+{
+ GLenum error;
+
+ while (1) {
+ error = glGetError();
+ if (error == GL_NO_ERROR) {
+ break;
+ }
+ printf("OpenGL error near %s: %s\n", where, gluErrorString(error));
+ }
+}
+
+
+
+/*
+ * Togl widget display callback. This is called by Tcl/Tk when the widget's
+ * contents have to be redrawn. Typically, we clear the color and depth
+ * buffers, render our objects, then swap the front/back color buffers.
+ */
+void
+display_cb(Togl *togl)
+{
+ float aspect = (float) width / (float) height;
+
+ check_error("begin display\n");
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ /* Draw background image */
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+
+ glDisable(GL_TEXTURE_2D);
+ glDisable(GL_DEPTH_TEST);
+ glBegin(GL_POLYGON);
+ glColor3f(0.0, 0.0, 0.3);
+ glVertex2f(-1.0, -1.0);
+ glColor3f(0.0, 0.0, 0.3);
+ glVertex2f(1.0, -1.0);
+ glColor3f(0.0, 0.0, 0.9);
+ glVertex2f(1.0, 1.0);
+ glColor3f(0.0, 0.0, 0.9);
+ glVertex2f(-1.0, 1.0);
+ glEnd();
+
+ /* draw textured object */
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ glFrustum(-aspect, aspect, -1.0, 1.0, 2.0, 10.0);
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ glTranslatef(0.0, 0.0, -5.0);
+ glScalef(scale, scale, scale);
+ glRotatef(yrot, 0.0, 1.0, 0.0);
+ glRotatef(xrot, 1.0, 0.0, 0.0);
+
+ glEnable(GL_DEPTH_TEST);
+ glEnable(GL_TEXTURE_2D);
+ glColor4ubv(polycolor);
+
+ if (blend) {
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ glEnable(GL_BLEND);
+ }
+
+ glBegin(GL_POLYGON);
+ glTexCoord2f(0.0, 0.0);
+ glVertex2f(-1.0, -1.0);
+ glTexCoord2f(coord_scale, 0.0);
+ glVertex2f(1.0, -1.0);
+ glTexCoord2f(coord_scale, coord_scale);
+ glVertex2f(1.0, 1.0);
+ glTexCoord2f(0.0, coord_scale);
+ glVertex2f(-1.0, 1.0);
+ glEnd();
+
+ glDisable(GL_BLEND);
+
+ Togl_SwapBuffers(togl);
+}
+
+
+/*
+ * Called when a magnification filter radio button is pressed.
+ */
+int
+magfilter_cb(Togl *togl, int argc, CONST84 char *argv[])
+{
+ Tcl_Interp *interp = Togl_Interp(togl);
+
+ if (strcmp(argv[2], "GL_NEAREST") == 0) {
+ magfilter = GL_NEAREST;
+ } else if (strcmp(argv[2], "GL_LINEAR") == 0) {
+ magfilter = GL_LINEAR;
+ } else {
+ Tcl_SetResult(interp, "unknown magnification filter type", TCL_STATIC);
+ return TCL_ERROR;
+ }
+
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, magfilter);
+ Togl_PostRedisplay(togl);
+
+ return TCL_OK;
+}
+
+
+/*
+ * Called when a minification filter radio button is pressed.
+ */
+int
+minfilter_cb(Togl *togl, int argc, CONST84 char *argv[])
+{
+ Tcl_Interp *interp = Togl_Interp(togl);
+
+ if (strcmp(argv[2], "GL_NEAREST") == 0) {
+ minfilter = GL_NEAREST;
+ } else if (strcmp(argv[2], "GL_LINEAR") == 0) {
+ minfilter = GL_LINEAR;
+ } else if (strcmp(argv[2], "GL_NEAREST_MIPMAP_NEAREST") == 0) {
+ minfilter = GL_NEAREST_MIPMAP_NEAREST;
+ } else if (strcmp(argv[2], "GL_LINEAR_MIPMAP_NEAREST") == 0) {
+ minfilter = GL_LINEAR_MIPMAP_NEAREST;
+ } else if (strcmp(argv[2], "GL_NEAREST_MIPMAP_LINEAR") == 0) {
+ minfilter = GL_NEAREST_MIPMAP_LINEAR;
+ } else if (strcmp(argv[2], "GL_LINEAR_MIPMAP_LINEAR") == 0) {
+ minfilter = GL_LINEAR_MIPMAP_LINEAR;
+ } else {
+ Tcl_SetResult(interp, "unknown minification filter type", TCL_STATIC);
+ return TCL_ERROR;
+ }
+
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, minfilter);
+ Togl_PostRedisplay(togl);
+
+ return TCL_OK;
+}
+
+
+int
+xrot_cb(Togl *togl, int argc, CONST84 char *argv[])
+{
+ Tcl_Interp *interp = Togl_Interp(togl);
+
+ /* error checking */
+ if (argc != 3) {
+ Tcl_SetResult(interp,
+ "wrong # args: should be \"pathName setXrot ?angle?\"",
+ TCL_STATIC);
+ return TCL_ERROR;
+ }
+
+ xrot = atof(argv[2]);
+
+ Togl_PostRedisplay(togl);
+
+ /* Let result string equal value */
+ strcpy(interp->result, argv[2]);
+ return TCL_OK;
+}
+
+
+int
+yrot_cb(Togl *togl, int argc, CONST84 char *argv[])
+{
+ Tcl_Interp *interp = Togl_Interp(togl);
+
+ /* error checking */
+ if (argc != 3) {
+ Tcl_SetResult(interp,
+ "wrong # args: should be \"pathName setYrot ?angle?\"",
+ TCL_STATIC);
+ return TCL_ERROR;
+ }
+
+ yrot = atof(argv[2]);
+
+ Togl_PostRedisplay(togl);
+
+ /* Let result string equal value */
+ strcpy(interp->result, argv[2]);
+ return TCL_OK;
+}
+
+
+int
+scale_cb(Togl *togl, int argc, CONST84 char *argv[])
+{
+ Tcl_Interp *interp = Togl_Interp(togl);
+
+ /* error checking */
+ if (argc != 3) {
+ Tcl_SetResult(interp,
+ "wrong # args: should be \"pathName scale ?value?\"",
+ TCL_STATIC);
+ return TCL_ERROR;
+ }
+
+ scale = atof(argv[2]);
+
+ Togl_PostRedisplay(togl);
+
+ /* Let result string equal value */
+ strcpy(interp->result, argv[2]);
+ return TCL_OK;
+}
+
+
+/*
+ * Called when S texture coordinate wrapping is changed.
+ */
+int
+swrap_cb(Togl *togl, int argc, CONST84 char *argv[])
+{
+ Tcl_Interp *interp = Togl_Interp(togl);
+
+ /* error checking */
+ if (argc != 3) {
+ Tcl_SetResult(interp,
+ "wrong # args: should be \"pathName swrap ?mode?\"",
+ TCL_STATIC);
+ return TCL_ERROR;
+ }
+
+ if (strcmp(argv[2], "GL_CLAMP") == 0) {
+ swrap = GL_CLAMP;
+ } else if (strcmp(argv[2], "GL_REPEAT") == 0) {
+ swrap = GL_REPEAT;
+ } else {
+ Tcl_SetResult(interp, "unknown wrap value", TCL_STATIC);
+ return TCL_ERROR;
+ }
+
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, swrap);
+ Togl_PostRedisplay(togl);
+
+ /* Let result string equal value */
+ strcpy(interp->result, argv[2]);
+ return TCL_OK;
+}
+
+
+/*
+ * Called when T texture coordinate wrapping is changed.
+ */
+int
+twrap_cb(Togl *togl, int argc, CONST84 char *argv[])
+{
+ Tcl_Interp *interp = Togl_Interp(togl);
+
+ /* error checking */
+ if (argc != 3) {
+ Tcl_SetResult(interp,
+ "wrong # args: should be \"pathName twrap ?mode?\"",
+ TCL_STATIC);
+ return TCL_ERROR;
+ }
+
+ if (strcmp(argv[2], "GL_CLAMP") == 0) {
+ twrap = GL_CLAMP;
+ } else if (strcmp(argv[2], "GL_REPEAT") == 0) {
+ twrap = GL_REPEAT;
+ } else {
+ Tcl_SetResult(interp, "unknown wrap value", TCL_STATIC);
+ return TCL_ERROR;
+ }
+
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, twrap);
+ Togl_PostRedisplay(togl);
+
+ /* Let result string equal value */
+ strcpy(interp->result, argv[2]);
+ return TCL_OK;
+}
+
+
+/*
+ * Called when the texture environment mode is changed.
+ */
+int
+envmode_cb(Togl *togl, int argc, CONST84 char *argv[])
+{
+ Tcl_Interp *interp = Togl_Interp(togl);
+
+ /* error checking */
+ if (argc != 3) {
+ Tcl_SetResult(interp,
+ "wrong # args: should be \"pathName envmode ?mode?\"",
+ TCL_STATIC);
+ return TCL_ERROR;
+ }
+
+ if (strcmp(argv[2], "GL_MODULATE") == 0) {
+ envmode = GL_MODULATE;
+ } else if (strcmp(argv[2], "GL_DECAL") == 0) {
+ envmode = GL_DECAL;
+ } else if (strcmp(argv[2], "GL_BLEND") == 0) {
+ envmode = GL_BLEND;
+ } else {
+ Tcl_SetResult(interp, "unknown texture env mode", TCL_STATIC);
+ return TCL_ERROR;
+ }
+
+ glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, envmode);
+ Togl_PostRedisplay(togl);
+
+ /* Let result string equal value */
+ strcpy(interp->result, argv[2]);
+ return TCL_OK;
+}
+
+
+/*
+ * Called when the polygon color is changed.
+ */
+int
+polycolor_cb(Togl *togl, int argc, CONST84 char *argv[])
+{
+ Tcl_Interp *interp = Togl_Interp(togl);
+
+ /* error checking */
+ if (argc != 5) {
+ Tcl_SetResult(interp,
+ "wrong # args: should be \"pathName polycolor ?r? ?g? ?b?\"",
+ TCL_STATIC);
+ return TCL_ERROR;
+ }
+
+ polycolor[0] = atoi(argv[2]);
+ polycolor[1] = atoi(argv[3]);
+ polycolor[2] = atoi(argv[4]);
+
+ Togl_PostRedisplay(togl);
+
+ /* Let result string equal value */
+ strcpy(interp->result, argv[2]);
+ return TCL_OK;
+}
+
+
+/*
+ * Called when the texture image is to be changed
+ */
+int
+image_cb(Togl *togl, int argc, CONST84 char *argv[])
+{
+ Tcl_Interp *interp = Togl_Interp(togl);
+
+ /* error checking */
+ if (argc != 3) {
+ Tcl_SetResult(interp,
+ "wrong # args: should be \"pathName image ?name?\"",
+ TCL_STATIC);
+ return TCL_ERROR;
+ }
+
+ if (strcmp(argv[2], "CHECKER") == 0) {
+ texture_image(CHECKER);
+ } else if (strcmp(argv[2], "FACE") == 0) {
+ texture_image(FACE);
+ } else if (strcmp(argv[2], "TREE") == 0) {
+ texture_image(TREE);
+ } else {
+ Tcl_SetResult(interp, "unknown texture image", TCL_STATIC);
+ return TCL_ERROR;
+ }
+
+ Togl_PostRedisplay(togl);
+
+ /* Let result string equal value */
+ strcpy(interp->result, argv[2]);
+ return TCL_OK;
+}
+
+
+/*
+ * Called when the texture coordinate scale is changed.
+ */
+int
+coord_scale_cb(Togl *togl, int argc, CONST84 char *argv[])
+{
+ Tcl_Interp *interp = Togl_Interp(togl);
+ float s;
+
+ /* error checking */
+ if (argc != 3) {
+ Tcl_SetResult(interp,
+ "wrong # args: should be \"pathName coord_scale ?scale?\"",
+ TCL_STATIC);
+ return TCL_ERROR;
+ }
+
+ s = atof(argv[2]);
+ if (s > 0.0 && s < 10.0) {
+ coord_scale = s;
+ Togl_PostRedisplay(togl);
+ }
+
+ /* Let result string equal value */
+ strcpy(interp->result, argv[2]);
+ return TCL_OK;
+}
+
+
+TOGL_EXTERN int
+Texture_Init(Tcl_Interp *interp)
+{
+ /*
+ * Initialize Tcl, Tk, and the Togl widget module.
+ */
+#ifdef USE_TCL_STUBS
+ if (Tcl_InitStubs(interp, "8.1", 0) == NULL) {
+ return TCL_ERROR;
+ }
+#endif
+#ifdef USE_TK_STUBS
+ if (Tk_InitStubs(interp, "8.1", 0) == NULL) {
+ return TCL_ERROR;
+ }
+#endif
+
+ if (Togl_Init(interp) == TCL_ERROR) {
+ return TCL_ERROR;
+ }
+
+ /*
+ * Specify the C callback functions for widget creation, display,
+ * and reshape.
+ */
+ Togl_CreateFunc(create_cb);
+ Togl_DisplayFunc(display_cb);
+ Togl_ReshapeFunc(reshape_cb);
+
+ /*
+ * Make a new Togl widget command so the Tcl code can set a C variable.
+ */
+ Togl_CreateCommand("min_filter", minfilter_cb);
+ Togl_CreateCommand("mag_filter", magfilter_cb);
+ Togl_CreateCommand("xrot", xrot_cb);
+ Togl_CreateCommand("yrot", yrot_cb);
+ Togl_CreateCommand("scale", scale_cb);
+ Togl_CreateCommand("swrap", swrap_cb);
+ Togl_CreateCommand("twrap", twrap_cb);
+ Togl_CreateCommand("envmode", envmode_cb);
+ Togl_CreateCommand("polycolor", polycolor_cb);
+ Togl_CreateCommand("image", image_cb);
+ Togl_CreateCommand("coord_scale", coord_scale_cb);
+
+ /*
+ * Call Tcl_CreateCommand for application-specific commands, if
+ * they weren't already created by the init procedures called above.
+ */
+
+ return TCL_OK;
+}
diff --git a/ng/Togl-1.7/texture.tcl b/ng/Togl-1.7/texture.tcl
new file mode 100644
index 00000000..6333c069
--- /dev/null
+++ b/ng/Togl-1.7/texture.tcl
@@ -0,0 +1,283 @@
+#!/bin/sh
+# the next line restarts using wish \
+exec wish "$0" "$@"
+
+# $Id: texture.tcl,v 1.5 2001/12/20 13:59:31 beskow Exp $
+
+# Togl - a Tk OpenGL widget
+# Copyright (C) 1996 Brian Paul and Ben Bederson
+# See the LICENSE file for copyright details.
+
+
+# $Log: texture.tcl,v $
+# Revision 1.5 2001/12/20 13:59:31 beskow
+# Improved error-handling in togl.c in case of window creation failure
+# Added pkgIndex target to makefile
+# Updated documentation to reflect stubs-interface (Togl.html + new README.stubs)
+# Added tk8.4a3 headers
+# Removed obsolete Tk internal headers
+#
+# Revision 1.4 2001/01/29 18:11:53 brianp
+# Jonas Beskow's changes to use Tcl/Tk stub interface
+#
+# Revision 1.3 1998/01/24 14:05:50 brianp
+# added quit button (Ben Bederson)
+#
+# Revision 1.2 1997/09/30 23:54:46 brianp
+# new layout
+#
+# Revision 1.1 1996/10/23 23:18:36 brianp
+# Initial revision
+#
+
+
+# Togl texture map demo
+
+load [file dirname [info script]]/texture[info sharedlibextension]
+
+
+# Called magnification filter changes
+proc new_magfilter {} {
+ global magfilter
+ .f1.view mag_filter $magfilter
+}
+
+
+# Called minification filter changes
+proc new_minfilter {} {
+ global minfilter
+ .f1.view min_filter $minfilter
+}
+
+
+# Called when texture image radio button changes
+proc new_image {} {
+ global teximage
+ .f1.view image $teximage
+}
+
+
+# Called when texture S wrap button changes
+proc new_swrap {} {
+ global swrap
+ .f1.view swrap $swrap
+}
+
+
+# Called when texture T wrap button changes
+proc new_twrap {} {
+ global twrap
+ .f1.view twrap $twrap
+}
+
+
+# Called when texture environment radio button selected
+proc new_env {} {
+ global envmode
+ .f1.view envmode $envmode
+}
+
+
+# Called when polygon color sliders change
+proc new_color { foo } {
+ global poly_red poly_green poly_blue
+ .f1.view polycolor $poly_red $poly_green $poly_blue
+}
+
+
+proc new_coord_scale { name element op } {
+ global coord_scale
+ .f1.view coord_scale $coord_scale
+}
+
+
+
+
+# Make the widgets
+proc setup {} {
+ global magfilter
+ global minfilter
+ global teximage
+ global swrap
+ global twrap
+ global envmode
+ global poly_red
+ global poly_green
+ global poly_blue
+ global coord_scale
+ global startx starty # location of mouse when button pressed
+ global xangle yangle
+ global xangle0 yangle0
+ global scale scale0
+
+ wm title . "Texture Map Options"
+
+ ### Two frames: top half and bottom half
+ frame .f1
+ frame .f2
+
+ ### The OpenGL window
+ togl .f1.view -width 250 -height 250 -rgba true -double true -depth true
+
+
+ ### Filter radio buttons
+ frame .f1.filter -relief ridge -borderwidth 3
+
+ frame .f1.filter.mag -relief ridge -borderwidth 2
+
+ label .f1.filter.mag.label -text "Magnification Filter" -anchor w
+ radiobutton .f1.filter.mag.nearest -text GL_NEAREST -anchor w -variable magfilter -value GL_NEAREST -command new_magfilter
+ radiobutton .f1.filter.mag.linear -text GL_LINEAR -anchor w -variable magfilter -value GL_LINEAR -command new_magfilter
+
+ frame .f1.filter.min -relief ridge -borderwidth 2
+
+ label .f1.filter.min.label -text "Minification Filter" -anchor w
+ radiobutton .f1.filter.min.nearest -text GL_NEAREST -anchor w -variable minfilter -value GL_NEAREST -command new_minfilter
+ radiobutton .f1.filter.min.linear -text GL_LINEAR -anchor w -variable minfilter -value GL_LINEAR -command new_minfilter
+ radiobutton .f1.filter.min.nearest_mipmap_nearest -text GL_NEAREST_MIPMAP_NEAREST -anchor w -variable minfilter -value GL_NEAREST_MIPMAP_NEAREST -command new_minfilter
+ radiobutton .f1.filter.min.linear_mipmap_nearest -text GL_LINEAR_MIPMAP_NEAREST -anchor w -variable minfilter -value GL_LINEAR_MIPMAP_NEAREST -command new_minfilter
+ radiobutton .f1.filter.min.nearest_mipmap_linear -text GL_NEAREST_MIPMAP_LINEAR -anchor w -variable minfilter -value GL_NEAREST_MIPMAP_LINEAR -command new_minfilter
+ radiobutton .f1.filter.min.linear_mipmap_linear -text GL_LINEAR_MIPMAP_LINEAR -anchor w -variable minfilter -value GL_LINEAR_MIPMAP_LINEAR -command new_minfilter
+
+ pack .f1.filter.mag -fill x
+ pack .f1.filter.mag.label -fill x
+ pack .f1.filter.mag.nearest -side top -fill x
+ pack .f1.filter.mag.linear -side top -fill x
+
+ pack .f1.filter.min -fill both -expand true
+ pack .f1.filter.min.label -side top -fill x
+ pack .f1.filter.min.nearest -side top -fill x
+ pack .f1.filter.min.linear -side top -fill x
+ pack .f1.filter.min.nearest_mipmap_nearest -side top -fill x
+ pack .f1.filter.min.linear_mipmap_nearest -side top -fill x
+ pack .f1.filter.min.nearest_mipmap_linear -side top -fill x
+ pack .f1.filter.min.linear_mipmap_linear -side top -fill x
+
+
+ ### Texture coordinate scale and wrapping
+ frame .f2.coord -relief ridge -borderwidth 3
+ frame .f2.coord.scale -relief ridge -borderwidth 2
+ label .f2.coord.scale.label -text "Max Texture Coord" -anchor w
+ entry .f2.coord.scale.entry -textvariable coord_scale
+ trace variable coord_scale w new_coord_scale
+
+ frame .f2.coord.s -relief ridge -borderwidth 2
+ label .f2.coord.s.label -text "GL_TEXTURE_WRAP_S" -anchor w
+ radiobutton .f2.coord.s.repeat -text "GL_REPEAT" -anchor w -variable swrap -value GL_REPEAT -command new_swrap
+ radiobutton .f2.coord.s.clamp -text "GL_CLAMP" -anchor w -variable swrap -value GL_CLAMP -command new_swrap
+
+ frame .f2.coord.t -relief ridge -borderwidth 2
+ label .f2.coord.t.label -text "GL_TEXTURE_WRAP_T" -anchor w
+ radiobutton .f2.coord.t.repeat -text "GL_REPEAT" -anchor w -variable twrap -value GL_REPEAT -command new_twrap
+ radiobutton .f2.coord.t.clamp -text "GL_CLAMP" -anchor w -variable twrap -value GL_CLAMP -command new_twrap
+
+ pack .f2.coord.scale -fill both -expand true
+ pack .f2.coord.scale.label -side top -fill x
+ pack .f2.coord.scale.entry -side top -fill x
+
+ pack .f2.coord.s -fill x
+ pack .f2.coord.s.label -side top -fill x
+ pack .f2.coord.s.repeat -side top -fill x
+ pack .f2.coord.s.clamp -side top -fill x
+
+ pack .f2.coord.t -fill x
+ pack .f2.coord.t.label -side top -fill x
+ pack .f2.coord.t.repeat -side top -fill x
+ pack .f2.coord.t.clamp -side top -fill x
+
+
+ ### Texture image radio buttons (just happens to fit into the coord frame)
+ frame .f2.env -relief ridge -borderwidth 3
+ frame .f2.env.image -relief ridge -borderwidth 2
+ label .f2.env.image.label -text "Texture Image" -anchor w
+ radiobutton .f2.env.image.checker -text "Checker" -anchor w -variable teximage -value CHECKER -command new_image
+ radiobutton .f2.env.image.tree -text "Tree" -anchor w -variable teximage -value TREE -command new_image
+ radiobutton .f2.env.image.face -text "Face" -anchor w -variable teximage -value FACE -command new_image
+ pack .f2.env.image -fill x
+ pack .f2.env.image.label -side top -fill x
+ pack .f2.env.image.checker -side top -fill x
+ pack .f2.env.image.tree -side top -fill x
+ pack .f2.env.image.face -side top -fill x
+
+
+ ### Texture Environment
+ label .f2.env.label -text "GL_TEXTURE_ENV_MODE" -anchor w
+ radiobutton .f2.env.modulate -text "GL_MODULATE" -anchor w -variable envmode -value GL_MODULATE -command new_env
+ radiobutton .f2.env.decal -text "GL_DECAL" -anchor w -variable envmode -value GL_DECAL -command new_env
+ radiobutton .f2.env.blend -text "GL_BLEND" -anchor w -variable envmode -value GL_BLEND -command new_env
+ pack .f2.env.label -fill x
+ pack .f2.env.modulate -side top -fill x
+ pack .f2.env.decal -side top -fill x
+ pack .f2.env.blend -side top -fill x
+
+ ### Polygon color
+ frame .f2.color -relief ridge -borderwidth 3
+ label .f2.color.label -text "Polygon color" -anchor w
+ scale .f2.color.red -label Red -from 0 -to 255 -orient horizontal -variable poly_red -command new_color
+ scale .f2.color.green -label Green -from 0 -to 255 -orient horizontal -variable poly_green -command new_color
+ scale .f2.color.blue -label Blue -from 0 -to 255 -orient horizontal -variable poly_blue -command new_color
+ pack .f2.color.label -fill x
+ pack .f2.color.red -side top -fill x
+ pack .f2.color.green -side top -fill x
+ pack .f2.color.blue -side top -fill x
+
+
+ ### Main widgets
+ pack .f1.view -side left -fill both -expand true
+ pack .f1.filter -side left -fill y
+ pack .f1 -side top -fill both -expand true
+
+ pack .f2.coord .f2.env -side left -fill both
+ pack .f2.color -fill x
+ pack .f2 -side top -fill x
+
+ button .btn -text Quit -command exit
+ pack .btn -expand true -fill both
+
+ bind .f1.view {
+ set startx %x
+ set starty %y
+ set xangle0 $xangle
+ set yangle0 $yangle
+ }
+
+ bind .f1.view {
+ set xangle [expr $xangle0 + (%x - $startx) / 3.0 ]
+ set yangle [expr $yangle0 + (%y - $starty) / 3.0 ]
+ .f1.view yrot $xangle
+ .f1.view xrot $yangle
+ }
+
+ bind .f1.view {
+ set startx %x
+ set starty %y
+ set scale0 $scale
+ }
+
+ bind .f1.view {
+ set q [ expr ($starty - %y) / 400.0 ]
+ set scale [expr $scale0 * exp($q)]
+ .f1.view scale $scale
+ }
+
+ # set default values:
+ set minfilter GL_NEAREST_MIPMAP_LINEAR
+ set magfilter GL_LINEAR
+ set swrap GL_REPEAT
+ set twrap GL_REPEAT
+ set envmode GL_MODULATE
+ set teximage CHECKER
+ set poly_red 255
+ set poly_green 255
+ set poly_blue 255
+ set coord_scale 1.0
+
+ set xangle 0.0
+ set yangle 0.0
+ set scale 1.0
+}
+
+
+# Execution starts here!
+setup
+
diff --git a/ng/Togl-1.7/tkMacOSX.h b/ng/Togl-1.7/tkMacOSX.h
new file mode 100644
index 00000000..25e677e2
--- /dev/null
+++ b/ng/Togl-1.7/tkMacOSX.h
@@ -0,0 +1,35 @@
+/* This file isn't installed by default */
+/*
+ * tkMacOSXInt.h --
+ *
+ * Declarations of Macintosh specific exported variables and procedures.
+ *
+ * Copyright (c) 1995-1997 Sun Microsystems, Inc.
+ * Copyright 2001, Apple Computer, Inc.
+ *
+ * See the file "license.terms" for information on usage and redistribution
+ * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ *
+ * RCS: @(#) $Id: tkMacOSX.h,v 1.1 2005/04/22 02:00:07 gregcouch Exp $
+ */
+
+#ifndef _TKMAC
+#define _TKMAC
+
+#include
+#include "tkInt.h"
+
+/*
+ * Structures and function types for handling Netscape-type in process
+ * embedding where Tk does not control the top-level
+ */
+
+typedef int (Tk_MacOSXEmbedRegisterWinProc) (int winID, Tk_Window window);
+typedef GWorldPtr (Tk_MacOSXEmbedGetGrafPortProc) (Tk_Window window);
+typedef int (Tk_MacOSXEmbedMakeContainerExistProc) (Tk_Window window);
+typedef void (Tk_MacOSXEmbedGetClipProc) (Tk_Window window, RgnHandle rgn);
+typedef void (Tk_MacOSXEmbedGetOffsetInParentProc) (Tk_Window window, Point *ulCorner);
+
+#include "tkPlatDecls.h"
+
+#endif /* _TKMAC */
diff --git a/ng/Togl-1.7/togl.c b/ng/Togl-1.7/togl.c
new file mode 100644
index 00000000..098f917a
--- /dev/null
+++ b/ng/Togl-1.7/togl.c
@@ -0,0 +1,4033 @@
+/* $Id: togl.c,v 1.73 2005/10/26 07:40:22 gregcouch Exp $ */
+
+/* vi:set sw=4: */
+
+/*
+ * Togl - a Tk OpenGL widget
+ *
+ * Copyright (C) 1996-2002 Brian Paul and Ben Bederson
+ * See the LICENSE file for copyright details.
+ */
+
+/*
+ * Currently we support X11, Win32 and Macintosh only
+ */
+
+#include "togl.h"
+
+/* Use TCL_STUPID to cast (const char *) to (char *) where the Tcl function
+ * prototype argument should really be const */
+#define TCL_STUPID (char *)
+
+/* Use WIDGREC to cast widgRec arguments */
+#define WIDGREC (char *)
+
+/*** Windows headers ***/
+#if defined(TOGL_WGL)
+# define WIN32_LEAN_AND_MEAN
+# include
+# undef WIN32_LEAN_AND_MEAN
+# include
+
+/*** X Window System headers ***/
+#elif defined(TOGL_X11)
+# include
+# include
+# include /* for XA_RGB_DEFAULT_MAP atom */
+# if defined(__vms)
+# include /* for XmuLookupStandardColormap */
+# else
+# include /* for XmuLookupStandardColormap */
+# endif
+# include
+
+/*** Mac headers ***/
+#elif defined(TOGL_AGL_CLASSIC)
+# include
+# include
+# include
+# include
+
+#elif defined(TOGL_AGL)
+# define Cursor QDCursor
+# include
+# undef Cursor
+# include "tkMacOSX.h"
+# include /* usa MacDrawable */
+# include
+
+#else /* make sure only one platform defined */
+# error Unsupported platform, or confused platform defines...
+#endif
+
+/*** Standard C headers ***/
+#include
+#include
+#include
+
+#ifdef TOGL_WGL
+# include
+#endif
+
+#if TK_MAJOR_VERSION < 8
+# error Sorry Togl requires Tcl/Tk ver 8.0 or higher.
+#endif
+
+#if defined(TOGL_AGL_CLASSIC)
+# if TK_MAJOR_VERSION < 8 || (TK_MAJOR_VERSION == 8 && TK_MINOR_VERSION < 3)
+# error Sorry Mac classic version requires Tcl/Tk ver 8.3.0 or higher.
+# endif
+#endif /* TOGL_AGL_CLASSIC */
+
+#if defined(TOGL_AGL)
+# if TK_MAJOR_VERSION < 8 || (TK_MAJOR_VERSION == 8 && TK_MINOR_VERSION < 4)
+# error Sorry Mac Aqua version requires Tcl/Tk ver 8.4.0 or higher.
+# endif
+#endif /* TOGL_AGL */
+
+/* workaround for bug #123153 in tcl ver8.4a2 (tcl.h) */
+#if defined(Tcl_InitHashTable) && defined(USE_TCL_STUBS)
+# undef Tcl_InitHashTable
+# define Tcl_InitHashTable (tclStubsPtr->tcl_InitHashTable)
+#endif
+#if TK_MAJOR_VERSION > 8 || (TK_MAJOR_VERSION == 8 && TK_MINOR_VERSION >= 4)
+# define HAVE_TK_SETCLASSPROCS
+/* pointer to Tk_SetClassProcs function in the stub table */
+
+static void (*SetClassProcsPtr)
+ _ANSI_ARGS_((Tk_Window, Tk_ClassProcs *, ClientData));
+#endif
+
+/*
+ * Copy of TkClassProcs declarations form tkInt.h
+ * (this is needed for Tcl ver =< 8.4a3)
+ */
+
+typedef Window (TkClassCreateProc) _ANSI_ARGS_((Tk_Window tkwin,
+ Window parent, ClientData instanceData));
+typedef void (TkClassGeometryProc) _ANSI_ARGS_((ClientData instanceData));
+typedef void (TkClassModalProc) _ANSI_ARGS_((Tk_Window tkwin,
+ XEvent *eventPtr));
+typedef struct TkClassProcs
+{
+ TkClassCreateProc *createProc;
+ TkClassGeometryProc *geometryProc;
+ TkClassModalProc *modalProc;
+} TkClassProcs;
+
+
+/* Defaults */
+#define DEFAULT_WIDTH "400"
+#define DEFAULT_HEIGHT "400"
+#define DEFAULT_IDENT ""
+#define DEFAULT_FONTNAME "fixed"
+#define DEFAULT_TIME "1"
+
+
+#ifdef TOGL_WGL
+/* Maximum size of a logical palette corresponding to a colormap in color index
+ * mode. */
+# define MAX_CI_COLORMAP_SIZE 4096
+
+# if TOGL_USE_FONTS != 1
+/*
+ * copy of TkWinColormap from tkWinInt.h
+ */
+
+typedef struct
+{
+ HPALETTE palette; /* Palette handle used when drawing. */
+ UINT size; /* Number of entries in the palette. */
+ int stale; /* 1 if palette needs to be realized, otherwise
+ * 0. If the palette is stale, then an idle
+ * handler is scheduled to realize the palette. */
+ Tcl_HashTable refCounts; /* Hash table of palette entry reference counts
+ * indexed by pixel value. */
+} TkWinColormap;
+# else
+# include "tkWinInt.h"
+# endif
+
+static LRESULT(CALLBACK *tkWinChildProc) (HWND hwnd, UINT message,
+ WPARAM wParam, LPARAM lParam) = NULL;
+
+# define TK_WIN_CHILD_CLASS_NAME "TkChild"
+
+#endif /* TOGL_WGL */
+
+
+#define MAX(a,b) (((a)>(b))?(a):(b))
+
+#define TCL_ERR(interp, string) \
+ do { \
+ Tcl_ResetResult(interp); \
+ Tcl_AppendResult(interp, string, NULL); \
+ return TCL_ERROR; \
+ } while (0)
+
+/* The constant DUMMY_WINDOW is used to signal window creation failure from the
+ * Togl_CreateWindow() */
+#define DUMMY_WINDOW ((Window) -1)
+
+#define ALL_EVENTS_MASK \
+ (KeyPressMask | \
+ KeyReleaseMask | \
+ ButtonPressMask | \
+ ButtonReleaseMask | \
+ EnterWindowMask | \
+ LeaveWindowMask | \
+ PointerMotionMask | \
+ ExposureMask | \
+ VisibilityChangeMask | \
+ FocusChangeMask | \
+ PropertyChangeMask | \
+ ColormapChangeMask)
+
+struct Togl
+{
+ Togl *Next; /* next in linked list */
+
+#if defined(TOGL_WGL)
+ HDC tglGLHdc; /* Device context of device that OpenGL calls
+ * will be drawn on */
+ HGLRC tglGLHglrc; /* OpenGL rendering context to be made current */
+ int CiColormapSize; /* (Maximum) size of colormap in color index
+ * mode */
+#elif defined(TOGL_X11)
+ GLXContext GlCtx; /* Normal planes GLX context */
+#elif defined(TOGL_AGL_CLASSIC) || defined(TOGL_AGL)
+ AGLContext aglCtx;
+#endif /* TOGL_WGL */
+
+ Display *display; /* X's token for the window's display. */
+ Tk_Window TkWin; /* Tk window structure */
+ Tcl_Interp *Interp; /* Tcl interpreter */
+ Tcl_Command widgetCmd; /* Token for togl's widget command */
+#ifndef NO_TK_CURSOR
+ Tk_Cursor Cursor; /* The widget's cursor */
+#endif
+ int Width, Height; /* Dimensions of window */
+ int SetGrid; /* positive is grid size for window manager */
+ int TimerInterval; /* Time interval for timer in milliseconds */
+#if (TCL_MAJOR_VERSION * 100 + TCL_MINOR_VERSION) >= 705
+ Tcl_TimerToken timerHandler; /* Token for togl's timer handler */
+#else
+ Tk_TimerToken timerHandler; /* Token for togl's timer handler */
+#endif
+ Bool RgbaFlag; /* configuration flags (ala GLX parameters) */
+ int RgbaRed;
+ int RgbaGreen;
+ int RgbaBlue;
+ Bool DoubleFlag;
+ Bool DepthFlag;
+ int DepthSize;
+ Bool AccumFlag;
+ int AccumRed;
+ int AccumGreen;
+ int AccumBlue;
+ int AccumAlpha;
+ Bool AlphaFlag;
+ int AlphaSize;
+ Bool StencilFlag;
+ int StencilSize;
+ Bool PrivateCmapFlag;
+ Bool OverlayFlag;
+ Bool StereoFlag;
+#ifdef __sgi
+ Bool OldStereoFlag;
+#endif
+ int AuxNumber;
+ Bool Indirect;
+ int PixelFormat;
+ const char *ShareList; /* name (ident) of Togl to share dlists with */
+ const char *ShareContext; /* name (ident) to share OpenGL context with */
+
+ const char *Ident; /* User's identification string */
+ ClientData Client_Data; /* Pointer to user data */
+
+ Bool UpdatePending; /* Should normal planes be redrawn? */
+
+ Togl_Callback *CreateProc; /* Callback when widget is created */
+ Togl_Callback *DisplayProc; /* Callback when widget is rendered */
+ Togl_Callback *ReshapeProc; /* Callback when window size changes */
+ Togl_Callback *DestroyProc; /* Callback when widget is destroyed */
+ Togl_Callback *TimerProc; /* Callback when widget is idle */
+
+ /* Overlay stuff */
+#if defined(TOGL_X11)
+ GLXContext OverlayCtx; /* Overlay planes OpenGL context */
+#elif defined(TOGL_WGL)
+ HGLRC tglGLOverlayHglrc;
+#endif /* TOGL_X11 */
+
+ Window OverlayWindow; /* The overlay window, or 0 */
+ Togl_Callback *OverlayDisplayProc; /* Overlay redraw proc */
+ Bool OverlayUpdatePending; /* Should overlay be redrawn? */
+ Colormap OverlayCmap; /* colormap for overlay is created */
+ int OverlayTransparentPixel; /* transparent pixel */
+ Bool OverlayIsMapped;
+
+ /* for DumpToEpsFile: Added by Miguel A. de Riera Pasenau 10.01.1997 */
+ XVisualInfo *VisInfo; /* Visual info of the current */
+ /* context needed for DumpToEpsFile */
+ GLfloat *EpsRedMap; /* Index2RGB Maps for Color index modes */
+ GLfloat *EpsGreenMap;
+ GLfloat *EpsBlueMap;
+ GLint EpsMapSize; /* = Number of indices in our Togl */
+};
+
+
+/* NTNTNT need to change to handle Windows Data Types */
+/*
+ * Prototypes for functions local to this file
+ */
+static int Togl_Cmd(ClientData clientData, Tcl_Interp *interp,
+ int argc, CONST84 char **argv);
+static void Togl_EventProc(ClientData clientData, XEvent *eventPtr);
+static Window Togl_CreateWindow(Tk_Window, Window, ClientData);
+static void Togl_WorldChanged(ClientData);
+
+#ifdef MESA_COLOR_HACK
+static int get_free_color_cells(Display *display, int screen,
+ Colormap colormap);
+static void free_default_color_cells(Display *display, Colormap colormap);
+#endif
+static void ToglCmdDeletedProc(ClientData);
+
+
+
+#if defined(__sgi)
+/* SGI-only stereo */
+static void oldStereoMakeCurrent(Display *dpy, Window win, GLXContext ctx);
+static void oldStereoInit(Togl *togl, int stereoEnabled);
+#endif
+
+#if defined(TOGL_AGL_CLASSIC) || defined(TOGL_AGL)
+static void SetMacBufRect(Togl *togl);
+#endif
+
+
+/*
+ * Setup Togl widget configuration options:
+ */
+
+static Tk_ConfigSpec configSpecs[] = {
+ {TK_CONFIG_PIXELS, TCL_STUPID "-height", "height", "Height",
+ DEFAULT_HEIGHT, Tk_Offset(Togl, Height), 0, NULL},
+
+ {TK_CONFIG_PIXELS, TCL_STUPID "-width", "width", "Width",
+ DEFAULT_WIDTH, Tk_Offset(Togl, Width), 0, NULL},
+
+ {TK_CONFIG_INT, TCL_STUPID "-setgrid", "setGrid", "SetGrid",
+ "0", Tk_Offset(Togl, SetGrid), 0},
+
+ {TK_CONFIG_BOOLEAN, TCL_STUPID "-rgba", "rgba", "Rgba",
+ "true", Tk_Offset(Togl, RgbaFlag), 0, NULL},
+
+ {TK_CONFIG_INT, TCL_STUPID "-redsize", "redsize", "RedSize",
+ "1", Tk_Offset(Togl, RgbaRed), 0, NULL},
+
+ {TK_CONFIG_INT, TCL_STUPID "-greensize", "greensize", "GreenSize",
+ "1", Tk_Offset(Togl, RgbaGreen), 0, NULL},
+
+ {TK_CONFIG_INT, TCL_STUPID "-bluesize", "bluesize", "BlueSize",
+ "1", Tk_Offset(Togl, RgbaBlue), 0, NULL},
+
+ {TK_CONFIG_BOOLEAN, TCL_STUPID "-double", "double", "Double",
+ "false", Tk_Offset(Togl, DoubleFlag), 0, NULL},
+
+ {TK_CONFIG_BOOLEAN, TCL_STUPID "-depth", "depth", "Depth",
+ "false", Tk_Offset(Togl, DepthFlag), 0, NULL},
+
+ {TK_CONFIG_INT, TCL_STUPID "-depthsize", "depthsize", "DepthSize",
+ "1", Tk_Offset(Togl, DepthSize), 0, NULL},
+
+ {TK_CONFIG_BOOLEAN, TCL_STUPID "-accum", "accum", "Accum",
+ "false", Tk_Offset(Togl, AccumFlag), 0, NULL},
+
+ {TK_CONFIG_INT, TCL_STUPID "-accumredsize", "accumredsize", "AccumRedSize",
+ "1", Tk_Offset(Togl, AccumRed), 0, NULL},
+
+ {TK_CONFIG_INT, TCL_STUPID "-accumgreensize", "accumgreensize",
+ "AccumGreenSize",
+ "1", Tk_Offset(Togl, AccumGreen), 0, NULL},
+
+ {TK_CONFIG_INT, TCL_STUPID "-accumbluesize", "accumbluesize",
+ "AccumBlueSize",
+ "1", Tk_Offset(Togl, AccumBlue), 0, NULL},
+
+ {TK_CONFIG_INT, TCL_STUPID "-accumalphasize", "accumalphasize",
+ "AccumAlphaSize",
+ "1", Tk_Offset(Togl, AccumAlpha), 0, NULL},
+
+ {TK_CONFIG_BOOLEAN, TCL_STUPID "-alpha", "alpha", "Alpha",
+ "false", Tk_Offset(Togl, AlphaFlag), 0, NULL},
+
+ {TK_CONFIG_INT, TCL_STUPID "-alphasize", "alphasize", "AlphaSize",
+ "1", Tk_Offset(Togl, AlphaSize), 0, NULL},
+
+ {TK_CONFIG_BOOLEAN, TCL_STUPID "-stencil", "stencil", "Stencil",
+ "false", Tk_Offset(Togl, StencilFlag), 0, NULL},
+
+ {TK_CONFIG_INT, TCL_STUPID "-stencilsize", "stencilsize", "StencilSize",
+ "1", Tk_Offset(Togl, StencilSize), 0, NULL},
+
+ {TK_CONFIG_INT, TCL_STUPID "-auxbuffers", "auxbuffers", "AuxBuffers",
+ "0", Tk_Offset(Togl, AuxNumber), 0, NULL},
+
+ {TK_CONFIG_BOOLEAN, TCL_STUPID "-privatecmap", "privateCmap", "PrivateCmap",
+ "false", Tk_Offset(Togl, PrivateCmapFlag), 0, NULL},
+
+ {TK_CONFIG_BOOLEAN, TCL_STUPID "-overlay", "overlay", "Overlay",
+ "false", Tk_Offset(Togl, OverlayFlag), 0, NULL},
+
+ {TK_CONFIG_BOOLEAN, TCL_STUPID "-stereo", "stereo", "Stereo",
+ "false", Tk_Offset(Togl, StereoFlag), 0, NULL},
+
+#ifdef __sgi
+ {TK_CONFIG_BOOLEAN, TCL_STUPID "-oldstereo", "oldstereo", "OldStereo",
+ "false", Tk_Offset(Togl, OldStereoFlag), 0, NULL},
+#endif
+
+#ifndef NO_TK_CURSOR
+ {TK_CONFIG_ACTIVE_CURSOR, TCL_STUPID "-cursor", "cursor", "Cursor",
+ "", Tk_Offset(Togl, Cursor), TK_CONFIG_NULL_OK},
+#endif
+
+ {TK_CONFIG_INT, TCL_STUPID "-time", "time", "Time",
+ DEFAULT_TIME, Tk_Offset(Togl, TimerInterval), 0, NULL},
+
+ {TK_CONFIG_STRING, TCL_STUPID "-sharelist", "sharelist", "ShareList",
+ NULL, Tk_Offset(Togl, ShareList), 0, NULL},
+
+ {TK_CONFIG_STRING, TCL_STUPID "-sharecontext", "sharecontext",
+ "ShareContext", NULL, Tk_Offset(Togl, ShareContext), 0, NULL},
+
+ {TK_CONFIG_STRING, TCL_STUPID "-ident", "ident", "Ident",
+ DEFAULT_IDENT, Tk_Offset(Togl, Ident), 0, NULL},
+
+ {TK_CONFIG_BOOLEAN, TCL_STUPID "-indirect", "indirect", "Indirect",
+ "false", Tk_Offset(Togl, Indirect), 0, NULL},
+
+ {TK_CONFIG_INT, TCL_STUPID "-pixelformat", "pixelFormat", "PixelFormat",
+ "0", Tk_Offset(Togl, PixelFormat), 0, NULL},
+
+ {TK_CONFIG_END, NULL, NULL, NULL, NULL, 0, 0, NULL}
+};
+
+
+/*
+ * Default callback pointers. When a new Togl widget is created it
+ * will be assigned these initial callbacks.
+ */
+static Togl_Callback *DefaultCreateProc = NULL;
+static Togl_Callback *DefaultDisplayProc = NULL;
+static Togl_Callback *DefaultReshapeProc = NULL;
+static Togl_Callback *DefaultDestroyProc = NULL;
+static Togl_Callback *DefaultOverlayDisplayProc = NULL;
+static Togl_Callback *DefaultTimerProc = NULL;
+static ClientData DefaultClientData = NULL;
+static Tcl_HashTable CommandTable;
+
+/*
+ * Head of linked list of all Togl widgets
+ */
+static Togl *ToglHead = NULL;
+
+/*
+ * Add given togl widget to linked list.
+ */
+static void
+AddToList(Togl *t)
+{
+ t->Next = ToglHead;
+ ToglHead = t;
+}
+
+/*
+ * Remove given togl widget from linked list.
+ */
+static void
+RemoveFromList(Togl *t)
+{
+ Togl *prev = NULL;
+ Togl *pos = ToglHead;
+
+ while (pos) {
+ if (pos == t) {
+ if (prev) {
+ prev->Next = pos->Next;
+ } else {
+ ToglHead = pos->Next;
+ }
+ return;
+ }
+ prev = pos;
+ pos = pos->Next;
+ }
+}
+
+/*
+ * Return pointer to togl widget given a user identifier string.
+ */
+static Togl *
+FindTogl(const char *ident)
+{
+ Togl *t = ToglHead;
+
+ while (t) {
+ if (strcmp(t->Ident, ident) == 0)
+ return t;
+ t = t->Next;
+ }
+ return NULL;
+}
+
+
+#if defined(TOGL_X11)
+/*
+ * Return pointer to another togl widget with same OpenGL context.
+ */
+static Togl *
+FindToglWithSameContext(Togl *togl)
+{
+ Togl *t;
+
+ for (t = ToglHead; t != NULL; t = t->Next) {
+ if (t == togl)
+ continue;
+# if defined(TOGL_WGL)
+ if (t->tglGLHglrc == togl->tglGLHglrc)
+# elif defined(TOGL_X11)
+ if (t->GlCtx == togl->GlCtx)
+# elif defined(TOGL_AGL_CLASSIC) || defined(TOGL_AGL)
+ if (t->aglCtx == togl->aglCtx)
+# endif
+ return t;
+ }
+ return NULL;
+}
+#endif
+
+#ifdef USE_OVERLAY
+/*
+ * Return pointer to another togl widget with same OpenGL overlay context.
+ */
+static Togl *
+FindToglWithSameOverlayContext(Togl *togl)
+{
+ Togl *t;
+
+ for (t = ToglHead; t != NULL; t = t->Next) {
+ if (t == togl)
+ continue;
+# if defined(TOGL_X11)
+ if (t->OverlayCtx == togl->OverlayCtx)
+# elif defined(TOGL_WGL)
+ if (t->tglGLOverlayHglrc == togl->tglGLOverlayHglrc)
+# endif
+ return t;
+ }
+ return NULL;
+}
+#endif
+
+#if defined(TOGL_X11)
+/*
+ * Return an X colormap to use for OpenGL RGB-mode rendering.
+ * Input: dpy - the X display
+ * scrnum - the X screen number
+ * visinfo - the XVisualInfo as returned by glXChooseVisual()
+ * Return: an X Colormap or 0 if there's a _serious_ error.
+ */
+static Colormap
+get_rgb_colormap(Display *dpy,
+ int scrnum, const XVisualInfo *visinfo, Tk_Window tkwin)
+{
+ Atom hp_cr_maps;
+ Status status;
+ int numCmaps;
+ int i;
+ XStandardColormap *standardCmaps;
+ Window root = XRootWindow(dpy, scrnum);
+ Bool using_mesa;
+
+ /*
+ * First check if visinfo's visual matches the default/root visual.
+ */
+ if (visinfo->visual == Tk_Visual(tkwin)) {
+ /* use the default/root colormap */
+ Colormap cmap;
+
+ cmap = Tk_Colormap(tkwin);
+# ifdef MESA_COLOR_HACK
+ (void) get_free_color_cells(dpy, scrnum, cmap);
+# endif
+ return cmap;
+ }
+
+ /*
+ * Check if we're using Mesa.
+ */
+ if (strstr(glXQueryServerString(dpy, scrnum, GLX_VERSION), "Mesa")) {
+ using_mesa = True;
+ } else {
+ using_mesa = False;
+ }
+
+ /*
+ * Next, if we're using Mesa and displaying on an HP with the "Color
+ * Recovery" feature and the visual is 8-bit TrueColor, search for a
+ * special colormap initialized for dithering. Mesa will know how to
+ * dither using this colormap.
+ */
+ if (using_mesa) {
+ hp_cr_maps = XInternAtom(dpy, "_HP_RGB_SMOOTH_MAP_LIST", True);
+ if (hp_cr_maps
+# ifdef __cplusplus
+ && visinfo->visual->c_class == TrueColor
+# else
+ && visinfo->visual->class == TrueColor
+# endif
+ && visinfo->depth == 8) {
+ status = XGetRGBColormaps(dpy, root, &standardCmaps,
+ &numCmaps, hp_cr_maps);
+ if (status) {
+ for (i = 0; i < numCmaps; i++) {
+ if (standardCmaps[i].visualid == visinfo->visual->visualid) {
+ Colormap cmap = standardCmaps[i].colormap;
+
+ (void) XFree(standardCmaps);
+ return cmap;
+ }
+ }
+ (void) XFree(standardCmaps);
+ }
+ }
+ }
+
+ /*
+ * Next, try to find a standard X colormap.
+ */
+# if !HP && !SUN
+# ifndef SOLARIS_BUG
+ status = XmuLookupStandardColormap(dpy, visinfo->screen,
+ visinfo->visualid, visinfo->depth, XA_RGB_DEFAULT_MAP,
+ /* replace */ False, /* retain */ True);
+ if (status == 1) {
+ status = XGetRGBColormaps(dpy, root, &standardCmaps,
+ &numCmaps, XA_RGB_DEFAULT_MAP);
+ if (status == 1) {
+ for (i = 0; i < numCmaps; i++) {
+ if (standardCmaps[i].visualid == visinfo->visualid) {
+ Colormap cmap = standardCmaps[i].colormap;
+
+ (void) XFree(standardCmaps);
+ return cmap;
+ }
+ }
+ (void) XFree(standardCmaps);
+ }
+ }
+# endif
+# endif
+
+ /*
+ * If we get here, give up and just allocate a new colormap.
+ */
+ return XCreateColormap(dpy, root, visinfo->visual, AllocNone);
+}
+#elif defined(TOGL_WGL)
+
+/* Code to create RGB palette is taken from the GENGL sample program of Win32
+ * SDK */
+
+static unsigned char threeto8[8] = {
+ 0, 0111 >> 1, 0222 >> 1, 0333 >> 1, 0444 >> 1, 0555 >> 1, 0666 >> 1, 0377
+};
+
+static unsigned char twoto8[4] = {
+ 0, 0x55, 0xaa, 0xff
+};
+
+static unsigned char oneto8[2] = {
+ 0, 255
+};
+
+static int defaultOverride[13] = {
+ 0, 3, 24, 27, 64, 67, 88, 173, 181, 236, 247, 164, 91
+};
+
+static PALETTEENTRY defaultPalEntry[20] = {
+ {0, 0, 0, 0},
+ {0x80, 0, 0, 0},
+ {0, 0x80, 0, 0},
+ {0x80, 0x80, 0, 0},
+ {0, 0, 0x80, 0},
+ {0x80, 0, 0x80, 0},
+ {0, 0x80, 0x80, 0},
+ {0xC0, 0xC0, 0xC0, 0},
+
+ {192, 220, 192, 0},
+ {166, 202, 240, 0},
+ {255, 251, 240, 0},
+ {160, 160, 164, 0},
+
+ {0x80, 0x80, 0x80, 0},
+ {0xFF, 0, 0, 0},
+ {0, 0xFF, 0, 0},
+ {0xFF, 0xFF, 0, 0},
+ {0, 0, 0xFF, 0},
+ {0xFF, 0, 0xFF, 0},
+ {0, 0xFF, 0xFF, 0},
+ {0xFF, 0xFF, 0xFF, 0}
+};
+
+static unsigned char
+ComponentFromIndex(int i, UINT nbits, UINT shift)
+{
+ unsigned char val;
+
+ val = (unsigned char) (i >> shift);
+ switch (nbits) {
+
+ case 1:
+ val &= 0x1;
+ return oneto8[val];
+
+ case 2:
+ val &= 0x3;
+ return twoto8[val];
+
+ case 3:
+ val &= 0x7;
+ return threeto8[val];
+
+ default:
+ return 0;
+ }
+}
+
+static Colormap
+Win32CreateRgbColormap(PIXELFORMATDESCRIPTOR pfd)
+{
+ TkWinColormap *cmap = (TkWinColormap *) ckalloc(sizeof (TkWinColormap));
+ LOGPALETTE *pPal;
+ int n, i;
+
+ n = 1 << pfd.cColorBits;
+ pPal = (PLOGPALETTE) LocalAlloc(LMEM_FIXED, sizeof (LOGPALETTE)
+ + n * sizeof (PALETTEENTRY));
+ pPal->palVersion = 0x300;
+ pPal->palNumEntries = n;
+ for (i = 0; i < n; i++) {
+ pPal->palPalEntry[i].peRed =
+ ComponentFromIndex(i, pfd.cRedBits, pfd.cRedShift);
+ pPal->palPalEntry[i].peGreen =
+ ComponentFromIndex(i, pfd.cGreenBits, pfd.cGreenShift);
+ pPal->palPalEntry[i].peBlue =
+ ComponentFromIndex(i, pfd.cBlueBits, pfd.cBlueShift);
+ pPal->palPalEntry[i].peFlags = 0;
+ }
+
+ /* fix up the palette to include the default GDI palette */
+ if ((pfd.cColorBits == 8)
+ && (pfd.cRedBits == 3) && (pfd.cRedShift == 0)
+ && (pfd.cGreenBits == 3) && (pfd.cGreenShift == 3)
+ && (pfd.cBlueBits == 2) && (pfd.cBlueShift == 6)) {
+ for (i = 1; i <= 12; i++)
+ pPal->palPalEntry[defaultOverride[i]] = defaultPalEntry[i];
+ }
+
+ cmap->palette = CreatePalette(pPal);
+ LocalFree(pPal);
+ cmap->size = n;
+ cmap->stale = 0;
+
+ /* Since this is a private colormap of a fix size, we do not need a valid
+ * hash table, but a dummy one */
+
+ Tcl_InitHashTable(&cmap->refCounts, TCL_ONE_WORD_KEYS);
+ return (Colormap) cmap;
+}
+
+static Colormap
+Win32CreateCiColormap(Togl *togl)
+{
+ /* Create a colormap with size of togl->CiColormapSize and set all entries
+ * to black */
+
+ LOGPALETTE logPalette;
+ TkWinColormap *cmap = (TkWinColormap *) ckalloc(sizeof (TkWinColormap));
+
+ logPalette.palVersion = 0x300;
+ logPalette.palNumEntries = 1;
+ logPalette.palPalEntry[0].peRed = 0;
+ logPalette.palPalEntry[0].peGreen = 0;
+ logPalette.palPalEntry[0].peBlue = 0;
+ logPalette.palPalEntry[0].peFlags = 0;
+
+ cmap->palette = CreatePalette(&logPalette);
+ cmap->size = togl->CiColormapSize;
+ ResizePalette(cmap->palette, cmap->size); /* sets new entries to black */
+ cmap->stale = 0;
+
+ /* Since this is a private colormap of a fix size, we do not need a valid
+ * hash table, but a dummy one */
+
+ Tcl_InitHashTable(&cmap->refCounts, TCL_ONE_WORD_KEYS);
+ return (Colormap) cmap;
+}
+#endif /* TOGL_X11 */
+
+
+
+/*
+ * Togl_Init
+ *
+ * Called upon system startup to create Togl command.
+ */
+int
+Togl_Init(Tcl_Interp *interp)
+{
+ int major, minor, patchLevel, releaseType;
+
+#ifdef USE_TCL_STUBS
+ if (Tcl_InitStubs(interp, "8.1", 0) == NULL) {
+ return TCL_ERROR;
+ }
+#endif
+#ifdef USE_TK_STUBS
+ if (Tk_InitStubs(interp, TCL_STUPID "8.1", 0) == NULL) {
+ return TCL_ERROR;
+ }
+#endif
+
+ /* Skip all this on Tcl/Tk 8.0 or older. Seems to work */
+#if TCL_MAJOR_VERSION * 100 + TCL_MINOR_VERSION > 800
+ Tcl_GetVersion(&major, &minor, &patchLevel, &releaseType);
+
+# ifdef HAVE_TK_SETCLASSPROCS
+ if (major > 8
+ || (major == 8
+ && (minor > 4
+ || (minor == 4 && (releaseType > 0
+ || patchLevel >= 2))))) {
+# ifdef USE_TK_STUBS
+ SetClassProcsPtr = tkStubsPtr->tk_SetClassProcs;
+# else
+ SetClassProcsPtr = Tk_SetClassProcs;
+# endif
+ } else {
+ SetClassProcsPtr = NULL;
+ }
+# else
+ if (major > 8
+ || (major == 8
+ && (minor > 4
+ || (minor == 4 && (releaseType > 0
+ || patchLevel >= 2))))) {
+ TCL_ERR(interp,
+ "Sorry, this instance of Togl was not compiled to work with Tcl/Tk 8.4a2 or higher.");
+ }
+# endif
+
+#endif
+
+ if (Tcl_PkgProvide(interp, "Togl", TOGL_VERSION) != TCL_OK) {
+ return TCL_ERROR;
+ }
+
+ if (Tcl_CreateCommand(interp, "togl", Togl_Cmd,
+ (ClientData) Tk_MainWindow(interp), NULL) == NULL)
+ return TCL_ERROR;
+
+ Tcl_InitHashTable(&CommandTable, TCL_STRING_KEYS);
+
+ return TCL_OK;
+}
+
+
+/*
+ * Register a C function to be called when an Togl widget is realized.
+ */
+void
+Togl_CreateFunc(Togl_Callback *proc)
+{
+ DefaultCreateProc = proc;
+}
+
+
+/*
+ * Register a C function to be called when an Togl widget must be redrawn.
+ */
+void
+Togl_DisplayFunc(Togl_Callback *proc)
+{
+ DefaultDisplayProc = proc;
+}
+
+
+/*
+ * Register a C function to be called when an Togl widget is resized.
+ */
+void
+Togl_ReshapeFunc(Togl_Callback *proc)
+{
+ DefaultReshapeProc = proc;
+}
+
+
+/*
+ * Register a C function to be called when an Togl widget is destroyed.
+ */
+void
+Togl_DestroyFunc(Togl_Callback *proc)
+{
+ DefaultDestroyProc = proc;
+}
+
+
+/*
+ * Register a C function to be called from TimerEventHandler.
+ */
+void
+Togl_TimerFunc(Togl_Callback *proc)
+{
+ DefaultTimerProc = proc;
+}
+
+
+/*
+ * Reset default callback pointers to NULL.
+ */
+void
+Togl_ResetDefaultCallbacks(void)
+{
+ DefaultCreateProc = NULL;
+ DefaultDisplayProc = NULL;
+ DefaultReshapeProc = NULL;
+ DefaultDestroyProc = NULL;
+ DefaultOverlayDisplayProc = NULL;
+ DefaultTimerProc = NULL;
+ DefaultClientData = NULL;
+}
+
+
+/*
+ * Chnage the create callback for a specific Togl widget.
+ */
+void
+Togl_SetCreateFunc(Togl *togl, Togl_Callback *proc)
+{
+ togl->CreateProc = proc;
+}
+
+
+/*
+ * Change the display/redraw callback for a specific Togl widget.
+ */
+void
+Togl_SetDisplayFunc(Togl *togl, Togl_Callback *proc)
+{
+ togl->DisplayProc = proc;
+}
+
+
+/*
+ * Change the reshape callback for a specific Togl widget.
+ */
+void
+Togl_SetReshapeFunc(Togl *togl, Togl_Callback *proc)
+{
+ togl->ReshapeProc = proc;
+}
+
+
+/*
+ * Change the destroy callback for a specific Togl widget.
+ */
+void
+Togl_SetDestroyFunc(Togl *togl, Togl_Callback *proc)
+{
+ togl->DestroyProc = proc;
+}
+
+
+/*
+ * Togl_Timer
+ *
+ * Gets called from Tk_CreateTimerHandler.
+ */
+static void
+Togl_Timer(ClientData clientData)
+{
+ Togl *togl = (Togl *) clientData;
+
+ if (togl->TimerProc) {
+ togl->TimerProc(togl);
+
+ /* Re-register this callback since Tcl/Tk timers are "one-shot". That
+ * is, after the timer callback is called it not normally called again.
+ * * * * * * * * * That's not the behavior we want for Togl. */
+#if (TK_MAJOR_VERSION * 100 + TK_MINOR_VERSION) >= 401
+ togl->timerHandler =
+ Tcl_CreateTimerHandler(togl->TimerInterval, Togl_Timer,
+ (ClientData) togl);
+#else
+ togl->timerHandler =
+ Tk_CreateTimerHandler(togl->TimeInterval, Togl_Timer,
+ (ClientData) togl);
+#endif
+ }
+}
+
+
+/*
+ * Change the timer callback for a specific Togl widget.
+ * Pass NULL to disable the callback.
+ */
+void
+Togl_SetTimerFunc(Togl *togl, Togl_Callback *proc)
+{
+ togl->TimerProc = proc;
+ if (proc) {
+#if (TK_MAJOR_VERSION * 100 + TK_MINOR_VERSION) >= 401
+ togl->timerHandler =
+ Tcl_CreateTimerHandler(togl->TimerInterval, Togl_Timer,
+ (ClientData) togl);
+#else
+ togl->timerHandler =
+ Tk_CreateTimerHandler(togl->TimeInterval, Togl_Timer,
+ (ClientData) togl);
+#endif
+ }
+}
+
+
+
+/*
+ * Togl_CreateCommand
+ *
+ * Declares a new C sub-command of Togl callable from Tcl.
+ * Every time the sub-command is called from Tcl, the
+ * C routine will be called with all the arguments from Tcl.
+ */
+void
+Togl_CreateCommand(char *cmd_name, Togl_CmdProc *cmd_proc)
+{
+ int new_item;
+ Tcl_HashEntry *entry;
+
+ entry = Tcl_CreateHashEntry(&CommandTable, cmd_name, &new_item);
+ Tcl_SetHashValue(entry, cmd_proc);
+}
+
+
+/*
+ * Togl_MakeCurrent
+ *
+ * Bind the OpenGL rendering context to the specified
+ * Togl widget.
+ */
+void
+Togl_MakeCurrent(const Togl *togl)
+{
+#if defined(TOGL_WGL)
+ int res = wglMakeCurrent(togl->tglGLHdc, togl->tglGLHglrc);
+
+ assert(res == TRUE);
+
+#elif defined(TOGL_X11)
+ if (!togl->GlCtx)
+ return;
+ (void) glXMakeCurrent(togl->display,
+ togl->TkWin ? Tk_WindowId(togl->TkWin) : None, togl->GlCtx);
+# if defined(__sgi)
+ if (togl->OldStereoFlag)
+ oldStereoMakeCurrent(togl->display,
+ togl->TkWin ? Tk_WindowId(togl->TkWin) : None, togl->GlCtx);
+
+# endif /*__sgi STEREO */
+
+#elif defined(TOGL_AGL_CLASSIC) || defined(TOGL_AGL)
+ if (!togl->aglCtx)
+ return;
+ aglSetCurrentContext(togl->aglCtx);
+#endif
+}
+
+
+#ifdef TOGL_AGL_CLASSIC
+/* tell OpenGL which part of the Mac window to render to */
+static void
+SetMacBufRect(Togl *togl)
+{
+ GLint wrect[4];
+
+ /* set wrect[0,1] to lower left corner of widget */
+ wrect[2] = ((TkWindow *) (togl->TkWin))->changes.width;
+ wrect[3] = ((TkWindow *) (togl->TkWin))->changes.height;
+ wrect[0] = ((TkWindow *) (togl->TkWin))->privatePtr->xOff;
+ wrect[1] =
+ ((TkWindow *) (togl->TkWin))->privatePtr->toplevel->portPtr->
+ portRect.bottom - wrect[3] -
+ ((TkWindow *) (togl->TkWin))->privatePtr->yOff;
+ aglSetInteger(togl->aglCtx, AGL_BUFFER_RECT, wrect);
+ aglEnable(togl->aglCtx, AGL_BUFFER_RECT);
+ aglUpdateContext(togl->aglCtx);
+}
+#elif defined(TOGL_AGL)
+/* tell OpenGL which part of the Mac window to render to */
+static void
+SetMacBufRect(Togl *togl)
+{
+ GLint wrect[4];
+
+ /* set wrect[0,1] to lower left corner of widget */
+ wrect[2] = Tk_Width(togl->TkWin);
+ wrect[3] = Tk_Height(togl->TkWin);
+ wrect[0] = ((TkWindow *) (togl->TkWin))->privatePtr->xOff;
+
+ Rect r;
+
+ GetPortBounds(((TkWindow *) (togl->TkWin))->privatePtr->toplevel->grafPtr,
+ &r);
+
+ wrect[1] = r.bottom -
+ wrect[3] - ((TkWindow *) (togl->TkWin))->privatePtr->yOff;
+
+ aglSetInteger(togl->aglCtx, AGL_BUFFER_RECT, wrect);
+ aglEnable(togl->aglCtx, AGL_BUFFER_RECT);
+ aglUpdateContext(togl->aglCtx);
+}
+#endif
+
+/*
+ * Called when the widget's contents must be redrawn. Basically, we
+ * just call the user's render callback function.
+ *
+ * Note that the parameter type is ClientData so this function can be
+ * passed to Tk_DoWhenIdle().
+ */
+static void
+Togl_Render(ClientData clientData)
+{
+ Togl *togl = (Togl *) clientData;
+
+ if (togl->DisplayProc) {
+
+#ifdef TOGL_AGL_CLASSIC
+ /* Mac is complicated here because OpenGL needs to know what part of
+ * the parent window to render into, and it seems that region need to
+ * be invalidated before drawing, so that QuickDraw will allow OpenGL
+ * to transfer pixels into that part of the window. I'm not even
+ * totally sure how or why this works as it does, since this aspect of
+ * Mac OpenGL seems to be totally undocumented. This was put together
+ * by trial and error! (thiessen) */
+ MacRegion r;
+ RgnPtr rp = &r;
+ GrafPtr curPort, parentWin;
+
+ parentWin = (GrafPtr)
+ (((MacDrawable *) (Tk_WindowId(togl->TkWin)))->toplevel->
+ portPtr);
+ if (!parentWin)
+ return;
+#endif
+
+ Togl_MakeCurrent(togl);
+
+#ifdef TOGL_AGL_CLASSIC
+ /* Set QuickDraw port and clipping region */
+ GetPort(&curPort);
+ SetPort(parentWin);
+ r.rgnBBox.left = ((TkWindow *) (togl->TkWin))->privatePtr->xOff;
+ r.rgnBBox.right =
+ r.rgnBBox.left + ((TkWindow *) (togl->TkWin))->changes.width -
+ 1;
+ r.rgnBBox.top = ((TkWindow *) (togl->TkWin))->privatePtr->yOff;
+ r.rgnBBox.bottom =
+ r.rgnBBox.top + ((TkWindow *) (togl->TkWin))->changes.height -
+ 1;
+ r.rgnSize = sizeof (Region);
+ InvalRgn(&rp);
+ SetClip(&rp);
+ /* this may seem an odd place to put this, with possibly redundant
+ * calls to aglSetInteger(AGL_BUFFER_RECT...), but for some reason
+ * performance is actually a lot better if this is called before every
+ * render... */
+ SetMacBufRect(togl);
+#endif
+
+#ifdef TOGL_AGL
+ SetMacBufRect(togl);
+#endif
+
+ togl->DisplayProc(togl);
+
+#ifdef TOGL_AGL_CLASSIC
+ SetPort(curPort); /* restore previous port */
+#endif
+
+ }
+#if defined(TOGL_AGL_CLASSIC) || defined(TOGL_AGL)
+ else {
+ /* Always need to update on resize */
+ SetMacBufRect(togl);
+ }
+#endif
+ togl->UpdatePending = False;
+}
+
+
+static void
+RenderOverlay(ClientData clientData)
+{
+ Togl *togl = (Togl *) clientData;
+
+ if (togl->OverlayFlag && togl->OverlayDisplayProc) {
+
+#if defined(TOGL_WGL)
+ int res = wglMakeCurrent(togl->tglGLHdc, togl->tglGLHglrc);
+
+ assert(res == TRUE);
+
+#elif defined(TOGL_X11)
+ (void) glXMakeCurrent(Tk_Display(togl->TkWin),
+ togl->OverlayWindow, togl->OverlayCtx);
+# if defined(__sgi)
+ if (togl->OldStereoFlag)
+ oldStereoMakeCurrent(Tk_Display(togl->TkWin),
+ togl->OverlayWindow, togl->OverlayCtx);
+
+# endif /*__sgi STEREO */
+
+#endif /* TOGL_WGL */
+
+ togl->OverlayDisplayProc(togl);
+ }
+ togl->OverlayUpdatePending = False;
+}
+
+
+/*
+ * It's possible to change with this function or in a script some
+ * options like RGBA - ColorIndex ; Z-buffer and so on
+ */
+int
+Togl_Configure(Tcl_Interp *interp, Togl *togl,
+ int argc, const char *argv[], int flags)
+{
+ Bool oldRgbaFlag = togl->RgbaFlag;
+ int oldRgbaRed = togl->RgbaRed;
+ int oldRgbaGreen = togl->RgbaGreen;
+ int oldRgbaBlue = togl->RgbaBlue;
+ Bool oldDoubleFlag = togl->DoubleFlag;
+ Bool oldDepthFlag = togl->DepthFlag;
+ int oldDepthSize = togl->DepthSize;
+ Bool oldAccumFlag = togl->AccumFlag;
+ int oldAccumRed = togl->AccumRed;
+ int oldAccumGreen = togl->AccumGreen;
+ int oldAccumBlue = togl->AccumBlue;
+ int oldAccumAlpha = togl->AccumAlpha;
+ Bool oldAlphaFlag = togl->AlphaFlag;
+ int oldAlphaSize = togl->AlphaSize;
+ Bool oldStencilFlag = togl->StencilFlag;
+ int oldStencilSize = togl->StencilSize;
+ int oldAuxNumber = togl->AuxNumber;
+ int oldWidth = togl->Width;
+ int oldHeight = togl->Height;
+ int oldSetGrid = togl->SetGrid;
+
+ if (Tk_ConfigureWidget(interp, togl->TkWin, configSpecs,
+ argc, argv, WIDGREC togl, flags) == TCL_ERROR) {
+ return (TCL_ERROR);
+ }
+#ifndef USE_OVERLAY
+ if (togl->OverlayFlag) {
+ TCL_ERR(interp, "Sorry, overlay was disabled");
+ }
+#endif
+
+
+ if (togl->Width != oldWidth || togl->Height != oldHeight
+ || togl->SetGrid != oldSetGrid) {
+ Togl_WorldChanged((ClientData) togl);
+ /* this added per Lou Arata */
+ Tk_ResizeWindow(togl->TkWin, togl->Width, togl->Height);
+
+ if (togl->ReshapeProc &&
+#if defined(TOGL_WGL)
+ togl->tglGLHglrc
+#elif defined(TOGL_X11)
+ togl->GlCtx
+#elif defined(TOGL_AGL_CLASSIC) || defined(TOGL_AGL)
+ togl->aglCtx
+#endif
+ ) {
+ Togl_MakeCurrent(togl);
+ togl->ReshapeProc(togl);
+ }
+ }
+
+ if (togl->RgbaFlag != oldRgbaFlag
+ || togl->RgbaRed != oldRgbaRed
+ || togl->RgbaGreen != oldRgbaGreen
+ || togl->RgbaBlue != oldRgbaBlue
+ || togl->DoubleFlag != oldDoubleFlag
+ || togl->DepthFlag != oldDepthFlag
+ || togl->DepthSize != oldDepthSize
+ || togl->AccumFlag != oldAccumFlag
+ || togl->AccumRed != oldAccumRed
+ || togl->AccumGreen != oldAccumGreen
+ || togl->AccumBlue != oldAccumBlue
+ || togl->AccumAlpha != oldAccumAlpha
+ || togl->AlphaFlag != oldAlphaFlag
+ || togl->AlphaSize != oldAlphaSize
+ || togl->StencilFlag != oldStencilFlag
+ || togl->StencilSize != oldStencilSize
+ || togl->AuxNumber != oldAuxNumber) {
+#ifdef MESA_COLOR_HACK
+ free_default_color_cells(Tk_Display(togl->TkWin),
+ Tk_Colormap(togl->TkWin));
+#endif
+ }
+#if defined(__sgi)
+ oldStereoInit(togl, togl->OldStereoFlag);
+#endif
+
+ return TCL_OK;
+}
+
+
+static int
+Togl_Widget(ClientData clientData, Tcl_Interp *interp, int argc,
+ CONST84 char *argv[])
+{
+ Togl *togl = (Togl *) clientData;
+ int result = TCL_OK;
+ Tcl_HashEntry *entry;
+ Tcl_HashSearch search;
+ Togl_CmdProc *cmd_proc;
+
+ if (argc < 2) {
+ Tcl_AppendResult(interp, "wrong # args: should be \"",
+ argv[0], " ?options?\"", NULL);
+ return TCL_ERROR;
+ }
+
+ Tk_Preserve((ClientData) togl);
+
+ if (!strncmp(argv[1], "configure", MAX(1, strlen(argv[1])))) {
+ if (argc == 2) {
+ /* Return list of all configuration parameters */
+ result = Tk_ConfigureInfo(interp, togl->TkWin, configSpecs,
+ WIDGREC togl, (char *) NULL, 0);
+ } else if (argc == 3) {
+ if (strcmp(argv[2], "-extensions") == 0) {
+ /* Return a list of OpenGL extensions available */
+ const char *extensions;
+
+ extensions = (const char *) glGetString(GL_EXTENSIONS);
+ Tcl_SetResult(interp, TCL_STUPID extensions, TCL_STATIC);
+ result = TCL_OK;
+ } else {
+ /* Return a specific configuration parameter */
+ result = Tk_ConfigureInfo(interp, togl->TkWin, configSpecs,
+ WIDGREC togl, argv[2], 0);
+ }
+ } else {
+ /* Execute a configuration change */
+ result = Togl_Configure(interp, togl, argc - 2, argv + 2,
+ TK_CONFIG_ARGV_ONLY);
+ }
+ } else if (!strncmp(argv[1], "render", MAX(1, strlen(argv[1])))) {
+ /* force the widget to be redrawn */
+ Togl_Render((ClientData) togl);
+ } else if (!strncmp(argv[1], "swapbuffers", MAX(1, strlen(argv[1])))) {
+ /* force the widget to be redrawn */
+ Togl_SwapBuffers(togl);
+ } else if (!strncmp(argv[1], "makecurrent", MAX(1, strlen(argv[1])))) {
+ /* force the widget to be redrawn */
+ Togl_MakeCurrent(togl);
+ }
+#if TOGL_USE_FONTS == 1
+ else if (!strncmp(argv[1], "loadbitmapfont", MAX(1, strlen(argv[1])))) {
+ if (argc == 3) {
+ GLuint fontbase;
+ Tcl_Obj *fontbaseAsTclObject;
+
+ fontbase = Togl_LoadBitmapFont(togl, argv[2]);
+ if (fontbase) {
+ fontbaseAsTclObject = Tcl_NewIntObj(fontbase);
+ Tcl_SetObjResult(interp, fontbaseAsTclObject);
+ result = TCL_OK;
+ } else {
+ Tcl_AppendResult(interp, "Could not allocate font", NULL);
+ result = TCL_ERROR;
+ }
+ } else {
+ Tcl_AppendResult(interp, "wrong # args", NULL);
+ result = TCL_ERROR;
+ }
+ } else if (!strncmp(argv[1], "unloadbitmapfont", MAX(1, strlen(argv[1])))) {
+ if (argc == 3) {
+ Togl_UnloadBitmapFont(togl, atoi(argv[2]));
+ result = TCL_OK;
+ } else {
+ Tcl_AppendResult(interp, "wrong # args", NULL);
+ result = TCL_ERROR;
+ }
+ }
+#endif /* TOGL_USE_FONTS */
+ else {
+ /* Probably a user-defined function */
+ entry = Tcl_FindHashEntry(&CommandTable, argv[1]);
+ if (entry != NULL) {
+ cmd_proc = (Togl_CmdProc *) Tcl_GetHashValue(entry);
+ result = cmd_proc(togl, argc, argv);
+ } else {
+ Tcl_AppendResult(interp, "Togl: Unknown option: ", argv[1], "\n",
+ "Try: configure or render\n",
+ "or one of the user-defined commands:\n", NULL);
+ entry = Tcl_FirstHashEntry(&CommandTable, &search);
+ while (entry) {
+ Tcl_AppendResult(interp, " ",
+ Tcl_GetHashKey(&CommandTable, entry), "\n", NULL);
+ entry = Tcl_NextHashEntry(&search);
+ }
+ result = TCL_ERROR;
+ }
+ }
+
+ Tk_Release((ClientData) togl);
+ return result;
+}
+
+
+
+/*
+ * Togl_Cmd
+ *
+ * Called when Togl is executed - creation of a Togl widget.
+ * * Creates a new window
+ * * Creates an 'Togl' data structure
+ * * Creates an event handler for this window
+ * * Creates a command that handles this object
+ * * Configures this Togl for the given arguments
+ */
+static int
+Togl_Cmd(ClientData clientData, Tcl_Interp *interp, int argc,
+ CONST84 char **argv)
+{
+ const char *name;
+ Tk_Window mainwin = (Tk_Window) clientData;
+ Tk_Window tkwin;
+ Togl *togl;
+
+ if (argc <= 1) {
+ TCL_ERR(interp, "wrong # args: should be \"pathName read filename\"");
+ }
+
+ /* Create the window. */
+ name = argv[1];
+ tkwin = Tk_CreateWindowFromPath(interp, mainwin, name, (char *) NULL);
+ if (tkwin == NULL) {
+ return TCL_ERROR;
+ }
+
+ Tk_SetClass(tkwin, "Togl");
+
+ /* Create Togl data structure */
+ togl = (Togl *) malloc(sizeof (Togl));
+ if (!togl) {
+ return TCL_ERROR;
+ }
+
+ togl->Next = NULL;
+#if defined(TOGL_WGL)
+ togl->tglGLHdc = NULL;
+ togl->tglGLHglrc = NULL;
+#elif defined(TOGL_X11)
+ togl->GlCtx = NULL;
+ togl->OverlayCtx = NULL;
+#elif defined(TOGL_AGL_CLASSIC) || defined(TOGL_AGL)
+ togl->aglCtx = NULL;
+#endif /* TOGL_WGL */
+ togl->display = Tk_Display(tkwin);
+ togl->TkWin = tkwin;
+ togl->Interp = interp;
+#ifndef NO_TK_CURSOR
+ togl->Cursor = None;
+#endif
+ togl->Width = 0;
+ togl->Height = 0;
+ togl->SetGrid = 0;
+ togl->TimerInterval = 0;
+ togl->RgbaFlag = True;
+ togl->RgbaRed = 1;
+ togl->RgbaGreen = 1;
+ togl->RgbaBlue = 1;
+ togl->DoubleFlag = False;
+ togl->DepthFlag = False;
+ togl->DepthSize = 1;
+ togl->AccumFlag = False;
+ togl->AccumRed = 1;
+ togl->AccumGreen = 1;
+ togl->AccumBlue = 1;
+ togl->AccumAlpha = 1;
+ togl->AlphaFlag = False;
+ togl->AlphaSize = 1;
+ togl->StencilFlag = False;
+ togl->StencilSize = 1;
+ togl->OverlayFlag = False;
+ togl->StereoFlag = False;
+#ifdef __sgi
+ togl->OldStereoFlag = False;
+#endif
+ togl->AuxNumber = 0;
+ togl->Indirect = False;
+ togl->PixelFormat = 0;
+ togl->UpdatePending = False;
+ togl->OverlayUpdatePending = False;
+ togl->CreateProc = DefaultCreateProc;
+ togl->DisplayProc = DefaultDisplayProc;
+ togl->ReshapeProc = DefaultReshapeProc;
+ togl->DestroyProc = DefaultDestroyProc;
+ togl->TimerProc = DefaultTimerProc;
+ togl->OverlayDisplayProc = DefaultOverlayDisplayProc;
+ togl->ShareList = NULL;
+ togl->ShareContext = NULL;
+ togl->Ident = NULL;
+ togl->Client_Data = DefaultClientData;
+
+ /* for EPS Output */
+ togl->EpsRedMap = togl->EpsGreenMap = togl->EpsBlueMap = NULL;
+ togl->EpsMapSize = 0;
+
+ /* Create command event handler */
+ togl->widgetCmd = Tcl_CreateCommand(interp, Tk_PathName(tkwin),
+ Togl_Widget, (ClientData) togl,
+ (Tcl_CmdDeleteProc *) ToglCmdDeletedProc);
+ /*
+ * Setup the Tk_ClassProcs callbacks to point at our own window creation
+ * function
+ *
+ * We need to check at runtime if we should use the new Tk_SetClassProcs()
+ * API or if we need to modify the window structure directly */
+
+
+#ifdef HAVE_TK_SETCLASSPROCS
+
+ if (SetClassProcsPtr != NULL) { /* use public API (Tk 8.4+) */
+ Tk_ClassProcs *procsPtr;
+
+ procsPtr = (Tk_ClassProcs *) Tcl_Alloc(sizeof (Tk_ClassProcs));
+ procsPtr->size = sizeof (Tk_ClassProcs);
+ procsPtr->createProc = Togl_CreateWindow;
+ procsPtr->worldChangedProc = Togl_WorldChanged;
+ procsPtr->modalProc = NULL;
+ /* Tk_SetClassProcs(togl->TkWin,procsPtr,(ClientData)togl); */
+ (SetClassProcsPtr) (togl->TkWin, procsPtr, (ClientData) togl);
+ } else
+#endif
+ { /* use private API */
+ /*
+ * We need to set these fields in the Tk_FakeWin structure: dummy17 =
+ * classProcsPtr dummy18 = instanceData */
+ TkClassProcs *procsPtr;
+ Tk_FakeWin *winPtr = (Tk_FakeWin *) (togl->TkWin);
+
+ procsPtr = (TkClassProcs *) Tcl_Alloc(sizeof (TkClassProcs));
+ procsPtr->createProc = Togl_CreateWindow;
+ procsPtr->geometryProc = Togl_WorldChanged;
+ procsPtr->modalProc = NULL;
+ winPtr->dummy17 = (char *) procsPtr;
+ winPtr->dummy18 = (ClientData) togl;
+ }
+
+ Tk_CreateEventHandler(tkwin,
+ ExposureMask | StructureNotifyMask, Togl_EventProc,
+ (ClientData) togl);
+
+ /* Configure Togl widget */
+ if (Togl_Configure(interp, togl, argc - 2, argv + 2, 0) == TCL_ERROR) {
+ Tk_DestroyWindow(tkwin);
+ Tcl_AppendResult(interp, "Couldn't configure togl widget\n", NULL);
+ goto error;
+ }
+
+ /*
+ * If OpenGL window wasn't already created by Togl_Configure() we
+ * create it now. We can tell by checking if the GLX context has
+ * been initialized.
+ */
+ if (!
+#if defined(TOGL_WGL)
+ togl->tglGLHdc
+#elif defined(TOGL_X11)
+ togl->GlCtx
+#elif defined(TOGL_AGL_CLASSIC) || defined(TOGL_AGL)
+ togl->aglCtx
+#endif
+ ) {
+ Tk_MakeWindowExist(togl->TkWin);
+ if (Tk_WindowId(togl->TkWin) == DUMMY_WINDOW) {
+ return TCL_ERROR;
+ }
+ Togl_MakeCurrent(togl);
+ }
+
+ /* If defined, call create callback */
+ if (togl->CreateProc) {
+ togl->CreateProc(togl);
+ }
+
+ /* If defined, call reshape proc */
+ if (togl->ReshapeProc) {
+ togl->ReshapeProc(togl);
+ }
+
+ /* If defined, setup timer */
+ if (togl->TimerProc) {
+ (void) Tk_CreateTimerHandler(togl->TimerInterval, Togl_Timer,
+ (ClientData) togl);
+ }
+
+ Tcl_AppendResult(interp, Tk_PathName(tkwin), NULL);
+
+ /* Add to linked list */
+ AddToList(togl);
+
+ return TCL_OK;
+
+ error:
+ (void) Tcl_DeleteCommand(interp, "togl");
+ /* free(togl); Don't free it, if we do a crash occurs later... */
+ return TCL_ERROR;
+}
+
+
+#ifdef USE_OVERLAY
+
+/*
+ * Do all the setup for overlay planes
+ * Return: TCL_OK or TCL_ERROR
+ */
+static int
+SetupOverlay(Togl *togl)
+{
+# if defined(TOGL_X11)
+
+# ifdef GLX_TRANSPARENT_TYPE_EXT
+ static int ovAttributeList[] = {
+ GLX_BUFFER_SIZE, 2,
+ GLX_LEVEL, 1,
+ GLX_TRANSPARENT_TYPE_EXT, GLX_TRANSPARENT_INDEX_EXT,
+ None
+ };
+# else
+ static int ovAttributeList[] = {
+ GLX_BUFFER_SIZE, 2,
+ GLX_LEVEL, 1,
+ None
+ };
+# endif
+
+ Display *dpy;
+ XVisualInfo *visinfo;
+ TkWindow *winPtr = (TkWindow *) togl->TkWin;
+
+ XSetWindowAttributes swa;
+ Tcl_HashEntry *hPtr;
+ int new_flag;
+
+ dpy = Tk_Display(togl->TkWin);
+
+ visinfo = glXChooseVisual(dpy, Tk_ScreenNumber(winPtr), ovAttributeList);
+ if (!visinfo) {
+ Tcl_AppendResult(togl->Interp, Tk_PathName(winPtr),
+ ": No suitable overlay index visual available", (char *) NULL);
+ togl->OverlayCtx = 0;
+ togl->OverlayWindow = 0;
+ togl->OverlayCmap = 0;
+ return TCL_ERROR;
+ }
+# ifdef GLX_TRANSPARENT_INDEX_EXT
+ {
+ int fail =
+ glXGetConfig(dpy, visinfo, GLX_TRANSPARENT_INDEX_VALUE_EXT,
+ &togl->OverlayTransparentPixel);
+
+ if (fail)
+ togl->OverlayTransparentPixel = 0; /* maybe, maybe ... */
+ }
+# else
+ togl->OverlayTransparentPixel = 0; /* maybe, maybe ... */
+# endif
+
+ /* share display lists with normal layer context */
+ togl->OverlayCtx =
+ glXCreateContext(dpy, visinfo, togl->GlCtx, !togl->Indirect);
+
+ swa.colormap = XCreateColormap(dpy, XRootWindow(dpy, visinfo->screen),
+ visinfo->visual, AllocNone);
+ togl->OverlayCmap = swa.colormap;
+
+ swa.border_pixel = 0;
+ swa.event_mask = ALL_EVENTS_MASK;
+ togl->OverlayWindow = XCreateWindow(dpy, Tk_WindowId(togl->TkWin), 0, 0,
+ togl->Width, togl->Height, 0,
+ visinfo->depth, InputOutput,
+ visinfo->visual, CWBorderPixel | CWColormap | CWEventMask, &swa);
+
+ hPtr = Tcl_CreateHashEntry(&winPtr->dispPtr->winTable,
+ (char *) togl->OverlayWindow, &new_flag);
+ Tcl_SetHashValue(hPtr, winPtr);
+
+ /* XMapWindow( dpy, togl->OverlayWindow ); */
+ togl->OverlayIsMapped = False;
+
+ /* Make sure window manager installs our colormap */
+ XSetWMColormapWindows(dpy, togl->OverlayWindow, &togl->OverlayWindow, 1);
+
+ return TCL_OK;
+
+# elif defined(TOGL_WGL) || defined(TOGL_AGL_CLASSIC) || defined(TOGL_AGL)
+ /* not yet implemented on these */
+ return TCL_ERROR;
+# endif
+}
+
+#endif /* USE_OVERLAY */
+
+
+
+#ifdef TOGL_WGL
+# define TOGL_CLASS_NAME "Togl Class"
+static Bool ToglClassInitialized = False;
+
+static LRESULT CALLBACK
+Win32WinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
+{
+ LONG result;
+ Togl *togl = (Togl *) GetWindowLong(hwnd, 0);
+ WNDCLASS childClass;
+
+ switch (message) {
+ case WM_WINDOWPOSCHANGED:
+ /* Should be processed by DefWindowProc, otherwise a double buffered
+ * context is not properly resized when the corresponding window is
+ * resized. */
+ break;
+ case WM_DESTROY:
+ if (togl->tglGLHglrc) {
+ wglDeleteContext(togl->tglGLHglrc);
+ }
+ if (togl->tglGLHdc) {
+ ReleaseDC(hwnd, togl->tglGLHdc);
+ }
+ free(togl);
+ break;
+ default:
+# if USE_STATIC_LIB
+ return TkWinChildProc(hwnd, message, wParam, lParam);
+# else
+ /*
+ * OK, since TkWinChildProc is not explicitly exported in the
+ * dynamic libraries, we have to retrieve it from the class info
+ * registered with windows.
+ *
+ */
+ if (tkWinChildProc == NULL) {
+ GetClassInfo(Tk_GetHINSTANCE(), TK_WIN_CHILD_CLASS_NAME,
+ &childClass);
+ tkWinChildProc = childClass.lpfnWndProc;
+ }
+ return tkWinChildProc(hwnd, message, wParam, lParam);
+# endif
+ }
+ result = DefWindowProc(hwnd, message, wParam, lParam);
+ Tcl_ServiceAll();
+ return result;
+}
+#endif /* TOGL_WGL */
+
+
+
+/*
+ * Togl_CreateWindow
+ *
+ * Window creation function, invoked as a callback from Tk_MakeWindowExist.
+ * Creates an OpenGL window for the Togl widget.
+ */
+static Window
+Togl_CreateWindow(Tk_Window tkwin, Window parent, ClientData instanceData)
+{
+
+ Togl *togl = (Togl *) instanceData;
+ XVisualInfo *visinfo = NULL;
+ Display *dpy;
+ Colormap cmap;
+ int scrnum;
+ Window window;
+
+#if defined(TOGL_X11)
+ Bool directCtx = True;
+ int attrib_list[1000];
+ int attrib_count;
+ int dummy;
+ XSetWindowAttributes swa;
+
+# define MAX_ATTEMPTS 12
+ static int ci_depths[MAX_ATTEMPTS] = {
+ 8, 4, 2, 1, 12, 16, 8, 4, 2, 1, 12, 16
+ };
+ static int dbl_flags[MAX_ATTEMPTS] = {
+ 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1
+ };
+#elif defined(TOGL_WGL)
+ HWND hwnd, parentWin;
+ int pixelformat;
+ HANDLE hInstance;
+ WNDCLASS ToglClass;
+ PIXELFORMATDESCRIPTOR pfd;
+ XVisualInfo VisInf;
+#elif defined(TOGL_AGL_CLASSIC) || defined(TOGL_AGL)
+ GLint attribs[20];
+ int na;
+ AGLPixelFormat fmt;
+ XVisualInfo VisInf;
+#endif /* TOGL_X11 */
+
+
+ dpy = Tk_Display(togl->TkWin);
+
+#if defined(TOGL_X11)
+ /* Make sure OpenGL's GLX extension supported */
+ if (!glXQueryExtension(dpy, &dummy, &dummy)) {
+ Tcl_SetResult(togl->Interp,
+ TCL_STUPID "Togl: X server has no OpenGL GLX extension",
+ TCL_STATIC);
+ return DUMMY_WINDOW;
+ }
+
+ if (togl->ShareContext && FindTogl(togl->ShareContext)) {
+ /* share OpenGL context with existing Togl widget */
+ Togl *shareWith = FindTogl(togl->ShareContext);
+
+ assert(shareWith != NULL);
+ assert(shareWith->GlCtx != NULL);
+ togl->GlCtx = shareWith->GlCtx;
+ togl->VisInfo = shareWith->VisInfo;
+ visinfo = togl->VisInfo;
+ } else {
+ if (togl->PixelFormat) {
+ XVisualInfo template;
+ int count = 1;
+
+ template.visualid = togl->PixelFormat;
+ visinfo = XGetVisualInfo(dpy, VisualIDMask, &template, &count);
+ if (visinfo == NULL) {
+ Tcl_SetResult(togl->Interp,
+ TCL_STUPID "Togl: couldn't choose pixel format",
+ TCL_STATIC);
+
+ return DUMMY_WINDOW;
+ }
+ /* fill in flags normally passed in that affect behavior */
+ (void) glXGetConfig(dpy, visinfo, GLX_RGBA, &togl->RgbaFlag);
+ (void) glXGetConfig(dpy, visinfo, GLX_DOUBLEBUFFER,
+ &togl->DoubleFlag);
+ (void) glXGetConfig(dpy, visinfo, GLX_STEREO, &togl->StereoFlag);
+ } else {
+ int attempt;
+
+ /* It may take a few tries to get a visual */
+ for (attempt = 0; attempt < MAX_ATTEMPTS; attempt++) {
+ attrib_count = 0;
+ attrib_list[attrib_count++] = GLX_USE_GL;
+ if (togl->RgbaFlag) {
+ /* RGB[A] mode */
+ attrib_list[attrib_count++] = GLX_RGBA;
+ attrib_list[attrib_count++] = GLX_RED_SIZE;
+ attrib_list[attrib_count++] = togl->RgbaRed;
+ attrib_list[attrib_count++] = GLX_GREEN_SIZE;
+ attrib_list[attrib_count++] = togl->RgbaGreen;
+ attrib_list[attrib_count++] = GLX_BLUE_SIZE;
+ attrib_list[attrib_count++] = togl->RgbaBlue;
+ if (togl->AlphaFlag) {
+ attrib_list[attrib_count++] = GLX_ALPHA_SIZE;
+ attrib_list[attrib_count++] = togl->AlphaSize;
+ }
+
+ /* for EPS Output */
+ if (togl->EpsRedMap)
+ free(togl->EpsRedMap);
+ if (togl->EpsGreenMap)
+ free(togl->EpsGreenMap);
+ if (togl->EpsBlueMap)
+ free(togl->EpsBlueMap);
+ togl->EpsRedMap = togl->EpsGreenMap = togl->EpsBlueMap =
+ NULL;
+ togl->EpsMapSize = 0;
+ } else {
+ /* Color index mode */
+ int depth;
+
+ attrib_list[attrib_count++] = GLX_BUFFER_SIZE;
+ depth = ci_depths[attempt];
+ attrib_list[attrib_count++] = depth;
+ }
+ if (togl->DepthFlag) {
+ attrib_list[attrib_count++] = GLX_DEPTH_SIZE;
+ attrib_list[attrib_count++] = togl->DepthSize;
+ }
+ if (togl->DoubleFlag || dbl_flags[attempt]) {
+ attrib_list[attrib_count++] = GLX_DOUBLEBUFFER;
+ }
+ if (togl->StencilFlag) {
+ attrib_list[attrib_count++] = GLX_STENCIL_SIZE;
+ attrib_list[attrib_count++] = togl->StencilSize;
+ }
+ if (togl->AccumFlag) {
+ attrib_list[attrib_count++] = GLX_ACCUM_RED_SIZE;
+ attrib_list[attrib_count++] = togl->AccumRed;
+ attrib_list[attrib_count++] = GLX_ACCUM_GREEN_SIZE;
+ attrib_list[attrib_count++] = togl->AccumGreen;
+ attrib_list[attrib_count++] = GLX_ACCUM_BLUE_SIZE;
+ attrib_list[attrib_count++] = togl->AccumBlue;
+ if (togl->AlphaFlag) {
+ attrib_list[attrib_count++] = GLX_ACCUM_ALPHA_SIZE;
+ attrib_list[attrib_count++] = togl->AccumAlpha;
+ }
+ }
+ if (togl->AuxNumber != 0) {
+ attrib_list[attrib_count++] = GLX_AUX_BUFFERS;
+ attrib_list[attrib_count++] = togl->AuxNumber;
+ }
+ if (togl->Indirect) {
+ directCtx = False;
+ }
+
+ if (togl->StereoFlag) {
+ attrib_list[attrib_count++] = GLX_STEREO;
+ }
+ attrib_list[attrib_count++] = None;
+
+ visinfo = glXChooseVisual(dpy, Tk_ScreenNumber(togl->TkWin),
+ attrib_list);
+ if (visinfo) {
+ /* found a GLX visual! */
+ break;
+ }
+ }
+
+ togl->VisInfo = visinfo;
+
+ if (visinfo == NULL) {
+ Tcl_SetResult(togl->Interp,
+ TCL_STUPID "Togl: couldn't get visual", TCL_STATIC);
+ return DUMMY_WINDOW;
+ }
+
+ /*
+ * Create a new OpenGL rendering context.
+ */
+ if (togl->ShareList) {
+ /* share display lists with existing togl widget */
+ Togl *shareWith = FindTogl(togl->ShareList);
+ GLXContext shareCtx;
+
+ if (shareWith)
+ shareCtx = shareWith->GlCtx;
+ else
+ shareCtx = None;
+ togl->GlCtx =
+ glXCreateContext(dpy, visinfo, shareCtx, directCtx);
+ } else {
+ /* don't share display lists */
+ togl->GlCtx = glXCreateContext(dpy, visinfo, None, directCtx);
+ }
+
+ if (togl->GlCtx == NULL) {
+ Tcl_SetResult(togl->Interp,
+ TCL_STUPID "could not create rendering context",
+ TCL_STATIC);
+ return DUMMY_WINDOW;
+ }
+
+ }
+ }
+
+
+#endif /* TOGL_X11 */
+
+#ifdef TOGL_WGL
+ parentWin = Tk_GetHWND(parent);
+ hInstance = Tk_GetHINSTANCE();
+ if (!ToglClassInitialized) {
+ ToglClassInitialized = True;
+ ToglClass.style = CS_HREDRAW | CS_VREDRAW;
+ ToglClass.cbClsExtra = 0;
+ ToglClass.cbWndExtra = 4; /* to save struct Togl* */
+ ToglClass.hInstance = hInstance;
+ ToglClass.hbrBackground = NULL;
+ ToglClass.lpszMenuName = NULL;
+ ToglClass.lpszClassName = TOGL_CLASS_NAME;
+ ToglClass.lpfnWndProc = Win32WinProc;
+ ToglClass.hIcon = NULL;
+ ToglClass.hCursor = NULL;
+ if (!RegisterClass(&ToglClass)) {
+ Tcl_SetResult(togl->Interp,
+ TCL_STUPID "unable register Togl window class", TCL_STATIC);
+ return DUMMY_WINDOW;
+ }
+ }
+
+ hwnd = CreateWindow(TOGL_CLASS_NAME, NULL,
+ WS_CHILD | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, 0, 0,
+ togl->Width, togl->Height, parentWin, NULL, hInstance, NULL);
+ SetWindowLong(hwnd, 0, (LONG) togl);
+ SetWindowPos(hwnd, HWND_TOP, 0, 0, 0, 0,
+ SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE);
+
+ togl->tglGLHdc = GetDC(hwnd);
+
+ pfd.nSize = sizeof (PIXELFORMATDESCRIPTOR);
+ pfd.nVersion = 1;
+ pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL;
+ if (togl->DoubleFlag) {
+ pfd.dwFlags |= PFD_DOUBLEBUFFER;
+ }
+ /* The stereo flag is not supported in the current generic OpenGL
+ * implementation, but may be supported by specific hardware devices. */
+ if (togl->StereoFlag) {
+ pfd.dwFlags |= PFD_STEREO;
+ }
+
+ if (togl->PixelFormat) {
+ pixelformat = togl->PixelFormat;
+ } else {
+ pfd.cColorBits = togl->RgbaRed + togl->RgbaGreen + togl->RgbaBlue;
+ pfd.iPixelType = togl->RgbaFlag ? PFD_TYPE_RGBA : PFD_TYPE_COLORINDEX;
+ /* Alpha bitplanes are not supported in the current generic OpenGL
+ * implementation, but may be supported by specific hardware devices. */
+ pfd.cAlphaBits = togl->AlphaFlag ? togl->AlphaSize : 0;
+ pfd.cAccumBits = togl->AccumFlag ? (togl->AccumRed + togl->AccumGreen +
+ togl->AccumBlue + togl->AccumAlpha) : 0;
+ pfd.cDepthBits = togl->DepthFlag ? togl->DepthSize : 0;
+ pfd.cStencilBits = togl->StencilFlag ? togl->StencilSize : 0;
+ /* Auxiliary buffers are not supported in the current generic OpenGL
+ * implementation, but may be supported by specific hardware devices. */
+ pfd.cAuxBuffers = togl->AuxNumber;
+ pfd.iLayerType = PFD_MAIN_PLANE;
+
+ if ((pixelformat = ChoosePixelFormat(togl->tglGLHdc, &pfd)) == 0) {
+ Tcl_SetResult(togl->Interp,
+ TCL_STUPID "Togl: couldn't choose pixel format",
+ TCL_STATIC);
+ return DUMMY_WINDOW;
+ }
+ }
+ if (SetPixelFormat(togl->tglGLHdc, pixelformat, &pfd) == FALSE) {
+ Tcl_SetResult(togl->Interp,
+ TCL_STUPID "Togl: couldn't choose pixel format", TCL_STATIC);
+ return DUMMY_WINDOW;
+ }
+
+ /* Get the actual pixel format */
+ DescribePixelFormat(togl->tglGLHdc, pixelformat, sizeof (pfd), &pfd);
+ if (togl->PixelFormat) {
+ /* fill in flags normally passed in that affect behavior */
+ togl->RgbaFlag = pfd.iPixelType == PFD_TYPE_RGBA;
+ togl->DoubleFlag = pfd.cDepthBits > 0;
+ togl->StereoFlag = (pfd.dwFlags & PFD_STEREO) != 0;
+ // TODO: set depth flag, and more
+ } else if (togl->StereoFlag && (pfd.dwFlags & PFD_STEREO) == 0) {
+ Tcl_SetResult(togl->Interp,
+ TCL_STUPID "Togl: couldn't choose stereo pixel format",
+ TCL_STATIC);
+ return DUMMY_WINDOW;
+ }
+
+ if (togl->ShareContext && FindTogl(togl->ShareContext)) {
+ /* share OpenGL context with existing Togl widget */
+ Togl *shareWith = FindTogl(togl->ShareContext);
+
+ assert(shareWith);
+ assert(shareWith->tglGLHglrc);
+ togl->tglGLHglrc = shareWith->tglGLHglrc;
+ togl->VisInfo = shareWith->VisInfo;
+ visinfo = togl->VisInfo;
+ } else {
+ /*
+ * Create a new OpenGL rendering context. And check to share lists.
+ */
+ togl->tglGLHglrc = wglCreateContext(togl->tglGLHdc);
+
+ if (togl->ShareList) {
+ /* share display lists with existing togl widget */
+ Togl *shareWith = FindTogl(togl->ShareList);
+
+ if (shareWith)
+ wglShareLists(shareWith->tglGLHglrc, togl->tglGLHglrc);
+ }
+
+ if (!togl->tglGLHglrc) {
+ Tcl_SetResult(togl->Interp,
+ TCL_STUPID "could not create rendering context",
+ TCL_STATIC);
+ return DUMMY_WINDOW;
+ }
+
+ /* Just for portability, define the simplest visinfo */
+ visinfo = &VisInf;
+ visinfo->visual = DefaultVisual(dpy, DefaultScreen(dpy));
+ visinfo->depth = visinfo->visual->bits_per_rgb;
+ togl->VisInfo = visinfo;
+ }
+
+#endif /* TOGL_WGL */
+
+
+ /*
+ * find a colormap
+ */
+ scrnum = Tk_ScreenNumber(togl->TkWin);
+ if (togl->RgbaFlag) {
+ /* Colormap for RGB mode */
+#if defined(TOGL_X11)
+ cmap = get_rgb_colormap(dpy, scrnum, visinfo, togl->TkWin);
+
+#elif defined(TOGL_WGL)
+ if (pfd.dwFlags & PFD_NEED_PALETTE) {
+ cmap = Win32CreateRgbColormap(pfd);
+ } else {
+ cmap = DefaultColormap(dpy, scrnum);
+ }
+ /* for EPS Output */
+ if (togl->EpsRedMap)
+ free(togl->EpsRedMap);
+ if (togl->EpsGreenMap)
+ free(togl->EpsGreenMap);
+ if (togl->EpsBlueMap)
+ free(togl->EpsBlueMap);
+ togl->EpsRedMap = togl->EpsGreenMap = togl->EpsBlueMap = NULL;
+ togl->EpsMapSize = 0;
+
+#elif defined(TOGL_AGL_CLASSIC) || defined(TOGL_AGL)
+ cmap = DefaultColormap(dpy, scrnum);
+ /* for EPS Output */
+ if (togl->EpsRedMap)
+ free(togl->EpsRedMap);
+ if (togl->EpsGreenMap)
+ free(togl->EpsGreenMap);
+ if (togl->EpsBlueMap)
+ free(togl->EpsBlueMap);
+ togl->EpsRedMap = togl->EpsGreenMap = togl->EpsBlueMap = NULL;
+ togl->EpsMapSize = 0;
+#endif /* TOGL_X11 */
+ } else {
+ /* Colormap for CI mode */
+#ifdef TOGL_WGL
+ togl->CiColormapSize = 1 << pfd.cColorBits;
+ togl->CiColormapSize = togl->CiColormapSize < MAX_CI_COLORMAP_SIZE ?
+ togl->CiColormapSize : MAX_CI_COLORMAP_SIZE;
+
+#endif /* TOGL_WGL */
+ if (togl->PrivateCmapFlag) {
+ /* need read/write colormap so user can store own color entries */
+#if defined(TOGL_X11)
+ cmap = XCreateColormap(dpy, XRootWindow(dpy, visinfo->screen),
+ visinfo->visual, AllocAll);
+#elif defined(TOGL_WGL)
+ cmap = Win32CreateCiColormap(togl);
+#elif defined(TOGL_AGL_CLASSIC) || defined(TOGL_AGL)
+ /* need to figure out how to do this correctly on Mac... */
+ cmap = DefaultColormap(dpy, scrnum);
+#endif /* TOGL_X11 */
+ } else {
+ if (visinfo->visual == DefaultVisual(dpy, scrnum)) {
+ /* share default/root colormap */
+ cmap = Tk_Colormap(togl->TkWin);
+ } else {
+ /* make a new read-only colormap */
+ cmap = XCreateColormap(dpy, XRootWindow(dpy, visinfo->screen),
+ visinfo->visual, AllocNone);
+ }
+ }
+ }
+
+#if !defined(TOGL_AGL)
+ /* Make sure Tk knows to switch to the new colormap when the cursor is over
+ * this window when running in color index mode. */
+ (void) Tk_SetWindowVisual(togl->TkWin, visinfo->visual, visinfo->depth,
+ cmap);
+#endif
+
+#ifdef TOGL_WGL
+ /* Install the colormap */
+ SelectPalette(togl->tglGLHdc, ((TkWinColormap *) cmap)->palette, TRUE);
+ RealizePalette(togl->tglGLHdc);
+#endif /* TOGL_WGL */
+
+#if defined(TOGL_X11)
+ swa.colormap = cmap;
+ swa.border_pixel = 0;
+ swa.event_mask = ALL_EVENTS_MASK;
+ window = XCreateWindow(dpy, parent,
+ 0, 0, togl->Width, togl->Height,
+ 0, visinfo->depth,
+ InputOutput, visinfo->visual,
+ CWBorderPixel | CWColormap | CWEventMask, &swa);
+ /* Make sure window manager installs our colormap */
+ (void) XSetWMColormapWindows(dpy, window, &window, 1);
+
+#elif defined(TOGL_WGL)
+ window = Tk_AttachHWND(togl->TkWin, hwnd);
+
+#elif defined(TOGL_AGL_CLASSIC) || defined(TOGL_AGL)
+ {
+ TkWindow *winPtr = (TkWindow *) togl->TkWin;
+
+ window = TkpMakeWindow(winPtr, parent);
+ }
+#endif /* TOGL_X11 */
+
+#ifdef USE_OVERLAY
+ if (togl->OverlayFlag) {
+ if (SetupOverlay(togl) == TCL_ERROR) {
+ fprintf(stderr, "Warning: couldn't setup overlay.\n");
+ togl->OverlayFlag = False;
+ }
+ }
+#endif /* USE_OVERLAY */
+
+ /* Request the X window to be displayed */
+ (void) XMapWindow(dpy, window);
+
+#if defined(TOGL_AGL_CLASSIC) || defined(TOGL_AGL)
+ if (togl->ShareContext && FindTogl(togl->ShareContext)) {
+ /* share OpenGL context with existing Togl widget */
+ Togl *shareWith = FindTogl(togl->ShareContext);
+
+ assert(shareWith);
+ assert(shareWith->aglCtx);
+ togl->aglCtx = shareWith->aglCtx;
+ togl->VisInfo = shareWith->VisInfo;
+ visinfo = togl->VisInfo;
+
+ } else {
+ AGLContext shareCtx = NULL;
+
+ if (togl->PixelFormat) {
+ /* fill in RgbaFlag, DoubleFlag, and StereoFlag */
+ fmt = (AGLPixelFormat) togl->PixelFormat;
+ GLint has_rgba, has_doublebuf, has_stereo;
+
+ if (aglDescribePixelFormat(fmt, AGL_RGBA, &has_rgba) &&
+ aglDescribePixelFormat(fmt, AGL_DOUBLEBUFFER,
+ &has_doublebuf)
+ && aglDescribePixelFormat(fmt, AGL_STEREO, &has_stereo)) {
+ togl->RgbaFlag = (has_rgba ? True : False);
+ togl->DoubleFlag = (has_doublebuf ? True : False);
+ togl->StereoFlag = (has_stereo ? True : False);
+ } else {
+ Tcl_SetResult(togl->Interp,
+ TCL_STUPID
+ "Togl: failed querying pixel format attributes",
+ TCL_STATIC);
+ return DUMMY_WINDOW;
+ }
+ } else {
+
+ /* Need to do this after mapping window, so MacDrawable structure
+ * is more completely filled in */
+ na = 0;
+ attribs[na++] = AGL_MINIMUM_POLICY;
+ attribs[na++] = AGL_ROBUST;
+ if (togl->RgbaFlag) {
+ /* RGB[A] mode */
+ attribs[na++] = AGL_RGBA;
+ attribs[na++] = AGL_RED_SIZE;
+ attribs[na++] = togl->RgbaRed;
+ attribs[na++] = AGL_GREEN_SIZE;
+ attribs[na++] = togl->RgbaGreen;
+ attribs[na++] = AGL_BLUE_SIZE;
+ attribs[na++] = togl->RgbaBlue;
+ if (togl->AlphaFlag) {
+ attribs[na++] = AGL_ALPHA_SIZE;
+ attribs[na++] = togl->AlphaSize;
+ }
+ } else {
+ /* Color index mode */
+ attribs[na++] = AGL_BUFFER_SIZE;
+ attribs[na++] = 8;
+ }
+ if (togl->DepthFlag) {
+ attribs[na++] = AGL_DEPTH_SIZE;
+ attribs[na++] = togl->DepthSize;
+ }
+ if (togl->DoubleFlag) {
+ attribs[na++] = AGL_DOUBLEBUFFER;
+ }
+ if (togl->StencilFlag) {
+ attribs[na++] = AGL_STENCIL_SIZE;
+ attribs[na++] = togl->StencilSize;
+ }
+ if (togl->AccumFlag) {
+ attribs[na++] = AGL_ACCUM_RED_SIZE;
+ attribs[na++] = togl->AccumRed;
+ attribs[na++] = AGL_ACCUM_GREEN_SIZE;
+ attribs[na++] = togl->AccumGreen;
+ attribs[na++] = AGL_ACCUM_BLUE_SIZE;
+ attribs[na++] = togl->AccumBlue;
+ if (togl->AlphaFlag) {
+ attribs[na++] = AGL_ACCUM_ALPHA_SIZE;
+ attribs[na++] = togl->AccumAlpha;
+ }
+ }
+ if (togl->AuxNumber != 0) {
+ attribs[na++] = AGL_AUX_BUFFERS;
+ attribs[na++] = togl->AuxNumber;
+ }
+ attribs[na++] = AGL_NONE;
+
+ if ((fmt = aglChoosePixelFormat(NULL, 0, attribs)) == NULL) {
+ Tcl_SetResult(togl->Interp,
+ TCL_STUPID "Togl: couldn't choose pixel format",
+ TCL_STATIC);
+ return DUMMY_WINDOW;
+ }
+ }
+
+ /*
+ * Check whether to share lists.
+ */
+ if (togl->ShareList) {
+ /* share display lists with existing togl widget */
+ Togl *shareWith = FindTogl(togl->ShareList);
+
+ if (shareWith)
+ shareCtx = shareWith->aglCtx;
+ }
+ if ((togl->aglCtx = aglCreateContext(fmt, shareCtx)) == NULL) {
+ GLenum err = aglGetError();
+
+ aglDestroyPixelFormat(fmt);
+ if (err == AGL_BAD_MATCH)
+ Tcl_SetResult(togl->Interp,
+ TCL_STUPID
+ "Togl: couldn't create context, shared context doesn't match",
+ TCL_STATIC);
+ else if (err == AGL_BAD_CONTEXT)
+ Tcl_SetResult(togl->Interp,
+ TCL_STUPID
+ "Togl: couldn't create context, bad shared context",
+ TCL_STATIC);
+ else if (err == AGL_BAD_PIXELFMT)
+ Tcl_SetResult(togl->Interp,
+ TCL_STUPID
+ "Togl: couldn't create context, bad pixel format",
+ TCL_STATIC);
+ else
+ Tcl_SetResult(togl->Interp,
+ TCL_STUPID
+ "Togl: couldn't create context, unknown reason",
+ TCL_STATIC);
+ return DUMMY_WINDOW;
+ }
+
+ aglDestroyPixelFormat(fmt);
+ if (!aglSetDrawable(togl->aglCtx,
+# if defined(TOGL_AGL)
+ ((MacDrawable *) (window))->toplevel->grafPtr
+# else
+ ((MacDrawable *) (window))->toplevel->portPtr
+# endif
+ )) {
+ aglDestroyContext(togl->aglCtx);
+ Tcl_SetResult(togl->Interp,
+ TCL_STUPID "Togl: couldn't set drawable", TCL_STATIC);
+ return DUMMY_WINDOW;
+ }
+
+ /* Just for portability, define the simplest visinfo */
+ visinfo = &VisInf;
+ visinfo->visual = DefaultVisual(dpy, DefaultScreen(dpy));
+ visinfo->depth = visinfo->visual->bits_per_rgb;
+
+ Tk_SetWindowVisual(togl->TkWin, visinfo->visual, visinfo->depth, cmap);
+ }
+#endif /* TOGL_AGL_CLASSIC || TOGL_AGL */
+
+#if defined(TOGL_X11)
+ /* Check for a single/double buffering snafu */
+ {
+ int dbl_flag;
+
+ if (glXGetConfig(dpy, visinfo, GLX_DOUBLEBUFFER, &dbl_flag)) {
+ if (!togl->DoubleFlag && dbl_flag) {
+ /* We requested single buffering but had to accept a */
+ /* double buffered visual. Set the GL draw buffer to */
+ /* be the front buffer to simulate single buffering. */
+ glDrawBuffer(GL_FRONT);
+ }
+ }
+ }
+#endif /* TOGL_X11 */
+
+ /* for EPS Output */
+ if (!togl->RgbaFlag) {
+ int index_size;
+
+#if defined(TOGL_X11) || defined(TOGL_AGL_CLASSIC) || defined(TOGL_AGL)
+ GLint index_bits;
+
+ glGetIntegerv(GL_INDEX_BITS, &index_bits);
+ index_size = 1 << index_bits;
+#elif defined(TOGL_WGL)
+ index_size = togl->CiColormapSize;
+#endif /* TOGL_X11 */
+ if (togl->EpsMapSize != index_size) {
+ if (togl->EpsRedMap)
+ free(togl->EpsRedMap);
+ if (togl->EpsGreenMap)
+ free(togl->EpsGreenMap);
+ if (togl->EpsBlueMap)
+ free(togl->EpsBlueMap);
+ togl->EpsMapSize = index_size;
+ togl->EpsRedMap = (GLfloat *) calloc(index_size, sizeof (GLfloat));
+ togl->EpsGreenMap =
+ (GLfloat *) calloc(index_size, sizeof (GLfloat));
+ togl->EpsBlueMap = (GLfloat *) calloc(index_size, sizeof (GLfloat));
+ }
+ }
+
+ return window;
+}
+
+/*
+ * Togl_WorldChanged
+ *
+ * Add support for setgrid option.
+ */
+static void
+Togl_WorldChanged(ClientData instanceData)
+{
+ Togl *togl = (Togl *) instanceData;
+
+ Tk_GeometryRequest(togl->TkWin, togl->Width, togl->Height);
+ Tk_SetInternalBorder(togl->TkWin, 0);
+ if (togl->SetGrid > 0) {
+ Tk_SetGrid(togl->TkWin, togl->Width / togl->SetGrid,
+ togl->Height / togl->SetGrid, togl->SetGrid, togl->SetGrid);
+ } else {
+ Tk_UnsetGrid(togl->TkWin);
+ }
+}
+
+/*
+ * ToglCmdDeletedProc
+ *
+ * This procedure is invoked when a widget command is deleted. If
+ * the widget isn't already in the process of being destroyed,
+ * this command destroys it.
+ *
+ * Results:
+ * None.
+ *
+ * Side effects:
+ * The widget is destroyed.
+ *
+ *----------------------------------------------------------------------
+ */
+static void
+ToglCmdDeletedProc(ClientData clientData)
+{
+ Togl *togl = (Togl *) clientData;
+ Tk_Window tkwin = togl->TkWin;
+
+ /*
+ * This procedure could be invoked either because the window was
+ * destroyed and the command was then deleted (in which case tkwin
+ * is NULL) or because the command was deleted, and then this procedure
+ * destroys the widget.
+ */
+
+ if (togl && tkwin) {
+ Tk_DeleteEventHandler(tkwin,
+ ExposureMask | StructureNotifyMask,
+ Togl_EventProc, (ClientData) togl);
+ }
+#if defined(TOGL_X11)
+ if (togl->GlCtx) {
+ if (FindToglWithSameContext(togl) == NULL)
+ glXDestroyContext(togl->display, togl->GlCtx);
+ togl->GlCtx = NULL;
+ }
+# ifdef USE_OVERLAY
+ if (togl->OverlayCtx) {
+ Tcl_HashEntry *entryPtr;
+ TkWindow *winPtr = (TkWindow *) togl->TkWin;
+
+ if (winPtr) {
+ entryPtr = Tcl_FindHashEntry(&winPtr->dispPtr->winTable,
+ (char *) togl->OverlayWindow);
+ Tcl_DeleteHashEntry(entryPtr);
+ }
+ if (FindToglWithSameOverlayContext(togl) == NULL)
+ glXDestroyContext(togl->display, togl->OverlayCtx);
+ togl->OverlayCtx = NULL;
+ }
+# endif /* USE_OVERLAY */
+#endif
+ /* TODO: delete contexts on other platforms */
+
+ if (tkwin != NULL) {
+ if (togl->SetGrid > 0) {
+ Tk_UnsetGrid(tkwin);
+ }
+ togl->TkWin = NULL;
+ Tk_DestroyWindow(tkwin);
+ }
+}
+
+
+/*
+ * Togl_Destroy
+ *
+ * Gets called when an Togl widget is destroyed.
+ */
+static void
+Togl_Destroy(
+#if (TK_MAJOR_VERSION * 100 + TK_MINOR_VERSION) >= 401
+ char *
+#else
+ ClientData
+#endif
+ clientData)
+{
+ Togl *togl = (Togl *) clientData;
+
+ Tk_FreeOptions(configSpecs, WIDGREC togl, togl->display, 0);
+
+#ifndef NO_TK_CURSOR
+ if (togl->Cursor != None) {
+ Tk_FreeCursor(togl->display, togl->Cursor);
+ }
+#endif
+ if (togl->DestroyProc) {
+ togl->DestroyProc(togl);
+ }
+
+ /* remove from linked list */
+ RemoveFromList(togl);
+
+#if !defined(TOGL_WGL)
+ /* TODO: why not on Windows? */
+ free(togl);
+#endif
+}
+
+
+
+/*
+ * This gets called to handle Togl window configuration events
+ */
+static void
+Togl_EventProc(ClientData clientData, XEvent *eventPtr)
+{
+ Togl *togl = (Togl *) clientData;
+
+ switch (eventPtr->type) {
+ case Expose:
+ if (eventPtr->xexpose.count == 0) {
+ if (!togl->UpdatePending
+ && eventPtr->xexpose.window == Tk_WindowId(togl->TkWin)) {
+ Togl_PostRedisplay(togl);
+ }
+#if defined(TOGL_X11)
+ if (!togl->OverlayUpdatePending && togl->OverlayFlag
+ && togl->OverlayIsMapped
+ && eventPtr->xexpose.window == togl->OverlayWindow) {
+ Togl_PostOverlayRedisplay(togl);
+ }
+#endif /* TOGL_X11 */
+ }
+ break;
+ case ConfigureNotify:
+ if (togl->Width != Tk_Width(togl->TkWin)
+ || togl->Height != Tk_Height(togl->TkWin)) {
+ togl->Width = Tk_Width(togl->TkWin);
+ togl->Height = Tk_Height(togl->TkWin);
+ (void) XResizeWindow(Tk_Display(togl->TkWin),
+ Tk_WindowId(togl->TkWin), togl->Width, togl->Height);
+#if defined(TOGL_X11)
+ if (togl->OverlayFlag) {
+ (void) XResizeWindow(Tk_Display(togl->TkWin),
+ togl->OverlayWindow, togl->Width, togl->Height);
+ (void) XRaiseWindow(Tk_Display(togl->TkWin),
+ togl->OverlayWindow);
+ }
+#endif /* TOGL_X11 */
+ Togl_MakeCurrent(togl);
+ if (togl->ReshapeProc) {
+ togl->ReshapeProc(togl);
+ } else {
+ glViewport(0, 0, togl->Width, togl->Height);
+#if defined(TOGL_X11)
+ if (togl->OverlayFlag) {
+ Togl_UseLayer(togl, TOGL_OVERLAY);
+ glViewport(0, 0, togl->Width, togl->Height);
+ Togl_UseLayer(togl, TOGL_NORMAL);
+ }
+#endif /* TOGL_X11 */
+ }
+#ifndef TOGL_WGL /* causes double redisplay on Win32 platform */
+ Togl_PostRedisplay(togl);
+#endif /* TOGL_WGL */
+ }
+ break;
+ case MapNotify:
+#if defined(TOGL_AGL)
+ {
+ /*
+ * See comment for the UnmapNotify case below.
+ */
+ AGLDrawable d = TkMacOSXGetDrawablePort(Tk_WindowId(togl->TkWin));
+
+ aglSetDrawable(togl->aglCtx, d);
+ }
+#endif /* TOGL_AGL */
+ break;
+ case UnmapNotify:
+#if defined(TOGL_AGL)
+ {
+ /*
+ * For Mac OS X Aqua, Tk subwindows are not implemented as
+ * separate Aqua windows. They are just different regions of
+ * a single Aqua window. To unmap them they are just not drawn.
+ * Have to disconnect the AGL context otherwise they will continue
+ * to be displayed directly by Aqua.
+ */
+ aglSetDrawable(togl->aglCtx, NULL);
+ }
+#endif /* TOGL_AGL */
+ break;
+ case DestroyNotify:
+ if (togl->TkWin != NULL) {
+ if (togl->SetGrid > 0) {
+ Tk_UnsetGrid(togl->TkWin);
+ }
+ togl->TkWin = NULL;
+#if (TCL_MAJOR_VERSION * 100 + TCL_MINOR_VERSION) >= 800
+ /* This function new in Tcl/Tk 8.0 */
+ (void) Tcl_DeleteCommandFromToken(togl->Interp, togl->widgetCmd);
+#endif
+ }
+ if (togl->TimerProc != NULL) {
+#if (TK_MAJOR_VERSION * 100 + TK_MINOR_VERSION) >= 401
+ Tcl_DeleteTimerHandler(togl->timerHandler);
+#else
+ Tk_DeleteTimerHandler(togl->timerHandler);
+#endif
+
+ }
+ if (togl->UpdatePending) {
+#if (TCL_MAJOR_VERSION * 100 + TCL_MINOR_VERSION) >= 705
+ Tcl_CancelIdleCall(Togl_Render, (ClientData) togl);
+#else
+ Tk_CancelIdleCall(Togl_Render, (ClientData) togl);
+#endif
+ }
+#if (TK_MAJOR_VERSION * 100 + TK_MINOR_VERSION) >= 401
+ Tcl_EventuallyFree((ClientData) togl, Togl_Destroy);
+#else
+ Tk_EventuallyFree((ClientData) togl, Togl_Destroy);
+#endif
+
+ break;
+ default:
+ /* nothing */
+ ;
+ }
+}
+
+
+
+void
+Togl_PostRedisplay(Togl *togl)
+{
+ if (!togl->UpdatePending) {
+ togl->UpdatePending = True;
+ Tk_DoWhenIdle(Togl_Render, (ClientData) togl);
+ }
+}
+
+
+
+void
+Togl_SwapBuffers(const Togl *togl)
+{
+ if (togl->DoubleFlag) {
+#if defined(TOGL_WGL)
+ int res = SwapBuffers(togl->tglGLHdc);
+
+ assert(res == TRUE);
+#elif defined(TOGL_X11)
+ glXSwapBuffers(Tk_Display(togl->TkWin), Tk_WindowId(togl->TkWin));
+#elif defined(TOGL_AGL_CLASSIC) || defined(TOGL_AGL)
+ aglSwapBuffers(togl->aglCtx);
+#endif /* TOGL_WGL */
+ } else {
+ glFlush();
+ }
+}
+
+
+
+const char *
+Togl_Ident(const Togl *togl)
+{
+ return togl->Ident;
+}
+
+
+int
+Togl_Width(const Togl *togl)
+{
+ return togl->Width;
+}
+
+
+int
+Togl_Height(const Togl *togl)
+{
+ return togl->Height;
+}
+
+
+Tcl_Interp *
+Togl_Interp(const Togl *togl)
+{
+ return togl->Interp;
+}
+
+
+Tk_Window
+Togl_TkWin(const Togl *togl)
+{
+ return togl->TkWin;
+}
+
+
+#if defined(TOGL_X11)
+/*
+ * A replacement for XAllocColor. This function should never
+ * fail to allocate a color. When XAllocColor fails, we return
+ * the nearest matching color. If we have to allocate many colors
+ * this function isn't too efficient; the XQueryColors() could be
+ * done just once.
+ * Written by Michael Pichler, Brian Paul, Mark Kilgard
+ * Input: dpy - X display
+ * cmap - X colormap
+ * cmapSize - size of colormap
+ * In/Out: color - the XColor struct
+ * Output: exact - 1=exact color match, 0=closest match
+ */
+static void
+noFaultXAllocColor(Display *dpy, Colormap cmap, int cmapSize,
+ XColor *color, int *exact)
+{
+ XColor *ctable, subColor;
+ int i, bestmatch;
+ double mindist; /* 3*2^16^2 exceeds long int precision. */
+
+ /* First try just using XAllocColor. */
+ if (XAllocColor(dpy, cmap, color)) {
+ *exact = 1;
+ return;
+ }
+
+ /* Retrieve color table entries. */
+ /* XXX alloca candidate. */
+ ctable = (XColor *) malloc(cmapSize * sizeof (XColor));
+ for (i = 0; i < cmapSize; i++) {
+ ctable[i].pixel = i;
+ }
+ (void) XQueryColors(dpy, cmap, ctable, cmapSize);
+
+ /* Find best match. */
+ bestmatch = -1;
+ mindist = 0;
+ for (i = 0; i < cmapSize; i++) {
+ double dr = (double) color->red - (double) ctable[i].red;
+ double dg = (double) color->green - (double) ctable[i].green;
+ double db = (double) color->blue - (double) ctable[i].blue;
+ double dist = dr * dr + dg * dg + db * db;
+
+ if (bestmatch < 0 || dist < mindist) {
+ bestmatch = i;
+ mindist = dist;
+ }
+ }
+
+ /* Return result. */
+ subColor.red = ctable[bestmatch].red;
+ subColor.green = ctable[bestmatch].green;
+ subColor.blue = ctable[bestmatch].blue;
+ free(ctable);
+ /* Try to allocate the closest match color. This should only fail if the
+ * cell is read/write. Otherwise, we're incrementing the cell's reference
+ * count. */
+ if (!XAllocColor(dpy, cmap, &subColor)) {
+ /* do this to work around a problem reported by Frank Ortega */
+ subColor.pixel = (unsigned long) bestmatch;
+ subColor.red = ctable[bestmatch].red;
+ subColor.green = ctable[bestmatch].green;
+ subColor.blue = ctable[bestmatch].blue;
+ subColor.flags = DoRed | DoGreen | DoBlue;
+ }
+ *color = subColor;
+}
+
+#elif defined(TOGL_WGL)
+
+static UINT
+Win32AllocColor(const Togl *togl, float red, float green, float blue)
+{
+ /* Modified version of XAllocColor emulation of Tk. - returns index,
+ * instead of color itself - allocates logical palette entry even for
+ * non-palette devices */
+
+ TkWinColormap *cmap = (TkWinColormap *) Tk_Colormap(togl->TkWin);
+ UINT index;
+ COLORREF newColor, closeColor;
+ PALETTEENTRY entry, closeEntry;
+ int new, refCount;
+ Tcl_HashEntry *entryPtr;
+
+ entry.peRed = (unsigned char) (red * 255 + .5);
+ entry.peGreen = (unsigned char) (green * 255 + .5);
+ entry.peBlue = (unsigned char) (blue * 255 + .5);
+ entry.peFlags = 0;
+
+ /*
+ * Find the nearest existing palette entry.
+ */
+
+ newColor = RGB(entry.peRed, entry.peGreen, entry.peBlue);
+ index = GetNearestPaletteIndex(cmap->palette, newColor);
+ GetPaletteEntries(cmap->palette, index, 1, &closeEntry);
+ closeColor = RGB(closeEntry.peRed, closeEntry.peGreen, closeEntry.peBlue);
+
+ /*
+ * If this is not a duplicate and colormap is not full, allocate a new entry.
+ */
+
+ if (newColor != closeColor) {
+ if (cmap->size == (unsigned int) togl->CiColormapSize) {
+ entry = closeEntry;
+ } else {
+ cmap->size++;
+ ResizePalette(cmap->palette, cmap->size);
+ index = cmap->size - 1;
+ SetPaletteEntries(cmap->palette, index, 1, &entry);
+ SelectPalette(togl->tglGLHdc, cmap->palette, TRUE);
+ RealizePalette(togl->tglGLHdc);
+ }
+ }
+ newColor = PALETTERGB(entry.peRed, entry.peGreen, entry.peBlue);
+ entryPtr = Tcl_CreateHashEntry(&cmap->refCounts, (char *) newColor, &new);
+ if (new) {
+ refCount = 1;
+ } else {
+ refCount = ((int) Tcl_GetHashValue(entryPtr)) + 1;
+ }
+ Tcl_SetHashValue(entryPtr, (ClientData) refCount);
+
+ /* for EPS output */
+ togl->EpsRedMap[index] = (GLfloat) (entry.peRed / 255.0);
+ togl->EpsGreenMap[index] = (GLfloat) (entry.peGreen / 255.0);
+ togl->EpsBlueMap[index] = (GLfloat) (entry.peBlue / 255.0);
+ return index;
+}
+
+static void
+Win32FreeColor(const Togl *togl, unsigned long index)
+{
+ TkWinColormap *cmap = (TkWinColormap *) Tk_Colormap(togl->TkWin);
+ COLORREF cref;
+ UINT count, refCount;
+ PALETTEENTRY entry, *entries;
+ Tcl_HashEntry *entryPtr;
+
+ if (index >= cmap->size) {
+ panic("Tried to free a color that isn't allocated.");
+ }
+ GetPaletteEntries(cmap->palette, index, 1, &entry);
+ cref = PALETTERGB(entry.peRed, entry.peGreen, entry.peBlue);
+ entryPtr = Tcl_FindHashEntry(&cmap->refCounts, (char *) cref);
+ if (!entryPtr) {
+ panic("Tried to free a color that isn't allocated.");
+ }
+ refCount = (int) Tcl_GetHashValue(entryPtr) - 1;
+ if (refCount == 0) {
+ count = cmap->size - index;
+ entries = (PALETTEENTRY *) ckalloc(sizeof (PALETTEENTRY) * count);
+ GetPaletteEntries(cmap->palette, index + 1, count, entries);
+ SetPaletteEntries(cmap->palette, index, count, entries);
+ SelectPalette(togl->tglGLHdc, cmap->palette, TRUE);
+ RealizePalette(togl->tglGLHdc);
+ ckfree((char *) entries);
+ cmap->size--;
+ Tcl_DeleteHashEntry(entryPtr);
+ } else {
+ Tcl_SetHashValue(entryPtr, (ClientData) refCount);
+ }
+}
+
+static void
+Win32SetColor(const Togl *togl,
+ unsigned long index, float red, float green, float blue)
+{
+ TkWinColormap *cmap = (TkWinColormap *) Tk_Colormap(togl->TkWin);
+ PALETTEENTRY entry;
+
+ entry.peRed = (unsigned char) (red * 255 + .5);
+ entry.peGreen = (unsigned char) (green * 255 + .5);
+ entry.peBlue = (unsigned char) (blue * 255 + .5);
+ entry.peFlags = 0;
+ SetPaletteEntries(cmap->palette, index, 1, &entry);
+ SelectPalette(togl->tglGLHdc, cmap->palette, TRUE);
+ RealizePalette(togl->tglGLHdc);
+
+ /* for EPS output */
+ togl->EpsRedMap[index] = (GLfloat) (entry.peRed / 255.0);
+ togl->EpsGreenMap[index] = (GLfloat) (entry.peGreen / 255.0);
+ togl->EpsBlueMap[index] = (GLfloat) (entry.peBlue / 255.0);
+}
+#endif /* TOGL_X11 */
+
+
+unsigned long
+Togl_AllocColor(const Togl *togl, float red, float green, float blue)
+{
+ if (togl->RgbaFlag) {
+ (void) fprintf(stderr,
+ "Error: Togl_AllocColor illegal in RGBA mode.\n");
+ return 0;
+ }
+ /* TODO: maybe not... */
+ if (togl->PrivateCmapFlag) {
+ (void) fprintf(stderr,
+ "Error: Togl_FreeColor illegal with private colormap\n");
+ return 0;
+ }
+#if defined(TOGL_X11)
+ {
+ XColor xcol;
+ int exact;
+
+ xcol.red = (short) (red * 65535.0);
+ xcol.green = (short) (green * 65535.0);
+ xcol.blue = (short) (blue * 65535.0);
+
+ noFaultXAllocColor(Tk_Display(togl->TkWin), Tk_Colormap(togl->TkWin),
+ Tk_Visual(togl->TkWin)->map_entries, &xcol, &exact);
+ /* for EPS output */
+ togl->EpsRedMap[xcol.pixel] = (float) xcol.red / 65535.0;
+ togl->EpsGreenMap[xcol.pixel] = (float) xcol.green / 65535.0;
+ togl->EpsBlueMap[xcol.pixel] = (float) xcol.blue / 65535.0;
+
+ return xcol.pixel;
+ }
+
+#elif defined(TOGL_WGL)
+ return Win32AllocColor(togl, red, green, blue);
+
+#elif defined(TOGL_AGL_CLASSIC) || defined(TOGL_AGL)
+ /* still need to implement this on Mac... */
+ return 0;
+
+#endif /* TOGL_X11 */
+}
+
+
+
+void
+Togl_FreeColor(const Togl *togl, unsigned long pixel)
+{
+ if (togl->RgbaFlag) {
+ (void) fprintf(stderr,
+ "Error: Togl_AllocColor illegal in RGBA mode.\n");
+ return;
+ }
+ /* TODO: maybe not... */
+ if (togl->PrivateCmapFlag) {
+ (void) fprintf(stderr,
+ "Error: Togl_FreeColor illegal with private colormap\n");
+ return;
+ }
+#if defined(TOGL_X11)
+ (void) XFreeColors(Tk_Display(togl->TkWin), Tk_Colormap(togl->TkWin),
+ &pixel, 1, 0);
+#elif defined(TOGL_WGL)
+ Win32FreeColor(togl, pixel);
+#endif /* TOGL_X11 */
+}
+
+
+
+void
+Togl_SetColor(const Togl *togl,
+ unsigned long index, float red, float green, float blue)
+{
+
+ if (togl->RgbaFlag) {
+ (void) fprintf(stderr,
+ "Error: Togl_AllocColor illegal in RGBA mode.\n");
+ return;
+ }
+ if (!togl->PrivateCmapFlag) {
+ (void) fprintf(stderr,
+ "Error: Togl_SetColor requires a private colormap\n");
+ return;
+ }
+#if defined(TOGL_X11)
+ {
+ XColor xcol;
+
+ xcol.pixel = index;
+ xcol.red = (short) (red * 65535.0);
+ xcol.green = (short) (green * 65535.0);
+ xcol.blue = (short) (blue * 65535.0);
+ xcol.flags = DoRed | DoGreen | DoBlue;
+
+ (void) XStoreColor(Tk_Display(togl->TkWin), Tk_Colormap(togl->TkWin),
+ &xcol);
+
+ /* for EPS output */
+ togl->EpsRedMap[xcol.pixel] = (float) xcol.red / 65535.0;
+ togl->EpsGreenMap[xcol.pixel] = (float) xcol.green / 65535.0;
+ togl->EpsBlueMap[xcol.pixel] = (float) xcol.blue / 65535.0;
+ }
+#elif defined(TOGL_WGL)
+ Win32SetColor(togl, index, red, green, blue);
+#endif /* TOGL_X11 */
+}
+
+
+#if TOGL_USE_FONTS == 1
+
+# if defined(TOGL_WGL)
+# include "tkWinInt.h"
+# include "tkFont.h"
+
+/*
+ * The following structure represents Windows' implementation of a font.
+ */
+
+typedef struct WinFont
+{
+ TkFont font; /* Stuff used by generic font package. Must be
+ * first in structure. */
+ HFONT hFont; /* Windows information about font. */
+ HWND hwnd; /* Toplevel window of application that owns
+ * this font, used for getting HDC. */
+ int widths[256]; /* Widths of first 256 chars in this font. */
+} WinFont;
+# endif /* TOGL_WGL */
+
+
+# define MAX_FONTS 1000
+static GLuint ListBase[MAX_FONTS];
+static GLuint ListCount[MAX_FONTS];
+
+
+
+/*
+ * Load the named bitmap font as a sequence of bitmaps in a display list.
+ * fontname may be one of the predefined fonts like TOGL_BITMAP_8_BY_13
+ * or an X font name, or a Windows font name, etc.
+ */
+GLuint
+Togl_LoadBitmapFont(const Togl *togl, const char *fontname)
+{
+ static Bool FirstTime = True;
+
+# if defined(TOGL_X11)
+ XFontStruct *fontinfo;
+# elif defined(TOGL_WGL)
+ WinFont *winfont;
+ HFONT oldFont;
+ TEXTMETRIC tm;
+# endif
+ /* TOGL_X11 */
+ int first, last, count;
+ GLuint fontbase;
+ const char *name;
+
+ /* Initialize the ListBase and ListCount arrays */
+ if (FirstTime) {
+ int i;
+
+ for (i = 0; i < MAX_FONTS; i++) {
+ ListBase[i] = ListCount[i] = 0;
+ }
+ FirstTime = False;
+ }
+
+ /*
+ * This method of selecting X fonts according to a TOGL_ font name
+ * is a kludge. To be fixed when I find time...
+ */
+ if (fontname == TOGL_BITMAP_8_BY_13) {
+ name = "8x13";
+ } else if (fontname == TOGL_BITMAP_9_BY_15) {
+ name = "9x15";
+ } else if (fontname == TOGL_BITMAP_TIMES_ROMAN_10) {
+ name = "-adobe-times-medium-r-normal--10-100-75-75-p-54-iso8859-1";
+ } else if (fontname == TOGL_BITMAP_TIMES_ROMAN_24) {
+ name = "-adobe-times-medium-r-normal--24-240-75-75-p-124-iso8859-1";
+ } else if (fontname == TOGL_BITMAP_HELVETICA_10) {
+ name = "-adobe-helvetica-medium-r-normal--10-100-75-75-p-57-iso8859-1";
+ } else if (fontname == TOGL_BITMAP_HELVETICA_12) {
+ name = "-adobe-helvetica-medium-r-normal--12-120-75-75-p-67-iso8859-1";
+ } else if (fontname == TOGL_BITMAP_HELVETICA_18) {
+ name = "-adobe-helvetica-medium-r-normal--18-180-75-75-p-98-iso8859-1";
+ } else if (!fontname) {
+ name = DEFAULT_FONTNAME;
+ } else {
+ name = (const char *) fontname;
+ }
+
+ assert(name);
+
+# if defined(TOGL_X11)
+ fontinfo = (XFontStruct *) XLoadQueryFont(Tk_Display(togl->TkWin), name);
+ if (!fontinfo) {
+ return 0;
+ }
+ first = fontinfo->min_char_or_byte2;
+ last = fontinfo->max_char_or_byte2;
+# elif defined(TOGL_WGL)
+ winfont = (WinFont *) Tk_GetFont(togl->Interp, togl->TkWin, name);
+ if (!winfont) {
+ return 0;
+ }
+ oldFont = SelectObject(togl->tglGLHdc, winfont->hFont);
+ GetTextMetrics(togl->tglGLHdc, &tm);
+ first = tm.tmFirstChar;
+ last = tm.tmLastChar;
+# elif defined(TOGL_AGL_CLASSIC) || defined(TOGL_AGL)
+ first = 10; /* don't know how to determine font range on
+ * Mac... */
+ last = 127;
+# endif
+ /* TOGL_X11 */
+
+ count = last - first + 1;
+ fontbase = glGenLists((GLuint) (last + 1));
+ if (fontbase == 0) {
+# ifdef TOGL_WGL
+ SelectObject(togl->tglGLHdc, oldFont);
+ Tk_FreeFont((Tk_Font) winfont);
+# endif
+ /* TOGL_WGL */
+ return 0;
+ }
+# if defined(TOGL_WGL)
+ wglUseFontBitmaps(togl->tglGLHdc, first, count, (int) fontbase + first);
+ SelectObject(togl->tglGLHdc, oldFont);
+ Tk_FreeFont((Tk_Font) winfont);
+# elif defined(TOGL_X11)
+ glXUseXFont(fontinfo->fid, first, count, (int) fontbase + first);
+# elif defined(TOGL_AGL_CLASSIC) || defined(TOGL_AGL)
+ aglUseFont(togl->aglCtx, 1, 0, 14, /* for now, only app font, regular
+ * 14-point */
+ 10, 118, fontbase + first);
+# endif
+
+ /* Record the list base and number of display lists for
+ * Togl_UnloadBitmapFont(). */
+ {
+ int i;
+
+ for (i = 0; i < MAX_FONTS; i++) {
+ if (ListBase[i] == 0) {
+ ListBase[i] = fontbase;
+ ListCount[i] = last + 1;
+ break;
+ }
+ }
+ }
+
+ return fontbase;
+}
+
+
+
+/*
+ * Release the display lists which were generated by Togl_LoadBitmapFont().
+ */
+void
+Togl_UnloadBitmapFont(const Togl *togl, GLuint fontbase)
+{
+ int i;
+
+ (void) togl;
+ for (i = 0; i < MAX_FONTS; i++) {
+ if (ListBase[i] == fontbase) {
+ glDeleteLists(ListBase[i], ListCount[i]);
+ ListBase[i] = ListCount[i] = 0;
+ return;
+ }
+ }
+}
+
+#endif /* TOGL_USE_FONTS */
+
+
+/*
+ * Overlay functions
+ */
+
+
+void
+Togl_UseLayer(Togl *togl, int layer)
+{
+ if (!togl->OverlayWindow)
+ return;
+ if (layer == TOGL_OVERLAY) {
+#if defined(TOGL_WGL)
+ int res = wglMakeCurrent(togl->tglGLHdc, togl->tglGLOverlayHglrc);
+
+ assert(res == TRUE);
+#elif defined(TOGL_X11)
+ (void) glXMakeCurrent(Tk_Display(togl->TkWin),
+ togl->OverlayWindow, togl->OverlayCtx);
+# if defined(__sgi)
+ if (togl->OldStereoFlag)
+ oldStereoMakeCurrent(Tk_Display(togl->TkWin),
+ togl->OverlayWindow, togl->OverlayCtx);
+# endif
+ /* __sgi STEREO */
+#endif /* TOGL_WGL */
+ } else if (layer == TOGL_NORMAL) {
+#if defined(TOGL_WGL)
+ int res = wglMakeCurrent(togl->tglGLHdc, togl->tglGLHglrc);
+
+ assert(res == TRUE);
+#elif defined(TOGL_X11)
+ (void) glXMakeCurrent(Tk_Display(togl->TkWin),
+ Tk_WindowId(togl->TkWin), togl->GlCtx);
+# if defined(__sgi)
+ if (togl->OldStereoFlag)
+ oldStereoMakeCurrent(Tk_Display(togl->TkWin),
+ Tk_WindowId(togl->TkWin), togl->GlCtx);
+# endif
+ /* __sgi STEREO */
+#endif /* TOGL_WGL */
+ } else {
+ /* error */
+ }
+}
+
+
+void
+Togl_ShowOverlay(Togl *togl)
+{
+#if defined(TOGL_X11) /* not yet implemented on Windows */
+ if (togl->OverlayWindow) {
+ (void) XMapWindow(Tk_Display(togl->TkWin), togl->OverlayWindow);
+ (void) XInstallColormap(Tk_Display(togl->TkWin), togl->OverlayCmap);
+ togl->OverlayIsMapped = True;
+ }
+#endif /* TOGL_X11 */
+}
+
+
+void
+Togl_HideOverlay(Togl *togl)
+{
+ if (togl->OverlayWindow && togl->OverlayIsMapped) {
+ (void) XUnmapWindow(Tk_Display(togl->TkWin), togl->OverlayWindow);
+ togl->OverlayIsMapped = False;
+ }
+}
+
+
+void
+Togl_PostOverlayRedisplay(Togl *togl)
+{
+ if (!togl->OverlayUpdatePending
+ && togl->OverlayWindow && togl->OverlayDisplayProc) {
+ Tk_DoWhenIdle(RenderOverlay, (ClientData) togl);
+ togl->OverlayUpdatePending = True;
+ }
+}
+
+
+void
+Togl_OverlayDisplayFunc(Togl_Callback *proc)
+{
+ DefaultOverlayDisplayProc = proc;
+}
+
+
+int
+Togl_ExistsOverlay(const Togl *togl)
+{
+ return togl->OverlayFlag;
+}
+
+
+int
+Togl_GetOverlayTransparentValue(const Togl *togl)
+{
+ return togl->OverlayTransparentPixel;
+}
+
+
+int
+Togl_IsMappedOverlay(const Togl *togl)
+{
+ return togl->OverlayFlag && togl->OverlayIsMapped;
+}
+
+
+unsigned long
+Togl_AllocColorOverlay(const Togl *togl, float red, float green, float blue)
+{
+#if defined(TOGL_X11) /* not yet implemented on Windows */
+ if (togl->OverlayFlag && togl->OverlayCmap) {
+ XColor xcol;
+
+ xcol.red = (short) (red * 65535.0);
+ xcol.green = (short) (green * 65535.0);
+ xcol.blue = (short) (blue * 65535.0);
+ if (!XAllocColor(Tk_Display(togl->TkWin), togl->OverlayCmap, &xcol))
+ return (unsigned long) -1;
+ return xcol.pixel;
+ }
+#endif /* TOGL_X11 */
+ return (unsigned long) -1;
+}
+
+
+void
+Togl_FreeColorOverlay(const Togl *togl, unsigned long pixel)
+{
+#if defined(TOGL_X11) /* not yet implemented on Windows */
+ if (togl->OverlayFlag && togl->OverlayCmap) {
+ (void) XFreeColors(Tk_Display(togl->TkWin), togl->OverlayCmap, &pixel,
+ 1, 0);
+ }
+#endif /* TOGL_X11 */
+}
+
+
+/*
+ * User client data
+ */
+
+void
+Togl_ClientData(ClientData clientData)
+{
+ DefaultClientData = clientData;
+}
+
+
+ClientData
+Togl_GetClientData(const Togl *togl)
+{
+ return togl->Client_Data;
+}
+
+
+void
+Togl_SetClientData(Togl *togl, ClientData clientData)
+{
+ togl->Client_Data = clientData;
+}
+
+
+/*
+ * X11-only functions
+ * Contributed by Miguel A. De Riera Pasenau (miguel@DALILA.UPC.ES)
+ */
+
+Display *
+Togl_Display(const Togl *togl)
+{
+ return Tk_Display(togl->TkWin);
+}
+
+Screen *
+Togl_Screen(const Togl *togl)
+{
+ return Tk_Screen(togl->TkWin);
+}
+
+int
+Togl_ScreenNumber(const Togl *togl)
+{
+ return Tk_ScreenNumber(togl->TkWin);
+}
+
+Colormap
+Togl_Colormap(const Togl *togl)
+{
+ return Tk_Colormap(togl->TkWin);
+}
+
+
+
+#ifdef MESA_COLOR_HACK
+/*
+ * Let's know how many free colors do we have
+ */
+# if 0
+static unsigned char rojo[] = { 4, 39, 74, 110, 145, 181, 216, 251 }, verde[] = {
+4, 39, 74, 110, 145, 181, 216, 251}, azul[] = {
+4, 39, 74, 110, 145, 181, 216, 251};
+
+unsigned char rojo[] = { 4, 36, 72, 109, 145, 182, 218, 251 }, verde[] = {
+4, 36, 72, 109, 145, 182, 218, 251}, azul[] = {
+4, 36, 72, 109, 145, 182, 218, 251};
+
+azul[] = {
+0, 85, 170, 255};
+# endif
+
+# define RLEVELS 5
+# define GLEVELS 9
+# define BLEVELS 5
+
+/* to free dithered_rgb_colormap pixels allocated by Mesa */
+static unsigned long *ToglMesaUsedPixelCells = NULL;
+static int ToglMesaUsedFreeCells = 0;
+
+static int
+get_free_color_cells(Display *display, int screen, Colormap colormap)
+{
+ if (!ToglMesaUsedPixelCells) {
+ XColor xcol;
+ int i;
+ int colorsfailed, ncolors = XDisplayCells(display, screen);
+
+ long r, g, b;
+
+ ToglMesaUsedPixelCells =
+ (unsigned long *) calloc(ncolors, sizeof (unsigned long));
+
+ /* Allocate X colors and initialize color_table[], red_table[], etc */
+ /* de Mesa 2.1: xmesa1.c setup_dithered_(...) */
+ i = colorsfailed = 0;
+ for (r = 0; r < RLEVELS; r++)
+ for (g = 0; g < GLEVELS; g++)
+ for (b = 0; b < BLEVELS; b++) {
+ int exact;
+
+ xcol.red = (r * 65535) / (RLEVELS - 1);
+ xcol.green = (g * 65535) / (GLEVELS - 1);
+ xcol.blue = (b * 65535) / (BLEVELS - 1);
+ noFaultXAllocColor(display, colormap, ncolors,
+ &xcol, &exact);
+ ToglMesaUsedPixelCells[i++] = xcol.pixel;
+ if (!exact) {
+ colorsfailed++;
+ }
+ }
+ ToglMesaUsedFreeCells = i;
+
+ XFreeColors(display, colormap, ToglMesaUsedPixelCells,
+ ToglMesaUsedFreeCells, 0x00000000);
+ }
+ return ToglMesaUsedFreeCells;
+}
+
+
+static void
+free_default_color_cells(Display *display, Colormap colormap)
+{
+ if (ToglMesaUsedPixelCells) {
+ XFreeColors(display, colormap, ToglMesaUsedPixelCells,
+ ToglMesaUsedFreeCells, 0x00000000);
+ free(ToglMesaUsedPixelCells);
+ ToglMesaUsedPixelCells = NULL;
+ ToglMesaUsedFreeCells = 0;
+ }
+}
+#endif
+
+
+/*
+ * Generate EPS file.
+ * Contributed by Miguel A. De Riera Pasenau (miguel@DALILA.UPC.ES)
+ */
+
+/* Function that creates a EPS File from a created pixmap on the current
+ * context. Based on the code from Copyright (c) Mark J. Kilgard, 1996.
+ * Parameters: name_file, b&w / Color flag, redraw function. The redraw
+ * function is needed in order to draw things into the new created pixmap. */
+
+/* Copyright (c) Mark J. Kilgard, 1996. */
+
+static GLvoid *
+grabPixels(int inColor, unsigned int width, unsigned int height)
+{
+ GLvoid *buffer;
+ GLint swapbytes, lsbfirst, rowlength;
+ GLint skiprows, skippixels, alignment;
+ GLenum format;
+ unsigned int size;
+
+ if (inColor) {
+ format = GL_RGB;
+ size = width * height * 3;
+ } else {
+ format = GL_LUMINANCE;
+ size = width * height * 1;
+ }
+
+ buffer = (GLvoid *) malloc(size);
+ if (buffer == NULL)
+ return NULL;
+
+ /* Save current modes. */
+ glGetIntegerv(GL_PACK_SWAP_BYTES, &swapbytes);
+ glGetIntegerv(GL_PACK_LSB_FIRST, &lsbfirst);
+ glGetIntegerv(GL_PACK_ROW_LENGTH, &rowlength);
+ glGetIntegerv(GL_PACK_SKIP_ROWS, &skiprows);
+ glGetIntegerv(GL_PACK_SKIP_PIXELS, &skippixels);
+ glGetIntegerv(GL_PACK_ALIGNMENT, &alignment);
+ /* Little endian machines (DEC Alpha for example) could benefit from
+ * setting GL_PACK_LSB_FIRST to GL_TRUE instead of GL_FALSE, but this would
+ * * * * * * * * * require changing the generated bitmaps too. */
+ glPixelStorei(GL_PACK_SWAP_BYTES, GL_FALSE);
+ glPixelStorei(GL_PACK_LSB_FIRST, GL_FALSE);
+ glPixelStorei(GL_PACK_ROW_LENGTH, 0);
+ glPixelStorei(GL_PACK_SKIP_ROWS, 0);
+ glPixelStorei(GL_PACK_SKIP_PIXELS, 0);
+ glPixelStorei(GL_PACK_ALIGNMENT, 1);
+
+ /* Actually read the pixels. */
+ glReadPixels(0, 0, width, height, format,
+ GL_UNSIGNED_BYTE, (GLvoid *) buffer);
+
+ /* Restore saved modes. */
+ glPixelStorei(GL_PACK_SWAP_BYTES, swapbytes);
+ glPixelStorei(GL_PACK_LSB_FIRST, lsbfirst);
+ glPixelStorei(GL_PACK_ROW_LENGTH, rowlength);
+ glPixelStorei(GL_PACK_SKIP_ROWS, skiprows);
+ glPixelStorei(GL_PACK_SKIP_PIXELS, skippixels);
+ glPixelStorei(GL_PACK_ALIGNMENT, alignment);
+ return buffer;
+}
+
+
+static int
+generateEPS(const char *filename, int inColor,
+ unsigned int width, unsigned int height)
+{
+ FILE *fp;
+ GLvoid *pixels;
+ unsigned char *curpix;
+ unsigned int components, i;
+ int pos;
+ unsigned int bitpixel;
+
+ pixels = grabPixels(inColor, width, height);
+ if (pixels == NULL)
+ return 1;
+ if (inColor)
+ components = 3; /* Red, green, blue. */
+ else
+ components = 1; /* Luminance. */
+
+ fp = fopen(filename, "w");
+ if (fp == NULL) {
+ return 2;
+ }
+ (void) fprintf(fp, "%%!PS-Adobe-2.0 EPSF-1.2\n");
+ (void) fprintf(fp, "%%%%Creator: OpenGL pixmap render output\n");
+ (void) fprintf(fp, "%%%%BoundingBox: 0 0 %d %d\n", width, height);
+ (void) fprintf(fp, "%%%%EndComments\n");
+
+ i = (((width * height) + 7) / 8) / 40; /* # of lines, 40 bytes per
+ * line */
+ (void) fprintf(fp, "%%%%BeginPreview: %d %d %d %d\n%%", width, height, 1,
+ i);
+ pos = 0;
+ curpix = (unsigned char *) pixels;
+ for (i = 0; i < width * height * components;) {
+ bitpixel = 0;
+ if (inColor) {
+ double pix = 0;
+
+ pix = 0.30 * (double) curpix[i] + 0.59 * (double) curpix[i + 1] +
+ 0.11 * (double) curpix[i + 2];
+ i += 3;
+ if (pix > 127.0)
+ bitpixel |= 0x80;
+ pix = 0.30 * (double) curpix[i] + 0.59 * (double) curpix[i + 1] +
+ 0.11 * (double) curpix[i + 2];
+ i += 3;
+ if (pix > 127.0)
+ bitpixel |= 0x40;
+ pix = 0.30 * (double) curpix[i] + 0.59 * (double) curpix[i + 1] +
+ 0.11 * (double) curpix[i + 2];
+ i += 3;
+ if (pix > 127.0)
+ bitpixel |= 0x20;
+ pix = 0.30 * (double) curpix[i] + 0.59 * (double) curpix[i + 1] +
+ 0.11 * (double) curpix[i + 2];
+ i += 3;
+ if (pix > 127.0)
+ bitpixel |= 0x10;
+ pix = 0.30 * (double) curpix[i] + 0.59 * (double) curpix[i + 1] +
+ 0.11 * (double) curpix[i + 2];
+ i += 3;
+ if (pix > 127.0)
+ bitpixel |= 0x08;
+ pix = 0.30 * (double) curpix[i] + 0.59 * (double) curpix[i + 1] +
+ 0.11 * (double) curpix[i + 2];
+ i += 3;
+ if (pix > 127.0)
+ bitpixel |= 0x04;
+ pix = 0.30 * (double) curpix[i] + 0.59 * (double) curpix[i + 1] +
+ 0.11 * (double) curpix[i + 2];
+ i += 3;
+ if (pix > 127.0)
+ bitpixel |= 0x02;
+ pix = 0.30 * (double) curpix[i] + 0.59 * (double) curpix[i + 1] +
+ 0.11 * (double) curpix[i + 2];
+ i += 3;
+ if (pix > 127.0)
+ bitpixel |= 0x01;
+ } else {
+ if (curpix[i++] > 0x7f)
+ bitpixel |= 0x80;
+ if (curpix[i++] > 0x7f)
+ bitpixel |= 0x40;
+ if (curpix[i++] > 0x7f)
+ bitpixel |= 0x20;
+ if (curpix[i++] > 0x7f)
+ bitpixel |= 0x10;
+ if (curpix[i++] > 0x7f)
+ bitpixel |= 0x08;
+ if (curpix[i++] > 0x7f)
+ bitpixel |= 0x04;
+ if (curpix[i++] > 0x7f)
+ bitpixel |= 0x02;
+ if (curpix[i++] > 0x7f)
+ bitpixel |= 0x01;
+ }
+ (void) fprintf(fp, "%02x", bitpixel);
+ if (++pos >= 40) {
+ (void) fprintf(fp, "\n%%");
+ pos = 0;
+ }
+ }
+ if (pos)
+ (void) fprintf(fp, "\n%%%%EndPreview\n");
+ else
+ (void) fprintf(fp, "%%EndPreview\n");
+
+ (void) fprintf(fp, "gsave\n");
+ (void) fprintf(fp, "/bwproc {\n");
+ (void) fprintf(fp, " rgbproc\n");
+ (void) fprintf(fp, " dup length 3 idiv string 0 3 0\n");
+ (void) fprintf(fp, " 5 -1 roll {\n");
+ (void) fprintf(fp, " add 2 1 roll 1 sub dup 0 eq\n");
+ (void) fprintf(fp, " { pop 3 idiv 3 -1 roll dup 4 -1 roll dup\n");
+ (void) fprintf(fp, " 3 1 roll 5 -1 roll put 1 add 3 0 }\n");
+ (void) fprintf(fp, " { 2 1 roll } ifelse\n");
+ (void) fprintf(fp, " } forall\n");
+ (void) fprintf(fp, " pop pop pop\n");
+ (void) fprintf(fp, "} def\n");
+ (void) fprintf(fp, "systemdict /colorimage known not {\n");
+ (void) fprintf(fp, " /colorimage {\n");
+ (void) fprintf(fp, " pop\n");
+ (void) fprintf(fp, " pop\n");
+ (void) fprintf(fp, " /rgbproc exch def\n");
+ (void) fprintf(fp, " { bwproc } image\n");
+ (void) fprintf(fp, " } def\n");
+ (void) fprintf(fp, "} if\n");
+ (void) fprintf(fp, "/picstr %d string def\n", width * components);
+ (void) fprintf(fp, "%d %d scale\n", width, height);
+ (void) fprintf(fp, "%d %d %d\n", width, height, 8);
+ (void) fprintf(fp, "[%d 0 0 %d 0 0]\n", width, height);
+ (void) fprintf(fp, "{currentfile picstr readhexstring pop}\n");
+ (void) fprintf(fp, "false %d\n", components);
+ (void) fprintf(fp, "colorimage\n");
+
+ curpix = (unsigned char *) pixels;
+ pos = 0;
+ for (i = width * height * components; i != 0; i--) {
+ (void) fprintf(fp, "%02hx", *curpix++);
+ if (++pos >= 40) {
+ (void) fprintf(fp, "\n");
+ pos = 0;
+ }
+ }
+ if (pos)
+ (void) fprintf(fp, "\n");
+
+ (void) fprintf(fp, "grestore\n");
+ free(pixels);
+ if (fclose(fp) != 0)
+ return 1;
+ return 0;
+}
+
+
+/* int Togl_DumpToEpsFile( const Togl *togl, const char *filename, int inColor,
+ * void (*user_redraw)(void)) */
+/* changed by GG */
+int
+Togl_DumpToEpsFile(const Togl *togl, const char *filename,
+ int inColor, void (*user_redraw) (const Togl *))
+{
+ Bool using_mesa = False;
+
+#if 0
+ Pixmap eps_pixmap;
+ GLXPixmap eps_glxpixmap;
+ XVisualInfo *vi = togl->VisInfo;
+ Window win = Tk_WindowId(togl->TkWin);
+#endif
+ int retval;
+ unsigned int width = togl->Width, height = togl->Height;
+
+#if defined(TOGL_X11)
+ Display *dpy = Tk_Display(togl->TkWin);
+ int scrnum = Tk_ScreenNumber(togl->TkWin);
+
+ if (strstr(glXQueryServerString(dpy, scrnum, GLX_VERSION), "Mesa"))
+ using_mesa = True;
+ else
+#endif /* TOGL_X11 */
+ using_mesa = False;
+ /* I don't use Pixmap do drawn into, because the code should link with Mesa
+ * libraries and OpenGL libraries, and the which library we use at run time
+ * should not matter, but the name of the calls differs one from another:
+ * MesaGl: glXCreateGLXPixmapMESA( dpy, vi, eps_pixmap,
+ * Tk_Colormap(togl->TkWin)) OpenGl: glXCreateGLXPixmap( dpy, vi,
+ * eps_pixmap); instead of this I read direct from back buffer of the
+ * screeen. */
+#if 0
+ eps_pixmap = XCreatePixmap(dpy, win, width, height, vi->depth);
+ if (using_mesa)
+ eps_glxpixmap =
+ glXCreateGLXPixmapMESA(dpy, vi, eps_pixmap,
+ Tk_Colormap(togl->TkWin));
+ else
+ eps_glxpixmap = glXCreateGLXPixmap(dpy, vi, eps_pixmap);
+
+ glXMakeCurrent(dpy, eps_glxpixmap, togl->GlCtx);
+ user_redraw();
+#endif
+ if (!togl->RgbaFlag) {
+
+#if defined(TOGL_WGL)
+ /* Due to the lack of a unique inverse mapping from the frame buffer to
+ * the logical palette we need a translation map from the complete
+ * logical palette. */
+ {
+ int n, i;
+ TkWinColormap *cmap = (TkWinColormap *) Tk_Colormap(togl->TkWin);
+ LPPALETTEENTRY entry =
+ malloc(togl->EpsMapSize * sizeof (PALETTEENTRY));
+ n = GetPaletteEntries(cmap->palette, 0, togl->EpsMapSize, entry);
+ for (i = 0; i < n; i++) {
+ togl->EpsRedMap[i] = (GLfloat) (entry[i].peRed / 255.0);
+ togl->EpsGreenMap[i] = (GLfloat) (entry[i].peGreen / 255.0);
+ togl->EpsBlueMap[i] = (GLfloat) (entry[i].peBlue / 255.0);
+ }
+ free(entry);
+ }
+#endif /* TOGL_WGL */
+
+ glPixelMapfv(GL_PIXEL_MAP_I_TO_R, togl->EpsMapSize, togl->EpsRedMap);
+ glPixelMapfv(GL_PIXEL_MAP_I_TO_G, togl->EpsMapSize, togl->EpsGreenMap);
+ glPixelMapfv(GL_PIXEL_MAP_I_TO_B, togl->EpsMapSize, togl->EpsBlueMap);
+ }
+ /* user_redraw(); */
+ user_redraw(togl); /* changed by GG */
+ /* glReadBuffer( GL_FRONT); */
+ /* by default it read GL_BACK in double buffer mode */
+ glFlush();
+ retval = generateEPS(filename, inColor, width, height);
+#if 0
+ glXMakeCurrent(dpy, win, togl->GlCtx);
+ glXDestroyGLXPixmap(dpy, eps_glxpixmap);
+ XFreePixmap(dpy, eps_pixmap);
+#endif
+ return retval;
+}
+
+/*
+ * Full screen stereo for SGI graphics
+ * Contributed by Ben Evans (Ben.Evans@anusf.anu.edu.au)
+ * This code was based on SGI's /usr/share/src/OpenGL/teach/stereo
+ */
+
+#if defined(__sgi)
+
+static struct stereoStateRec
+{
+ Bool useSGIStereo;
+ Display *currentDisplay;
+ Window currentWindow;
+ GLXContext currentContext;
+ GLenum currentDrawBuffer;
+ int currentStereoBuffer;
+ Bool enabled;
+ char *stereoCommand;
+ char *restoreCommand;
+} stereo;
+
+/* call instead of glDrawBuffer */
+void
+Togl_OldStereoDrawBuffer(GLenum mode)
+{
+ if (stereo.useSGIStereo) {
+ stereo.currentDrawBuffer = mode;
+ switch (mode) {
+ case GL_FRONT:
+ case GL_BACK:
+ case GL_FRONT_AND_BACK:
+ /*
+ ** Simultaneous drawing to both left and right buffers isn't
+ ** really possible if we don't have a stereo capable visual.
+ ** For now just fall through and use the left buffer.
+ */
+ case GL_LEFT:
+ case GL_FRONT_LEFT:
+ case GL_BACK_LEFT:
+ stereo.currentStereoBuffer = STEREO_BUFFER_LEFT;
+ break;
+ case GL_RIGHT:
+ case GL_FRONT_RIGHT:
+ stereo.currentStereoBuffer = STEREO_BUFFER_RIGHT;
+ mode = GL_FRONT;
+ break;
+ case GL_BACK_RIGHT:
+ stereo.currentStereoBuffer = STEREO_BUFFER_RIGHT;
+ mode = GL_BACK;
+ break;
+ default:
+ break;
+ }
+ if (stereo.currentDisplay && stereo.currentWindow) {
+ glXWaitGL(); /* sync with GL command stream before calling X
+ */
+ XSGISetStereoBuffer(stereo.currentDisplay,
+ stereo.currentWindow, stereo.currentStereoBuffer);
+ glXWaitX(); /* sync with X command stream before calling GL
+ */
+ }
+ }
+ glDrawBuffer(mode);
+}
+
+/* call instead of glClear */
+void
+Togl_OldStereoClear(GLbitfield mask)
+{
+ GLenum drawBuffer;
+
+ if (stereo.useSGIStereo) {
+ drawBuffer = stereo.currentDrawBuffer;
+ switch (drawBuffer) {
+ case GL_FRONT:
+ Togl_OldStereoDrawBuffer(GL_FRONT_RIGHT);
+ glClear(mask);
+ Togl_OldStereoDrawBuffer(drawBuffer);
+ break;
+ case GL_BACK:
+ Togl_OldStereoDrawBuffer(GL_BACK_RIGHT);
+ glClear(mask);
+ Togl_OldStereoDrawBuffer(drawBuffer);
+ break;
+ case GL_FRONT_AND_BACK:
+ Togl_OldStereoDrawBuffer(GL_RIGHT);
+ glClear(mask);
+ Togl_OldStereoDrawBuffer(drawBuffer);
+ break;
+ case GL_LEFT:
+ case GL_FRONT_LEFT:
+ case GL_BACK_LEFT:
+ case GL_RIGHT:
+ case GL_FRONT_RIGHT:
+ case GL_BACK_RIGHT:
+ default:
+ break;
+ }
+ }
+ glClear(mask);
+}
+
+static void
+oldStereoMakeCurrent(Display *dpy, Window win, GLXContext ctx)
+{
+
+ if (dpy && (dpy != stereo.currentDisplay)) {
+ int event, error;
+
+ /* Make sure new Display supports SGIStereo */
+ if (XSGIStereoQueryExtension(dpy, &event, &error) == False) {
+ dpy = NULL;
+ }
+ }
+ if (dpy && win && (win != stereo.currentWindow)) {
+ /* Make sure new Window supports SGIStereo */
+ if (XSGIQueryStereoMode(dpy, win) == X_STEREO_UNSUPPORTED) {
+ win = None;
+ }
+ }
+ if (ctx && (ctx != stereo.currentContext)) {
+ GLint drawBuffer;
+
+ glGetIntegerv(GL_DRAW_BUFFER, &drawBuffer);
+ Togl_OldStereoDrawBuffer((GLenum) drawBuffer);
+ }
+ stereo.currentDisplay = dpy;
+ stereo.currentWindow = win;
+ stereo.currentContext = ctx;
+}
+
+
+/* call before using stereo */
+static void
+oldStereoInit(Togl *togl, int stereoEnabled)
+{
+ stereo.useSGIStereo = stereoEnabled;
+ stereo.currentDisplay = NULL;
+ stereo.currentWindow = None;
+ stereo.currentContext = NULL;
+ stereo.currentDrawBuffer = GL_NONE;
+ stereo.currentStereoBuffer = STEREO_BUFFER_NONE;
+ stereo.enabled = False;
+}
+
+#endif /* __sgi STEREO */
+
+
+void
+Togl_StereoFrustum(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top,
+ GLfloat zNear, GLfloat zFar, GLfloat eyeDist, GLfloat eyeOffset)
+{
+ GLfloat eyeShift = (eyeDist - zNear) * (eyeOffset / eyeDist);
+
+ glFrustum(left + eyeShift, right + eyeShift, bottom, top, zNear, zFar);
+ glTranslatef(-eyeShift, 0, 0);
+}
+
+
+#ifdef TOGL_AGL_CLASSIC
+/* needed to make shared library on Mac with CodeWarrior; should be overridden
+ * by user app */
+/*
+ * int main(int argc, char *argv[]) { return -1; } */
+
+/* the following code is borrowed from tkMacAppInit.c */
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * MacintoshInit --
+ *
+ * This procedure calls Mac specific initilization calls. Most of
+ * these calls must be made as soon as possible in the startup
+ * process.
+ *
+ * Results:
+ * Returns TCL_OK if everything went fine. If it didn't the
+ * application should probably fail.
+ *
+ * Side effects:
+ * Inits the application.
+ *
+ *----------------------------------------------------------------------
+ */
+
+int
+Togl_MacInit(void)
+{
+ int i;
+ long result, mask = 0x0700; /* mask = system 7.x */
+
+# if GENERATING68K && !GENERATINGCFM
+ SetApplLimit(GetApplLimit() - (TK_MAC_68K_STACK_GROWTH));
+# endif
+ MaxApplZone();
+ for (i = 0; i < 4; i++) {
+ (void) MoreMasters();
+ }
+
+ /*
+ * Tk needs us to set the qd pointer it uses. This is needed
+ * so Tk doesn't have to assume the availablity of the qd global
+ * variable. Which in turn allows Tk to be used in code resources.
+ */
+ tcl_macQdPtr = &qd;
+
+ /*
+ * If appearance is present, then register Tk as an Appearance client
+ * This means that the mapping from non-Appearance to Appearance cdefs
+ * will be done for Tk regardless of the setting in the Appearance
+ * control panel.
+ */
+ if (TkMacHaveAppearance()) {
+ RegisterAppearanceClient();
+ }
+
+ InitGraf(&tcl_macQdPtr->thePort);
+ InitFonts();
+ InitWindows();
+ InitMenus();
+ InitDialogs((long) NULL);
+ InitCursor();
+
+ /*
+ * Make sure we are running on system 7 or higher
+ */
+ if ((NGetTrapAddress(_Gestalt, ToolTrap) ==
+ NGetTrapAddress(_Unimplemented, ToolTrap))
+ || (((Gestalt(gestaltSystemVersion, &result) != noErr)
+ || (result < mask)))) {
+ panic("Tcl/Tk requires System 7 or higher.");
+ }
+
+ /*
+ * Make sure we have color quick draw
+ * (this means we can't run on 68000 macs)
+ */
+ if (((Gestalt(gestaltQuickdrawVersion, &result) != noErr)
+ || (result < gestalt32BitQD13))) {
+ panic("Tk requires Color QuickDraw.");
+ }
+
+ FlushEvents(everyEvent, 0);
+ SetEventMask(everyEvent);
+
+ Tcl_MacSetEventProc(TkMacConvertEvent);
+ return TCL_OK;
+}
+
+int
+Togl_MacSetupMainInterp(Tcl_Interp *interp)
+{
+ TkMacInitAppleEvents(interp);
+ TkMacInitMenus(interp);
+ return TCL_OK;
+}
+
+#endif /* TOGL_AGL_CLASSIC */
diff --git a/ng/Togl-1.7/togl.h b/ng/Togl-1.7/togl.h
new file mode 100644
index 00000000..c836fef5
--- /dev/null
+++ b/ng/Togl-1.7/togl.h
@@ -0,0 +1,242 @@
+/* $Id: togl.h,v 1.28 2005/10/27 07:45:48 gregcouch Exp $ */
+
+/* vi:set sw=4: */
+
+/*
+ * Togl - a Tk OpenGL widget
+ *
+ * Copyright (C) 1996-1998 Brian Paul and Ben Bederson
+ * See the LICENSE file for copyright details.
+ */
+
+
+#ifndef TOGL_H
+# define TOGL_H
+
+# include "togl_ws.h"
+
+# ifdef TOGL_WGL
+# define WIN32_LEAN_AND_MEAN
+# include
+# undef WIN32_LEAN_AND_MEAN
+# if defined(_MSC_VER)
+# define DllEntryPoint DllMain
+# endif
+# endif
+
+# ifdef _WIN32
+# define TOGL_EXTERN __declspec(dllexport) extern
+# else
+# define TOGL_EXTERN extern
+# endif /* _WIN32 */
+
+# ifdef TOGL_AGL_CLASSIC
+# ifndef MAC_TCL
+# define MAC_TCL 1
+# endif
+# endif
+
+# ifdef TOGL_AGL
+# ifndef MAC_OSX_TCL
+# define MAC_OSX_TCL 1
+# endif
+# ifndef MAC_OSX_TK
+# define MAC_OSX_TK 1
+# endif
+# endif
+
+# include
+# include
+# if defined(TOGL_AGL) || defined(TOGL_AGL_CLASSIC)
+# include
+# else
+# include
+# endif
+
+# ifdef __sgi
+# include
+# include
+# endif
+
+# ifndef CONST84
+# define CONST84
+# endif
+
+# ifndef NULL
+# define NULL 0
+# endif
+
+# ifndef TOGL_USE_FONTS
+# define TOGL_USE_FONTS 1 /* needed for demos */
+# endif
+
+# ifdef __cplusplus
+/* *INDENT-OFF* */
+extern "C" {
+/* *INDENT-ON* */
+# endif
+
+# define TOGL_VERSION "1.7"
+# define TOGL_MAJOR_VERSION 1
+# define TOGL_MINOR_VERSION 7
+
+/*
+ * "Standard" fonts which can be specified to Togl_LoadBitmapFont()
+ */
+# define TOGL_BITMAP_8_BY_13 ((char *) 1)
+# define TOGL_BITMAP_9_BY_15 ((char *) 2)
+# define TOGL_BITMAP_TIMES_ROMAN_10 ((char *) 3)
+# define TOGL_BITMAP_TIMES_ROMAN_24 ((char *) 4)
+# define TOGL_BITMAP_HELVETICA_10 ((char *) 5)
+# define TOGL_BITMAP_HELVETICA_12 ((char *) 6)
+# define TOGL_BITMAP_HELVETICA_18 ((char *) 7)
+
+/*
+ * Normal and overlay plane constants
+ */
+# define TOGL_NORMAL 1
+# define TOGL_OVERLAY 2
+
+struct Togl;
+typedef struct Togl Togl;
+
+typedef void (Togl_Callback) (Togl *togl);
+typedef int (Togl_CmdProc) (Togl *togl, int argc, CONST84 char *argv[]);
+
+TOGL_EXTERN int Togl_Init(Tcl_Interp *interp);
+
+/*
+ * Default/initial callback setup functions
+ */
+
+TOGL_EXTERN void Togl_CreateFunc(Togl_Callback *proc);
+TOGL_EXTERN void Togl_DisplayFunc(Togl_Callback *proc);
+TOGL_EXTERN void Togl_ReshapeFunc(Togl_Callback *proc);
+TOGL_EXTERN void Togl_DestroyFunc(Togl_Callback *proc);
+TOGL_EXTERN void Togl_TimerFunc(Togl_Callback *proc);
+TOGL_EXTERN void Togl_ResetDefaultCallbacks(void);
+
+/*
+ * Change callbacks for existing widget
+ */
+
+TOGL_EXTERN void Togl_SetCreateFunc(Togl *togl, Togl_Callback *proc);
+TOGL_EXTERN void Togl_SetDisplayFunc(Togl *togl, Togl_Callback *proc);
+TOGL_EXTERN void Togl_SetReshapeFunc(Togl *togl, Togl_Callback *proc);
+TOGL_EXTERN void Togl_SetDestroyFunc(Togl *togl, Togl_Callback *proc);
+TOGL_EXTERN void Togl_SetTimerFunc(Togl *togl, Togl_Callback *proc);
+
+/*
+ * Miscellaneous
+ */
+
+TOGL_EXTERN int Togl_Configure(Tcl_Interp *interp, Togl *togl,
+ int argc, const char *argv[], int flags);
+TOGL_EXTERN void Togl_MakeCurrent(const Togl *togl);
+TOGL_EXTERN void Togl_CreateCommand(char *cmd_name, Togl_CmdProc *cmd_proc);
+TOGL_EXTERN void Togl_PostRedisplay(Togl *togl);
+TOGL_EXTERN void Togl_SwapBuffers(const Togl *togl);
+
+/*
+ * Query functions
+ */
+
+TOGL_EXTERN const char *Togl_Ident(const Togl *togl);
+TOGL_EXTERN int Togl_Width(const Togl *togl);
+TOGL_EXTERN int Togl_Height(const Togl *togl);
+TOGL_EXTERN Tcl_Interp *Togl_Interp(const Togl *togl);
+TOGL_EXTERN Tk_Window Togl_TkWin(const Togl *togl);
+
+/*
+ * Color Index mode
+ */
+
+TOGL_EXTERN unsigned long Togl_AllocColor(const Togl *togl, float red,
+ float green, float blue);
+TOGL_EXTERN void Togl_FreeColor(const Togl *togl, unsigned long index);
+TOGL_EXTERN void Togl_SetColor(const Togl *togl, unsigned long index,
+ float red, float green, float blue);
+
+# if TOGL_USE_FONTS == 1
+/*
+ * Bitmap fonts
+ */
+
+TOGL_EXTERN GLuint Togl_LoadBitmapFont(const Togl *togl, const char *fontname);
+TOGL_EXTERN void Togl_UnloadBitmapFont(const Togl *togl, GLuint fontbase);
+
+# endif
+/*
+ * Overlay functions
+ */
+
+TOGL_EXTERN void Togl_UseLayer(Togl *togl, int layer);
+TOGL_EXTERN void Togl_ShowOverlay(Togl *togl);
+TOGL_EXTERN void Togl_HideOverlay(Togl *togl);
+TOGL_EXTERN void Togl_PostOverlayRedisplay(Togl *togl);
+TOGL_EXTERN void Togl_OverlayDisplayFunc(Togl_Callback *proc);
+TOGL_EXTERN int Togl_ExistsOverlay(const Togl *togl);
+TOGL_EXTERN int Togl_GetOverlayTransparentValue(const Togl *togl);
+TOGL_EXTERN int Togl_IsMappedOverlay(const Togl *togl);
+TOGL_EXTERN unsigned long Togl_AllocColorOverlay(const Togl *togl,
+ float red, float green, float blue);
+TOGL_EXTERN void Togl_FreeColorOverlay(const Togl *togl, unsigned long index);
+
+/*
+ * User client data
+ */
+
+TOGL_EXTERN void Togl_ClientData(ClientData clientData);
+TOGL_EXTERN ClientData Togl_GetClientData(const Togl *togl);
+TOGL_EXTERN void Togl_SetClientData(Togl *togl, ClientData clientData);
+
+# ifdef TOGL_X11
+/*
+ * X11-only commands.
+ * Contributed by Miguel A. De Riera Pasenau (miguel@DALILA.UPC.ES)
+ */
+
+TOGL_EXTERN Display *Togl_Display(const Togl *togl);
+TOGL_EXTERN Screen *Togl_Screen(const Togl *togl);
+TOGL_EXTERN int Togl_ScreenNumber(const Togl *togl);
+TOGL_EXTERN Colormap Togl_Colormap(const Togl *togl);
+
+# endif
+# ifdef __sgi
+/*
+ * SGI stereo-only commands.
+ * Contributed by Ben Evans (Ben.Evans@anusf.anu.edu.au)
+ */
+
+TOGL_EXTERN void Togl_OldStereoDrawBuffer(GLenum mode);
+TOGL_EXTERN void Togl_OldStereoClear(GLbitfield mask);
+# endif
+
+TOGL_EXTERN void Togl_StereoFrustum(GLfloat left, GLfloat right, GLfloat bottom,
+ GLfloat top, GLfloat near, GLfloat far, GLfloat eyeDist,
+ GLfloat eyeOffset);
+
+/*
+ * Generate EPS file.
+ * Contributed by Miguel A. De Riera Pasenau (miguel@DALILA.UPC.ES)
+ */
+
+TOGL_EXTERN int Togl_DumpToEpsFile(const Togl *togl, const char *filename,
+ int inColor, void (*user_redraw) (const Togl *));
+
+# ifdef TOGL_AGL_CLASSIC
+/*
+ * Mac-specific setup functions
+ */
+extern int Togl_MacInit(void);
+extern int Togl_MacSetupMainInterp(Tcl_Interp *interp);
+# endif
+
+# ifdef __cplusplus
+/* *INDENT-OFF* */
+}
+/* *INDENT-ON* */
+# endif
+
+
+#endif
diff --git a/ng/Togl-1.7/togl_ws.h.in b/ng/Togl-1.7/togl_ws.h.in
new file mode 100644
index 00000000..3a01a9c3
--- /dev/null
+++ b/ng/Togl-1.7/togl_ws.h.in
@@ -0,0 +1,7 @@
+#ifndef TOGL_WS_H
+# define TOGL_WS_H
+
+/* define windowing system togl is compiled with */
+# define @TOGL_WINDOWINGSYSTEM@
+
+#endif
diff --git a/ng/Togl-1.7/tree2.rgba b/ng/Togl-1.7/tree2.rgba
new file mode 100644
index 00000000..67b02799
Binary files /dev/null and b/ng/Togl-1.7/tree2.rgba differ