dnl Most functions are initially stolen from gnus. Thanks for all the fish!
dnl
dnl Execute Lisp code
dnl
AC_DEFUN(AC_EMACS_LISP, [
elisp="$2"
if test -z "$3"; then
AC_MSG_CHECKING(for $1)
fi
if test `echo "${EMACS}" | grep xemacs`; then
EM="${EMACS} -vanilla -batch -eval"
else
EM="${EMACS} --no-site-file -batch -eval"
fi
AC_CACHE_VAL(EMACS_cv_SYS_$1,[
OUTPUT=./conftest-$$
echo ${EM} "(let ((x ${elisp})) (write-region (if (stringp x) (princ x) (prin1-to-string x)) nil \"${OUTPUT}\"))" >& AC_FD_CC 2>&1
${EM} "(let ((x ${elisp})) (write-region (if (stringp x) (princ x 'ignore) (prin1-to-string x)) nil \"${OUTPUT}\"nil 5))" >& AC_FD_CC 2>&1
if test ! -e "${OUTPUT}"; then
AC_MSG_RESULT()
AC_MSG_ERROR([calling ${EMACS}])
fi
retval=`cat ${OUTPUT}`
echo "=> ${retval}" >& AC_FD_CC 2>&1
rm -f ${OUTPUT}
EMACS_cv_SYS_$1=$retval
])
$1=${EMACS_cv_SYS_$1}
if test -z "$3"; then
AC_MSG_RESULT($$1)
fi
])
dnl
dnl Checks the Emacs flavor in use. Result for `EMACS' is the program to run.
dnl `EMACS_INFO' is the target the info file is generated for; will be either
dnl `emacs', or `xemacs'. Checks for proper version.
dnl
AC_DEFUN(AC_EMACS_INFO, [
dnl Apparently, if you run a shell window in Emacs, it sets the EMACS
dnl environment variable to 't'. Lets undo the damage.
if test "x${EMACS}" = "x" -o "x${EMACS}" = "xt"; then
EMACS=emacs
fi
dnl Check parameter.
AC_ARG_WITH(
xemacs,
[[ --with-xemacs[=PROG] use XEmacs to build [PROG=xemacs]]],
[ if test "${withval}" = "yes"; then EMACS=xemacs; else EMACS=${withval}; fi ])
AC_ARG_WITH(
emacs,
[[ --with-emacs[=PROG] use Emacs to build [PROG=emacs]]],
[ if test "${withval}" = "yes"; then EMACS=emacs; else EMACS=${withval}; fi ])
dnl Check program availability.
if test -z $EMACS; then
AC_CHECK_PROGS([EMACS], [emacs xemacs], [no])
if test "${EMACS}" = no; then
AC_MSG_ERROR([emacs not found])
fi
else
AC_CHECK_PROG([EMACS_test_emacs], [$EMACS], [yes], [no], [$PATH:/])
if test "${EMACS_test_emacs}" = no; then
AC_MSG_ERROR([$EMACS not found])
fi
fi
dnl Check flavor.
AC_MSG_CHECKING([for $EMACS flavor])
AC_EMACS_LISP(
xemacsp,
(if (featurep 'xemacs) \"yes\" \"no\"),
"noecho")
if test "${EMACS_cv_SYS_xemacsp}" = "yes"; then
EMACS_INFO=xemacs
else
EMACS_INFO=emacs
fi
AC_MSG_RESULT($EMACS_INFO)
AC_SUBST(EMACS_INFO)
dnl Check version.
TRAMP_EMACS_VERSION_CHECK="\
(if (or (< emacs-major-version 21)\
(and (featurep 'xemacs)\
(< emacs-minor-version 4)))\
(format \"${PACKAGE_STRING} is not fit for %s\"\
(when (string-match \"^.*$\" (emacs-version))\
(match-string 0 (emacs-version))))\
\"ok\")\
"
AC_SUBST(TRAMP_EMACS_VERSION_CHECK)
AC_MSG_CHECKING([for $EMACS version])
AC_EMACS_LISP(emacs_version, $TRAMP_EMACS_VERSION_CHECK, "noecho")
if test "${EMACS_cv_SYS_emacs_version}" = "ok"; then
AC_MSG_RESULT(ok)
else
AC_MSG_RESULT(nok)
AC_MSG_ERROR([$EMACS_cv_SYS_emacs_version])
fi
])
dnl
dnl Checks whether a package provided via the contrib directory should
dnl be made available via a link. First parameter is a provided function
dnl from the package in question, which is the second parameter.
dnl If the first parameter is empty, just the package is looked for.
dnl If the third parmeter is not zero, the package is optional.
dnl Function and package names must encode "-" with "_".
dnl
AC_DEFUN(AC_CONTRIB_FILES, [
function=`echo $1 | tr _ -`
library=`echo $2 | tr _ -`
AC_MSG_CHECKING([for $library])
dnl Old links must be removed anyway.
if test -h lisp/$library; then rm -f lisp/$library; fi
dnl Check whether contrib packages could be used.
AC_ARG_WITH(
contrib,
[ --with-contrib use contributed packages],
[ if test "${withval}" = "yes"; then USE_CONTRIB=yes; fi ])
dnl Check whether Lisp function does exist.
if test -z "$1"; then
EMACS_cv_SYS_$1="nil"
else
AC_EMACS_LISP($1, (progn (load \"$library\" t) (fboundp '$function)), "noecho")
fi
dnl Create the link.
if test "${EMACS_cv_SYS_$1}" = "nil"; then
if test "${USE_CONTRIB}" = "yes"; then
if test -e contrib/$library; then
TRAMP_CONTRIB_FILES="$library $TRAMP_CONTRIB_FILES"
ln -s ../contrib/$library lisp/$library
dnl AC_CONFIG_LINKS(lisp/$library:contrib/$library)
AC_MSG_RESULT(linked to contrib directory)
elif test -z "$3"; then
AC_MSG_RESULT(not found)
AC_MSG_ERROR(Could not find package $library in contrib directory)
else
AC_MSG_RESULT(not found)
fi
elif test -z "$3"; then
AC_MSG_RESULT(not found)
AC_MSG_ERROR(Use --with-contrib for implementation supplied with Tramp)
else
AC_MSG_RESULT(skipped)
fi
else
AC_MSG_RESULT(ok)
fi
])
dnl
dnl Checks whether Tramp is prepared for (X)Emacs package. This case,
dnl the installation chapter is not part of the manual. Necessary for
dnl maintainers only.
dnl
AC_DEFUN(AC_EMACS_INSTALL, [
INSTALL_CHAPTER=yes
dnl Check parameter.
AC_MSG_CHECKING([for installation chapter])
AC_ARG_WITH(
packaging,
[ --with-packaging installation chapter not needed in manual],
[ if test "${withval}" = "yes"; then INSTALL_CHAPTER=no; fi ])
AC_MSG_RESULT($INSTALL_CHAPTER)
AC_SUBST(INSTALL_CHAPTER)
])
dnl
dnl Enables japanese manual. Per default, it is disabled.
dnl
AC_DEFUN(AC_JA_MANUAL, [
JA_MANUAL=no
dnl Check parameter.
AC_MSG_CHECKING([for japanese manual])
AC_ARG_WITH(
japanese-manual,
[ --with-japanese-manual create japanese manual],
[ if test "${withval}" = "yes"; then JA_MANUAL=yes; fi ])
AC_MSG_RESULT($JA_MANUAL)
AC_SUBST(JA_MANUAL)
])
dnl
dnl Return install target for Lisp files.
dnl
AC_DEFUN(AC_PATH_LISPDIR, [
dnl Check prefix.
AC_MSG_CHECKING([prefix ])
prefix_default=$ac_default_prefix
if test "${prefix}" = NONE; then
prefix=$prefix_default
fi
AC_MSG_RESULT([$prefix])
dnl Check datadir.
AC_MSG_CHECKING([datadir])
if test "$EMACS_INFO" = "xemacs"; then
datadir_default="\${prefix}/lib"
else
datadir_default="\${prefix}/share"
fi
if test "${datadir}" = "\${prefix}/share"; then
datadir=$datadir_default
fi
dnl Expand $datarootdir.
datadir=$(echo ${datadir} | sed -e "s#[$][{]datarootdir[}]#$datarootdir#")
AC_MSG_RESULT([$datadir])
dnl Check lispdir.
AC_ARG_WITH(
lispdir,
[[ --with-lispdir=DIR where to install lisp files
[DATADIR/emacs/site-lisp] or
[DATADIR/xemacs/site-lisp]]],
lispdir=${withval})
dnl Alternative approach.
dnl m4_divert_once(HELP_BEGIN, [], [])
dnl m4_divert_once(HELP_BEGIN,
dnl AC_HELP_STRING(
dnl [ lispdir=DIR],
dnl [where to install lisp files
dnl [[DATADIR/emacs/site-lisp]] or
dnl [[DATADIR/xemacs/site-lisp]]]))
AC_MSG_CHECKING([lispdir])
lispdir_default="\${datadir}/${EMACS_INFO}/site-lisp"
: ${lispdir:=$lispdir_default}
dnl Expand $lispdir_default for trampinst.texi. We need to apply it
dnl several times, because $prefix, $datarootdir and $datadir need
dnl to be expanded in an unknown order.
lispdir_default=$(eval eval eval echo ${lispdir_default})
AC_MSG_RESULT($lispdir)
])
dnl
dnl This is a bit on the "evil hack" side of things. It is so we can
dnl have a different default infodir for XEmacs. A user can still specify
dnl someplace else with '--infodir=DIR'.
dnl
AC_DEFUN(AC_PATH_INFODIR, [
dnl Check infodir.
AC_MSG_CHECKING([infodir])
dnl Check default places.
if test "$EMACS_INFO" = "xemacs"; then
infodir_default="\${datadir}/xemacs/info"
else
infodir_default="\${datadir}/info"
fi
dnl If default directory doesn't exist, derive from $prefix.
dnl ${prefix} and ${datadir} must be expanded for test.
if ! test -d $(eval eval eval echo ${infodir_default})
then
infodir_default="\${prefix}/info"
fi
dnl If default directory doesn't exist, derive from $prefix_default.
dnl ${prefix} and ${datadir} must be expanded for test.
if ! test -d $(eval eval eval echo ${infodir_default})
then
infodir_default="\${prefix_default}/info"
fi
dnl Set it if necessary.
if test "${infodir}" = "\${prefix}/info"; then
infodir=$infodir_default
fi
dnl Expand $datarootdir.
infodir=$(echo ${infodir} | sed -e "s#[$][{]datarootdir[}]#$datarootdir#")
dnl Expand $infodir_default for trampinst.texi. We need to apply it
dnl several times, because $prefix, $datarootdir and $datadir need
dnl to be expanded in an unknown order.
infodir_default=$(eval eval eval echo ${infodir_default})
AC_MSG_RESULT([$infodir])
])
dnl
dnl Check whether a function exists in a library.
dnl All '_' characters in the first argument are converted to '-'.
dnl
AC_DEFUN(AC_EMACS_CHECK_LIB, [
if test -z "$3"; then
AC_MSG_CHECKING(for $2 in $1)
fi
library=`echo $1 | tr _ -`
AC_EMACS_LISP(
$1,
(progn
(fmakunbound '$2)
(condition-case nil
(progn (require '$library) (fboundp '$2))
(error (prog1 nil (message \"$library not found\"))))),
"noecho")
if test "${EMACS_cv_SYS_$1}" = "nil"; then
EMACS_cv_SYS_$1=no
fi
if test "${EMACS_cv_SYS_$1}" = "t"; then
EMACS_cv_SYS_$1=yes
fi
HAVE_$1=${EMACS_cv_SYS_$1}
AC_SUBST(HAVE_$1)
if test -z "$3"; then
AC_MSG_RESULT($HAVE_$1)
fi
])
syntax highlighted by Code2HTML, v. 0.9.1