]> git.draconx.ca Git - upkg.git/blob - m4/dxutils.m4
libupkg: Make decodeindex test accept an empty string.
[upkg.git] / m4 / dxutils.m4
1 dnl Copyright (C) 2010 Nick Bowler
2 dnl Copying and distribution of this file, with or without modification,
3 dnl are permitted in any medium without royalty provided the copyright
4 dnl notice and this notice are preserved.  This file is offered as-is,
5 dnl without any warranty.
6
7 m4_pattern_forbid([^_?DX_])
8
9 dnl DX_PKG_CONFIG(env-base, [pkg-id], [pkg-help])
10 AC_DEFUN([DX_PKG_CONFIG], [dnl
11 AC_ARG_VAR(m4_toupper([$1])[_CFLAGS], [C compiler flags for ]ifelse(
12         [$3], [], [$1], [$3]))dnl
13 AC_ARG_VAR(m4_toupper([$1])[_LIBS],   [linker flags for ]ifelse(
14         [$3], [], [$1], [$3]))dnl
15
16 ifelse([$2], [], [], [dnl
17 AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
18 if test x"$PKG_CONFIG" != x; then
19         AC_MSG_CHECKING([pkg-config database for $2])
20         pkg_failed=no
21         _PKG_CONFIG(m4_tolower([$1])[_cflags], [cflags], [$2])
22         _PKG_CONFIG(m4_tolower([$1])[_libs],   [libs],   [$2])
23         if test x$pkg_failed = xyes; then
24                 errors=`$PKG_CONFIG --errors-to-stdout --print-errors $2`
25                 echo "$errors" >&AS_MESSAGE_LOG_FD
26                 AC_MSG_RESULT([no])
27         else
28                 AC_MSG_RESULT([yes])
29         fi
30 fi])])
31
32 dnl _DX_CHECK_LIB(env-base, check-func, [cflags], [libs], [test])
33 AC_DEFUN([_DX_CHECK_LIB], [dnl
34 if test x"$dx_cv_[]m4_tolower([$1])_found" = x"no"; then
35 if ifelse([$5], [], [:], [$5]); then
36         CFLAGS="$3 $dx_old_cflags"
37         LIBS="$4 $dx_old_libs"
38
39         $2([dnl
40                 dx_cv_[]m4_tolower([$1])_found="yes"
41                 dx_cv_[]m4_tolower([$1])_cflags="$3"
42                 dx_cv_[]m4_tolower([$1])_libs="$4"
43         ])
44 fi
45 fi
46 ])
47
48 dnl DX_CHECK_LIB_EXT(env-base, message, check-func,
49 dnl              [[[cflags1],[libs1],[test1]],[[cflags2],[libs2],[test2]],...])
50 AC_DEFUN([DX_CHECK_LIB_EXT], [dnl
51 AC_LANG_PUSH([C])
52 dx_old_cflags=$CFLAGS
53 dx_old_libs=$LIBS
54
55 AC_CACHE_CHECK([$2], [dx_cv_]m4_tolower([$1])[_found], [dnl
56 AC_CACHE_VAL([dx_cv_]m4_tolower([$1])[_libs],   [dnl
57 AC_CACHE_VAL([dx_cv_]m4_tolower([$1])[_cflags], [dnl
58         dx_cv_[]m4_tolower([$1])_found=no
59         m4_foreach([dx_tuple], [$4], [_DX_CHECK_LIB([$1], [$3], dx_tuple)])
60 ])])])
61
62 if test x"$dx_cv_[]m4_tolower([$1])_found" = x"yes"; then
63         m4_toupper([$1])_CFLAGS=$dx_cv_[]m4_tolower([$1])_cflags
64         m4_toupper([$1])_LIBS=$dx_cv_[]m4_tolower([$1])_libs
65         AC_SUBST(m4_toupper([$1])[_CFLAGS])
66         AC_SUBST(m4_toupper([$1])[_LIBS])
67 fi
68
69 CFLAGS=$dx_old_cflags
70 LIBS=$dx_old_libs
71 AC_LANG_POP([C])
72 ])
73
74 dnl DX_CHECK_LIB(env-base, message, test-program,
75 dnl              [[[cflags1],[libs1],[test1]],[[cflags2],[libs2],[test2]],...])
76 AC_DEFUN([DX_CHECK_LIB], [dnl
77         DX_CHECK_LIB_EXT([$1], [$2], [m4_curry([AC_LINK_IFELSE], [$3])], [$4])
78 ])