diff options
Diffstat (limited to 'm4/uriparser.m4')
| -rw-r--r-- | m4/uriparser.m4 | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/m4/uriparser.m4 b/m4/uriparser.m4 new file mode 100644 index 00000000..dbb8a551 --- /dev/null +++ b/m4/uriparser.m4 | |||
| @@ -0,0 +1,140 @@ | |||
| 1 | # (this check is rougly based on and inspired libcurl.m4) | ||
| 2 | # URIPARSER_CHECK ([DEFAULT-ACTION], [MINIMUM-VERSION], | ||
| 3 | # [ACTION-IF-YES], [ACTION-IF-NO]) | ||
| 4 | # Checks for uriparser library. DEFAULT-ACTION is the string yes or no to | ||
| 5 | # specify whether to default to --with-uriparser or --without-liburiparser. | ||
| 6 | # If not supplied, DEFAULT-ACTION is yes. MINIMUM-VERSION is the | ||
| 7 | # minimum version of uriparser to accept. Pass the version as a regular | ||
| 8 | # version number like 0.8.5. If not supplied, any version is | ||
| 9 | # accepted. ACTION-IF-YES is a list of shell commands to run if | ||
| 10 | # uriparser was successfully found and passed the various tests. | ||
| 11 | # ACTION-IF-NO is a list of shell commands that are run otherwise. | ||
| 12 | # Note that using --without-uriparser does run ACTION-IF-NO. | ||
| 13 | # | ||
| 14 | # This macro #defines HAVE_URIPARSER if a working uriparser setup is | ||
| 15 | # found, and sets @URIPARSER@ and @URIPARSER_CPPFLAGS@ to the necessary | ||
| 16 | # values. | ||
| 17 | # | ||
| 18 | # Users may override the detected values by doing something like: | ||
| 19 | # URIPARSER="-luriparser" URIPARSER_CPPFLAGS="-I/usr/myinclude" ./configure | ||
| 20 | # | ||
| 21 | |||
| 22 | AC_DEFUN([URIPARSER_CHECK], | ||
| 23 | [ | ||
| 24 | AC_ARG_WITH(uriparser, | ||
| 25 | AS_HELP_STRING([--with-uriparser=PREFIX],[look for the uriparser library in PREFIX/lib and headers in PREFIX/include]), | ||
| 26 | [_uriparser_with=$withval],[_uriparser_with=ifelse([$1],,[yes],[$1])]) | ||
| 27 | |||
| 28 | if test "$_uriparser_with" != "no" ; then | ||
| 29 | |||
| 30 | _uriparser_try_link=yes | ||
| 31 | |||
| 32 | AC_CHECK_PROG(PKGCONFIG,pkg-config,pkg-config,no) | ||
| 33 | |||
| 34 | if test "x$URIPARSER" != "x" || test "x$URIPARSER_CPPFLAGS" != "x"; then | ||
| 35 | : | ||
| 36 | elif test -d "$_uriparser_with" ; then | ||
| 37 | URIPARSER_CPPFLAGS="-I$withval/include" | ||
| 38 | _uriparser_ldflags="-L$withval/lib" | ||
| 39 | |||
| 40 | elif test x$PKGCONFIG != xno; then | ||
| 41 | |||
| 42 | AC_CACHE_CHECK([for the version of uriparser], | ||
| 43 | [uriparser_cv_uriparser_version], | ||
| 44 | [uriparser_cv_uriparser_version=`$PKGCONFIG liburiparser --modversion`]) | ||
| 45 | |||
| 46 | AC_PROG_AWK | ||
| 47 | |||
| 48 | _uriparser_version_parse="eval $AWK '{split(\$NF,A,\".\"); X=256*256*A[[1]]+256*A[[2]]+A[[3]]; print X;}'" | ||
| 49 | |||
| 50 | _uriparser_version=`echo $uriparser_cv_uriparser_version | $_uriparser_version_parse` | ||
| 51 | _uriparser_wanted=`echo ifelse([$2],,[0],[$2]) | $_uriparser_version_parse` | ||
| 52 | |||
| 53 | if test $_uriparser_wanted -gt 0 ; then | ||
| 54 | AC_CACHE_CHECK([for uriparser >= version $2], | ||
| 55 | [uriparser_cv_lib_version_ok], | ||
| 56 | [ | ||
| 57 | if test $_uriparser_version -ge $_uriparser_wanted ; then | ||
| 58 | uriparser_cv_lib_version_ok=yes | ||
| 59 | else | ||
| 60 | uriparser_cv_lib_version_ok=no | ||
| 61 | fi | ||
| 62 | ]) | ||
| 63 | fi | ||
| 64 | |||
| 65 | if test $_uriparser_wanted -eq 0 || test x$uriparser_cv_lib_version_ok = xyes ; then | ||
| 66 | if test x"$URIPARSER_CPPFLAGS" = "x" ; then | ||
| 67 | URIPARSER_CPPFLAGS=`$PKGCONFIG liburiparser --cflags` | ||
| 68 | fi | ||
| 69 | if test x"$URIPARSER" = "x" ; then | ||
| 70 | URIPARSER=`$PKGCONFIG liburiparser --libs` | ||
| 71 | fi | ||
| 72 | else | ||
| 73 | _uriparser_try_link=no | ||
| 74 | fi | ||
| 75 | |||
| 76 | unset _uriparser_wanted | ||
| 77 | else | ||
| 78 | dnl no pkg-config, ok, do our best and set some defaults | ||
| 79 | URIPARSER_CPPFLAGS="-I/usr/include" | ||
| 80 | URIPARSER="-luriparser -L/usr/lib -L/usr/lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/lib/i686-linux-gnu" | ||
| 81 | fi | ||
| 82 | |||
| 83 | if test $_uriparser_try_link = yes ; then | ||
| 84 | |||
| 85 | # let's see if the user-supplied | ||
| 86 | # link line (or failing that, "-luriparser") is enough. | ||
| 87 | URIPARSER=${URIPARSER-"$_uriparser_ldflags -luriparser"} | ||
| 88 | |||
| 89 | AC_CACHE_CHECK([whether uriparser is usable], | ||
| 90 | [uriparser_cv_lib_uriparser_usable], | ||
| 91 | [ | ||
| 92 | _liburiparser_save_cppflags=$CPPFLAGS | ||
| 93 | CPPFLAGS="$URIPARSER_CPPFLAGS $CPPFLAGS" | ||
| 94 | _liburiparser_save_libs=$LIBS | ||
| 95 | LIBS="$URIPARSER $LIBS" | ||
| 96 | |||
| 97 | AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <uriparser/Uri.h>]],[[ | ||
| 98 | /* Try and use a few common options to force a failure if we are | ||
| 99 | missing symbols or cannot link. */ | ||
| 100 | UriParserStateA state; | ||
| 101 | UriUriA uri; | ||
| 102 | state.uri = &uri; | ||
| 103 | char *location = "http://test.dom/dir/file.ext"; | ||
| 104 | int x = uriParseUriA (&state, location); | ||
| 105 | if (x == URI_SUCCESS) {;} | ||
| 106 | ]])],uriparser_cv_lib_uriparser_usable=yes,uriparser_cv_lib_uriparser_usable=no) | ||
| 107 | |||
| 108 | CPPFLAGS=$_liburiparser_save_cppflags | ||
| 109 | LIBS=$_liburiparser_save_libs | ||
| 110 | unset _liburiparser_save_cppflags | ||
| 111 | unset _liburiparser_save_libs | ||
| 112 | ]) | ||
| 113 | |||
| 114 | if test $uriparser_cv_lib_uriparser_usable = yes ; then | ||
| 115 | AC_DEFINE(HAVE_URIPARSER,1, | ||
| 116 | [Define to 1 if you have a functional uriparser library.]) | ||
| 117 | AC_SUBST(URIPARSER_CPPFLAGS) | ||
| 118 | AC_SUBST(URIPARSER) | ||
| 119 | else | ||
| 120 | unset URIPARSER | ||
| 121 | unset URIPARSER_CPPFLAGS | ||
| 122 | fi | ||
| 123 | fi | ||
| 124 | |||
| 125 | unset _uriparser_try_link | ||
| 126 | unset _uriparser_version_parse | ||
| 127 | unset _uriparser_version | ||
| 128 | unset _uriparser_ldflags | ||
| 129 | fi | ||
| 130 | |||
| 131 | if test x$_uriparser_with = xno || test x$uriparser_cv_lib_uriparser_usable != xyes ; then | ||
| 132 | # This is the IF-NO path | ||
| 133 | ifelse([$4],,:,[$4]) | ||
| 134 | else | ||
| 135 | # This is the IF-YES path | ||
| 136 | ifelse([$3],,:,[$3]) | ||
| 137 | fi | ||
| 138 | |||
| 139 | unset _uriparser_with | ||
| 140 | ])dnl | ||
