1dnl $Id$
2dnl
3dnl rk_TEST_PACKAGE(package,headers,libraries,extra libs,
4dnl			default locations, conditional, config-program, headers)
5
6AC_DEFUN([rk_TEST_PACKAGE],[
7AC_ARG_WITH($1,
8	AS_HELP_STRING([--with-$1=dir],[use $1 in dir]))
9AC_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])
13elif test "X$with_$1" = "X"; then
14  with_$1=yes
15fi])
16AC_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])
20elif test "X$with_$1" = "X"; then
21  with_$1=yes
22fi])
23AC_ARG_WITH($1-config,
24	AS_HELP_STRING([--with-$1-config=path],[config program for $1]))
25
26m4_ifval([$6],
27	m4_define([rk_pkgname], $6),
28	m4_define([rk_pkgname], AS_TR_CPP($1)))
29
30AC_MSG_CHECKING(for $1)
31
32case "$with_$1" in
33yes|"") d='$5' ;;
34no)	d= ;;
35*)	d="$with_$1" ;;
36esac
37
38header_dirs=
39lib_dirs=
40for 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
54done
55
56if test "$with_$1_include"; then
57	header_dirs="$with_$1_include $header_dirs"
58fi
59if test "$with_$1_lib"; then
60	lib_dirs="$with_$1_lib $lib_dirs"
61fi
62
63if test "$with_$1_config" = ""; then
64	with_$1_config='$7'
65fi
66
67$1_cflags=
68$1_libs=
69
70case "$with_$1_config" in
71yes|no|""|"$7")
72	if test -f $with_$1/bin/$7 ; then
73		with_$1_config=$with_$1/bin/$7
74	fi
75	;;
76esac
77
78case "$with_$1_config" in
79yes|no|"")
80	;;
81*)
82	$1_cflags="`$with_$1_config --cflags 2>&1`"
83	$1_libs="`$with_$1_config --libs 2>&1`"
84	;;
85esac
86
87found=no
88if 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"
121fi
122
123if test "$found" = yes; then
124	AC_DEFINE_UNQUOTED(rk_pkgname, 1, [Define if you have the $1 package.])
125	with_$1=yes
126else
127	with_$1=no
128	INCLUDE_$1=
129	LIB_$1=
130	AC_MSG_RESULT(no)
131fi
132
133AC_SUBST(INCLUDE_$1)
134AC_SUBST(LIB_$1)
135])
136