dnl dnl Execute arbitrary emacs lisp dnl AC_DEFUN(AC_EMACS_LISP, [ elisp="$2" if test -z "$3"; then AC_MSG_CHECKING(for $1) fi AC_CACHE_VAL(EMACS_cv_SYS_$1,[ OUTPUT=./conftest-$$ echo ${EMACS} -batch -eval "(let ((x ${elisp})) (write-region (if (stringp x) (princ x) (prin1-to-string x)) nil \"${OUTPUT}\"))" >& AC_FD_CC 2>&1 ${EMACS} -batch -eval "(let ((x ${elisp})) (write-region (if (stringp x) (princ x 'ignore) (prin1-to-string x)) nil \"${OUTPUT}\"nil 5))" >& AC_FD_CC 2>&1 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 ]) AC_DEFUN(AC_XEMACS_P, [ AC_MSG_CHECKING([if $EMACS is really XEmacs]) AC_EMACS_LISP(xemacsp,(if (string-match \"XEmacs\" emacs-version) \"yes\" \"no\") ,"noecho") XEMACS=${EMACS_cv_SYS_xemacsp} EMACS_FLAVOR=emacs if test "$XEMACS" = "yes"; then EMACS_FLAVOR=xemacs fi AC_MSG_RESULT($XEMACS) AC_SUBST(XEMACS) AC_SUBST(EMACS_FLAVOR) ]) AC_DEFUN(AC_PATH_LISPDIR, [ AC_XEMACS_P if test "$prefix" = "NONE"; then AC_MSG_CHECKING([prefix for your Emacs]) AC_EMACS_LISP(prefix,(expand-file-name \"..\" invocation-directory),"noecho") prefix=${EMACS_cv_SYS_prefix} AC_MSG_RESULT($prefix) fi AC_ARG_WITH(lispdir, --with-lispdir Where to install lisp files, lispdir=${withval}) AC_MSG_CHECKING([where .elc files should go]) if test -z "$lispdir"; then dnl Set default value theprefix=$prefix if test "x$theprefix" = "xNONE"; then theprefix=$ac_default_prefix fi lispdir="\$(datadir)/${EMACS_FLAVOR}/site-lisp" for thedir in share lib; do potential= if test -d ${theprefix}/${thedir}/${EMACS_FLAVOR}/site-lisp; then lispdir="\$(prefix)/${thedir}/${EMACS_FLAVOR}/site-lisp" break fi done fi AC_MSG_RESULT($lispdir) AC_SUBST(lispdir) ]) dnl dnl Determine the emacs version we are running. dnl Automatically substitutes @EMACS_VERSION@ with this number. dnl AC_DEFUN(AC_EMACS_VERSION, [ AC_MSG_CHECKING(for emacs version) AC_EMACS_LISP(version,(and (boundp 'emacs-major-version) (format \"%d.%d\" emacs-major-version emacs-minor-version)),"noecho") EMACS_VERSION=${EMACS_cv_SYS_version} AC_SUBST(EMACS_VERSION) AC_MSG_RESULT(${EMACS_VERSION}) ]) dnl dnl Determine whether the specified version of Emacs supports packages dnl or not. Currently, only XEmacs 20.3 does, but this is a general dnl check. dnl AC_DEFUN(AC_EMACS_PACKAGES, [ AC_ARG_WITH(package-dir, --with-package-dir Configure as a XEmacs package in directory, [ EMACS_PACKAGE_DIR="${withval}"]) if test -n "$EMACS_PACKAGE_DIR"; then if test "$prefix" != "NONE"; then AC_MSG_ERROR([--with-package-dir and --prefix are mutually exclusive]) fi dnl Massage everything to use $(prefix) correctly. prefix=$EMACS_PACKAGE_DIR datadir='$(prefix)/etc/w3' infodir='$(prefix)/info' lispdir='$(prefix)/lisp/w3' fi AC_SUBST(EMACS_PACKAGE_DIR) ]) 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 ]) dnl dnl Check whether a variable exists in a library dnl All '_' characters in the first argument are converted to '-' dnl AC_DEFUN(AC_EMACS_CHECK_VAR, [ AC_MSG_CHECKING(for $2 in $1) library=`echo $1 | tr _ -` AC_EMACS_LISP($1,(progn (makunbound '$2) (condition-case nil (progn (require '$library) (boundp '$2)) (error nil))),"noecho") if test "${EMACS_cv_SYS_$1}" = "nil"; then EMACS_cv_SYS_$1=no fi HAVE_$1=${EMACS_cv_SYS_$1} AC_SUBST(HAVE_$1) AC_MSG_RESULT($HAVE_$1) ]) dnl dnl Perform sanity checking and try to locate the custom and widget packages dnl AC_DEFUN(AC_CHECK_CUSTOM, [ AC_MSG_CHECKING(for acceptable custom library) AC_CACHE_VAL(EMACS_cv_ACCEPTABLE_CUSTOM,[ AC_EMACS_CHECK_LIB(widget,widget-convert-text,"noecho") AC_EMACS_CHECK_LIB(wid_edit,widget-convert-text,"noecho") if test "${HAVE_widget}" = "yes"; then EMACS_cv_ACCEPTABLE_CUSTOM=yes else if test "${HAVE_wid_edit}" != "no"; then EMACS_cv_ACCEPTABLE_CUSTOM=yes else EMACS_cv_ACCEPTABLE_CUSTOM=no fi fi if test "${EMACS_cv_ACCEPTABLE_CUSTOM}" = "yes"; then AC_EMACS_LISP(widget_dir,(file-name-directory (locate-library \"widget\")),"noecho") EMACS_cv_ACCEPTABLE_CUSTOM=$EMACS_cv_SYS_widget_dir fi ]) AC_ARG_WITH(custom, --with-custom Specify where to find the custom package, [ EMACS_cv_ACCEPTABLE_CUSTOM=`( cd $withval && pwd || echo "$withval" ) 2> /dev/null` ]) CUSTOM=${EMACS_cv_ACCEPTABLE_CUSTOM} AC_SUBST(CUSTOM) AC_MSG_RESULT("${CUSTOM}") ])