AC_DEFUN(DC_DO_TCL, [ AC_MSG_CHECKING([path to tcl]) AC_ARG_WITH(tcl, AC_HELP_STRING([--with-tcl], [directory containing tcl configuration (tclConfig.sh)]), [], [ with_tcl="auto" ]) if test "${with_tcl}" = "auto"; then for dir in `echo "${PATH}" | sed 's@:@ @g'`; do if test -f "${dir}/tclConfig.sh"; then tclconfigshdir="${dir}" tclconfigsh="${tclconfigshdir}/tclConfig.sh" break fi if test -f "${dir}/../lib/tclConfig.sh"; then tclconfigshdir="${dir}/../lib" tclconfigsh="${tclconfigshdir}/tclConfig.sh" break fi if test -f "${dir}/../lib64/tclConfig.sh"; then tclconfigshdir="${dir}/../lib64" tclconfigsh="${tclconfigshdir}/tclConfig.sh" break fi done if test -z "${tclconfigsh}"; then AC_MSG_ERROR([Unable to find tclConfig.sh]) fi else tclconfigshdir="${with_tcl}" tclconfigsh="${tclconfigshdir}/tclConfig.sh" fi if test -f "${tclconfigsh}"; then . "${tclconfigsh}" CFLAGS="${CFLAGS} ${TCL_INCLUDE_SPEC} -I${TCL_SRC_DIR}/generic -I${tclconfigshdir}" CPPFLAGS="${CPPFLAGS} ${TCL_INCLUDE_SPEC} -I${TCL_SRC_DIR}/generic -I${tclconfigshdir}" LIBS="${LIBS} ${TCL_LIBS}" fi AC_SUBST(CFLAGS) AC_SUBST(CPPFLAGS) AC_SUBST(LIBS) AC_MSG_RESULT([$tclconfigsh]) ]) AC_DEFUN(DC_DO_TK, [ AC_MSG_CHECKING([path to tk]) AC_ARG_WITH(tk, AC_HELP_STRING([--with-tk], [directory containing tk configuration (tkConfig.sh)]), [], [ with_tk="auto" ]) if test "${with_tk}" = "auto"; then for dir in ../../../tk/build/tk*/*/ `echo "${PATH}" | sed 's@:@ @g'`; do if test -f "${dir}/tkConfig.sh"; then tkconfigshdir="${dir}" tkconfigsh="${tkconfigshdir}/tkConfig.sh" break fi if test -f "${dir}/../lib/tkConfig.sh"; then tkconfigshdir="${dir}/../lib" tkconfigsh="${tkconfigshdir}/tkConfig.sh" break fi if test -f "${dir}/../lib64/tkConfig.sh"; then tkconfigshdir="${dir}/../lib64" tkconfigsh="${tkconfigshdir}/tkConfig.sh" break fi done if test -z "${tkconfigsh}"; then AC_MSG_ERROR([Unable to find tkConfig.sh]) fi else tkconfigshdir="${with_tk}" tkconfigsh="${tkconfigshdir}/tkConfig.sh" fi if test -f "${tkconfigsh}"; then . "${tkconfigsh}" CFLAGS="${CFLAGS} ${TK_INCLUDE_SPEC} -I${tkconfigshdir} -I${TK_SRC_DIR}/generic -I${TK_SRC_DIR}/xlib" CPPFLAGS="${CPPFLAGS} ${TK_INCLUDE_SPEC} -I${tkconfigshdir} -I${TK_SRC_DIR}/generic -I${TK_SRC_DIR}/xlib" LIBS="${LIBS} ${TK_LIBS}" NEWLIBS="" for lib in ${LIBS}; do if echo "${lib}" | grep '^-l' >/dev/null; then if echo " ${NEWLIBS} " | grep " ${lib} " >/dev/null; then continue fi fi NEWLIBS="${NEWLIBS} ${lib}" done LIBS="${NEWLIBS}" fi AC_SUBST(CFLAGS) AC_SUBST(CPPFLAGS) AC_SUBST(LIBS) AC_MSG_RESULT([$tkconfigsh]) ]) AC_DEFUN(DC_DO_STATIC_LINK_LIB, [ AC_MSG_CHECKING([for how to statically link to $1]) SAVELIBS="${LIBS}" staticlib="" found="0" dnl HP/UX uses -Wl,-a,archive -lstdc++ -Wl,-a,shared_archive dnl Linux and Solaris us -Wl,-Bstatic ... -Wl,-Bdynamic for trylink in "-Wl,-a,archive $2 -Wl,-a,shared_archive" "-Wl,-Bstatic $2 -Wl,-Bdynamic" "$2"; do LIBS="${SAVELIBS} ${trylink}" AC_LINK_IFELSE(AC_LANG_PROGRAM([], []), [ staticlib="${trylink}" found="1" break ]) done if test "${found}" = "1"; then SAVELIBS=`echo "$SAVELIBS" | sed 's@ $2 @@'` LIBS="${SAVELIBS} ${staticlib}" AC_MSG_RESULT([${staticlib}]) AC_SUBST(LIBS) $3 else LIBS="${SAVELIBS}" AC_MSG_RESULT([cant]) $4 fi ]) AC_DEFUN(DC_DO_STATIC_LINK_LIBCXX, [ dnl Sun Studio uses -lCstd -lCrun, most platforms use -lstdc++ DC_DO_STATIC_LINK_LIB([C++ Library (Sun Studio)], [-lCstd -lCrun],, [ DC_DO_STATIC_LINK_LIB([C++ Library (UNIX)], [-lstdc++]) ]) ]) AC_DEFUN(DC_FIND_TCLKIT_LIBS, [ DC_SETUP_TCL_PLAT_DEFS for proj in mk4tcl tcl tclvfs tk; do AC_MSG_CHECKING([for libraries required for ${proj}]) libdir="../../../${proj}/inst" libfiles="`find "${libdir}" -name '*.a' 2>/dev/null | tr "\n" ' '`" libfilesnostub="`find "${libdir}" -name '*.a' 2>/dev/null | grep -v 'stub' | tr "\n" ' '`" ARCHS="${ARCHS} ${libfiles}" AC_MSG_RESULT([${libfiles}]) if test "${libfilesnostub}" != ""; then if test "${proj}" = "mk4tcl"; then AC_DEFINE(KIT_INCLUDES_MK4TCL, [1], [Specify this if you link against mkt4tcl]) DC_DO_STATIC_LINK_LIBCXX fi if test "${proj}" = "tk"; then DC_DO_TK AC_DEFINE(KIT_INCLUDES_TK, [1], [Specify this if we link statically to Tk]) if test "$host_os" = "mingw32msvc" -o "$host_os" = "mingw32"; then AC_DEFINE(KITSH_NEED_WINMAIN, [1], [Define if you need WinMain (Windows)]) CFLAGS="${CFLAGS} -mwindows" fi fi fi done AC_SUBST(ARCHS) ]) AC_DEFUN(DC_SETUP_TCL_PLAT_DEFS, [ AC_CANONICAL_HOST AC_MSG_CHECKING(host operating system) AC_MSG_RESULT($host_os) case $host_os in mingw32*) CFLAGS="${CFLAGS} -mno-cygwin -mms-bitfields" dnl If we are building for Win32, we need to define "BUILD_tcl" so that dnl TCL_STORAGE_CLASS gets defined as DLLEXPORT, to make static linking dnl work AC_DEFINE(BUILD_tcl, [1], [Define if you need to pretend to be building Tcl (Windows)]) AC_DEFINE(BUILD_tk, [1], [Define if you need to pretend to be building Tk (Windows)]) ;; cygwin*) CFLAGS="${CFLAGS} -mms-bitfields" ;; esac ]) AC_DEFUN(DC_STATIC_LIBGCC, [ AC_MSG_CHECKING([how to link statically against libgcc]) SAVELDFLAGS="${LDFLAGS}" staticlibgcc="" for trylink in "-static-libgcc"; do LDFLAGS="${SAVELDFLAGS} ${trylink}" AC_LINK_IFELSE(AC_LANG_PROGRAM([], []), [ staticlibgcc="${trylink}" break ]) done if test -n "${staticlibgcc}"; then LDFLAGS="${SAVELDFLAGS} ${staticlibgcc}" AC_MSG_RESULT([${staticlibgcc}]) else LDFLAGS="${SAVELDFLAGS}" AC_MSG_RESULT([not needed]) fi AC_SUBST(LDFLAGS) ])