• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# pkg.m4 - Macros to locate and utilise pkg-config.            -*- Autoconf -*-
2#
3# Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
4#
5# This program is free software; you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published by
7# the Free Software Foundation; either version 2 of the License, or
8# (at your option) any later version.
9#
10# This program is distributed in the hope that it will be useful, but
11# WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13# General Public License for more details.
14#
15# You should have received a copy of the GNU General Public License
16# along with this program; if not, write to the Free Software
17# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18#
19# As a special exception to the GNU General Public License, if you
20# distribute this file as part of a program that contains a
21# configuration script generated by Autoconf, you may include it under
22# the same distribution terms that you use for the rest of that program.
23
24# PKG_PROG_PKG_CONFIG([MIN-VERSION])
25# ----------------------------------
26AC_DEFUN([PKG_PROG_PKG_CONFIG],
27[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
28m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
29AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl
30if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
31	AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
32fi
33if test -n "$PKG_CONFIG"; then
34	_pkg_min_version=m4_default([$1], [0.9.0])
35	AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
36	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
37		AC_MSG_RESULT([yes])
38	else
39		AC_MSG_RESULT([no])
40		PKG_CONFIG=""
41	fi
42
43fi[]dnl
44])# PKG_PROG_PKG_CONFIG
45
46# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
47#
48# Check to see whether a particular set of modules exists.  Similar
49# to PKG_CHECK_MODULES(), but does not set variables or print errors.
50#
51#
52# Similar to PKG_CHECK_MODULES, make sure that the first instance of
53# this or PKG_CHECK_MODULES is called, or make sure to call
54# PKG_CHECK_EXISTS manually
55# --------------------------------------------------------------
56AC_DEFUN([PKG_CHECK_EXISTS],
57[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
58if test -n "$PKG_CONFIG" && \
59    AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
60  m4_ifval([$2], [$2], [:])
61m4_ifvaln([$3], [else
62  $3])dnl
63fi])
64
65
66# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
67# ---------------------------------------------
68m4_define([_PKG_CONFIG],
69[if test -n "$$1"; then
70    pkg_cv_[]$1="$$1"
71 elif test -n "$PKG_CONFIG"; then
72    PKG_CHECK_EXISTS([$3],
73                     [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`],
74		     [pkg_failed=yes])
75 else
76    pkg_failed=untried
77fi[]dnl
78])# _PKG_CONFIG
79
80# _PKG_SHORT_ERRORS_SUPPORTED
81# -----------------------------
82AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
83[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
84if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
85        _pkg_short_errors_supported=yes
86else
87        _pkg_short_errors_supported=no
88fi[]dnl
89])# _PKG_SHORT_ERRORS_SUPPORTED
90
91
92# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
93# [ACTION-IF-NOT-FOUND])
94#
95#
96# Note that if there is a possibility the first call to
97# PKG_CHECK_MODULES might not happen, you should be sure to include an
98# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
99#
100#
101# --------------------------------------------------------------
102AC_DEFUN([PKG_CHECK_MODULES],
103[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
104AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
105AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
106
107pkg_failed=no
108AC_MSG_CHECKING([for $1])
109
110_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
111_PKG_CONFIG([$1][_LIBS], [libs], [$2])
112
113m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
114and $1[]_LIBS to avoid the need to call pkg-config.
115See the pkg-config man page for more details.])
116
117if test $pkg_failed = yes; then
118        _PKG_SHORT_ERRORS_SUPPORTED
119        if test $_pkg_short_errors_supported = yes; then
120	        $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$2" 2>&1`
121        else
122	        $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors "$2" 2>&1`
123        fi
124	# Put the nasty error message in config.log where it belongs
125	echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
126
127	ifelse([$4], , [AC_MSG_ERROR(dnl
128[Package requirements ($2) were not met:
129
130$$1_PKG_ERRORS
131
132Consider adjusting the PKG_CONFIG_PATH environment variable if you
133installed software in a non-standard prefix.
134
135_PKG_TEXT
136])],
137		[AC_MSG_RESULT([no])
138                $4])
139elif test $pkg_failed = untried; then
140	ifelse([$4], , [AC_MSG_FAILURE(dnl
141[The pkg-config script could not be found or is too old.  Make sure it
142is in your PATH or set the PKG_CONFIG environment variable to the full
143path to pkg-config.
144
145_PKG_TEXT
146
147To get pkg-config, see <http://pkg-config.freedesktop.org/>.])],
148		[$4])
149else
150	$1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
151	$1[]_LIBS=$pkg_cv_[]$1[]_LIBS
152        AC_MSG_RESULT([yes])
153	ifelse([$3], , :, [$3])
154fi[]dnl
155])# PKG_CHECK_MODULES
156
157
158
159dnl a macro to check for ability to create python extensions
160dnl  AM_CHECK_PYTHON_HEADERS([ACTION-IF-POSSIBLE], [ACTION-IF-NOT-POSSIBLE])
161dnl function also defines PYTHON_INCLUDES
162AC_DEFUN([AM_CHECK_PYTHON_HEADERS],
163[AC_REQUIRE([AM_PATH_PYTHON])
164AC_MSG_CHECKING(for headers required to compile python extensions)
165dnl deduce PYTHON_INCLUDES
166py_prefix=`$PYTHON -c "import sys; print sys.prefix"`
167py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"`
168PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}"
169if test "$py_prefix" != "$py_exec_prefix"; then
170  PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}"
171fi
172AC_SUBST(PYTHON_INCLUDES)
173dnl check if the headers exist:
174save_CPPFLAGS="$CPPFLAGS"
175CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES"
176AC_TRY_CPP([#include <Python.h>],dnl
177[AC_MSG_RESULT(found)
178$1],dnl
179[AC_MSG_RESULT(not found)
180$2])
181CPPFLAGS="$save_CPPFLAGS"
182])
183
184
185dnl as-ac-expand.m4 0.2.0                                   -*- autoconf -*-
186dnl autostars m4 macro for expanding directories using configure's prefix
187
188dnl (C) 2003, 2004, 2005 Thomas Vander Stichele <thomas at apestaart dot org>
189
190dnl Copying and distribution of this file, with or without modification,
191dnl are permitted in any medium without royalty provided the copyright
192dnl notice and this notice are preserved.
193
194dnl AS_AC_EXPAND(VAR, CONFIGURE_VAR)
195
196dnl example:
197dnl AS_AC_EXPAND(SYSCONFDIR, $sysconfdir)
198dnl will set SYSCONFDIR to /usr/local/etc if prefix=/usr/local
199
200AC_DEFUN([AS_AC_EXPAND],
201[
202  EXP_VAR=[$1]
203  FROM_VAR=[$2]
204
205  dnl first expand prefix and exec_prefix if necessary
206  prefix_save=$prefix
207  exec_prefix_save=$exec_prefix
208
209  dnl if no prefix given, then use /usr/local, the default prefix
210  if test "x$prefix" = "xNONE"; then
211    prefix="$ac_default_prefix"
212  fi
213  dnl if no exec_prefix given, then use prefix
214  if test "x$exec_prefix" = "xNONE"; then
215    exec_prefix=$prefix
216  fi
217
218  full_var="$FROM_VAR"
219  dnl loop until it doesn't change anymore
220  while true; do
221    new_full_var="`eval echo $full_var`"
222    if test "x$new_full_var" = "x$full_var"; then break; fi
223    full_var=$new_full_var
224  done
225
226  dnl clean up
227  full_var=$new_full_var
228  AC_SUBST([$1], "$full_var")
229
230  dnl restore prefix and exec_prefix
231  prefix=$prefix_save
232  exec_prefix=$exec_prefix_save
233])
234