Merge pull request #9 from lha/master
[heimdal.git] / cf / test-package.m4
blob8e694bbcbde15a5c4cd09f551f3844cbaf70fa56
1 dnl $Id$
2 dnl
3 dnl rk_TEST_PACKAGE(package,headers,libraries,extra libs,
4 dnl                     default locations, conditional, config-program, headers)
6 AC_DEFUN([rk_TEST_PACKAGE],[
7 AC_ARG_WITH($1,
8         AS_HELP_STRING([--with-$1=dir],[use $1 in dir]))
9 AC_ARG_WITH($1-lib,
10         AS_HELP_STRING([--with-$1-lib=dir],[use $1 libraries in dir]),
11 [if test "$withval" = "yes" -o "$withval" = "no"; then
12   AC_MSG_ERROR([No argument for --with-$1-lib])
13 elif test "X$with_$1" = "X"; then
14   with_$1=yes
15 fi])
16 AC_ARG_WITH($1-include,
17         AS_HELP_STRING([--with-$1-include=dir],[use $1 headers in dir]),
18 [if test "$withval" = "yes" -o "$withval" = "no"; then
19   AC_MSG_ERROR([No argument for --with-$1-include])
20 elif test "X$with_$1" = "X"; then
21   with_$1=yes
22 fi])
23 AC_ARG_WITH($1-config,
24         AS_HELP_STRING([--with-$1-config=path],[config program for $1]))
26 m4_ifval([$6],
27         m4_define([rk_pkgname], $6),
28         m4_define([rk_pkgname], AS_TR_CPP($1)))
30 AC_MSG_CHECKING(for $1)
32 case "$with_$1" in
33 yes|"") d='$5' ;;
34 no)     d= ;;
35 *)      d="$with_$1" ;;
36 esac
38 header_dirs=
39 lib_dirs=
40 for i in $d; do
41         if test "$with_$1_include" = ""; then
42                 if test -d "$i/include/$1"; then
43                         header_dirs="$header_dirs $i/include/$1"
44                 fi
45                 if test -d "$i/include"; then
46                         header_dirs="$header_dirs $i/include"
47                 fi
48         fi
49         if test "$with_$1_lib" = ""; then
50                 if test -d "$i/lib$abilibdirext"; then
51                         lib_dirs="$lib_dirs $i/lib$abilibdirext"
52                 fi
53         fi
54 done
56 if test "$with_$1_include"; then
57         header_dirs="$with_$1_include $header_dirs"
59 if test "$with_$1_lib"; then
60         lib_dirs="$with_$1_lib $lib_dirs"
63 if test "$with_$1_config" = ""; then
64         with_$1_config='$7'
67 $1_cflags=
68 $1_libs=
70 case "$with_$1_config" in
71 yes|no|""|"$7")
72         if test -f $with_$1/bin/$7 ; then
73                 with_$1_config=$with_$1/bin/$7
74         fi
75         ;;
76 esac
78 case "$with_$1_config" in
79 yes|no|"")
80         ;;
82         $1_cflags="`$with_$1_config --cflags 2>&1`"
83         $1_libs="`$with_$1_config --libs 2>&1`"
84         ;;
85 esac
87 found=no
88 if test "$with_$1" != no; then
89         save_CFLAGS="$CFLAGS"
90         save_LIBS="$LIBS"
91         if test "$[]$1_cflags" -a "$[]$1_libs"; then
92                 CFLAGS="$[]$1_cflags $save_CFLAGS"
93                 LIBS="$[]$1_libs $save_LIBS"
94                 m4_ifval([$8],[AC_CHECK_HEADERS([[$8]])])
95                 AC_LINK_IFELSE([AC_LANG_PROGRAM([[$2]],[[]])],[
96                         INCLUDE_$1="$[]$1_cflags"
97                         LIB_$1="$[]$1_libs"
98                         AC_MSG_RESULT([from $with_$1_config])
99                         found=yes])
100         fi
101         if test "$found" = no; then
102                 ires= lres=
103                 for i in $header_dirs; do
104                         CFLAGS="-I$i $save_CFLAGS"
105                         m4_ifval([$8],[AC_CHECK_HEADERS([[$8]])])
106                         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[$2]],[[]])],[ires=$i;break])
107                 done
108                 for i in $lib_dirs; do
109                         LIBS="-L$i $3 $4 $save_LIBS"
110                         AC_LINK_IFELSE([AC_LANG_PROGRAM([[$2]],[[]])],[lres=$i;break])
111                 done
112                 if test "$ires" -a "$lres" -a "$with_$1" != "no"; then
113                         INCLUDE_$1="-I$ires"
114                         LIB_$1="-L$lres $3 $4"
115                         found=yes
116                         AC_MSG_RESULT([headers $ires, libraries $lres])
117                 fi
118         fi
119         CFLAGS="$save_CFLAGS"
120         LIBS="$save_LIBS"
123 if test "$found" = yes; then
124         AC_DEFINE_UNQUOTED(rk_pkgname, 1, [Define if you have the $1 package.])
125         with_$1=yes
126 else
127         with_$1=no
128         INCLUDE_$1=
129         LIB_$1=
130         AC_MSG_RESULT(no)
133 AC_SUBST(INCLUDE_$1)
134 AC_SUBST(LIB_$1)