]> git.lyx.org Git - lyx.git/blobdiff - lib/configure.m4
update OSX instructions
[lyx.git] / lib / configure.m4
index ecbe17841ba48dc573a61bfab3b561718b24a351..0068529700869b72b1c60c37fa7e9d97adff6f07 100644 (file)
@@ -29,7 +29,7 @@ dnl
 define(SEARCH_PROG,[dnl
 changequote([,])dnl
 MSG_CHECKING($1)
-MSG_RESULT(($3))
+MSG_RESULT()
 $2=
 for ac_prog in $3
 do
@@ -38,14 +38,15 @@ set dummy $ac_prog ; ac_word=$[2]
 if test -n "$ac_word"; then
   MSG_CHECKING([for \"$ac_word\"],[+])
   IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
+  save_PATH=$PATH ; PATH=:$PATH
+  for ac_dir in ${PATH} ; do
     if test -x [$ac_dir/$ac_word]; then
       $2="$ac_prog"
       break
     fi
   done
   IFS="$ac_save_ifs"
+  PATH=$save_PATH
 
   if test -n "[$]$2"; then
     ac_result=yes
@@ -94,6 +95,16 @@ changequote(,)dnl
 dnl ######### End M4 macros #############################################
 
 
+# Be Bourne compatible (taken from autoconf 2.53)
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+  set -o posix
+fi
+
+
+
 ####some configuration variables
 outfile=lyxrc.defaults
 rc_entries=
@@ -157,22 +168,39 @@ ac_prog=[$]0
 changequote(,)dnl
 srcdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
 srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
-test "x$srcdir" = "x$ac_prog" && srcdir=.
-if test ! -r ${srcdir}/chkconfig.ltx ; then
+test "x${srcdir}" = "x$ac_prog" && srcdir=.
+if test ! -r "${srcdir}"/chkconfig.ltx ; then
   echo "configure: error: cannot find chkconfig.ltx script"
   exit 1
 fi
 
 #### Adjust PATH for Win32 (Cygwin)
-if test "x$OSTYPE" = xcygwin; then
-  echo "configure: cygwin detected; path correction"
-  srcdir=`cygpath -w "${srcdir}" | tr '\\\\' /`
-  echo "srcdir=${srcdir}"
-fi
+use_cygwin_path_fix=''
+case `uname -s` in
+   CYGWIN*)
+     tmpfname="/tmp/x$$.ltx";
+     echo "\\documentstyle{article}" > $tmpfname
+     echo "\\begin{document}\\end{document}" >> $tmpfname
+     inpname=`cygpath -w $tmpfname | tr '\\\\' /`
+     echo "\\input{$inpname}" > wrap_temp$$.ltx
+     check_err=`latex wrap_temp$$.ltx 2>&1 < /dev/null | grep Error`
+     rm -f wrap_temp$$.* /tmp/x$$.*
+     if [ x"$check_err" = "x" ]
+     then
+       echo "configure: cygwin detected; path correction"
+       srcdir=`cygpath -w "${srcdir}" | tr '\\\\' /`
+       echo "srcdir=${srcdir}"
+       use_cygwin_path_fix='true'
+     else
+       echo "configure: cygwin detected; path correction is not needed"
+       use_cygwin_path_fix='false'
+     fi
+     ;;
+esac
 
 #### Create the build directories if necessary
-for dir in bind clipart doc examples help images kbd layouts reLyX \
-    scripts templates ui xfonts; do
+for dir in bind clipart doc examples images kbd layouts \
+    scripts templates ui ; do
   test ! -d $dir && mkdir $dir
 done
 
@@ -198,7 +226,7 @@ fi
 rm -f chklatex.ltx chklatex.log])dnl
 dnl
 # Search LaTeX2e
-SEARCH_PROG([for a LaTeX2e program],LATEX,latex latex2e,CHECKLATEX2E,dnl
+SEARCH_PROG([for a LaTeX2e program],LATEX,pplatex latex2e latex,CHECKLATEX2E,dnl
   [lyx_check_config=no])
 latex_to_dvi=$LATEX
 test -z "$latex_to_dvi" && latex_to_dvi="none"
@@ -213,62 +241,85 @@ fi
 test $latex_to_dvi != "none" && latex_to_dvi="$latex_to_dvi \$\$i"
 test $latex_to_pdf != "none" && latex_to_pdf="$latex_to_pdf \$\$i"
 
-# Search for an installed reLyX or a ready-to-install one
-save_PATH=${PATH}
-PATH=${PATH}:./reLyX/
-SEARCH_PROG([for a LaTeX -> LyX converter],tex_to_lyx_command,reLyX)
-PATH=${save_PATH}
-test $tex_to_lyx_command = "reLyX" && tex_to_lyx_command="reLyX -f \$\$i"
-tex_to_lyx_command=`echo $tex_to_lyx_command | sed "s,reLyX,reLyX$version_suffix,"`
+SEARCH_PROG([for a Tgif viewer and editor], TGIF_EDITOR, tgif)
+TGIF_VIEWER="$TGIF_EDITOR"
+
+SEARCH_PROG([for a FIG viewer and editor], FIG_EDITOR, xfig)
+FIG_VIEWER="$FIG_EDITOR"
+
+SEARCH_PROG([for a Grace viewer and editor], GRACE_EDITOR, xmgrace)
+GRACE_VIEWER="$GRACE_EDITOR"
+
+SEARCH_PROG([for a FEN viewer and editor], FEN_EDITOR, "xboard -lpf \$\$i -mode EditPosition")
+FEN_VIEWER="$FEN_EDITOR"
+
+SEARCH_PROG([for a raster image viewer], RASTERIMAGE_VIEWER, xv kview gimp)
+
+SEARCH_PROG([for a raster image editor], RASTERIMAGE_EDITOR, gimp)
+
+SEARCH_PROG([for a text editor], TEXT_EDITOR, xemacs gvim kedit kwrite kate nedit gedit notepad)
 
-SEARCH_PROG([for a Noweb -> LyX converter],literate_to_lyx_command,noweb2lyx)
-test $literate_to_lyx_command = "noweb2lyx" && literate_to_lyx_command="noweb2lyx \$\$i \$\$o"
+# Search for an installed tex2lyx or a ready-to-install one
+SEARCH_PROG([for a LaTeX -> LyX converter],tex_to_lyx_command, "$PWD/../src/tex2lyx/tex2lyx -f \$\$i \$\$o" "tex2lyx$version_suffix -f \$\$i \$\$o")
+
+SEARCH_PROG([for a Noweb -> LyX converter],literate_to_lyx_command,"noweb2lyx \$\$i \$\$o")
 literate_to_lyx_command=`echo $literate_to_lyx_command | sed "s,noweb2lyx,noweb2lyx$version_suffix,"`
 
 # Search something to process a literate document
-SEARCH_PROG([for a Noweb -> LaTeX converter],literate_to_tex_command,noweave)
-test $literate_to_tex_command = "noweave" && literate_to_tex_command="noweave -delay -index \$\$i > \$\$o"
+SEARCH_PROG([for a Noweb -> LaTeX converter],literate_to_tex_command,"noweave -delay -index \$\$i > \$\$o")
+
+SEARCH_PROG([for an HTML -> LaTeX converter],html_to_latex_command, "html2latex \$\$i")
+
+SEARCH_PROG([for an MS Word -> LaTeX converter],word_to_latex_command, "wvCleanLatex \$\$i \$\$o")
 
-SEARCH_PROG([for a HTML -> Latex converter],html_to_latex_command,html2latex)
-test $html_to_latex_command = "html2latex" && html_to_latex_command="html2latex \$\$i"
+# tex4ht generates HTML output that is well-suited for MS Word
+SEARCH_PROG([for a LaTeX -> MS Word converter],latex_to_word_command, "htlatex")
+test "$latex_to_word_command" = "htlatex" && latex_to_word_command="htlatex \$\$i 'html,word' 'symbol/!' '-cvalidate'"
 
-SEARCH_PROG([for a MSWord -> Latex converter],word_to_latex_command,wvCleanLatex word2x)
-test "$word_to_latex_command" = "wvCleanLatex" && word_to_latex_command="wvCleanLatex \$\$i \$\$o"
-test "$word_to_latex_command" = "word2x" && word_to_latex_command="word2x -f latex \$\$i"
 
-SEARCH_PROG([for Image converter],image_command,convert)
-test $image_command = "convert" && image_command="convert \$\$i \$\$o"
 
-# Search for a Postscript interpreter
-LYXRC_PROG([for a Postscript interpreter], \ps_command, gs)
+SEARCH_PROG([for Image converter],image_command, "convert \$\$i \$\$o")
+
+SEARCH_PROG([for an OpenOffice.org -> LaTeX converter],sxw_to_latex_command, "w2l -clean \$\$i")
+
+# oolatex is the original name, SuSE has oolatex.sh
+SEARCH_PROG([for a LaTeX -> OpenOffice.org converter],latex_to_sxw_command, "oolatex \$\$i" "oolatex.sh \$\$i")
 
 # Search something to preview postscript
-SEARCH_PROG([for a Postscript previewer],GHOSTVIEW,gv ghostview)
+SEARCH_PROG([for a Postscript previewer],PS_VIEWER,gsview32 gv "ghostview -swap" kghostview)
+EPS_VIEWER=$PS_VIEWER
 
 # Search for a program to preview pdf
-SEARCH_PROG([for a PDF preview],PDF_VIEWER,acroread gv ghostview xpdf)
+SEARCH_PROG([for a PDF previewer],PDF_VIEWER, acrobat acrord32 gsview32 acroread gv ghostview xpdf kpdf kghostview)
 
 # Search something to preview dvi
-SEARCH_PROG([for a DVI previewer],DVI_VIEWER, xdvi windvi yap)
+SEARCH_PROG([for a DVI previewer],DVI_VIEWER, xdvi windvi yap kdvi)
 
 # Search something to preview html
-SEARCH_PROG([for a HTML previewer],HTML_VIEWER, netscape)
+SEARCH_PROG([for a HTML previewer],HTML_VIEWER, "mozilla file://\$\$p\$\$i" netscape)
 
 # Search for a program to convert ps to pdf
-SEARCH_PROG([for a PS to PDF converter],ps_to_pdf_command,ps2pdf)
-test $ps_to_pdf_command = "ps2pdf" && ps_to_pdf_command="ps2pdf \$\$i"
+SEARCH_PROG([for a PS to PDF converter],ps_to_pdf_command, "ps2pdf13 \$\$i")
 
 # Search for a program to convert dvi to ps
-SEARCH_PROG([for a DVI to PS converter],dvi_to_ps_command,dvips)
-test $dvi_to_ps_command = "dvips" && dvi_to_ps_command="dvips -o \$\$o \$\$i"
+SEARCH_PROG([for a DVI to PS converter],dvi_to_ps_command, "dvips -o \$\$o \$\$i")
 
 # Search for a program to convert dvi to pdf
-SEARCH_PROG([for a DVI to PDF converter],dvi_to_pdf_command,dvipdfm)
-test $dvi_to_pdf_command = "dvipdfm" && dvi_to_pdf_command="dvipdfm \$\$i"
+SEARCH_PROG([for a DVI to PDF converter],dvi_to_pdf_command, "dvipdfm \$\$i")
+
+# We have a script to convert previewlyx to ppm or to png
+lyxpreview_to_bitmap_command='python $$s/scripts/lyxpreview2bitmap.py'
+
+# Search for 'dvipng'. Only enable the conversion from lyxpreview -> png
+# if dvipng is found.
+SEARCH_PROG([for dvipng],DVIPNG,dvipng)
+
+test "$DVIPNG" = "dvipng" && \
+       lyxpreview_to_png_command=$lyxpreview_to_bitmap_command
 
 # Search a *roff program (used to translate tables in ASCII export)
 LYXRC_PROG([for a *roff formatter], \ascii_roff_command, dnl
-  'groff -t -Tlatin1 $$FName' nroff,dnl
+  "groff -t -Tlatin1 \$\$FName" nroff,dnl
   test "$prog" = "nroff" && prog='tbl $$FName | nroff')
 
 # Search the ChkTeX program
@@ -276,7 +327,11 @@ LYXRC_PROG([for ChkTeX], \chktex_command,dnl
    "chktex -n1 -n3 -n6 -n9 -n22 -n25 -n30 -n38")
 
 # Search for a spellchecker
-LYXRC_PROG([for a spell-checker], \spell_command, ispell)
+LYXRC_PROG([for a spellchecker], \spell_command, ispell)
+
+# Search for computer algebra systems
+SEARCH_PROG([for Octave],OCTAVE,octave)
+SEARCH_PROG([for Maple],MAPLE,maple)
 
 dnl # Search a Fax handling program
 dnl SEARCH_PROG([for a fax driver], FAX, sendfax faxsend fax)
@@ -291,15 +346,17 @@ dnl   fax_command="none"
 dnl fi
 
 # Search a GUI Fax program
-SEARCH_PROG([for a fax program], fax_command, ksendfax)
-test $fax_command = "ksendfax" && fax_command="ksendfax \$\$i"
+SEARCH_PROG([for a fax program], fax_command, "kdeprintfax \$\$i" "ksendfax \$\$i")
 
 # Search for LinuxDoc support
 SEARCH_PROG([for SGML-tools 1.x (LinuxDoc)], LINUXDOC, sgml2lyx)
-chk_linuxdoc=no
 if test $LINUXDOC != none; then
   chk_linuxdoc=yes
+  bool_linuxdoc=true
   linuxdoc_cmd="\\def\\haslinuxdoc{yes}"
+else
+  chk_linuxdoc=no
+  bool_linuxdoc=false
 fi
 
 case $LINUXDOC in
@@ -317,10 +374,13 @@ esac
 
 # Search for DocBook support
 SEARCH_PROG([for SGML-tools 2.x (DocBook) or db2x scripts], DOCBOOK, sgmltools db2dvi)
-chk_docbook=no
 if test $DOCBOOK != none; then
   chk_docbook=yes
+  bool_docbook=true
   docbook_cmd="\\def\\hasdocbook{yes}"
+else
+  chk_docbook=no
+  bool_docbook=false
 fi
 
 case $DOCBOOK in
@@ -344,74 +404,11 @@ case $prog in
 esac
 LYXRC_VAR(\print_spool_printerprefix, $print_spool_printerprefix)
 
-SEARCH_PROG([for a LaTeX -> HTML converter], TOHTML, tth latex2html hevea)
-latex_to_html_command=$TOHTML
-case $TOHTML in
-       tth) latex_to_html_command="tth -t -e2 -L\$\$b < \$\$i > \$\$o";;
- latex2html) latex_to_html_command="latex2html -no_subdir -split 0 -show_section_numbers \$\$i";;
-      hevea) latex_to_html_command="hevea -s \$\$i";;
-esac
-
-#### Search for image conversion ####
-SEARCH_PROG([for an Image -> EPS converter], TOEPS, convert pnmtops)
-case $TOEPS in
-  convert)
-    bmp_to_eps="convert BMP:\$\$i EPS:\$\$o"
-    fits_to_eps="convert FITS:\$\$i EPS:\$\$o"
-    gif_to_eps="convert GIF:\$\$i EPS:\$\$o"
-    jpg_to_eps="convert JPG:\$\$i EPS:\$\$o"
-    pbm_to_eps="convert PBM:\$\$i EPS:\$\$o"
-    pgm_to_eps="convert PGM:\$\$i EPS:\$\$o"
-    png_to_eps="convert PNG:\$\$i EPS:\$\$o"
-    ppm_to_eps="convert PPM:\$\$i EPS:\$\$o"
-    sgi_to_eps="convert SGI:\$\$i EPS:\$\$o"
-    xbm_to_eps="convert XBM:\$\$i EPS:\$\$o"
-    xwd_to_eps="convert XWD:\$\$i EPS:\$\$o"
-    xpm_to_eps="convert XPM:\$\$i EPS:\$\$o" ;;
-  pnmtops) gif_to_eps="giftopnm \$\$i | pnmtops > \$\$o"
-    png_to_eps="pngtopnm \$\$i | pnmtops >\$\$o"
-    jpg_to_eps="jpegtopnm \$\$i | pnmtops >\$\$o";;
-esac
-
-SEARCH_PROG([for an Image -> PNG converter], TOPNG, convert pnmtopng)
-case $TOPNG in
-  convert)
-    gif_to_png="convert GIF:\$\$i PNG:\$\$o"
-    eps_to_png="convert EPS:\$\$i PNG:\$\$o"
-    jpg_to_png="convert JPG:\$\$i PNG:\$\$o";;
-  pnmtopng)
-    gif_to_png="giftopnm \$\$i | pnmtopng >\$\$o"
-    eps_to_png="pstopnm \$\$i| pnmtopng >\$\$o"
-    jpg_to_png="jpegtopnm \$\$i | pnmtopng >\$\$o";;
-esac
-
-SEARCH_PROG([for an Image -> XPM converter], TOXPM, convert)
-if test "$TOXPM" = "convert"; then
-  gif_to_xpm="convert GIF:\$\$i XPM:\$\$o"
-  eps_to_xpm="convert EPS:\$\$i XPM:\$\$o"
-  jpg_to_xpm="convert JPG:\$\$i XPM:\$\$o"
-  png_to_xpm="convert PNG:\$\$i XPM:\$\$o"
-  ps_to_xpm="convert PS:\$\$i XPM:\$\$o"
-  xbm_to_xpm="convert XBM:\$\$i XPM:\$\$o"
-fi
-
-SEARCH_PROG([for an EPS -> PDF converter], EPSTOPDF, epstopdf)
-case $EPSTOPDF in
-  epstopdf) eps_to_pdf="epstopdf --outfile=\$\$o \$\$i";;
-esac
-
-#### Add Grace conversions (xmgrace needs an Xserver, gracebat doesn't.)
-SEARCH_PROG([for a Grace -> Image converter], GRACE, gracebat)
-case $GRACE in
- gracebat) 
-   for device in `gracebat -version 2>/dev/null | grep "^Dummy"` ; do
-     case $device in
-       EPS) agr_to_eps="gracebat -hardcopy -printfile \$\$o -hdevice $device \$\$i 2>/dev/null";;
-       PDF) agr_to_pdf="gracebat -hardcopy -printfile \$\$o -hdevice $device \$\$i 2>/dev/null";;
-       PNG) agr_to_png="gracebat -hardcopy -printfile \$\$o -hdevice $device \$\$i 2>/dev/null";;
-     esac
-   done 
-esac
+SEARCH_PROG([for a LaTeX -> HTML converter], latex_to_html_command,dnl
+ "htlatex \$\$i" dnl
+ "tth -t -e2 -L\$\$b < \$\$i > \$\$o" dnl
+ "latex2html -no_subdir -split 0 -show_section_numbers \$\$i" dnl
+ "hevea -s \$\$i")
 
 #### Explore the LaTeX configuration
 MSG_CHECKING(LaTeX configuration)
@@ -419,45 +416,110 @@ MSG_CHECKING(LaTeX configuration)
 rm -f textclass.lst packages.lst chkconfig.sed
 if test ${lyx_check_config} = no ; then
   MSG_RESULT(default values)
+  MSG_CHECKING(list of textclasses,+)
+  cat >textclass.lst <<EOF
+# This file declares layouts and their associated definition files
+# (include dir. relative to the place where this file is).
+# It contains only default values, since chkconfig.ltx could not be run
+# for some reason. Run ./configure if you need to update it after a
+# configuration change.
+EOF
+  # build the list of available layout files and convert it to entries
+  # for the default textclass.lst file
+  for file in ./layouts/*.layout "${srcdir}"/layouts/*.layout ; do
+    case $file in
+      */\*.layout) ;;
+      *) if test -r "$file" ; then
+           class=`echo $file | sed -e 's%^.*layouts/\(.*\)\.layout$%\1%'`
+           cleanclass=`echo $class | tr ' -' '__'`
+changequote([,])dnl
+           # make sure the same class is not considered twice
+           if test  x`[eval] echo $ac_n '${found_'$cleanclass'}'` = x ; then
+             [eval] "found_$cleanclass=yes"
+changequote(,)dnl
+            sed -n '
+# We manipulate only those lines that contain
+# "\Declare(LaTeX|DocBook|LinuxDoc)Class"
+/\\DeclareLaTeXClass/bmatch
+/\\DeclareDocBookClass/bmatch
+/\\DeclareLinuxDocClass/bmatch
+b
+
+:match
+# Remove the \DeclareFOOClass macro and add the correct boolean
+# at the end of the line telling whether the class is
+# available
+s/^.*\DeclareLaTeXClass *\(.*\)/\1 "false"/
+s/^.*\DeclareDocBookClass *\(.*\)/\1 "'$bool_docbook'"/
+s/^.*\DeclareLinuxDocClass *\(.*\)/\1 "'$bool_linuxdoc'"/
+# If the macro had an optional argument with several
+# parameters, only keep the first one
+s/\[\([^,]*\),[^]]*\]/[\1]/
+# If the macro did not have an optional argument, provide one
+# (equal to the class name)
+s/^{/['$class']{/
+# Remove brackets and replace with correctly quoted entries
+s/\[\([^]]*\)\] *{\([^}]*\)}/"'$class'" "\1" "\2"/
+# Print the maninpulated text
+p
+# We are interested in the first instance of \DeclareFOOClass only,
+# so now quit
+q
+' "$file" >> textclass.lst
+           fi
+        fi ;;
+    esac
+  done
+  MSG_RESULT(done)
 else
   MSG_RESULT(auto)
   rm -f wrap_chkconfig.ltx chkconfig.vars chkconfig.classes chklayouts.tex
+  if test ! -r "chkconfig.ltx" ; then
+    cp "${srcdir}"/chkconfig.ltx .
+    rmcopy=true
+  fi
   cat >wrap_chkconfig.ltx <<EOF
-\\newcommand\\srcdir{${srcdir}}
 ${linuxdoc_cmd}
 ${docbook_cmd}
-\\input{${srcdir}/chkconfig.ltx}
+\\input{chkconfig.ltx}
 EOF
   ## Construct the list of classes to test for.
   # build the list of available layout files and convert it to commands
   # for chkconfig.ltx
-  for file in ./layouts/*.layout ${srcdir}/layouts/*.layout ; do
+  for file in ./layouts/*.layout "${srcdir}"/layouts/*.layout ; do
     case $file in
       */\*.layout) ;;
-      *) test -r "$file" && echo $file ;;
+      *) if test -r "$file" ; then
+           class=`echo $file | sed -e 's%^.*layouts/\(.*\)\.layout$%\1%'`
+          # Generate the proper TestDocClass command for this layout
+          sed -n '
+# We manipulate only those lines that contain
+# "\Declare(LaTeX|DocBook|LinuxDoc)Class"
+/\\DeclareLaTeXClass/bmatch
+/\\DeclareDocBookClass/bmatch
+/\\DeclareLinuxDocClass/bmatch
+b
+
+:match
+# Wrap the entire line (minus the leading "# ") inside a
+# "\TestDocClass{CLASS}{...}" command
+s/^\# *\(.*\)$/\\TestDocClass{'${class}'}{\1}/
+# Print the result and quit.
+p
+q
+' "$file"
+        fi ;;
     esac
-  done | sed -e 's%^.*layouts/\(.*\)\.layout$%\\TestDocClass{\1}%'\
-            > chklayouts.tex
+  done > chklayouts.tex
+  ${LATEX} wrap_chkconfig.ltx 2>/dev/null | grep '^\+'
 changequote([,])dnl
-  [eval] ${LATEX} wrap_chkconfig.ltx 2>/dev/null | grep '^\+'
   [eval] `cat chkconfig.vars | sed 's/-/_/g'`
 changequote(,)dnl
+  test -n "${rmcopy}" && rm -f chkconfig.ltx
 fi
 
 # Do we have all the files we need? Useful if latex did not run
 changequote([,])dnl
-echo "creating textclass.lst"
-PROVIDE_DEFAULT_FILE(textclass.lst,dnl
-[# This file declares layouts and their associated definition files
-# (include dir. relative to the place where this file is).
-# It contains only default values, since chkconfig.ltx could not be run
-# for some reason. Run ./configure if you need to update it after a
-# configuration change.
-article        article article
-report report  report
-book   book    book
-linuxdoc       linuxdoc        linuxdoc
-letter letter  letter])
 
 PROVIDE_DEFAULT_FILE(chkconfig.sed,[s/@.*@/???/g])
 
@@ -473,7 +535,33 @@ changequote(,)dnl
 echo "creating doc/LaTeXConfig.lyx"
 echo "s/@chk_linuxdoc@/$chk_linuxdoc/g" >> chkconfig.sed
 echo "s/@chk_docbook@/$chk_docbook/g" >> chkconfig.sed
-sed -f chkconfig.sed ${srcdir}/doc/LaTeXConfig.lyx.in >doc/LaTeXConfig.lyx
+
+if test `uname -s | grep 'MINGW'` ; then
+    # Before running chkconfig.sed, remove the trailing '\r'
+    # characters that can bugger up various versions of sed.
+    tr -d '\r' < chkconfig.sed > chkconfig2.sed
+    mv -f chkconfig2.sed chkconfig.sed
+fi
+
+sed -f chkconfig.sed "${srcdir}"/doc/LaTeXConfig.lyx.in >doc/LaTeXConfig.lyx
+
+### Let's check whether spaces are allowed in TeX file names
+MSG_CHECKING(whether TeX allows spaces in file names)
+if test ${lyx_check_config} = no ; then
+  tex_allows_spaces=false
+else
+  fname="a b"
+  rm -f "$fname".tex
+  echo "\\message{working^^J}" >"$fname".tex
+  if ${LATEX} "$fname" </dev/null | grep 'working' >/dev/null ; then
+    MSG_RESULT(yes)
+    tex_allows_spaces=true
+  else
+    MSG_RESULT(no)
+    tex_allows_spaces=false
+  fi
+  rm -f "$fname".* texput.log
+fi
 
 echo "creating $outfile"
 cat >$outfile <<EOF
@@ -483,149 +571,147 @@ cat >$outfile <<EOF
 # want to customize LyX, make a copy of the file LYXDIR/lyxrc as
 # ~/.lyx/lyxrc and edit this file instead. Any setting in lyxrc will
 # override the values given here.
-\\Format text    txt   ASCII           A
-\\Format textparagraph txt ASCII(paragraphs)   ""
-\\Format docbook  sgml DocBook         B
-\\Format bmp      bmp  BMP             ""
-\\Format dvi     dvi   DVI             D
-\\Format eps     eps   EPS             ""
-\\Format epsi     epsi  EPSI           ""
-\\Format fax     ""    Fax             ""
-\\Format fits     fits FITS            ""
-\\Format gif      gif  GIF             ""
-\\Format agr      agr  GRACE           ""
-\\Format html    html  HTML            H
-\\Format jpg      jpg  JPEG            ""
-\\Format latex   tex   LaTeX           L
-\\Format linuxdoc sgml LinuxDoc        x
-\\Format lyx      lyx  LyX             ""
-\\Format literate nw   NoWeb           N
-\\Format pdf     pdf   PDF             P
-\\Format pdf2    pdf  "PDF (pdflatex)" F
-\\Format pdf3    pdf  "PDF (dvipdfm)"  m
-\\Format pbm     pbm   PBM             ""
-\\Format pgm     pgm   PGM             ""
-\\Format png     png   PNG             ""
-\\Format ppm     ppm   PPM             ""
-\\Format ps      ps    Postscript      t
-\\Format program  ""   Program         ""
-\\Format sgi      sgi  SGI             ""
-\\Format tgif     obj  TGIF            ""
-\\Format tiff     tif  TIFF            ""
-\\Format xbm      xbm   XBM             ""
-\\Format xpm      xpm   XPM             ""
-\\Format xwd      xwd  XWD             ""
-\\Format word    doc   Word            W
-
-\\converter latex dvi "$latex_to_dvi" "latex"
-\\converter latex pdf2 "$latex_to_pdf" "latex"
-\\converter latex html "$latex_to_html_command" "originaldir,needaux"
-\\converter literate latex "$literate_to_tex_command" ""
-\\converter dvi pdf3 "$dvi_to_pdf_command" ""
-\\converter dvi ps "$dvi_to_ps_command" ""
-\\converter ps pdf "$ps_to_pdf_command" ""
-\\converter ps fax "$fax_command" ""
-\\converter linuxdoc lyx "$linuxdoc_to_lyx_command" ""
-\\converter linuxdoc latex "$linuxdoc_to_latex_command" ""
-\\converter linuxdoc dvi "$linuxdoc_to_dvi_command" ""
-\\converter linuxdoc html "$linuxdoc_to_html_command" ""
-\\converter docbook dvi "$docbook_to_dvi_command" ""
-\\converter docbook html "$docbook_to_html_command" ""
-
-\\converter latex lyx "$tex_to_lyx_command" ""
-\\converter literate lyx "$literate_to_lyx_command" ""
-\\converter html latex "$html_to_latex_command" ""
-\\converter word latex "$word_to_latex_command" ""
-
-\\converter bmp  eps "$bmp_to_eps" ""
-\\converter fits  eps "$fits_to_eps" ""
-\\converter gif  eps "$gif_to_eps" ""
-\\converter jpg  eps "$jpg_to_eps" ""
-\\converter pbm  eps "$pbm_to_eps" ""
-\\converter pgm  eps "$pgm_to_eps" ""
-\\converter png  eps "$png_to_eps" ""
-\\converter ppm  eps "$ppm_to_eps" ""
-\\converter sgi  eps "$sgi_to_eps" ""
-\\converter tgif eps "tgif -print -eps \$\$i" ""
-\\converter tiff eps "tiff2ps \$\$i > \$\$o" ""
-\\converter xbm  eps "$xbm_to_eps" ""
-\\converter xpm  eps "$xpm_to_eps" ""
-\\converter xwd  eps "$xwd_to_eps" ""
-
-\\converter tgif xpm "tgif -print -stdout -xpm \$\$i > \$\$o" ""
-\\converter tgif png "tgif -print -stdout -png \$\$i > \$\$o" ""
-\\converter tgif pdf "tgif -print -stdout -pdf \$\$i > \$\$o" ""
-
-\\converter gif  png "$gif_to_png" ""
-\\converter eps  png "$eps_to_png" ""
-\\converter epsi png "$eps_to_png" ""
-\\converter jpg  png "$jpg_to_png" ""
-
-\\converter gif  xpm "$gif_to_xpm" ""
-\\converter eps  xpm "$eps_to_xpm" ""
-\\converter epsi xpm "$eps_to_xpm" ""
-\\converter jpg  xpm "$jpg_to_xpm" ""
-\\converter png  xpm "$png_to_xpm" ""
-\\converter ps  xpm "$ps_to_xpm" ""
-\\converter xbm  xpm "$xbm_to_xpm" ""
-
-\\converter eps  pdf "$eps_to_pdf" ""
-\\converter epsi pdf "$eps_to_pdf" ""
-
-\\converter agr  eps "$agr_to_eps" ""
-\\converter agr  pdf "$agr_to_pdf" ""
-\\converter agr  png "$agr_to_png" ""
-
-\\viewer dvi "$DVI_VIEWER"
-\\viewer html "$HTML_VIEWER"
-\\viewer pdf "$PDF_VIEWER"
-\\viewer ps "$GHOSTVIEW -swap"
-\\viewer eps "$GHOSTVIEW"
+\\Format asciichess asc    "Plain text (chess output)"  "" ""  "$TEXT_EDITOR"
+\\Format asciiimage asc    "Plain text (image)"         "" ""  "$TEXT_EDITOR"
+\\Format asciixfig  asc    "Plain text (Xfig output)"   "" ""  "$TEXT_EDITOR"
+\\Format agr        agr     Grace                  "" "$GRACE_VIEWER"  "$GRACE_EDITOR"
+\\Format bmp        bmp     BMP                    "" "$RASTERIMAGE_VIEWER"    "$RASTERIMAGE_EDITOR"
+\\Format date       ""     "date command"          "" ""       ""
+\\Format dateout    tmp    "date (output)"         "" ""       "$TEXT_EDITOR"
+\\Format docbook    sgml    DocBook                B  ""       "$TEXT_EDITOR"
+\\Format docbook-xml xml   "Docbook (XML)"         "" ""       "$TEXT_EDITOR"
+\\Format dvi        dvi     DVI                    D  "$DVI_VIEWER"    ""
+\\Format eps        eps     EPS                    "" "$EPS_VIEWER"    ""
+\\Format fax        ""      Fax                    "" ""       ""
+\\Format fen        fen     FEN                    "" "$FEN_VIEWER"    "$FEN_EDITOR"
+\\Format fig        fig     FIG                    "" "$FIG_VIEWER"    "$FIG_EDITOR"
+\\Format gif        gif     GIF                    "" "$RASTERIMAGE_VIEWER"    "$RASTERIMAGE_EDITOR"
+\\Format html       html    HTML                   H  "$HTML_VIEWER"   ""
+\\Format jpg        jpg     JPEG                   "" "$RASTERIMAGE_VIEWER"    "$RASTERIMAGE_EDITOR"
+\\Format latex      tex     LaTeX                  L  ""       "$TEXT_EDITOR"
+\\Format linuxdoc   sgml    LinuxDoc               x  ""       "$TEXT_EDITOR"
+\\Format lyx        lyx     LyX                    "" "lyx"    "lyx"
+\\Format lyxpreview lyxpreview "LyX Preview"       "" ""       ""
+\\Format literate   nw      NoWeb                  N  ""       "$TEXT_EDITOR"
+\\Format pbm        pbm     PBM                    "" "$RASTERIMAGE_VIEWER"    "$RASTERIMAGE_EDITOR"
+\\Format pdf        pdf    "PDF (ps2pdf)"          P  "$PDF_VIEWER"    ""
+\\Format pdf2       pdf    "PDF (pdflatex)"        F  "$PDF_VIEWER"    ""
+\\Format pdf3       pdf    "PDF (dvipdfm)"         m  "$PDF_VIEWER"    ""
+\\Format pdftex     pdftex_t PDFTEX                "" ""       ""
+\\Format pgm        pgm     PGM                    "" "$RASTERIMAGE_VIEWER"    "$RASTERIMAGE_EDITOR"
+\\Format png        png     PNG                    "" "$RASTERIMAGE_VIEWER"    "$RASTERIMAGE_EDITOR"
+\\Format ppm        ppm     PPM                    "" "$RASTERIMAGE_VIEWER"    "$RASTERIMAGE_EDITOR"
+\\Format program    ""      Program                "" ""       ""
+\\Format ps         ps      Postscript             t  "$PS_VIEWER"     ""
+\\Format pstex      pstex_t PSTEX                  "" ""       ""
+\\Format tgif       obj     Tgif                   "" "$TGIF_VIEWER"   "$TGIF_EDITOR"
+\\Format sxw        sxw    "OpenOffice.Org Writer" O  ""       ""
+\\Format text       txt    "Plain text"            a  ""       "$TEXT_EDITOR"
+\\Format textparagraph txt "Plain text (paragraphs)"    "" ""  "$TEXT_EDITOR"
+\\Format tiff       tif     TIFF                   "" "$RASTERIMAGE_VIEWER"    "$RASTERIMAGE_EDITOR"
+\\Format word       doc    "MS Word"               W  ""       ""
+\\Format wordhtml   html   "MS Word (HTML)"        "" ""        ""
+\\Format xbm        xbm     XBM                    "" "$RASTERIMAGE_VIEWER"    "$RASTERIMAGE_EDITOR"
+\\Format xpm        xpm     XPM                    "" "$RASTERIMAGE_VIEWER"    "$RASTERIMAGE_EDITOR"
+
+\\converter date       dateout    "date +%d-%m-%Y > \$\$o"     ""
+\\converter docbook    docbook-xml "cp \$\$i \$\$o" "xml"
+\\converter docbook    dvi        "$docbook_to_dvi_command"    ""
+\\converter docbook    html       "$docbook_to_html_command"   ""
+\\converter dvi        pdf3       "$dvi_to_pdf_command"        ""
+\\converter dvi        ps         "$dvi_to_ps_command" ""
+\\converter fen        asciichess "python \$\$s/scripts/fen2ascii.py \$\$i \$\$o"      ""
+\\converter fig        pdftex     "sh \$\$s/scripts/fig2pdftex.sh \$\$i \$\$o" ""
+\\converter fig        pstex      "sh \$\$s/scripts/fig2pstex.sh \$\$i \$\$o"  ""
+\\converter html       latex      "$html_to_latex_command"     ""
+\\converter latex      html       "$latex_to_html_command"     "originaldir,needaux"
+\\converter latex      dvi        "$latex_to_dvi"      "latex"
+\\converter latex      lyx        "$tex_to_lyx_command"        ""
+\\converter latex      pdf2       "$latex_to_pdf"      "latex"
+\\converter latex      sxw        "$latex_to_sxw_command"      "latex"
+\\converter latex      wordhtml   "$latex_to_word_command"       ""
+\\converter linuxdoc   dvi        "$linuxdoc_to_dvi_command"   ""
+\\converter linuxdoc   html       "$linuxdoc_to_html_command"  ""
+\\converter linuxdoc   latex      "$linuxdoc_to_latex_command" ""
+\\converter linuxdoc   lyx        "$linuxdoc_to_lyx_command"   ""
+\\converter literate   latex      "$literate_to_tex_command"   ""
+\\converter literate   lyx        "$literate_to_lyx_command"   ""
+\\converter lyxpreview png        "$lyxpreview_to_png_command" ""
+\\converter lyxpreview ppm        "$lyxpreview_to_bitmap_command"      ""
+\\converter ps         fax        "$fax_command"       ""
+\\converter ps         pdf        "$ps_to_pdf_command" ""
+\\converter sxw        latex      "$sxw_to_latex_command"      ""
+\\converter word       latex      "$word_to_latex_command"     ""
+EOF
 
-$rc_entries
-\\font_encoding "$chk_fontenc"
+### the graphic converter part with the predefined ones
+#### Search for the nonstandard converting progs
+#
+SEARCH_PROG([for a FIG -> EPS/PPM/PNG converter], FIG2DEV, fig2dev)
+if test "$FIG2DEV" = "fig2dev"; then
+cat >>$outfile <<EOF
+\\converter fig        eps        "fig2dev -L eps \$\$i \$\$o" ""
+\\converter fig        ppm        "fig2dev -L ppm \$\$i \$\$o" ""
+\\converter fig        png        "fig2dev -L png \$\$i \$\$o" ""
 EOF
+fi
 
-######## X FONTS
-# create a fonts.dir file to make X fonts available to LyX
-echo "checking for TeX fonts"
-
-fontlist="cmex10 cmmi10 cmr10 cmsy10 eufm10 msam10 msbm10"
-rm -f xfonts/fonts.dir xfonts/fonts.scale xfonts/tmpfonts
-
-num=0
-touch xfonts/tmpfonts
-for font in $fontlist ; do
-  MSG_CHECKING([for $font])
-  result=no
-  for ext in pfb pfa ttf ; do
-    if filepath=`kpsewhich $font.$ext` ; then
-      result="yes ($ext)"
-      rm -f xfonts/$font.$ext
-      ln -s $filepath xfonts 2>/dev/null
-      echo "$font.$ext -unknown-$font-medium-r-normal--0-0-0-0-p-0-adobe-fontspecific" >>xfonts/tmpfonts
-      num=`expr $num + 1`
-      break
-    fi
-  done
-  MSG_RESULT($result)
-done
+SEARCH_PROG([for a TIFF -> PS converter], TIFF2PS, tiff2ps)
+if test "$TIFF2PS" = "tiff2ps"; then
+cat >>$outfile <<EOF
+\\converter tiff       eps        "tiff2ps \$\$i > \$\$o" ""
+EOF
+fi
+
+SEARCH_PROG([for a Tgif -> EPS/PDF converter], TGIF, tgif)
+if test "$TGIF" = "tgif"; then
+cat >>$outfile <<EOF
+\\converter tgif       eps        "tgif -stdout -print -color -eps \$\$i > \$\$o" ""
+\\converter tgif       pdf        "tgif -stdout -print -color -pdf \$\$i > \$\$o" ""
+EOF
+fi
+
+SEARCH_PROG([for an EPS -> PDF converter], EPSTOPDF, epstopdf)
+if test "$EPSTOPDF" = "epstopdf"; then
+cat >>$outfile <<EOF
+\\converter eps        pdf        "epstopdf --outfile=\$\$o \$\$i" ""
+EOF
+fi
 
-if test ! $num = 0 ; then
-  echo $num >xfonts/fonts.scale
-  cat xfonts/tmpfonts >>xfonts/fonts.scale
-  cp xfonts/fonts.scale xfonts/fonts.dir
+#### Add Grace conversions (xmgrace needs an Xserver, gracebat doesn't.)
+SEARCH_PROG([for a Grace -> Image converter], GRACE, gracebat)
+if test "$GRACE" = "gracebat"; then
+cat >>$outfile <<EOF
+\\converter agr        eps        "gracebat -hardcopy -printfile \$\$o -hdevice EPS \$\$i 2>/dev/null" ""
+\\converter agr        png        "gracebat -hardcopy -printfile \$\$o -hdevice PNG \$\$i 2>/dev/null" ""
+\\converter agr        jpg        "gracebat -hardcopy -printfile \$\$o -hdevice JPEG \$\$i 2>/dev/null" ""
+\\converter agr        ppm        "gracebat -hardcopy -printfile \$\$o -hdevice PNM \$\$i 2>/dev/null" ""
+EOF
 fi
-rm -f xfonts/tmpfonts
 
+cat >>$outfile <<EOF
+
+\\copier    fig        "sh \$\$s/scripts/fig_copy.sh \$\$i \$\$o"
+\\copier    pstex      "python \$\$s/scripts/tex_copy.py \$\$i \$\$o \$\$l"
+\\copier    pdftex     "python \$\$s/scripts/tex_copy.py \$\$i \$\$o \$\$l"
+
+$rc_entries
+\\font_encoding "$chk_fontenc"
+\\tex_allows_spaces $tex_allows_spaces
+EOF
+
+if [ "x$use_cygwin_path_fix" != "x" ]
+then
+  echo "\\cygwin_path_fix_needed $use_cygwin_path_fix" >> $outfile
+fi
 
 # Remove superfluous files if we are not writing in the main lib
 # directory
 for file in $outfile textclass.lst packages.lst \
-           doc/LaTeXConfig.lyx xfonts/fonts.dir ; do
+           doc/LaTeXConfig.lyx  ; do
   # we rename the file first, so that we avoid comparing a file with itself
   mv $file $file.new
-  if test -r $srcdir/$file && diff $file.new $srcdir/$file >/dev/null 2>/dev/null ;
+  if test -r "${srcdir}"/$file && diff $file.new "${srcdir}"/$file >/dev/null 2>/dev/null ;
   then
     echo "removing $file, which is identical to the system global version"
     rm -f $file.new
@@ -634,7 +720,6 @@ for file in $outfile textclass.lst packages.lst \
   fi
 done
 
-
 # Final clean-up
 if test $lyx_keep_temps = no ; then
 rm -f chkconfig.sed chkconfig.vars wrap_chkconfig.* chklayouts.tex \