]> www.wagner.pp.ru Git - oss/fgis.git/blobdiff - acsite.m4
The second attempt to automate building :-) A lot of work here should be
[oss/fgis.git] / acsite.m4
diff --git a/acsite.m4 b/acsite.m4
new file mode 100644 (file)
index 0000000..7bdfe02
--- /dev/null
+++ b/acsite.m4
@@ -0,0 +1,602 @@
+dnl ---------------------------------------------------------------------------
+dnl Guido Draheim <guidod@gmx.de>, original by Alexandre Oliva
+dnl
+dnl Synopsis
+dnl
+dnl AC_DEFINE_DIR(VARNAME, DIR [, DESCRIPTION])
+dnl
+dnl Description
+dnl
+dnl This macro substitutes (with AC_SUBST) VARNAME with the expansion of
+dnl itself or the DIR variable if specified, taking care of fixing up
+dnl ${prefix} and such.
+dnl
+dnl Side effect: VARNAME is replaced with the expansion.
+dnl
+dnl AC_SUBST_DIR bases on Alexandre Oliva's AC_DEFINE_DIR macro. 
+dnl
+dnl http://ac-archive.sourceforge.net/Miscellaneous/ac_define_dir.html
+dnl ---------------------------------------------------------------------------
+
+AC_DEFUN([AC_DEFINE_DIR], [
+  test "x$prefix" = xNONE && prefix="$ac_default_prefix"
+  test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+  ac_define_dir=`eval echo [$]$2`
+  ac_define_dir=`eval echo [$]ac_define_dir`
+  ifelse($3, ,
+    AC_DEFINE_UNQUOTED($1, "$ac_define_dir"),
+    AC_DEFINE_UNQUOTED($1, "$ac_define_dir", $3))
+])
+
+dnl ---------------------------------------------------------------------------
+dnl Mathias Hasselmann <mathias.hasselmann@gmx.de> with modifications
+dnl by Andrey Kiselev <dron@remotesensing.org>
+dnl
+dnl Synopsis
+dnl
+dnl AC_SUBST_DIR(VARNAME, [DIR])
+dnl
+dnl Description
+dnl
+dnl This macro substitutes (with AC_SUBST) VARNAME with the expansion of itself
+dnl or the DIR variable if specified, taking care of fixing up ${prefix}
+dnl and such.
+dnl
+dnl Side effect: VARNAME is replaced with the expansion.
+dnl
+dnl AC_SUBST_DIR bases on Alexandre Oliva's AC_DEFINE_DIR macro.
+dnl
+dnl http://ac-archive.sourceforge.net/Miscellaneous/ac_subst_dir.html
+dnl ---------------------------------------------------------------------------
+
+AC_DEFUN([AC_SUBST_DIR], [
+        ifelse($2, , , $1=[$]$2)
+        test "x$prefix" = xNONE && prefix="$ac_default_prefix"
+        test "x$exec_prefix" = xNONE && exec_prefix="${prefix}"
+        $1=`eval echo [$]$1`
+       $1=`eval echo [$]$1`
+        AC_SUBST($1)
+])
+
+dnl ---------------------------------------------------------------------------
+dnl Following macros for Tcl and Tk searching copied from Expect package
+dnl Several Debian-specific additions by
+dnl Andrey Kiselev <dron@remotesensing.org>
+dnl ---------------------------------------------------------------------------
+
+AC_DEFUN(CY_AC_PATH_TCLH, [
+#
+# Ok, lets find the tcl source trees so we can use the headers
+# Warning: transition of version 9 to 10 will break this algorithm
+# because 10 sorts before 9. We also look for just tcl. We have to
+# be careful that we don't match stuff like tclX by accident.
+# the alternative search directory is involked by --with-tclinclude
+#
+no_tcl=true
+AC_MSG_CHECKING(for Tcl private headers)
+AC_ARG_WITH(tclinclude, [  --with-tclinclude=DIR   directory where tcl private headers are], with_tclinclude=${withval})
+AC_CACHE_VAL(ac_cv_c_tclh,[
+# first check to see if --with-tclinclude was specified
+if test x"${with_tclinclude}" != x ; then
+  if test -f ${with_tclinclude}/tclInt.h ; then
+    ac_cv_c_tclh=`(cd ${with_tclinclude}; pwd)`
+  elif test -f ${with_tclinclude}/generic/tclInt.h ; then
+    ac_cv_c_tclh=`(cd ${with_tclinclude}/generic; pwd)`
+  else
+    AC_MSG_ERROR([${with_tclinclude} directory doesn't contain private headers])
+  fi
+fi
+
+# next check if it came with Tcl configuration file
+if test x"${ac_cv_c_tclconfig}" != x ; then
+  if test -f $ac_cv_c_tclconfig/../generic/tclInt.h ; then
+    ac_cv_c_tclh=`(cd $ac_cv_c_tclconfig/../generic; pwd)`
+  fi
+fi
+
+# next check in private source directory
+#
+# since ls returns lowest version numbers first, reverse its output
+if test x"${ac_cv_c_tclh}" = x ; then
+  for i in \
+               ${srcdir}/../tcl \
+               `ls -dr ${srcdir}/../tcl[[9]].[[0-9]].[[0-9]] ${srcdir}/../tcl[[9]].[[0-9]] 2>/dev/null` \
+               `ls -dr ${srcdir}/../tcl[[8]].[[2-9]].[[0-9]] ${srcdir}/../tcl[[8]].[[2-9]] 2>/dev/null` \
+               ${srcdir}/../../tcl \
+               `ls -dr ${srcdir}/../../tcl[[9]].[[0-9]].[[0-9]] ${srcdir}/../../tcl[[9]].[[0-9]] 2>/dev/null` \
+               `ls -dr ${srcdir}/../../tcl[[8]].[[2-9]].[[0-9]] ${srcdir}/../../tcl[[8]].[[2-9]] 2>/dev/null` \
+               ${srcdir}/../../../tcl \
+               `ls -dr ${srcdir}/../../../tcl[[9]].[[0-9]].[[0-9]] ${srcdir}/../../../tcl[[9]].[[0-9]] 2>/dev/null ` \
+               `ls -dr ${srcdir}/../../../tcl[[8]].[[2-9]].[[0-9]] ${srcdir}/../../../tcl[[8]].[[2-9]] 2>/dev/null ` ; do
+    if test -f $i/generic/tclInt.h ; then
+      ac_cv_c_tclh=`(cd $i/generic; pwd)`
+      break
+    fi
+  done
+fi
+
+# check Debian-specific locations
+if test x"${ac_cv_c_tclh}" = x ; then
+  for i in \
+               `ls -dr /usr/include/tcl[[9]].[[0-9]].[[0-9]]/tcl-private /usr/include/tcl[[9]].[[0-9]]/tcl-private 2>/dev/null` \
+               `ls -dr /usr/include/tcl[[8]].[[2-9]].[[0-9]]/tcl-private /usr/include/tcl[[8]].[[2-9]]/tcl-private 2>/dev/null`; do
+    if test -f $i/generic/tclInt.h ; then
+      ac_cv_c_tclh=`(cd $i/generic; pwd)`
+      break
+    fi
+  done
+fi
+
+# finally check in a few common install locations
+#
+# since ls returns lowest version numbers first, reverse its output
+if test x"${ac_cv_c_tclh}" = x ; then
+  for i in \
+               `ls -dr /usr/lib/tcl[[9]].[[0-9]].[[0-9]]/tcl-private /usr/lib/tcl[[9]].[[0-9]]/tcl-private 2>/dev/null` \
+               `ls -dr /usr/lib/tcl[[8]].[[2-9]].[[0-9]]/tcl-private /usr/lib/tcl[[8]].[[2-9]]/tcl-private 2>/dev/null` \
+               `ls -dr /usr/local/src/tcl[[9]].[[0-9]].[[0-9]] /usr/local/src/tcl[[9]].[[0-9]] 2>/dev/null` \
+               `ls -dr /usr/local/src/tcl[[8]].[[2-9]].[[0-9]] /usr/local/src/tcl[[8]].[[2-9]] 2>/dev/null` \
+               `ls -dr /usr/local/lib/tcl[[9]].[[0-9]].[[0-9]] /usr/local/lib/tcl[[9]].[[0-9]] 2>/dev/null` \
+               `ls -dr /usr/local/lib/tcl[[8]].[[2-9]].[[0-9]] /usr/local/lib/tcl[[8]].[[2-9]] 2>/dev/null` \
+               /usr/local/src/tcl \
+               /usr/local/lib/tcl \
+               ${prefix}/include ; do
+    if test -f $i/generic/tclInt.h ; then
+      ac_cv_c_tclh=`(cd $i/generic; pwd)`
+      break
+    fi
+  done
+fi
+# see if one is installed
+if test x"${ac_cv_c_tclh}" = x ; then
+   AC_HEADER_CHECK(tclInt.h, ac_cv_c_tclh=installed, ac_cv_c_tclh="")
+fi
+])
+if test x"${ac_cv_c_tclh}" = x ; then
+  TCLHDIR="# no Tcl private headers found"
+  TCLHDIRDASHI="# no Tcl private headers found"
+  AC_MSG_ERROR([Can't find Tcl private headers])
+fi
+if test x"${ac_cv_c_tclh}" != x ; then
+  no_tcl=""
+  if test x"${ac_cv_c_tclh}" = x"installed" ; then
+    AC_MSG_RESULT([is installed])
+    TCLHDIR=""
+    TCLHDIRDASHI=""
+    TCL_LIBRARY=""
+  else
+    AC_MSG_RESULT([found in ${ac_cv_c_tclh}])
+    # this hack is cause the TCLHDIR won't print if there is a "-I" in it.
+    TCLHDIR="${ac_cv_c_tclh}"
+    TCLHDIRDASHI="-I${ac_cv_c_tclh}"
+    TCL_LIBRARY=`echo $TCLHDIR | sed -e 's/generic//'`library
+  fi
+fi
+
+AC_SUBST(TCLHDIR)
+AC_SUBST(TCLHDIRDASHI)
+AC_SUBST(TCL_LIBRARY)
+])
+
+
+AC_DEFUN(CY_AC_PATH_TCLCONFIG, [
+#
+# 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
+    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[[9]].[[0-9]].[[0-9]] ../tcl[[9]].[[0-9]] 2>/dev/null` \
+               `ls -dr ../tcl[[8]].[[2-9]].[[0-9]] ../tcl[[8]].[[2-9]] 2>/dev/null` \
+               ../../tcl \
+               `ls -dr ../../tcl[[9]].[[0-9]].[[0-9]] ../../tcl[[9]].[[0-9]] 2>/dev/null` \
+               `ls -dr ../../tcl[[8]].[[2-9]].[[0-9]] ../../tcl[[8]].[[2-9]] 2>/dev/null` \
+               ../../../tcl \
+               `ls -dr ../../../tcl[[9]].[[0-9]].[[0-9]] ../../../tcl[[9]].[[0-9]] 2>/dev/null` \
+               `ls -dr ../../../tcl[[8]].[[2-9]].[[0-9]] ../../../tcl[[8]].[[2-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
+  # check in a few common install locations
+  if test x"${ac_cv_c_tclconfig}" = x ; then
+    for i in `ls -d ${prefix}/lib /usr/local/lib 2>/dev/null` ; do
+      if test -f "$i/tclConfig.sh" ; then
+        ac_cv_c_tclconfig=`(cd $i; pwd)`
+       break
+      fi
+    done
+  fi
+  
+  # check Debian-specific locations
+  if test x"${ac_cv_c_tclconfig}" = x ; then
+    for i in \
+               `ls -dr /usr/lib/tcl[[9]].[[0-9]].[[0-9]] /usr/lib/tcl[[9]].[[0-9]] 2>/dev/null` \
+               `ls -dr /usr/lib/tcl[[8]].[[2-9]].[[0-9]] /usr/lib/tcl[[8]].[[2-9]] 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[[9]].[[0-9]].[[0-9]] ${srcdir}/../tcl[[9]].[[0-9]] 2>/dev/null` \
+               `ls -dr ${srcdir}/../tcl[[8]].[[2-9]].[[0-9]] ${srcdir}/../tcl[[8]].[[2-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
+    TCLCONFIG="# no Tcl configs found"
+    AC_MSG_WARN(Can't find Tcl configuration definitions)
+  else
+    no_tcl=
+    TCLCONFIG=${ac_cv_c_tclconfig}/tclConfig.sh
+    AC_MSG_RESULT(found $TCLCONFIG)
+  fi
+fi
+])
+
+# Defined as a separate macro so we don't have to cache the values
+# from PATH_TCLCONFIG (because this can also be cached).
+AC_DEFUN(CY_AC_LOAD_TCLCONFIG, [
+    . $TCLCONFIG
+
+dnl AC_SUBST(TCL_VERSION)
+dnl AC_SUBST(TCL_MAJOR_VERSION)
+dnl AC_SUBST(TCL_MINOR_VERSION)
+dnl AC_SUBST(TCL_CC)
+    AC_SUBST(TCL_DEFS)
+dnl following is just to test if missing symbol can be handled by configure
+    AC_SUBST(TCL_DELETEME)
+    AC_SUBST(TCL_DBGX)
+
+dnl not used, don't export to save symbols
+dnl    AC_SUBST(TCL_LIB_FILE)
+
+dnl don't export, not used outside of configure
+dnl     AC_SUBST(TCL_LIBS)
+dnl not used, don't export to save symbols
+dnl    AC_SUBST(TCL_PREFIX)
+
+    AC_SUBST(TCL_EXEC_PREFIX)
+
+dnl not used, don't export to save symbols
+dnl AC_SUBST(TCL_SHLIB_CFLAGS)
+    AC_SUBST(TCL_SHLIB_LD)
+dnl don't export, not used outside of configure
+dnl AC_SUBST(TCL_SHLIB_LD_LIBS)
+
+# Tcl defines TCL_SHLIB_SUFFIX but TCL_SHARED_LIB_SUFFIX then looks for it
+# as just SHLIB_SUFFIX.  How bizarre.
+    SHLIB_SUFFIX=$TCL_SHLIB_SUFFIX
+    AC_SUBST(SHLIB_SUFFIX)
+
+dnl not used, don't export to save symbols
+dnl AC_SUBST(TCL_DL_LIBS)
+    AC_SUBST(TCL_LD_FLAGS)
+dnl don't export, not used outside of configure
+dnl AC_SUBST(TCL_LD_SEARCH_FLAGS)
+dnl AC_SUBST(TCL_COMPAT_OBJS)
+dnl AC_SUBST(TCL_RANLIB)
+
+# if Tcl's build directory has been removed, TCL_LIB_SPEC should
+# be used instead of TCL_BUILD_LIB_SPEC
+SAVELIBS=$LIBS
+# eval used to expand out TCL_DBGX
+eval "LIBS=\"$TCL_BUILD_LIB_SPEC $TCL_LIBS\""
+AC_MSG_CHECKING([Tcl build library])
+AC_MSG_RESULT($LIBS)
+
+AC_CHECK_FUNC(Tcl_CreateCommand,[
+       AC_MSG_CHECKING([if Tcl library build specification is valid])
+       AC_MSG_RESULT(yes)
+],[
+       TCL_BUILD_LIB_SPEC=$TCL_LIB_SPEC
+       # Can't pull the following CHECKING call out since it will be
+       # broken up by the CHECK_FUNC just above.
+       AC_MSG_CHECKING([if Tcl library build specification is valid])
+       AC_MSG_RESULT(no)
+])
+LIBS=$SAVELIBS
+
+    AC_SUBST(TCL_BUILD_LIB_SPEC)
+    AC_SUBST(TCL_LIB_SPEC)
+dnl AC_SUBST(TCL_LIB_VERSIONS_OK)
+
+    AC_SUBST(TCL_SHARED_LIB_SUFFIX)
+
+dnl not used, don't export to save symbols
+dnl    AC_SUBST(TCL_UNSHARED_LIB_SUFFIX)
+])
+
+# Warning: Tk definitions are very similar to Tcl definitions but
+# are not precisely the same.  There are a couple of differences,
+# so don't do changes to Tcl thinking you can cut and paste it do 
+# the Tk differences and later simply substitute "Tk" for "Tcl".
+# Known differences:
+#  - Acceptable Tcl major version #s is 8.2-9.* while Tk is 8.2-9.*
+#  - Searching for Tcl includes looking for tclInt.h, Tk looks for tk.h
+#  - Computing major/minor versions is different because Tk depends on
+#    headers to Tcl, Tk, and X.
+#  - Symbols in tkConfig.sh are different than tclConfig.sh
+#  - Acceptable for Tk to be missing but not Tcl.
+
+AC_DEFUN(CY_AC_PATH_TKH, [
+#
+# Ok, lets find the tk source trees so we can use the headers
+# If the directory (presumably symlink) named "tk" exists, use that one
+# in preference to any others.  Same logic is used when choosing library
+# and again with Tcl. The search order is the best place to look first, then in
+# decreasing significance. The loop breaks if the trigger file is found.
+# Note the gross little conversion here of srcdir by cd'ing to the found
+# directory. This converts the path from a relative to an absolute, so
+# recursive cache variables for the path will work right. We check all
+# the possible paths in one loop rather than many seperate loops to speed
+# things up.
+# the alternative search directory is involked by --with-tkinclude
+#
+#no_tk=true
+AC_MSG_CHECKING(for Tk private headers)
+AC_ARG_WITH(tkinclude, [  --with-tkinclude       directory where tk private headers are], with_tkinclude=${withval})
+AC_CACHE_VAL(ac_cv_c_tkh,[
+# first check to see if --with-tkinclude was specified
+if test x"${with_tkinclude}" != x ; then
+  if test -f ${with_tkinclude}/tk.h ; then
+    ac_cv_c_tkh=`(cd ${with_tkinclude}; pwd)`
+  elif test -f ${with_tkinclude}/generic/tk.h ; then
+    ac_cv_c_tkh=`(cd ${with_tkinclude}/generic; pwd)`
+  else
+    AC_MSG_ERROR([${with_tkinclude} directory doesn't contain private headers])
+  fi
+fi
+
+# next check if it came with Tk configuration file
+if test x"${ac_cv_c_tkconfig}" != x ; then
+  if test -f $ac_cv_c_tkconfig/../generic/tk.h ; then
+    ac_cv_c_tkh=`(cd $ac_cv_c_tkconfig/../generic; pwd)`
+  fi
+fi
+
+# next check in private source directory
+#
+# since ls returns lowest version numbers first, reverse its output
+if test x"${ac_cv_c_tkh}" = x ; then
+  for i in \
+               ${srcdir}/../tk \
+               `ls -dr ${srcdir}/../tk[[4-9]].[[0-9]].[[0-9]] ${srcdir}/../tk[[4-9]].[[0-9]] 2>/dev/null` \
+               `ls -dr ${srcdir}/../tk[[4-9]].[[0-9]].[[0-9]] ${srcdir}/../tk[[4-9]].[[0-9]] 2>/dev/null` \
+               ${srcdir}/../../tk \
+               `ls -dr ${srcdir}/../../tk[[4-9]].[[0-9]].[[0-9]] ${srcdir}/../../tk[[4-9]].[[0-9]] 2>/dev/null` \
+               `ls -dr ${srcdir}/../../tk[[4-9]].[[0-9]].[[0-9]] ${srcdir}/../../tk[[4-9]].[[0-9]] 2>/dev/null` \
+               ${srcdir}/../../../tk \
+               `ls -dr ${srcdir}/../../../tk[[4-9]].[[0-9]].[[0-9]] ${srcdir}/../../../tk[[4-9]].[[0-9]] 2>/dev/null ` \
+               `ls -dr ${srcdir}/../../../tk[[4-9]].[[0-9]].[[0-9]] ${srcdir}/../../../tk[[4-9]].[[0-9]] 2>/dev/null ` ; do
+    if test -f $i/generic/tk.h ; then
+      ac_cv_c_tkh=`(cd $i/generic; pwd)`
+      break
+    fi
+  done
+fi
+
+# check Debian-specific locations
+if test x"${ac_cv_c_tkh}" = x ; then
+  for i in \
+               `ls -dr /usr/include/tcl[[9]].[[0-9]].[[0-9]]/tk-private /usr/include/tcl[[9]].[[0-9]]/tk-private 2>/dev/null` \
+               `ls -dr /usr/include/tcl[[8]].[[2-9]].[[0-9]]/tk-private /usr/include/tcl[[8]].[[2-9]]/tk-private 2>/dev/null` ; do
+    if test -f $i/generic/tk.h ; then
+      ac_cv_c_tkh=`(cd $i/generic; pwd)`
+      break
+    fi
+  done
+fi
+
+# finally check in a few common install locations
+#
+# since ls returns lowest version numbers first, reverse its output
+if test x"${ac_cv_c_tkh}" = x ; then
+  for i in \
+               `ls -dr /usr/local/src/tk[[4-9]].[[0-9]].[[0-9]] /usr/local/src/tk[[4-9]].[[0-9]] 2>/dev/null` \
+               `ls -dr /usr/local/src/tk[[4-9]].[[0-9]].[[0-9]] /usr/local/src/tk[[4-9]].[[0-9]] 2>/dev/null` \
+               `ls -dr /usr/local/lib/tk[[4-9]].[[0-9]].[[0-9]] /usr/local/lib/tk[[4-9]].[[0-9]] 2>/dev/null` \
+               `ls -dr /usr/local/lib/tk[[4-9]].[[0-9]].[[0-9]] /usr/local/lib/tk[[4-9]].[[0-9]] 2>/dev/null` \
+               /usr/local/src/tk \
+               /usr/local/lib/tk \
+               ${prefix}/include ; do
+    if test -f $i/generic/tk.h ; then
+      ac_cv_c_tkh=`(cd $i/generic; pwd)`
+      break
+    fi
+  done
+fi
+# see if one is installed
+if test x"${ac_cv_c_tkh}" = x ; then
+   AC_HEADER_CHECK(tk.h, ac_cv_c_tkh=installed, ac_cv_c_tkh="")
+fi
+])
+if test x"${ac_cv_c_tkh}" != x ; then
+#  no_tk=""
+  if test x"${ac_cv_c_tkh}" = x"installed" ; then
+    AC_MSG_RESULT([is installed])
+    TKHDIRDASHI=""
+  else
+    AC_MSG_RESULT([found in ${ac_cv_c_tkh}])
+    # this hack is cause the TKHDIRDASHI won't print if there is a "-I" in it.
+    TKHDIRDASHI="-I${ac_cv_c_tkh}"
+  fi
+else
+  TKHDIRDASHI="# no Tk directory found"
+  AC_MSG_WARN([Can't find Tk private headers])
+  no_tk=true
+fi
+
+AC_SUBST(TKHDIRDASHI)
+])
+
+
+AC_DEFUN(CY_AC_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-tk was specified.
+  if test x"${with_tkconfig}" != x ; then
+    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[[4-9]].[[0-9]].[[0-9]] ../tk[[4-9]].[[0-9]] 2>/dev/null` \
+               `ls -dr ../tk[[4-9]].[[0-9]].[[0-9]] ../tk[[4-9]].[[0-9]] 2>/dev/null` \
+               ../../tk \
+               `ls -dr ../../tk[[4-9]].[[0-9]].[[0-9]] ../../tk[[4-9]].[[0-9]] 2>/dev/null` \
+               `ls -dr ../../tk[[4-9]].[[0-9]].[[0-9]] ../../tk[[4-9]].[[0-9]] 2>/dev/null` \
+               ../../../tk \
+               `ls -dr ../../../tk[[4-9]].[[0-9]].[[0-9]] ../../../tk[[4-9]].[[0-9]] 2>/dev/null` \
+               `ls -dr ../../../tk[[4-9]].[[0-9]].[[0-9]] ../../../tk[[4-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
+  # check in a few common install locations
+  if test x"${ac_cv_c_tkconfig}" = x ; then
+    for i in `ls -d ${prefix}/lib /usr/local/lib 2>/dev/null` ; do
+      if test -f "$i/tkConfig.sh" ; then
+        ac_cv_c_tkconfig=`(cd $i; pwd)`
+       break
+      fi
+    done
+  fi
+  # check Debian-specific locations
+  if test x"${ac_cv_c_tkconfig}" = x ; then
+    for i in \
+               `ls -dr /usr/lib/tk[[4-9]].[[0-9]].[[0-9]] /usr/lib/tk[[4-9]].[[0-9]] 2>/dev/null` \
+               `ls -dr /usr/lib/tk[[4-9]].[[0-9]].[[0-9]] /usr/lib/tk[[4-9]].[[0-9]] 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[[4-9]].[[0-9]].[[0-9]] ${srcdir}/../tk[[4-9]].[[0-9]] 2>/dev/null` \
+               `ls -dr ${srcdir}/../tk[[4-9]].[[0-9]].[[0-9]] ${srcdir}/../tk[[4-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
+    TKCONFIG="# no Tk configs found"
+    AC_MSG_WARN(Can't find Tk configuration definitions)
+  else
+    no_tk=
+    TKCONFIG=${ac_cv_c_tkconfig}/tkConfig.sh
+    AC_MSG_RESULT(found $TKCONFIG)
+  fi
+fi
+
+])
+
+# Defined as a separate macro so we don't have to cache the values
+# from PATH_TKCONFIG (because this can also be cached).
+AC_DEFUN(CY_AC_LOAD_TKCONFIG, [
+    if test -f "$TKCONFIG" ; then
+      . $TKCONFIG
+    fi
+
+    AC_SUBST(TK_VERSION)
+dnl not actually used, don't export to save symbols
+dnl    AC_SUBST(TK_MAJOR_VERSION)
+dnl    AC_SUBST(TK_MINOR_VERSION)
+    AC_SUBST(TK_DEFS)
+
+    AC_SUBST(TK_DBGX)
+dnl not used, don't export to save symbols
+    dnl AC_SUBST(TK_LIB_FILE)
+
+dnl not used outside of configure
+dnl    AC_SUBST(TK_LIBS)
+dnl not used, don't export to save symbols
+dnl    AC_SUBST(TK_PREFIX)
+
+dnl not used, don't export to save symbols
+dnl    AC_SUBST(TK_EXEC_PREFIX)
+
+    AC_SUBST(TK_XINCLUDES)
+    AC_SUBST(TK_XLIBSW)
+
+# if Tk's build directory has been removed, TK_LIB_SPEC should
+# be used instead of TK_BUILD_LIB_SPEC
+SAVELIBS=$LIBS
+# eval used to expand out TK_DBGX
+eval "LIBS=\"$TK_BUILD_LIB_SPEC $TCL_BUILD_LIB_SPEC $TK_LIBS\""
+AC_CHECK_FUNC(Tk_Init,[
+       AC_MSG_CHECKING([if Tk library build specification is valid])
+       AC_MSG_RESULT(yes)
+],[
+       TK_BUILD_LIB_SPEC=$TK_LIB_SPEC
+       # Can't pull the following CHECKING call out since it will be
+       # broken up by the CHECK_FUNC just above.
+       AC_MSG_CHECKING([if Tk library build specification is valid])
+       AC_MSG_RESULT(no)
+])
+LIBS=$SAVELIBS
+
+    AC_SUBST(TK_BUILD_LIB_SPEC)
+    AC_SUBST(TK_LIB_SPEC)
+])
+