1dnl @synopsis AC_PATH_GENERIC(LIBRARY [, MINIMUM-VERSION [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) 2dnl 3dnl Runs a LIBRARY-config script and defines LIBRARY_CFLAGS and LIBRARY_LIBS 4dnl 5dnl The script must support `--cflags' and `--libs' args. 6dnl If MINIMUM-VERSION is specified, the script must also support the 7dnl `--version' arg. 8dnl If the `--with-library-[exec-]prefix' arguments to ./configure are given, 9dnl it must also support `--prefix' and `--exec-prefix'. 10dnl (In other words, it must be like gtk-config.) 11dnl 12dnl For example: 13dnl 14dnl AC_PATH_GENERIC(Foo, 1.0.0) 15dnl 16dnl would run `foo-config --version' and check that it is at least 1.0.0 17dnl 18dnl If so, the following would then be defined: 19dnl 20dnl FOO_CFLAGS to `foo-config --cflags` 21dnl FOO_LIBS to `foo-config --libs` 22dnl 23dnl At present there is no support for additional "MODULES" (see AM_PATH_GTK) 24dnl (shamelessly stolen from gtk.m4 and then hacked around a fair amount) 25dnl 26dnl @author Angus Lees <gusl@cse.unsw.edu.au> 27dnl @version $Id: ac_path_generic.m4,v 1.1.4.1 2002/09/06 19:43:55 roth Exp $ 28 29AC_DEFUN([AC_PATH_GENERIC], 30[dnl 31dnl we're going to need uppercase, lowercase and user-friendly versions of the 32dnl string `LIBRARY' 33pushdef([UP], translit([$1], [a-z], [A-Z]))dnl 34pushdef([DOWN], translit([$1], [A-Z], [a-z]))dnl 35 36dnl 37dnl Get the cflags and libraries from the LIBRARY-config script 38dnl 39AC_ARG_WITH(DOWN-prefix,[ --with-]DOWN[-prefix=PFX Prefix where $1 is installed (optional)], 40 DOWN[]_config_prefix="$withval", DOWN[]_config_prefix="") 41AC_ARG_WITH(DOWN-exec-prefix,[ --with-]DOWN[-exec-prefix=PFX Exec prefix where $1 is installed (optional)], 42 DOWN[]_config_exec_prefix="$withval", DOWN[]_config_exec_prefix="") 43 44 if test x$DOWN[]_config_exec_prefix != x ; then 45 DOWN[]_config_args="$DOWN[]_config_args --exec-prefix=$DOWN[]_config_exec_prefix" 46 if test x${UP[]_CONFIG+set} != xset ; then 47 UP[]_CONFIG=$DOWN[]_config_exec_prefix/bin/DOWN-config 48 fi 49 fi 50 if test x$DOWN[]_config_prefix != x ; then 51 DOWN[]_config_args="$DOWN[]_config_args --prefix=$DOWN[]_config_prefix" 52 if test x${UP[]_CONFIG+set} != xset ; then 53 UP[]_CONFIG=$DOWN[]_config_prefix/bin/DOWN-config 54 fi 55 fi 56 57 AC_PATH_PROG(UP[]_CONFIG, DOWN-config, no) 58 ifelse([$2], , 59 AC_MSG_CHECKING(for $1), 60 AC_MSG_CHECKING(for $1 - version >= $2) 61 ) 62 no_[]DOWN="" 63 if test "$UP[]_CONFIG" = "no" ; then 64 no_[]DOWN=yes 65 else 66 UP[]_CFLAGS="`$UP[]_CONFIG $DOWN[]_config_args --cflags`" 67 UP[]_LIBS="`$UP[]_CONFIG $DOWN[]_config_args --libs`" 68 ifelse([$2], , ,[ 69 DOWN[]_config_major_version=`$UP[]_CONFIG $DOWN[]_config_args \ 70 --version | sed 's/[[^0-9]]*\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` 71 DOWN[]_config_minor_version=`$UP[]_CONFIG $DOWN[]_config_args \ 72 --version | sed 's/[[^0-9]]*\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` 73 DOWN[]_config_micro_version=`$UP[]_CONFIG $DOWN[]_config_args \ 74 --version | sed 's/[[^0-9]]*\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` 75 DOWN[]_wanted_major_version="regexp($2, [\<\([0-9]*\)], [\1])" 76 DOWN[]_wanted_minor_version="regexp($2, [\<\([0-9]*\)\.\([0-9]*\)], [\2])" 77 DOWN[]_wanted_micro_version="regexp($2, [\<\([0-9]*\).\([0-9]*\).\([0-9]*\)], [\3])" 78 79 # Compare wanted version to what config script returned. 80 # If I knew what library was being run, i'd probably also compile 81 # a test program at this point (which also extracted and tested 82 # the version in some library-specific way) 83 if test "$DOWN[]_config_major_version" -lt \ 84 "$DOWN[]_wanted_major_version" \ 85 -o \( "$DOWN[]_config_major_version" -eq \ 86 "$DOWN[]_wanted_major_version" \ 87 -a "$DOWN[]_config_minor_version" -lt \ 88 "$DOWN[]_wanted_minor_version" \) \ 89 -o \( "$DOWN[]_config_major_version" -eq \ 90 "$DOWN[]_wanted_major_version" \ 91 -a "$DOWN[]_config_minor_version" -eq \ 92 "$DOWN[]_wanted_minor_version" \ 93 -a "$DOWN[]_config_micro_version" -lt \ 94 "$DOWN[]_wanted_micro_version" \) ; then 95 # older version found 96 no_[]DOWN=yes 97 echo -n "*** An old version of $1 " 98 echo -n "($DOWN[]_config_major_version" 99 echo -n ".$DOWN[]_config_minor_version" 100 echo ".$DOWN[]_config_micro_version) was found." 101 echo -n "*** You need a version of $1 newer than " 102 echo -n "$DOWN[]_wanted_major_version" 103 echo -n ".$DOWN[]_wanted_minor_version" 104 echo ".$DOWN[]_wanted_micro_version." 105 echo "***" 106 echo "*** If you have already installed a sufficiently new version, this error" 107 echo "*** probably means that the wrong copy of the DOWN-config shell script is" 108 echo "*** being found. The easiest way to fix this is to remove the old version" 109 echo "*** of $1, but you can also set the UP[]_CONFIG environment to point to the" 110 echo "*** correct copy of DOWN-config. (In this case, you will have to" 111 echo "*** modify your LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf" 112 echo "*** so that the correct libraries are found at run-time)" 113 fi 114 ]) 115 fi 116 if test "x$no_[]DOWN" = x ; then 117 AC_MSG_RESULT(yes) 118 ifelse([$3], , :, [$3]) 119 else 120 AC_MSG_RESULT(no) 121 if test "$UP[]_CONFIG" = "no" ; then 122 echo "*** The DOWN-config script installed by $1 could not be found" 123 echo "*** If $1 was installed in PREFIX, make sure PREFIX/bin is in" 124 echo "*** your path, or set the UP[]_CONFIG environment variable to the" 125 echo "*** full path to DOWN-config." 126 fi 127 UP[]_CFLAGS="" 128 UP[]_LIBS="" 129 ifelse([$4], , :, [$4]) 130 fi 131 AC_SUBST(UP[]_CFLAGS) 132 AC_SUBST(UP[]_LIBS) 133 134 popdef([UP]) 135 popdef([DOWN]) 136]) 137