Home | History | Annotate | Download | only in acinclude
      1 ##############################################################################
      2 #
      3 # --- esd.m4 ---
      4 #
      5 # Configure paths for ESD
      6 # Manish Singh    98-9-30
      7 # stolen back from Frank Belew
      8 # stolen from Manish Singh
      9 # Shamelessly stolen from Owen Taylor
     10 
     11 dnl AM_PATH_ESD([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
     12 dnl Test for ESD, and define ESD_CFLAGS and ESD_LIBS
     13 dnl
     14 AC_DEFUN([AM_PATH_ESD],
     15 [dnl 
     16 dnl Get the cflags and libraries from the esd-config script
     17 dnl
     18 AC_ARG_WITH(esd-prefix,[  --with-esd-prefix=PFX   Prefix where ESD is installed (optional)],
     19             esd_prefix="$withval", esd_prefix="")
     20 AC_ARG_WITH(esd-exec-prefix,[  --with-esd-exec-prefix=PFX Exec prefix where ESD is installed (optional)],
     21             esd_exec_prefix="$withval", esd_exec_prefix="")
     22 AC_ARG_ENABLE(esdtest, [  --disable-esdtest       Do not try to compile and run a test ESD program],
     23 		    , enable_esdtest=yes)
     24 
     25   if test x$esd_exec_prefix != x ; then
     26      esd_args="$esd_args --exec-prefix=$esd_exec_prefix"
     27      if test x${ESD_CONFIG+set} != xset ; then
     28         ESD_CONFIG=$esd_exec_prefix/bin/esd-config
     29      fi
     30   fi
     31   if test x$esd_prefix != x ; then
     32      esd_args="$esd_args --prefix=$esd_prefix"
     33      if test x${ESD_CONFIG+set} != xset ; then
     34         ESD_CONFIG=$esd_prefix/bin/esd-config
     35      fi
     36   fi
     37 
     38   AC_PATH_PROG(ESD_CONFIG, esd-config, no)
     39   min_esd_version=ifelse([$1], ,0.2.7,$1)
     40   AC_MSG_CHECKING(for ESD - version >= $min_esd_version)
     41   no_esd=""
     42   if test "$ESD_CONFIG" = "no" ; then
     43     no_esd=yes
     44   else
     45     ESD_CFLAGS=`$ESD_CONFIG $esdconf_args --cflags`
     46     ESD_LIBS=`$ESD_CONFIG $esdconf_args --libs`
     47 
     48     esd_major_version=`$ESD_CONFIG $esd_args --version | \
     49            sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
     50     esd_minor_version=`$ESD_CONFIG $esd_args --version | \
     51            sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
     52     esd_micro_version=`$ESD_CONFIG $esd_config_args --version | \
     53            sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
     54     if test "x$enable_esdtest" = "xyes" ; then
     55       ac_save_CFLAGS="$CFLAGS"
     56       ac_save_LIBS="$LIBS"
     57       CFLAGS="$CFLAGS $ESD_CFLAGS"
     58       LIBS="$LIBS $ESD_LIBS"
     59 dnl
     60 dnl Now check if the installed ESD is sufficiently new. (Also sanity
     61 dnl checks the results of esd-config to some extent
     62 dnl
     63       rm -f conf.esdtest
     64       AC_TRY_RUN([
     65 #include <stdio.h>
     66 #include <stdlib.h>
     67 #include <string.h>
     68 #include <esd.h>
     69 
     70 char*
     71 my_strdup (char *str)
     72 {
     73   char *new_str;
     74   
     75   if (str)
     76     {
     77       new_str = malloc ((strlen (str) + 1) * sizeof(char));
     78       strcpy (new_str, str);
     79     }
     80   else
     81     new_str = NULL;
     82   
     83   return new_str;
     84 }
     85 
     86 int main ()
     87 {
     88   int major, minor, micro;
     89   char *tmp_version;
     90 
     91   system ("touch conf.esdtest");
     92 
     93   /* HP/UX 9 (%@#!) writes to sscanf strings */
     94   tmp_version = my_strdup("$min_esd_version");
     95   if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
     96      printf("%s, bad version string\n", "$min_esd_version");
     97      exit(1);
     98    }
     99 
    100    if (($esd_major_version > major) ||
    101       (($esd_major_version == major) && ($esd_minor_version > minor)) ||
    102       (($esd_major_version == major) && ($esd_minor_version == minor) && ($esd_micro_version >= micro)))
    103     {
    104       return 0;
    105     }
    106   else
    107     {
    108       printf("\n*** 'esd-config --version' returned %d.%d.%d, but the minimum version\n", $esd_major_version, $esd_minor_version, $esd_micro_version);
    109       printf("*** of ESD required is %d.%d.%d. If esd-config is correct, then it is\n", major, minor, micro);
    110       printf("*** best to upgrade to the required version.\n");
    111       printf("*** If esd-config was wrong, set the environment variable ESD_CONFIG\n");
    112       printf("*** to point to the correct copy of esd-config, and remove the file\n");
    113       printf("*** config.cache before re-running configure\n");
    114       return 1;
    115     }
    116 }
    117 
    118 ],, no_esd=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
    119        CFLAGS="$ac_save_CFLAGS"
    120        LIBS="$ac_save_LIBS"
    121      fi
    122   fi
    123   if test "x$no_esd" = x ; then
    124      AC_MSG_RESULT(yes)
    125      ifelse([$2], , :, [$2])     
    126   else
    127      AC_MSG_RESULT(no)
    128      if test "$ESD_CONFIG" = "no" ; then
    129        echo "*** The esd-config script installed by ESD could not be found"
    130        echo "*** If ESD was installed in PREFIX, make sure PREFIX/bin is in"
    131        echo "*** your path, or set the ESD_CONFIG environment variable to the"
    132        echo "*** full path to esd-config."
    133      else
    134        if test -f conf.esdtest ; then
    135         :
    136        else
    137           echo "*** Could not run ESD test program, checking why..."
    138           CFLAGS="$CFLAGS $ESD_CFLAGS"
    139           LIBS="$LIBS $ESD_LIBS"
    140           AC_TRY_LINK([
    141 #include <stdio.h>
    142 #include <esd.h>
    143 ],      [ return 0; ],
    144         [ echo "*** The test program compiled, but did not run. This usually means"
    145           echo "*** that the run-time linker is not finding ESD or finding the wrong"
    146           echo "*** version of ESD. If it is not finding ESD, you'll need to set your"
    147           echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
    148           echo "*** to the installed location  Also, make sure you have run ldconfig if that"
    149           echo "*** is required on your system"
    150 	  echo "***"
    151           echo "*** If you have an old version installed, it is best to remove it, although"
    152           echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
    153         [ echo "*** The test program failed to compile or link. See the file config.log for the"
    154           echo "*** exact error that occured. This usually means ESD was incorrectly installed"
    155           echo "*** or that you have moved ESD since it was installed. In the latter case, you"
    156           echo "*** may want to edit the esd-config script: $ESD_CONFIG" ])
    157           CFLAGS="$ac_save_CFLAGS"
    158           LIBS="$ac_save_LIBS"
    159        fi
    160      fi
    161      ESD_CFLAGS=""
    162      ESD_LIBS=""
    163      ifelse([$3], , :, [$3])
    164   fi
    165   AC_SUBST(ESD_CFLAGS)
    166   AC_SUBST(ESD_LIBS)
    167   rm -f conf.esdtest
    168 ])
    169