aboutsummaryrefslogtreecommitdiffstats
path: root/m4-local/ac_ma_search_package.m4
blob: 197f76c47b5c415a4fc6b64cf59b5586dbf7aa3f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
dnl @synopsis AC_ma_SEARCH_PACKAGE(PACKAGE, FUNCTION, PREFIX LIST, LIBRARY LIST, HEADERFILE [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
dnl based on AC_caolan_SEARCH_PACKAGE
dnl
dnl Provides --with-PACKAGE, --with-PACKAGE-include and --with-PACKAGE-libdir
dnl options to configure. Supports the now standard --with-PACKAGE=DIR
dnl approach where the package's include dir and lib dir are underneath DIR,
dnl but also allows the include and lib directories to be specified seperately
dnl
dnl PREFIX LIST can be a list of directories to search for the package
dnl if set to "no", the package must be enabled with --with-PACKAGE
dnl otherwise it is enabled unless overridden with --without-PACKAGE
dnl
dnl adds the extra -Ipath to CFLAGS if needed
dnl adds extra -Lpath to LD_FLAGS if needed
dnl searches for the FUNCTION in each of the LIBRARY LIST with
dnl AC_SEARCH_LIBRARY and thus adds the lib to LIBS
dnl
dnl defines HAVE_PKG_PACKAGE if it is found, (where PACKAGE in the
dnl HAVE_PKG_PACKAGE is replaced with the actual first parameter passed)
dnl note that autoheader will complain of not having the HAVE_PKG_PACKAGE and you
dnl will have to add it to acconfig.h manually
dnl
dnl @version $Id: ac_caolan_search_package.m4,v 1.3 2003/10/29 02:13:06 guidod Exp $
dnl @author Caolan McNamara <caolan@skynet.ie>
dnl
dnl with fixes from...
dnl Alexandre Duret-Lutz <duret_g@lrde.epita.fr>
dnl Matthew Mueller <donut@azstarnet.com>
dnl Matthias Andree <matthias.andree@gmx.de>

AC_PREREQ(2.59)dnl oldest tested version

AC_DEFUN([AC_ma_SEARCH_PACKAGE],
[

search="$3"
AC_ARG_WITH($1,
AS_HELP_STRING([--without-$1],[disables $1 usage completely])
AS_HELP_STRING([--with-$1[=DIR]],[root directory of $1 installation]),
if test "${with_$1}" != yes; then
	search="$withval"
	$1_winclude="$withval/include"
	$1_wlibdir="$withval/lib"
fi
)

AC_ARG_WITH($1-include,
AS_HELP_STRING([--with-$1-include=DIR],[specify exact include dir for $1 headers]),
$1_winclude="$withval")

AC_ARG_WITH($1-libdir,
AS_HELP_STRING([--with-$1-libdir=DIR],[specify exact library dir for $1 library]),
$1_wlibdir="$withval")

if test "${with_$1}" != no ; then
    for i in $search ; do
	if test "$search" = "${with_$1}" ; then
	    $1_include="${$1_winclude}"
	    $1_libdir="${$1_wlibdir}"
	else
	    $1_include=$i/include
	    $1_libdir=$i/lib
	fi

	OLD_LIBS=$LIBS
	OLD_LDFLAGS=$LDFLAGS
	OLD_CFLAGS=$CFLAGS
	OLD_CPPFLAGS=$CPPFLAGS

	if test "${$1_libdir}" ; then
		LDFLAGS="$LDFLAGS -L${$1_libdir}"
	fi
	if test "${$1_include}" ; then
		CPPFLAGS="$CPPFLAGS -I${$1_include}"
		CFLAGS="$CFLAGS -I${$1_include}"
	fi

	success=no
	AC_SEARCH_LIBS($2,$4,success=yes)
	AC_CHECK_HEADERS($5,,success=no)
	if test "$success" = yes; then
dnl	fixed
		ifelse([$6], , , [$6])
		AC_DEFINE(HAVE_PKG_$1,1,[Define to 1 if you have the '$1' package.])
		break
	else
		LIBS=$OLD_LIBS
		LDFLAGS=$OLD_LDFLAGS
		CPPFLAGS=$OLD_CPPFLAGS
		CFLAGS=$OLD_CFLAGS
	fi
    done
    if test "$success" = no ; then
dnl	broken
    ifelse([$7], , , [$7])
	LIBS=$OLD_LIBS
	LDFLAGS=$OLD_LDFLAGS
	CPPFLAGS=$OLD_CPPFLAGS
	CFLAGS=$OLD_CFLAGS
    fi
fi

])