blob: b2889253fcce3df2637f1a57e8d0b2f6e732ecb0 [file] [log] [blame]
Emeric Vigier2f625822012-08-06 11:09:52 -04001# 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])