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