3 dnl Copyright (c) 2017 The University of Oslo
4 dnl All rights reserved.
6 dnl Redistribution and use in source and binary forms, with or without
7 dnl modification, are permitted provided that the following conditions
9 dnl 1. Redistributions of source code must retain the above copyright
10 dnl notice, this list of conditions and the following disclaimer.
11 dnl 2. Redistributions in binary form must reproduce the above copyright
12 dnl notice, this list of conditions and the following disclaimer in the
13 dnl documentation and/or other materials provided with the distribution.
14 dnl 3. The name of the author may not be used to endorse or promote
15 dnl products derived from this software without specific prior written
18 dnl THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
19 dnl ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 dnl IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 dnl ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
22 dnl FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23 dnl DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24 dnl OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25 dnl HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26 dnl LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27 dnl OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 m4_define([AX_PKG_CONFIG_MACROS_VERSION], [0.20170404])
34 dnl AX_PROG_PKG_CONFIG([min-version])
35 dnl ---------------------------------
37 dnl Verify that pkgconf or pkg-config are present.
39 AC_DEFUN([AX_PROG_PKG_CONFIG], [
40 m4_pattern_forbid([^AX_PKG_CONFIG_[A-Z_]+$])
41 AC_ARG_VAR([PKG_CONFIG], [path to pkg-config binary])
42 AC_ARG_VAR([PKG_CONFIG_PATH], [list of directories to prepend to default search path])
43 AC_ARG_VAR([PKG_CONFIG_LIBDIR], [list of directories to search instead of default search path])
44 if test x"${PKG_CONFIG}" = x"" ; then
45 AC_PATH_PROGS([PKG_CONFIG], [pkgconf pkg-config]) >/dev/null
47 AC_PATH_PROG([PKG_CONFIG], [${PKG_CONFIG}])
49 AC_MSG_CHECKING([for pkg-config or pkgconf])
50 if test -x "${PKG_CONFIG}" ; then
51 AC_MSG_RESULT([${PKG_CONFIG}])
52 case "${PKG_CONFIG}" in
54 _min_version="m4_default([$1], [1.3.0])"
57 _min_version="m4_default([$1], [0.23])"
60 _min_version="9.9.error"
63 AC_MSG_CHECKING([that ${PKG_CONFIG} is at least version ${_min_version}])
64 _act_version=`"${PKG_CONFIG}" --version`
65 if ! "${PKG_CONFIG}" --atleast-pkgconfig-version="${_min_version}" ; then
68 AC_MSG_RESULT([${_act_version}])
73 if test x"${PKG_CONFIG}" = x"" ; then
74 AC_MSG_ERROR([pkg-config was not found or is too old])
76 AC_ARG_WITH([pkgconfigdir],
77 AS_HELP_STRING([--with-pkgconfigdir],
78 [installation directory for .pc files @<:@LIBDIR/pkgconfig@:>@]),
79 [pkgconfigdir=$withval], [pkgconfigdir='${libdir}/pkgconfig'])
80 AC_SUBST([pkgconfigdir], [$pkgconfigdir])
84 dnl AX_PKG_CONFIG_VAR(package-name, var-name)
85 dnl -----------------------------------------
87 dnl Retrieve specific pkg-config variables for the specified package.
89 AC_DEFUN([AX_PKG_CONFIG_VAR], [
90 AC_REQUIRE([AX_PROG_PKG_CONFIG])
91 m4_define([_p], AS_TR_SH([m4_tolower([$1])]))
93 [version], [ax_pc_cv_[]_p[]_version=`"${PKG_CONFIG}" --modversion [$1]`],
94 [cflags], [ax_pc_cv_[]_p[]_cflags=`"${PKG_CONFIG}" --cflags [$1]`],
95 [libs], [ax_pc_cv_[]_p[]_libs=`"${PKG_CONFIG}" --libs [$1]`],
96 [ax_pc_cv_[]_p[]_[$2]=`"${PKG_CONFIG}" --variable=[$2] [$1]`])
100 dnl AX_PKG_CONFIG_CHECK(package-name,
101 dnl [action-if-found], [action-if-not-found])
102 dnl -------------------------------------------
104 dnl Check if the specified package is installed. If it is, define
105 dnl HAVE_PACKAGE, PACKAGE_VERSION, PACKAGE_CFLAGS and PACKAGE_LIBS.
106 dnl The specified actions are performed in addition to the standard
109 AC_DEFUN([AX_PKG_CONFIG_CHECK], [
110 AC_REQUIRE([AX_PROG_PKG_CONFIG])
111 m4_define([_P], AS_TR_SH([m4_toupper([$1])]))
112 m4_define([_p], AS_TR_SH([m4_tolower([$1])]))
113 AC_ARG_VAR(_P[_CFLAGS], [C compiler flags for $1])
114 AC_ARG_VAR(_P[_LIBS], [linker flags for $1])
115 AC_MSG_CHECKING([if $1 is installed])
116 if AC_RUN_LOG(["${PKG_CONFIG}" --exists --print-errors "$1"]) ; then
118 [ax_pc_cv_have_]_p=yes
119 AC_DEFINE([HAVE_]_P, [1], [Define to 1 if you have $1])
121 AC_MSG_CHECKING([$1 version])
122 AX_PKG_CONFIG_VAR([$1], [version])
123 AC_SUBST(_P[_VERSION], [$ax_pc_cv_]_p[_version])
124 AC_MSG_RESULT([${ax_pc_cv_]_p[_version:-unknown}])
126 AC_MSG_CHECKING([$1 compiler flags])
127 AX_PKG_CONFIG_VAR([$1], [cflags])
128 AC_SUBST(_P[_CFLAGS], [$ax_pc_cv_]_p[_cflags])
129 AC_MSG_RESULT([${ax_pc_cv_]_p[_cflags:-none}])
131 AC_MSG_CHECKING([$1 linker flags])
132 AX_PKG_CONFIG_VAR([$1], [libs])
133 AC_SUBST(_P[_LIBS], [$ax_pc_cv_]_p[_libs])
134 AC_MSG_RESULT([${ax_pc_cv_]_p[_libs:-none}])
136 m4_default([$2], [:])
139 [ax_pc_cv_have_]_p=no
140 m4_default([$3], [:])
142 m4_ifdef([AM_CONDITIONAL], [
143 AM_CONDITIONAL([HAVE_]_P, [test x"$ax_pc_cv_have_]_p[" = x"yes"])
148 dnl AX_PKG_CONFIG_REQUIRE(package-name)
149 dnl -----------------------------------
151 dnl As above, but fail if the package is not installed.
153 AC_DEFUN([AX_PKG_CONFIG_REQUIRE], [
154 AX_PKG_CONFIG_CHECK([$1], [], [
155 AC_MSG_ERROR([cannot proceed without $1])