417 lines
15 KiB
Plaintext
417 lines
15 KiB
Plaintext
dnl This file is an input file used by the GNU "autoconf" program to
|
|
dnl generate the file "configure", which is run during Tk installation
|
|
dnl to configure the system for the local environment.
|
|
AC_INIT(../generic/tk.h)
|
|
# SCCS: @(#) configure.in 1.87 97/08/07 10:33:08
|
|
|
|
TK_VERSION=8.0
|
|
TK_MAJOR_VERSION=8
|
|
TK_MINOR_VERSION=0
|
|
TK_PATCH_LEVEL=""
|
|
VERSION=${TK_VERSION}
|
|
|
|
dnl STk if test "${prefix}" = "NONE"; then
|
|
dnl STk prefix=/usr/local
|
|
dnl STk fi
|
|
dnl STk if test "${exec_prefix}" = "NONE"; then
|
|
dnl STk exec_prefix=$prefix
|
|
dnl STk fi
|
|
|
|
AC_PROG_RANLIB
|
|
dnl STk AC_ARG_ENABLE(gcc, [ --enable-gcc allow use of gcc if available],
|
|
dnl STk [tk_ok=$enableval], [tkl_ok=no])
|
|
dnl STk if test "$tk_ok" = "yes"; then
|
|
dnl STk AC_PROG_CC
|
|
dnl STk else
|
|
dnl STk CC=${CC-cc}
|
|
dnl STk AC_SUBST(CC)
|
|
dnl STk fi
|
|
dnl STk AC_C_CROSS
|
|
AC_HAVE_HEADERS(unistd.h limits.h)
|
|
|
|
dnl STk #--------------------------------------------------------------------
|
|
dnl STk # See if there was a command-line option for where Tcl is; if
|
|
dnl STk # not, assume that its top-level directory is a sibling of ours.
|
|
dnl STk #--------------------------------------------------------------------
|
|
dnl STk
|
|
dnl STk AC_ARG_WITH(tcl, [ --with-tcl=DIR use Tcl 8.0 binaries from DIR],
|
|
dnl STk TCL_BIN_DIR=$withval, TCL_BIN_DIR=`cd ../../tcl8.0b2/unix; pwd`)
|
|
dnl STk if test ! -d $TCL_BIN_DIR; then
|
|
dnl STk AC_MSG_ERROR(Tcl directory $TCL_BIN_DIR doesn't exist)
|
|
dnl STk fi
|
|
dnl STk if test ! -f $TCL_BIN_DIR/Makefile; then
|
|
dnl STk AC_MSG_ERROR(There's no Makefile in $TCL_BIN_DIR; perhaps you didn't specify the Tcl *build* directory (not the toplevel Tcl directory) or you forgot to configure Tcl?)
|
|
dnl STk fi
|
|
dnl STk
|
|
dnl STk #--------------------------------------------------------------------
|
|
dnl STk # Read in configuration information generated by Tcl for shared
|
|
dnl STk # libraries, and arrange for it to be substituted into our
|
|
dnl STk # Makefile.
|
|
dnl STk #--------------------------------------------------------------------
|
|
dnl STk
|
|
dnl STk file=$TCL_BIN_DIR/tclConfig.sh
|
|
dnl STk . $file
|
|
dnl STk SHLIB_CFLAGS=$TCL_SHLIB_CFLAGS
|
|
dnl STk SHLIB_LD=$TCL_SHLIB_LD
|
|
dnl STk SHLIB_LD_LIBS=$TCL_SHLIB_LD_LIBS
|
|
dnl STk SHLIB_SUFFIX=$TCL_SHLIB_SUFFIX
|
|
dnl STk SHLIB_VERSION=$TCL_SHLIB_VERSION
|
|
dnl STk DL_LIBS=$TCL_DL_LIBS
|
|
dnl STk LD_FLAGS=$TCL_LD_FLAGS
|
|
dnl STk
|
|
dnl STk LIB_RUNTIME_DIR='${LIB_RUNTIME_DIR}'
|
|
dnl STk
|
|
dnl STk # If Tcl and Tk are installed in different places, adjust the library
|
|
dnl STk # search path to reflect this.
|
|
dnl STk
|
|
dnl STk if test "$TCL_EXEC_PREFIX" != "$exec_prefix"; then
|
|
dnl STk LIB_RUNTIME_DIR="${LIB_RUNTIME_DIR}:${TCL_EXEC_PREFIX}"
|
|
dnl STk fi
|
|
dnl STk
|
|
dnl STk
|
|
dnl STk LIB_RUNTIME_DIR='${LIB_RUNTIME_DIR}'
|
|
dnl STk
|
|
dnl STk # If Tcl and Tk are installed in different places, adjust the library
|
|
dnl STk # search path to reflect this.
|
|
dnl STk
|
|
dnl STk if test "$TCL_EXEC_PREFIX" != "$exec_prefix"; then
|
|
dnl STk LIB_RUNTIME_DIR="${LIB_RUNTIME_DIR}:${TCL_EXEC_PREFIX}"
|
|
dnl STk fi
|
|
|
|
TCL_SRC_DIR=../../Tcl/
|
|
|
|
#--------------------------------------------------------------------
|
|
# Supply a substitute for stdlib.h if it doesn't define strtol,
|
|
# strtoul, or strtod (which it doesn't in some versions of SunOS).
|
|
#--------------------------------------------------------------------
|
|
|
|
AC_MSG_CHECKING(stdlib.h)
|
|
AC_HEADER_EGREP(strtol, stdlib.h, tk_ok=yes, tk_ok=no)
|
|
AC_HEADER_EGREP(strtoul, stdlib.h, , tk_ok=no)
|
|
AC_HEADER_EGREP(strtod, stdlib.h, , tk_ok=no)
|
|
if test $tk_ok = no; then
|
|
AC_DEFINE(NO_STDLIB_H)
|
|
fi
|
|
AC_MSG_RESULT($tk_ok)
|
|
|
|
#--------------------------------------------------------------------
|
|
# Include sys/select.h if it exists and if it supplies things
|
|
# that appear to be useful and aren't already in sys/types.h.
|
|
# This appears to be true only on the RS/6000 under AIX. Some
|
|
# systems like OSF/1 have a sys/select.h that's of no use, and
|
|
# other systems like SCO UNIX have a sys/select.h that's
|
|
# pernicious. If "fd_set" isn't defined anywhere then set a
|
|
# special flag.
|
|
#--------------------------------------------------------------------
|
|
|
|
AC_MSG_CHECKING([fd_set and sys/select])
|
|
AC_TRY_COMPILE([#include <sys/types.h>],
|
|
[fd_set readMask, writeMask;], tk_ok=yes, tk_ok=no)
|
|
if test $tk_ok = no; then
|
|
AC_HEADER_EGREP(fd_mask, sys/select.h, tk_ok=yes)
|
|
if test $tk_ok = yes; then
|
|
AC_DEFINE(HAVE_SYS_SELECT_H)
|
|
fi
|
|
fi
|
|
AC_MSG_RESULT($tk_ok)
|
|
if test $tk_ok = no; then
|
|
AC_DEFINE(NO_FD_SET)
|
|
fi
|
|
|
|
#--------------------------------------------------------------------
|
|
# Check for various typedefs and provide substitutes if
|
|
# they don't exist.
|
|
#--------------------------------------------------------------------
|
|
|
|
AC_MODE_T
|
|
AC_PID_T
|
|
AC_SIZE_T
|
|
AC_UID_T
|
|
|
|
#------------------------------------------------------------------------------
|
|
# Find out about time handling differences.
|
|
#------------------------------------------------------------------------------
|
|
|
|
AC_CHECK_HEADERS(sys/time.h)
|
|
AC_HEADER_TIME
|
|
|
|
#--------------------------------------------------------------------
|
|
# 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.
|
|
#--------------------------------------------------------------------
|
|
|
|
AC_PATH_X
|
|
not_really_there=""
|
|
if test "$no_x" = ""; then
|
|
if test "$x_includes" = ""; then
|
|
AC_TRY_CPP([#include <X11/XIntrinsic.h>], , 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 <X11/Intrinsic.h>], , 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(couldn't 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(couldn't find any! Using -lX11.)
|
|
XLIBSW=-lX11
|
|
fi
|
|
|
|
#--------------------------------------------------------------------
|
|
# Various manipulations on the search path used at runtime to
|
|
# find shared libraries:
|
|
# 1. If the X library binaries are in a non-standard directory,
|
|
# add the X library location into that search path.
|
|
# 2. On systems such as AIX and Ultrix that use "-L" as the
|
|
# search path option, colons cannot be used to separate
|
|
# directories from each other. Change colons to " -L".
|
|
# 3. Create two sets of search flags, one for use in cc lines
|
|
# and the other for when the linker is invoked directly. In
|
|
# the second case, '-Wl,' must be stripped off and commas must
|
|
# be replaced by spaces.
|
|
#--------------------------------------------------------------------
|
|
|
|
if test "x${x_libraries}" != "x"; then
|
|
LIB_RUNTIME_DIR="${LIB_RUNTIME_DIR}:${x_libraries}"
|
|
fi
|
|
if test "${TCL_LD_SEARCH_FLAGS}" = '-L${LIB_RUNTIME_DIR}'; then
|
|
LIB_RUNTIME_DIR=`echo ${LIB_RUNTIME_DIR} |sed -e 's/:/ -L/g'`
|
|
fi
|
|
eval "TK_CC_SEARCH_FLAGS=\"$TCL_LD_SEARCH_FLAGS\""
|
|
TK_LD_SEARCH_FLAGS=`echo ${TK_CC_SEARCH_FLAGS} |sed -e "s|-Wl,||g" -e "s|,| |g"`
|
|
|
|
#--------------------------------------------------------------------
|
|
# Check for the existence of various libraries. The order here
|
|
# is important, so that then end up in the right order in the
|
|
# command line generated by make. The -lsocket and -lnsl libraries
|
|
# require a couple of special tricks:
|
|
# 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.
|
|
#--------------------------------------------------------------------
|
|
|
|
AC_CHECK_LIB(Xbsd, main, [LIBS="$LIBS -lXbsd"])
|
|
|
|
tk_checkBoth=0
|
|
AC_CHECK_FUNC(connect, tk_checkSocket=0, tk_checkSocket=1)
|
|
if test "$tk_checkSocket" = 1; then
|
|
AC_CHECK_LIB(socket, main, LIBS="$LIBS -lsocket", tk_checkBoth=1)
|
|
fi
|
|
if test "$tk_checkBoth" = 1; then
|
|
tk_oldLibs=$LIBS
|
|
LIBS="$LIBS -lsocket -lnsl"
|
|
AC_CHECK_FUNC(accept, tk_checkNsl=0, [LIBS=$tk_oldLibs])
|
|
fi
|
|
AC_CHECK_FUNC(gethostbyname, , AC_CHECK_LIB(nsl, main, [LIBS="$LIBS -lnsl"]))
|
|
|
|
#--------------------------------------------------------------------
|
|
# One more check related to the X libraries. The standard releases
|
|
# of Ultrix don't support the "xauth" mechanism, so send won't work
|
|
# unless TK_NO_SECURITY is defined. However, there are usually copies
|
|
# of the MIT X server available as well, which do support xauth.
|
|
# Check for the MIT stuff and use it if it exists.
|
|
#
|
|
# Note: can't use ac_check_lib macro (at least, not in Autoconf 2.1)
|
|
# because it can't deal with the "-" in the library name.
|
|
#--------------------------------------------------------------------
|
|
|
|
if test -d /usr/include/mit ; then
|
|
AC_MSG_CHECKING([MIT X libraries])
|
|
tk_oldCFlags=$CFLAGS
|
|
CFLAGS="$CFLAGS -I/usr/include/mit"
|
|
tk_oldLibs=$LIBS
|
|
LIBS="$LIBS -lX11-mit"
|
|
AC_TRY_LINK([
|
|
#include <X11/Xlib.h>
|
|
], [
|
|
XOpenDisplay(0);
|
|
], [
|
|
AC_MSG_RESULT(yes)
|
|
XLIBSW="-lX11-mit"
|
|
XINCLUDES="-I/usr/include/mit"
|
|
], AC_MSG_RESULT(no))
|
|
CFLAGS=$tk_oldCFlags
|
|
LIBS=$tk_oldLibs
|
|
fi
|
|
|
|
#--------------------------------------------------------------------
|
|
# 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").
|
|
#--------------------------------------------------------------------
|
|
|
|
MATH_LIBS=""
|
|
AC_CHECK_FUNC(sin, , MATH_LIBS="-lm")
|
|
AC_CHECK_LIB(ieee, main, [MATH_LIBS="-lieee $MATH_LIBS"])
|
|
|
|
#--------------------------------------------------------------------
|
|
# If this system doesn't have a memmove procedure, use memcpy
|
|
# instead.
|
|
#--------------------------------------------------------------------
|
|
|
|
AC_CHECK_FUNC(memmove, , [AC_DEFINE(memmove, memcpy)])
|
|
|
|
#--------------------------------------------------------------------
|
|
# Figure out whether "char" is unsigned. If so, set a
|
|
# #define for __CHAR_UNSIGNED__.
|
|
#--------------------------------------------------------------------
|
|
|
|
AC_C_CHAR_UNSIGNED
|
|
|
|
#--------------------------------------------------------------------
|
|
# 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.
|
|
#--------------------------------------------------------------------
|
|
|
|
AC_CHECK_FUNC(strtod, tk_strtod=1, tk_strtod=0)
|
|
if test "$tk_strtod" = 1; then
|
|
AC_MSG_CHECKING([for Solaris 2.4 strtod bug])
|
|
AC_TRY_RUN([
|
|
extern double strtod();
|
|
int main()
|
|
{
|
|
char *string = "NaN";
|
|
char *term;
|
|
strtod(string, &term);
|
|
if ((term != string) && (term[-1] == 0)) {
|
|
exit(1);
|
|
}
|
|
exit(0);
|
|
}], tk_ok=1, tk_ok=0, tk_ok=0)
|
|
if test "$tk_ok" = 1; then
|
|
AC_MSG_RESULT(ok)
|
|
else
|
|
AC_MSG_RESULT(buggy)
|
|
AC_DEFINE(strtod, fixstrtod)
|
|
fi
|
|
fi
|
|
|
|
#--------------------------------------------------------------------
|
|
# The statements below define a collection of symbols related to
|
|
# building libtk as a shared library instead of a static library.
|
|
#--------------------------------------------------------------------
|
|
|
|
dnl STk No shared library for now.....
|
|
|
|
|
|
dnl STk AC_ARG_ENABLE(shared,
|
|
dnl STk [ --enable-shared build libtk as a shared library],
|
|
dnl STk [ok=$enableval], [ok=no])
|
|
dnl STk if test "$ok" = "yes" -a "${SHLIB_SUFFIX}" != ""; then
|
|
dnl STk TK_SHLIB_CFLAGS="${SHLIB_CFLAGS}"
|
|
dnl STk eval "TK_LIB_FILE=libtk${TCL_SHARED_LIB_SUFFIX}"
|
|
dnl STk MAKE_LIB="\${SHLIB_LD} -o ${TK_LIB_FILE} \${OBJS} \$(TK_LD_SEARCH_FLAGS) ${SHLIB_LD_LIBS}"
|
|
dnl STk RANLIB=":"
|
|
dnl STk else
|
|
dnl STk TK_SHLIB_CFLAGS=""
|
|
dnl STk eval "TK_LIB_FILE=libtk${TCL_UNSHARED_LIB_SUFFIX}"
|
|
dnl STk MAKE_LIB="ar cr ${TK_LIB_FILE} \${OBJS}"
|
|
dnl STK fi
|
|
|
|
TK_SHLIB_CFLAGS=""
|
|
TK_LIB_FILE=libtk.a
|
|
MAKE_LIB="ar cr ${TK_LIB_FILE} \${OBJS}"
|
|
|
|
# Note: in the following variable, it's important to use the absolute
|
|
# path name of the Tcl directory rather than "..": this is because
|
|
# AIX remembers this path and will attempt to use it at run-time to look
|
|
# up the Tcl library.
|
|
|
|
if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then
|
|
TK_BUILD_LIB_SPEC="-L`pwd` -ltk${VERSION}"
|
|
TK_LIB_SPEC="-L${exec_prefix}/lib -ltk${VERSION}"
|
|
else
|
|
TK_BUILD_LIB_SPEC="-L`pwd` -ltk`echo ${VERSION} | tr -d .`"
|
|
TK_LIB_SPEC="-L${exec_prefix}/lib -ltk`echo ${VERSION} | tr -d .`"
|
|
fi
|
|
AC_SUBST(CC)
|
|
AC_SUBST(DL_LIBS)
|
|
AC_SUBST(LD_FLAGS)
|
|
AC_SUBST(MATH_LIBS)
|
|
AC_SUBST(MAKE_LIB)
|
|
AC_SUBST(SHLIB_CFLAGS)
|
|
AC_SUBST(SHLIB_LD)
|
|
AC_SUBST(SHLIB_LD_LIBS)
|
|
AC_SUBST(SHLIB_SUFFIX)
|
|
AC_SUBST(SHLIB_VERSION)
|
|
AC_SUBST(TCL_BIN_DIR)
|
|
AC_SUBST(TCL_BUILD_LIB_SPEC)
|
|
AC_SUBST(TCL_SRC_DIR)
|
|
AC_SUBST(TCL_VERSION)
|
|
AC_SUBST(TK_BUILD_LIB_SPEC)
|
|
AC_SUBST(TK_CC_SEARCH_FLAGS)
|
|
AC_SUBST(TK_LD_SEARCH_FLAGS)
|
|
AC_SUBST(TK_LIB_FILE)
|
|
AC_SUBST(TK_LIB_SPEC)
|
|
AC_SUBST(TK_MAJOR_VERSION)
|
|
AC_SUBST(TK_MINOR_VERSION)
|
|
AC_SUBST(TK_PATCH_LEVEL)
|
|
AC_SUBST(TK_SHLIB_CFLAGS)
|
|
AC_SUBST(TK_SRC_DIR)
|
|
AC_SUBST(TK_VERSION)
|
|
AC_SUBST(XINCLUDES)
|
|
AC_SUBST(XLIBSW)
|
|
AC_OUTPUT(Makefile)
|