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