Chris@1: # pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- Chris@1: # Chris@1: # Copyright © 2004 Scott James Remnant . Chris@1: # Chris@1: # This program is free software; you can redistribute it and/or modify Chris@1: # it under the terms of the GNU General Public License as published by Chris@1: # the Free Software Foundation; either version 2 of the License, or Chris@1: # (at your option) any later version. Chris@1: # Chris@1: # This program is distributed in the hope that it will be useful, but Chris@1: # WITHOUT ANY WARRANTY; without even the implied warranty of Chris@1: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Chris@1: # General Public License for more details. Chris@1: # Chris@1: # You should have received a copy of the GNU General Public License Chris@1: # along with this program; if not, write to the Free Software Chris@1: # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Chris@1: # Chris@1: # As a special exception to the GNU General Public License, if you Chris@1: # distribute this file as part of a program that contains a Chris@1: # configuration script generated by Autoconf, you may include it under Chris@1: # the same distribution terms that you use for the rest of that program. Chris@1: Chris@1: # PKG_PROG_PKG_CONFIG([MIN-VERSION]) Chris@1: # ---------------------------------- Chris@1: AC_DEFUN([PKG_PROG_PKG_CONFIG], Chris@1: [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) Chris@1: m4_pattern_allow([^PKG_CONFIG(_PATH)?$]) Chris@1: AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl Chris@1: if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then Chris@1: AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) Chris@1: fi Chris@1: if test -n "$PKG_CONFIG"; then Chris@1: _pkg_min_version=m4_default([$1], [0.9.0]) Chris@1: AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) Chris@1: if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then Chris@1: AC_MSG_RESULT([yes]) Chris@1: else Chris@1: AC_MSG_RESULT([no]) Chris@1: PKG_CONFIG="" Chris@1: fi Chris@1: Chris@1: fi[]dnl Chris@1: ])# PKG_PROG_PKG_CONFIG Chris@1: Chris@1: # PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) Chris@1: # Chris@1: # Check to see whether a particular set of modules exists. Similar Chris@1: # to PKG_CHECK_MODULES(), but does not set variables or print errors. Chris@1: # Chris@1: # Chris@1: # Similar to PKG_CHECK_MODULES, make sure that the first instance of Chris@1: # this or PKG_CHECK_MODULES is called, or make sure to call Chris@1: # PKG_CHECK_EXISTS manually Chris@1: # -------------------------------------------------------------- Chris@1: AC_DEFUN([PKG_CHECK_EXISTS], Chris@1: [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl Chris@1: if test -n "$PKG_CONFIG" && \ Chris@1: AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then Chris@1: m4_ifval([$2], [$2], [:]) Chris@1: m4_ifvaln([$3], [else Chris@1: $3])dnl Chris@1: fi]) Chris@1: Chris@1: Chris@1: # _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) Chris@1: # --------------------------------------------- Chris@1: m4_define([_PKG_CONFIG], Chris@1: [if test -n "$PKG_CONFIG"; then Chris@1: if test -n "$$1"; then Chris@1: pkg_cv_[]$1="$$1" Chris@1: else Chris@1: PKG_CHECK_EXISTS([$3], Chris@1: [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`], Chris@1: [pkg_failed=yes]) Chris@1: fi Chris@1: else Chris@1: pkg_failed=untried Chris@1: fi[]dnl Chris@1: ])# _PKG_CONFIG Chris@1: Chris@1: # _PKG_SHORT_ERRORS_SUPPORTED Chris@1: # ----------------------------- Chris@1: AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], Chris@1: [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) Chris@1: if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then Chris@1: _pkg_short_errors_supported=yes Chris@1: else Chris@1: _pkg_short_errors_supported=no Chris@1: fi[]dnl Chris@1: ])# _PKG_SHORT_ERRORS_SUPPORTED Chris@1: Chris@1: Chris@1: # PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], Chris@1: # [ACTION-IF-NOT-FOUND]) Chris@1: # Chris@1: # Chris@1: # Note that if there is a possibility the first call to Chris@1: # PKG_CHECK_MODULES might not happen, you should be sure to include an Chris@1: # explicit call to PKG_PROG_PKG_CONFIG in your configure.ac Chris@1: # Chris@1: # Chris@1: # -------------------------------------------------------------- Chris@1: AC_DEFUN([PKG_CHECK_MODULES], Chris@1: [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl Chris@1: AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl Chris@1: AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl Chris@1: Chris@1: pkg_failed=no Chris@1: AC_MSG_CHECKING([for $1]) Chris@1: Chris@1: _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) Chris@1: _PKG_CONFIG([$1][_LIBS], [libs], [$2]) Chris@1: Chris@1: m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS Chris@1: and $1[]_LIBS to avoid the need to call pkg-config. Chris@1: See the pkg-config man page for more details.]) Chris@1: Chris@1: if test $pkg_failed = yes; then Chris@1: _PKG_SHORT_ERRORS_SUPPORTED Chris@1: if test $_pkg_short_errors_supported = yes; then Chris@1: $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$2"` Chris@1: else Chris@1: $1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"` Chris@1: fi Chris@1: # Put the nasty error message in config.log where it belongs Chris@1: echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD Chris@1: Chris@1: ifelse([$4], , [AC_MSG_ERROR(dnl Chris@1: [Package requirements ($2) were not met: Chris@1: Chris@1: $$1_PKG_ERRORS Chris@1: Chris@1: Consider adjusting the PKG_CONFIG_PATH environment variable if you Chris@1: installed software in a non-standard prefix. Chris@1: Chris@1: _PKG_TEXT Chris@1: ])], Chris@1: [AC_MSG_RESULT([no]) Chris@1: $4]) Chris@1: elif test $pkg_failed = untried; then Chris@1: ifelse([$4], , [AC_MSG_FAILURE(dnl Chris@1: [The pkg-config script could not be found or is too old. Make sure it Chris@1: is in your PATH or set the PKG_CONFIG environment variable to the full Chris@1: path to pkg-config. Chris@1: Chris@1: _PKG_TEXT Chris@1: Chris@1: To get pkg-config, see .])], Chris@1: [$4]) Chris@1: else Chris@1: $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS Chris@1: $1[]_LIBS=$pkg_cv_[]$1[]_LIBS Chris@1: AC_MSG_RESULT([yes]) Chris@1: ifelse([$3], , :, [$3]) Chris@1: fi[]dnl Chris@1: ])# PKG_CHECK_MODULES