]> git.lyx.org Git - lyx.git/blobdiff - lib/configure.m4
avoid using symbolic links since they confuse
[lyx.git] / lib / configure.m4
index b83c86117649df7c53b7af47838f8f7a24abef04..5168a4da12f90461dfd87477ff9342d20c10a98b 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
@@ -249,8 +249,7 @@ 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)
-test "$FEN" = "xboard" && FEN_EDITOR="xboard -lpf \$\$i -mode EditPosition"
+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)
@@ -262,46 +261,33 @@ SEARCH_PROG([for a text editor], TEXT_EDITOR, xemacs gvim kedit kwrite kate nedi
 # 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)
+SEARCH_PROG([for a LaTeX -> LyX converter],tex_to_lyx_command, "reLyX -f \$\$i")
 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 Noweb -> LyX converter],literate_to_lyx_command,noweb2lyx)
-test $literate_to_lyx_command = "noweb2lyx" && literate_to_lyx_command="noweb2lyx \$\$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 a HTML -> Latex converter],html_to_latex_command,html2latex)
-test $html_to_latex_command = "html2latex" && html_to_latex_command="html2latex \$\$i"
+SEARCH_PROG([for a HTML -> Latex converter],html_to_latex_command, "html2latex \$\$i")
 
-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 a MSWord -> Latex converter],word_to_latex_command, "wvCleanLatex \$\$i \$\$o" "wvCleanLatex \$\$i \$\$o")
 
-SEARCH_PROG([for Image converter],image_command,convert)
-test $image_command = "convert" && image_command="convert \$\$i \$\$o"
+SEARCH_PROG([for Image converter],image_command, "convert \$\$i \$\$o")
 
-SEARCH_PROG([for an OpenOffice.org -> Latex converter],sxw_to_latex_command,w2l)
-test "$sxw_to_latex_command" = "w2l" && sxw_to_latex_command="w2l -clean \$\$i"
+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 an Latex -> OpenOffice.org converter],latex_to_sxw_command,oolatex oolatex.sh)
-test "$latex_to_sxw_command" != "none" && latex_to_sxw_command="$latex_to_sxw_command \$\$i"
+SEARCH_PROG([for an 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,gsview32 gv ghostview kghostview)
-case $GHOSTVIEW in
-  gv|ghostview) PS_VIEWER="$GHOSTVIEW -swap" ;;
-  *) PS_VIEWER="$GHOSTVIEW";;
-esac
-EPS_VIEWER=$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, acrobat acrord32 gsview32 acroread gv ghostview xpdf kpdf kghostview)
+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 kdvi)
@@ -310,16 +296,13 @@ SEARCH_PROG([for a DVI previewer],DVI_VIEWER, xdvi windvi yap kdvi)
 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 -dCompatibilityLevel=1.3 \$\$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'
@@ -360,8 +343,7 @@ dnl   fax_command="none"
 dnl fi
 
 # Search a GUI Fax program
-SEARCH_PROG([for a fax program], fax_command, kdeprintfax ksendfax)
-test $fax_command != "none" && fax_command="$fax_command \$\$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)
@@ -419,13 +401,10 @@ 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_PROG([for a LaTeX -> HTML converter], latex_to_html_command,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)
@@ -454,23 +433,35 @@ changequote([,])dnl
            if test  x`[eval] echo $ac_n '${found_'$cleanclass'}'` = x ; then
              [eval] "found_$cleanclass=yes"
 changequote(,)dnl
-            # The sed commands below are a bit scary. Here is what they do:
-            # 1-3: remove the \DeclareFOO macro and add the correct boolean
-            #      at the end of the line telling whether the class is
-             #      available
-            # 4: if the macro had an optional argument with several
-            #    parameters, only keep the first one
-            # 5: if the macro did not have an optional argument, provide one
-            #    (equal to the class name)
-            # 6: remove brackets and replace with correctly quoted entries
-            grep '\\Declare\(LaTeX\|DocBook\|LinuxDoc\)Class' "$file" \
-             | sed -e 's/^.*\DeclareLaTeXClass *\(.*\)/\1 "false"/' \
-                   -e 's/^.*\DeclareDocBookClass *\(.*\)/\1 "'$bool_docbook'"/' \
-                   -e 's/^.*\DeclareLinuxDocClass *\(.*\)/\1 "'$bool_linuxdoc'"/' \
-                   -e 's/\[\([^,]*\),[^]]*\]/[\1]/' \
-                   -e 's/^{/['$class']{/' \
-                   -e 's/\[\([^]]*\)\] *{\([^}]*\)}/"'$class'" "\1" "\2"/' \
-                    >>textclass.lst
+            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
@@ -479,9 +470,9 @@ changequote(,)dnl
 else
   MSG_RESULT(auto)
   rm -f wrap_chkconfig.ltx chkconfig.vars chkconfig.classes chklayouts.tex
-  if ! test -r "chkconfig.ltx" ; then
-    ln -s "${srcdir}"/chkconfig.ltx .
-    rmlink=true
+  if test ! -r "chkconfig.ltx" ; then
+    cp "${srcdir}"/chkconfig.ltx .
+    rmcopy=true
   fi
   cat >wrap_chkconfig.ltx <<EOF
 ${linuxdoc_cmd}
@@ -497,16 +488,30 @@ EOF
       *) if test -r "$file" ; then
            class=`echo $file | sed -e 's%^.*layouts/\(.*\)\.layout$%\1%'`
           # Generate the proper TestDocClass command for this layout
-          grep '\\Declare\(LaTeX\|DocBook\|LinuxDoc\)Class' "$file" \
-             | sed -e 's/^\# *\(.*\)$/\\TestDocClass{'${class}'}{\1}/'
+          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 > 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 "${rmlink}" && rm -f chkconfig.ltx
+  test -n "${rmcopy}" && rm -f chkconfig.ltx
 fi
 
 # Do we have all the files we need? Useful if latex did not run
@@ -526,8 +531,34 @@ 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
+
+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 -r "$fname".* texput.log
+fi
+
 echo "creating $outfile"
 cat >$outfile <<EOF
 # This file has been automatically generated by LyX' lib/configure
@@ -536,9 +567,9 @@ 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 asciichess asc    "ASCII (chess output)"  "" ""       "$TEXT_EDITOR"
-\\Format asciiimage asc    "ASCII (image)"         "" ""       "$TEXT_EDITOR"
-\\Format asciixfig  asc    "ASCII (xfig output)"   "" ""       "$TEXT_EDITOR"
+\\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"          "" ""       ""
@@ -571,8 +602,8 @@ cat >$outfile <<EOF
 \\Format pstex      pstex_t PSTEX                  "" ""       ""
 \\Format tgif       obj     TGIF                   "" "$TGIF_VIEWER"   "$TGIF_EDITOR"
 \\Format sxw        sxw    "OpenOffice.Org Writer" O  ""       ""
-\\Format text       txt     ASCII                  A  ""       "$TEXT_EDITOR"
-\\Format textparagraph txt "ASCII (paragraphs)"    "" ""       "$TEXT_EDITOR"
+\\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     Word                   W  ""       ""
 \\Format xbm        xbm     XBM                    "" "$RASTERIMAGE_VIEWER"    "$RASTERIMAGE_EDITOR"
@@ -660,6 +691,7 @@ cat >>$outfile <<EOF
 
 $rc_entries
 \\font_encoding "$chk_fontenc"
+\\tex_allows_spaces $tex_allows_spaces
 EOF
 
 if [ "x$use_cygwin_path_fix" != "x" ]