dnl Autoconf script for AUCTeX

dnl Maintainer: auctex-devel@gnu.org

dnl Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.

dnl This file is part of AUCTeX.

dnl AUCTeX is free software; you can redistribute it and/or modify it
dnl under the terms of the GNU General Public License as published by
dnl the Free Software Foundation; either version 3, or (at your option)
dnl any later version.

dnl AUCTeX is distributed in the hope that it will be useful, but
dnl WITHOUT ANY WARRANTY; without even the implied warranty of
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
dnl General Public License for more details.

dnl You should have received a copy of the GNU General Public License
dnl along with AUCTeX; see the file COPYING.  If not, write to the Free
dnl Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
dnl MA 02110-1301, USA.

AC_INIT(auctex,12.1,bug-auctex@gnu.org)

AC_CHECK_PROGS_REQUIRED(MAKECMD, make, [make not found, aborting!])
AC_PROG_MAKE_SET
AC_PROG_INSTALL

AC_DATE_VERSION_FROM_CHANGELOG(AUCTEXDATE,AUCTEXVERSION,ChangeLog.1)
AC_SUBST(AUCTEXDATE)
AC_SUBST(AUCTEXVERSION)

AC_DATE_VERSION_FROM_CHANGELOG(PREVIEWDATE,PREVIEWVERSION,ChangeLog-preview)
AC_SUBST(PREVIEWDATE)
AC_SUBST(PREVIEWVERSION)

EMACS_PROG_EMACS

if test ${EMACS_FLAVOR} = xemacs
then
  EMACS_CHECK_VERSION(21,4)
else
  EMACS_CHECK_VERSION(21,1)
fi

EMACS_CHECK_MULE

# The Debian package uses `--disable-build-dir-test'; normal users should
# never need to modify the default behavior.
AC_ARG_ENABLE([build-dir-test],
  [  --enable-build-dir-test test for build directory inside `load-path'
			  (on by default)],
  [if ! [[ "X-${enableval}" = "X-no" ]]
     then VALID_BUILD_DIR
   fi],
  [VALID_BUILD_DIR])

AC_ARG_ENABLE(preview,
  [  --disable-preview       disable inclusion of preview-latex],
  [preview_enabled="$enableval"],
  [preview_enabled="yes"])
AC_SUBST(preview_enabled)

if test ${EMACS_FLAVOR} = "xemacs"  ; then
   EMACS_PATH_PACKAGEDIR
   PLAT_LISP=prv-xemacs.el
else
   packagedir=no
   PLAT_LISP=prv-emacs.el
fi

if test "X${packagedir}" = Xno
then
   EMACS_PATH_LISPDIR
   AC_MSG_CHECKING(what file to use for auctex startup)
   AC_ARG_WITH(auctexstartfile,
   [[  --with-auctexstartfile=FILE    What file to use for auctex startup.]],
   [[ auctexstartfile="${withval}" ]],
   [ _tmpdir_="${lispdir}"
     AC_FULL_EXPAND(_tmpdir_)
     if test -d "${_tmpdir_}/site-start.d"
     then
       auctexstartfile="${lispdir}/site-start.d/auctex.el"
     else
       auctexstartfile="${lispdir}/auctex.el"
     fi])
   AC_MSG_RESULT([[${auctexstartfile}]])

   AC_MSG_CHECKING(what file to use for preview startup)
   AC_ARG_WITH(previewstartfile,
   [[  --with-previewstartfile=FILE    What file to use for preview startup.]],
   [[ previewstartfile="${withval}" ]],
   [ _tmpdir_="${lispdir}"
     AC_FULL_EXPAND(_tmpdir_)
     if test -d "${_tmpdir_}/site-start.d"
     then
       previewstartfile="${lispdir}/site-start.d/preview-latex.el"
     else
       previewstartfile="${lispdir}/preview-latex.el"
     fi])
   AC_MSG_RESULT([[${previewstartfile}]])

   packagelispdir="${lispdir}/auctex"
   packagedatadir="${packagelispdir}"
   texsitedir="${lispdir}"
else
   #lispdir is only used for determining relative files.
   lispdir="${packagedir}"
   packagelispdir="${packagedir}/lisp/auctex"
   texsitedir="$packagelispdir"
   auctexstartfile="${packagelispdir}"/auto-autoloads.el
   previewstartfile="${packagelispdir}"/auto-autoloads.el
   packagedatadir="${packagedir}/etc/auctex"
   infodir="${packagedir}/info"
   INSTALL_INFO=:
fi

AC_SUBST(auctexstartfile)
AC_SUBST(previewstartfile)
AC_SUBST(PLAT_LISP)

AC_MSG_CHECKING([where the package lisp files go])
AC_ARG_WITH(packagelispdir,
[[  --with-packagelispdir=DIR
                        Directory for the package lisp files.]],
  [packagelispdir=["${withval}"]])
AC_LISPIFY_DIR(packagelispdir,[["${texsitedir}/tex-site.el"]])
AC_MSG_RESULT([[${packagelispdir}]])

AC_MSG_CHECKING([where the data files go])
AC_ARG_WITH(packagedatadir,
[[  --with-packagedatadir=DIR         Where the data files go.]],
  [packagedatadir=["${withval}"]])
AC_LISPIFY_DIR(packagedatadir,[["${texsitedir}/tex-site.el"]])
AC_MSG_RESULT([[${packagedatadir}]])

AC_LISPIFY_DIR(texsite,[["${auctexstartfile}"]],tex-site.el)

AC_MSG_CHECKING(where the info files go)
AC_MSG_RESULT([[${infodir}]])

AC_SUBST(packagedir)

if test $EMACS_FLAVOR = "xemacs" -a "$infodir" = '${prefix}/info'; then
  if test $packagedir != 'no'; then
   infodir='${packagedir}/info'
  fi
fi

AUCTEX_AUTO_DIR
AC_LISPIFY_DIR(autodir,"${texsitedir}/tex-site.el")

AC_PATH_PROG(TEX, tex, :)
AC_PATH_PROG(PDFTEX, pdftex, :)
AC_PATH_PROG(DVIPS, dvips, :)


dnl Preview related options.
if test "X${preview_enabled}" = Xyes
then
   AC_ARG_VAR(GS,[Ghostscript executable for batch operation])
   AC_CHECK_PROGS(GS, gs GSWIN32C.EXE, NONE)

   EMACS_LISP([[lispGS]],[[(if (member dir (list \"NONE\" (if (eq system-type 'windows-nt) \"GSWIN32C.EXE\" \"gs\"))) \"\" \`(defvar preview-gs-command ,dir))]],-no-site-file,[[dir]],[["${GS}"]])
   AC_SUBST(lispGS)

   dnl check to see if GS supports -dTextAlphaBits and -dGraphicsAlphaBits
   dnl Check to see if specific drivers are built in.
   dnl Need table of mappings, with priority

   AC_PATH_PROG_REQUIRED(LATEX, latex, [LaTeX not found, aborting!
   You must install LaTeX for preview to work.])

   AC_PATH_PROG(PDFLATEX, pdflatex)

   # Determine which latex-style components to install
   # To match .sty, .def, .cfg, but _not_ .drv
   TEXMFGEN=[`sed -n 's/^%<installer>.*file[{]\\([^}.]*\\.[sdc][tef][yfg]\\)[}].*/\\1/p' latex/preview.dtx`]
   # Replace newlines with spaces.
   TEXMFGEN="`echo ${TEXMFGEN}`"
   AC_SUBST(TEXMFGEN)

   AC_PATH_PROG_REQUIRED(TEX, tex, NONE)

   TEX_PATH_TEXMFDIR

   if test "x${texmfdir}" = "xno"
   then
     packagetexstyles="${packagedatadir}/latex"
     AC_LISPIFY_DIR(packagetexstyles,"${previewstartfile}")
     lisppackagetexstyles="(defvar preview-TeX-style-dir ${lisppackagetexstyles})"
     test "X${TEXHASH}" = X && TEXHASH=:
   else
     lisppackagetexstyles=
   fi
   AC_SUBST(lisppackagetexstyles)

   # Be very careful about assuming things about the available hash programs
   # MiKTeX comes with a braindead link to mktexlsr, apparently, so first
   # try the regular utility from them.
   AC_ARG_VAR(TEXHASH,[command to update the TeX filename database.
   Set to : to skip updating the database on installation.
   This is the default for --without-texmf-dir])

   if test "X${TEXHASH}" = "X"
   then
     AC_PATH_PROG(TEXHASH, texhash)
     AC_CHECK_PROG(TEXHASH, initexmf, initexmf -u)
     if test "X${TEXHASH}" = X
     then
        AC_PATH_PROGS(TEXHASH, mktexlsr MakeTeXls-R, :)
     fi
   fi

   AC_MSG_CHECKING([[for glaring installation conflicts]])
   exppackagelispdir="$packagelispdir"
   AC_FULL_EXPAND(exppackagelispdir)
   exppreviewstartfile="$previewstartfile"
   AC_FULL_EXPAND(exppreviewstartfile)

   EMACS_LISP(shadows,[[
     (concat
       (and (setq tmp (locate-library \"preview.elc\"))
            (not (string= (file-truename tmp)
                       (file-truename (expand-file-name \"preview.elc\"
                                         packagelispdir))))
            (format \"Conflicting previous installation in \`%s' found!\n\"
                    (file-name-directory tmp)))
       (and (setq tmp (locate-library \"preview-latex.el\"))
            (not (string= (file-truename tmp)
                          (file-truename previewstartfile)))
            (format \"Conflicting previous startup file \`%s' found!\n\" tmp)))]],,
     [[packagelispdir previewstartfile]],[["${exppackagelispdir}" "${exppreviewstartfile}"]])
   if test "NONE${shadows}" != NONE
   then
     conflictsmsg="Conflicts with previous installations have been detected.
   Please fix them before continuing.
   "
     AC_MSG_RESULT([[ouch!
   ]])
   AC_MSG_WARN([[${shadows}
   ]])
   else
     conflictsmsg=
     AC_MSG_RESULT([[probably none]])
   fi

   AC_SHELL_QUOTIFY(texmfdir)
   AC_SHELL_QUOTIFY(exec_prefix)
   AC_SHELL_QUOTIFY(libdir)
   AC_SHELL_QUOTIFY(previewtexmfdir)
   AC_SHELL_QUOTIFY(previewdocdir)
   AC_SHELL_QUOTIFY(previewstartfile)
   AC_SHELL_QUOTIFY(auctexdir)
   AC_SHELL_QUOTIFY(datadir)
   AC_SHELL_QUOTIFY(GS)
   AC_SHELL_QUOTIFY(TEXHASH)
   AC_SHELL_QUOTIFY(LATEX)
   AC_SHELL_QUOTIFY(PDFLATEX)
fi

AC_ARG_VAR(PERL,[Perl executable.  If set to :, some documentation
cannot be regenerated, but installation of an unmodified tarball will
succeed.])

if test "x$PERL" = x
then
   AC_PATH_PROG(PERL, perl, :)
fi

AC_ARG_VAR(MAKEINFO,[Makeinfo executable.  If set to :, some documentation
cannot be regenerated, but installation of an unmodified tarball will
succeed.])

AC_PATH_PROG(MAKEINFO, makeinfo, :)
AC_PATH_PROG(TEXI2HTML, texi2html, :)
AC_PATH_PROG(TEXI2DVI, texi2dvi, :)
AC_PATH_PROG(TEXI2PDF, texi2pdf, :)

AC_ARG_VAR(INSTALL_INFO, [install-info executable.  Set to : to skip making a dir file.  This is the default when installing into an XEmacs package.])

if test "X${INSTALL_INFO}" = X
then
  AC_PATH_PROG(INSTALL_INFO, install-info, :, ${PATH} /usr/sbin /sbin)
fi

AC_SHELL_QUOTIFY(prefix)
AC_SHELL_QUOTIFY(localstatedir)
AC_SHELL_QUOTIFY(packagedir)
AC_SHELL_QUOTIFY(packagelispdir)
AC_SHELL_QUOTIFY(packagedatadir)
AC_SHELL_QUOTIFY(lispdir)
AC_SHELL_QUOTIFY(infodir)
AC_SHELL_QUOTIFY(datadir)
AC_SHELL_QUOTIFY(autodir)
AC_SHELL_QUOTIFY(auctexstartfile)
AC_SHELL_QUOTIFY(EMACS)
AC_SHELL_QUOTIFY(INSTALL_INFO)
AC_SHELL_QUOTIFY(PERL)
AC_SHELL_QUOTIFY(MAKEINFO)
AC_SHELL_QUOTIFY(TEX)
AC_SHELL_QUOTIFY(PDFTEX)
AC_SHELL_QUOTIFY(DVIPS)
AC_SHELL_QUOTIFY(TEXI2HTML)
AC_SHELL_QUOTIFY(TEXI2DVI)
AC_SHELL_QUOTIFY(TEXI2PDF)

AC_OUTPUT(Makefile tex-site.el.out:tex-site.el.in doc/Makefile auctex.el preview.el latex/Makefile)


cat >&2 <<EOF

Congratulations!  Configuration of AUCTeX is complete.

Type "make" at the prompt to build.
EOF
