]> git.lyx.org Git - lyx.git/blobdiff - config/xforms.m4
Much better performance when using natbib (bug 2460):
[lyx.git] / config / xforms.m4
index b887b75489606ca5672c42c46649c20f97098e2d..23014445c87cdab1f11c4ebc7bc8aa64ab32b10e 100644 (file)
@@ -1,15 +1,64 @@
+dnl some macros to test for xforms-related functionality  -*- sh -*-
+
+dnl Usage LYX_PATH_XPM: Checks for xpm library and header
+AC_DEFUN([LYX_PATH_XPM],[
+### Check for Xpm library
+AC_CHECK_LIB(Xpm, XpmCreateBufferFromImage, XPM_LIB="-lXpm",
+       [LYX_LIB_ERROR(libXpm,Xpm)])
+### Check for Xpm headers
+lyx_cv_xpm_h_location="<xpm.h>"
+AC_CHECK_HEADER(X11/xpm.h,[
+  ac_cv_header_xpm_h=yes
+  lyx_cv_xpm_h_location="<X11/xpm.h>"],[
+AC_CHECK_HEADER(xpm.h,[],[
+LYX_LIB_ERROR(xpm.h,Xpm)])])
+AC_SUBST(XPM_H_LOCATION,$lyx_cv_xpm_h_location)
+### Test for the header version
+if test $ac_cv_header_xpm_h = yes; then
+  AC_CACHE_CHECK([xpm header version],lyx_cv_xpmversion,
+  [ cat > conftest.$ac_ext <<EOF
+#line __oline__ "configure"
+#include "confdefs.h"
+
+#include $lyx_cv_xpm_h_location
+"%%%"lyx_cv_xpmv=XpmVersion;lyx_cv_xpmr=XpmRevision"%%%"
+EOF
+    eval `(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
+      grep '^"%%%"'  2>/dev/null | \
+      sed -e 's/^"%%%"\(.*\)"%%%"/\1/' -e 's/ //g'`
+    case "$lyx_cv_xpmr" in
+changequote(,)
+     [0-9]) lyxxpmr_alpha=`echo $lyx_cv_xpmr |tr 123456789 abcdefghi`
+           lyxxpmv_alpha=" (aka 3.$lyx_cv_xpmv$lyxxpmr_alpha)";;
+changequote([,])
+        *) ;;
+    esac
+    lyx_cv_xpmversion="$lyx_cv_xpmv.$lyx_cv_xpmr$lyxxpmv_alpha"
+    rm -f conftest*])
+  XPM_VERSION=${lyx_cv_xpmversion}
+  case "$lyx_cv_xpmr" in
+changequote(,)
+       [789]|[0-9][0-9]*) ;;
+changequote([,])
+       *) LYX_WARNING([Version $lyx_cv_xpmversion of the Xpm library is a bit old.
+   If you experience strange crashes with LyX, try to upgrade
+   to at least version 4.7 (aka 3.4g).
+   If you have installed a newer version of the library, check whether you
+   have an old xpm.h header file in your include path.]);;
+  esac
+fi])
+
+
 dnl Usage LYX_PATH_XFORMS: Checks for xforms library and flags
 dnl   If it is found, the variable XFORMS_LIB is set to the relevant -l flags,
-dnl and FORMS_H_LOCATION / FORMS_IMAGE_H_LOCATION is also set
-AC_DEFUN(LYX_PATH_XFORMS,[
-LIBS="$XPM_LIB $LIBS"
+dnl and FORMS_H_LOCATION / FLIMAGE_H_LOCATION is also set
+AC_DEFUN([LYX_PATH_XFORMS],[
+AC_REQUIRE([LYX_PATH_XPM])
+
 AC_CHECK_LIB(forms, fl_initialize, XFORMS_LIB="-lforms",
   [AC_CHECK_LIB(xforms, fl_initialize, XFORMS_LIB="-lxforms",
-    [LYX_LIB_ERROR(libforms or libxforms,xforms)])])
-AC_SUBST(XFORMS_LIB)
+    [LYX_LIB_ERROR(libforms or libxforms,xforms)], $XPM_LIB)], $XPM_LIB)
+
 ### Check for xforms headers
 lyx_cv_forms_h_location="<forms.h>"
 AC_CHECK_HEADER(X11/forms.h,[
@@ -17,22 +66,15 @@ AC_CHECK_HEADER(X11/forms.h,[
   lyx_cv_forms_h_location="<X11/forms.h>"],[
 AC_CHECK_HEADER(forms.h,[],[
 LYX_LIB_ERROR(forms.h,forms)])])
-lyx_cv_flimage_h_location="<flimage.h>"
-AC_CHECK_HEADER(X11/flimage.h,[
-  ac_cv_header_flimage_h=yes
-  lyx_cv_flimage_h_location="<X11/flimage.h>"],)
-AC_DEFINE_UNQUOTED(FORMS_IMAGE_H_LOCATION,$lyx_cv_flimage_h_location)
-AC_DEFINE_UNQUOTED(FORMS_H_LOCATION,$lyx_cv_forms_h_location)
+AC_SUBST(FORMS_H_LOCATION,$lyx_cv_forms_h_location)
+
 if test $ac_cv_header_forms_h = yes; then
   AC_CACHE_CHECK([xforms header version],lyx_cv_xfversion,
   [ cat > conftest.$ac_ext <<EOF
 #line __oline__ "configure"
 #include "confdefs.h"
 
-#include FORMS_H_LOCATION
+#include $lyx_cv_forms_h_location
 #if ! defined(FL_INCLUDE_VERSION)
 "%%%"(unknown)"%%%"
 #else
@@ -43,62 +85,63 @@ lyx_cv_xfversion=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
   grep '^"%%%"'  2>/dev/null | \
   sed -e 's/^"%%%"\(.*\)"%%%"/\1/' -e 's/ //g'`
 rm -f conftest*])
+
 XFORMS_VERSION=$lyx_cv_xfversion
 case "$lyx_cv_xfversion" in
-  "(unknown)"|0.8[1-7]*)
-        LYX_ERROR(dnl
+"(unknown)"|0.8[[1-8]]*|0.89[[01234]])
+       LYX_ERROR(dnl
 Version $lyx_cv_xfversion of xforms is not compatible with LyX.
-   This version of LyX works best with versions 0.88 (recommended) and later.) ;;
-    0.88*) ;;
-    0.89[01234]) LYX_WARNING(dnl
+   This version of LyX works best with version 1.0 (recommended) and later.) ;;
+0.89*|0.9999*)
+       LYX_WARNING(dnl
 LyX should work ok with version $lyx_cv_xfversion of xforms[,] but
-it is an unproven version and might still have some bugs. You should
-probably use version 0.89.6 (or 0.88) instead) ;;
-    0.89*) ;;
-    1.0*) ;;
-       *) LYX_WARNING(dnl
-Version $lyx_cv_xfversion of xforms might not be compatible with LyX[,]
- since it is newer than 0.89. You might have slight problems with it.);;
+   it contains many bugs that have been squashed in version 1.0.
+   You should consider upgrading.) ;;
+1.0*) ;;
 esac
-fi])
+fi
+])
 
 
-dnl Check whether the xforms library has a viable image loader
-AC_DEFUN(LYX_USE_XFORMS_IMAGE_LOADER,
-[
+dnl Check the details of the xforms image loader
+AC_DEFUN([LYX_CHECK_XFORMS_IMAGE_LOADER],
+[AC_REQUIRE([LYX_PATH_XFORMS])
 save_LIBS=$LIBS
-LIBS="-lflimage $XFORMS_LIB -ljpeg $LIBS"
-lyx_use_xforms_image_loader=no
-AC_CHECK_FUNCS(flimage_dup,[
-  AC_CHECK_FUNCS(flimage_to_pixmap,[
-    lyx_use_xforms_image_loader=yes
-    AC_CHECK_FUNCS(flimage_enable_ps)])])
-LIBS=$save_LIBS
-test $lyx_use_xforms_image_loader = yes && lyx_flags="$lyx_flags xforms-image-loader" && XFORMS_IMAGE_LIB=-lflimage
-AC_SUBST(XFORMS_IMAGE_LIB)
-### If the gui cannot load images itself, then we default to the
-### very simple one in graphics/GraphicsImageXPM.[Ch]
-AM_CONDITIONAL(USE_BASIC_IMAGE_LOADER,
-              test $lyx_use_xforms_image_loader = no)
-])
+LIBS="$XFORMS_LIB $XPM_LIB $LIBS"
+lyx_use_jpeg_image_loader=no
 
+AC_LANG_SAVE
+AC_LANG_C
 
-dnl Check if the image loader needs libjpeg
-AC_DEFUN(LYX_XFORMS_IMAGE_LOADER_NEEDS_JPEG,
-[
-    if test "$lyx_use_xforms_image_loader" = "yes" ; then
-       AC_MSG_CHECKING([whether libjpeg is needed])
-       AC_LANG_SAVE
-       AC_LANG_C
-       AC_TRY_LINK([#include FORMS_H_LOCATION
-#include FORMS_IMAGE_H_LOCATION],
-           [jpeg_abort(0);],
-           [lyx_need_jpeg=no],[lyx_need_jpeg=yes])
-       AC_LANG_RESTORE
-       AC_MSG_RESULT($lyx_need_jpeg)
-       if test "$lyx_need_jpeg" = "yes" ; then
-           LIBS="-ljpeg $LIBS"
-       fi
-    fi
-])
+dnl The image headers were split out of forms.h in xforms version 1.0.
+AC_CHECK_HEADERS(flimage.h X11/flimage.h, break,,[#include $lyx_cv_forms_h_location])
+
+dnl Only enable native loading of jpeg images if the jpeg library is installed.
+dnl This test comes before that of flimage itself to ensure that the necessary
+dnl libraries are linked into the "flimage_dup" test program below.
+XFORMS_IMAGE_LIB=""
+AC_CHECK_LIB(jpeg, jpeg_read_header,
+  [lyx_use_jpeg_image_loader=yes
+   XFORMS_IMAGE_LIB="-ljpeg"
+   LIBS="-ljpeg $LIBS"])
+
+AC_SEARCH_LIBS(flimage_dup, flimage,
+  [if test "$ac_cv_search_flimage_dup" != "none required" ; then
+     XFORMS_IMAGE_LIB="-lflimage $XFORMS_IMAGE_LIB"
+  fi])
+
+if test $lyx_use_jpeg_image_loader = yes ; then
+  lyx_flags="$lyx_flags jpeg-image-loader"
+  AC_DEFINE(USE_JPEG_IMAGE_LOADER, 1,
+           [Define if you want to be able to load jpeg images natively])
+fi
+
+AC_LANG_RESTORE
+LIBS=$save_LIBS])
+
+dnl Do all check required to use xforms
+AC_DEFUN([XFORMS_DO_IT_ALL],
+[LYX_PATH_XPM
+LYX_PATH_XFORMS
+LYX_CHECK_XFORMS_IMAGE_LOADER
+AC_SUBST(XFORMS_LIBS, ["$XFORMS_IMAGE_LIB $XFORMS_LIB $XPM_LIB"])])