aboutsummaryrefslogtreecommitdiff
path: root/m4/pkg.m4
diff options
context:
space:
mode:
Diffstat (limited to 'm4/pkg.m4')
-rw-r--r--m4/pkg.m4217
1 files changed, 139 insertions, 78 deletions
diff --git a/m4/pkg.m4 b/m4/pkg.m4
index c5b26b52..82bea96e 100644
--- a/m4/pkg.m4
+++ b/m4/pkg.m4
@@ -1,29 +1,60 @@
1# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- 1dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
2# serial 1 (pkg-config-0.24) 2dnl serial 11 (pkg-config-0.29.1)
3# 3dnl
4# Copyright © 2004 Scott James Remnant <scott@netsplit.com>. 4dnl Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
5# 5dnl Copyright © 2012-2015 Dan Nicholson <dbn.lists@gmail.com>
6# This program is free software; you can redistribute it and/or modify 6dnl
7# it under the terms of the GNU General Public License as published by 7dnl This program is free software; you can redistribute it and/or modify
8# the Free Software Foundation; either version 2 of the License, or 8dnl it under the terms of the GNU General Public License as published by
9# (at your option) any later version. 9dnl the Free Software Foundation; either version 2 of the License, or
10# 10dnl (at your option) any later version.
11# This program is distributed in the hope that it will be useful, but 11dnl
12# WITHOUT ANY WARRANTY; without even the implied warranty of 12dnl This program is distributed in the hope that it will be useful, but
13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13dnl WITHOUT ANY WARRANTY; without even the implied warranty of
14# General Public License for more details. 14dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15# 15dnl General Public License for more details.
16# You should have received a copy of the GNU General Public License 16dnl
17# along with this program; if not, write to the Free Software 17dnl You should have received a copy of the GNU General Public License
18# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18dnl along with this program; if not, write to the Free Software
19# 19dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
20# As a special exception to the GNU General Public License, if you 20dnl 02111-1307, USA.
21# distribute this file as part of a program that contains a 21dnl
22# configuration script generated by Autoconf, you may include it under 22dnl As a special exception to the GNU General Public License, if you
23# the same distribution terms that you use for the rest of that program. 23dnl distribute this file as part of a program that contains a
24 24dnl configuration script generated by Autoconf, you may include it under
25# PKG_PROG_PKG_CONFIG([MIN-VERSION]) 25dnl the same distribution terms that you use for the rest of that
26# ---------------------------------- 26dnl program.
27
28dnl PKG_PREREQ(MIN-VERSION)
29dnl -----------------------
30dnl Since: 0.29
31dnl
32dnl Verify that the version of the pkg-config macros are at least
33dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's
34dnl installed version of pkg-config, this checks the developer's version
35dnl of pkg.m4 when generating configure.
36dnl
37dnl To ensure that this macro is defined, also add:
38dnl m4_ifndef([PKG_PREREQ],
39dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])])
40dnl
41dnl See the "Since" comment for each macro you use to see what version
42dnl of the macros you require.
43m4_defun([PKG_PREREQ],
44[m4_define([PKG_MACROS_VERSION], [0.29.1])
45m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1,
46 [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])])
47])dnl PKG_PREREQ
48
49dnl PKG_PROG_PKG_CONFIG([MIN-VERSION])
50dnl ----------------------------------
51dnl Since: 0.16
52dnl
53dnl Search for the pkg-config tool and set the PKG_CONFIG variable to
54dnl first found in the path. Checks that the version of pkg-config found
55dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is
56dnl used since that's the first version where most current features of
57dnl pkg-config existed.
27AC_DEFUN([PKG_PROG_PKG_CONFIG], 58AC_DEFUN([PKG_PROG_PKG_CONFIG],
28[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) 59[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
29m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) 60m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
@@ -45,18 +76,19 @@ if test -n "$PKG_CONFIG"; then
45 PKG_CONFIG="" 76 PKG_CONFIG=""
46 fi 77 fi
47fi[]dnl 78fi[]dnl
48])# PKG_PROG_PKG_CONFIG 79])dnl PKG_PROG_PKG_CONFIG
49 80
50# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) 81dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
51# 82dnl -------------------------------------------------------------------
52# Check to see whether a particular set of modules exists. Similar 83dnl Since: 0.18
53# to PKG_CHECK_MODULES(), but does not set variables or print errors. 84dnl
54# 85dnl Check to see whether a particular set of modules exists. Similar to
55# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) 86dnl PKG_CHECK_MODULES(), but does not set variables or print errors.
56# only at the first occurence in configure.ac, so if the first place 87dnl
57# it's called might be skipped (such as if it is within an "if", you 88dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
58# have to call PKG_CHECK_EXISTS manually 89dnl only at the first occurence in configure.ac, so if the first place
59# -------------------------------------------------------------- 90dnl it's called might be skipped (such as if it is within an "if", you
91dnl have to call PKG_CHECK_EXISTS manually
60AC_DEFUN([PKG_CHECK_EXISTS], 92AC_DEFUN([PKG_CHECK_EXISTS],
61[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl 93[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
62if test -n "$PKG_CONFIG" && \ 94if test -n "$PKG_CONFIG" && \
@@ -66,8 +98,10 @@ m4_ifvaln([$3], [else
66 $3])dnl 98 $3])dnl
67fi]) 99fi])
68 100
69# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) 101dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
70# --------------------------------------------- 102dnl ---------------------------------------------
103dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting
104dnl pkg_failed based on the result.
71m4_define([_PKG_CONFIG], 105m4_define([_PKG_CONFIG],
72[if test -n "$$1"; then 106[if test -n "$$1"; then
73 pkg_cv_[]$1="$$1" 107 pkg_cv_[]$1="$$1"
@@ -79,10 +113,11 @@ m4_define([_PKG_CONFIG],
79 else 113 else
80 pkg_failed=untried 114 pkg_failed=untried
81fi[]dnl 115fi[]dnl
82])# _PKG_CONFIG 116])dnl _PKG_CONFIG
83 117
84# _PKG_SHORT_ERRORS_SUPPORTED 118dnl _PKG_SHORT_ERRORS_SUPPORTED
85# ----------------------------- 119dnl ---------------------------
120dnl Internal check to see if pkg-config supports short errors.
86AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], 121AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
87[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) 122[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
88if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then 123if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -90,19 +125,17 @@ if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
90else 125else
91 _pkg_short_errors_supported=no 126 _pkg_short_errors_supported=no
92fi[]dnl 127fi[]dnl
93])# _PKG_SHORT_ERRORS_SUPPORTED 128])dnl _PKG_SHORT_ERRORS_SUPPORTED
94 129
95 130
96# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], 131dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
97# [ACTION-IF-NOT-FOUND]) 132dnl [ACTION-IF-NOT-FOUND])
98# 133dnl --------------------------------------------------------------
99# 134dnl Since: 0.4.0
100# Note that if there is a possibility the first call to 135dnl
101# PKG_CHECK_MODULES might not happen, you should be sure to include an 136dnl Note that if there is a possibility the first call to
102# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac 137dnl PKG_CHECK_MODULES might not happen, you should be sure to include an
103# 138dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
104#
105# --------------------------------------------------------------
106AC_DEFUN([PKG_CHECK_MODULES], 139AC_DEFUN([PKG_CHECK_MODULES],
107[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl 140[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
108AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl 141AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
@@ -156,16 +189,40 @@ else
156 AC_MSG_RESULT([yes]) 189 AC_MSG_RESULT([yes])
157 $3 190 $3
158fi[]dnl 191fi[]dnl
159])# PKG_CHECK_MODULES 192])dnl PKG_CHECK_MODULES
193
194
195dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
196dnl [ACTION-IF-NOT-FOUND])
197dnl ---------------------------------------------------------------------
198dnl Since: 0.29
199dnl
200dnl Checks for existence of MODULES and gathers its build flags with
201dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags
202dnl and VARIABLE-PREFIX_LIBS from --libs.
203dnl
204dnl Note that if there is a possibility the first call to
205dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to
206dnl include an explicit call to PKG_PROG_PKG_CONFIG in your
207dnl configure.ac.
208AC_DEFUN([PKG_CHECK_MODULES_STATIC],
209[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
210_save_PKG_CONFIG=$PKG_CONFIG
211PKG_CONFIG="$PKG_CONFIG --static"
212PKG_CHECK_MODULES($@)
213PKG_CONFIG=$_save_PKG_CONFIG[]dnl
214])dnl PKG_CHECK_MODULES_STATIC
160 215
161 216
162# PKG_INSTALLDIR(DIRECTORY) 217dnl PKG_INSTALLDIR([DIRECTORY])
163# ------------------------- 218dnl -------------------------
164# Substitutes the variable pkgconfigdir as the location where a module 219dnl Since: 0.27
165# should install pkg-config .pc files. By default the directory is 220dnl
166# $libdir/pkgconfig, but the default can be changed by passing 221dnl Substitutes the variable pkgconfigdir as the location where a module
167# DIRECTORY. The user can override through the --with-pkgconfigdir 222dnl should install pkg-config .pc files. By default the directory is
168# parameter. 223dnl $libdir/pkgconfig, but the default can be changed by passing
224dnl DIRECTORY. The user can override through the --with-pkgconfigdir
225dnl parameter.
169AC_DEFUN([PKG_INSTALLDIR], 226AC_DEFUN([PKG_INSTALLDIR],
170[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) 227[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])])
171m4_pushdef([pkg_description], 228m4_pushdef([pkg_description],
@@ -176,16 +233,18 @@ AC_ARG_WITH([pkgconfigdir],
176AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) 233AC_SUBST([pkgconfigdir], [$with_pkgconfigdir])
177m4_popdef([pkg_default]) 234m4_popdef([pkg_default])
178m4_popdef([pkg_description]) 235m4_popdef([pkg_description])
179]) dnl PKG_INSTALLDIR 236])dnl PKG_INSTALLDIR
180 237
181 238
182# PKG_NOARCH_INSTALLDIR(DIRECTORY) 239dnl PKG_NOARCH_INSTALLDIR([DIRECTORY])
183# ------------------------- 240dnl --------------------------------
184# Substitutes the variable noarch_pkgconfigdir as the location where a 241dnl Since: 0.27
185# module should install arch-independent pkg-config .pc files. By 242dnl
186# default the directory is $datadir/pkgconfig, but the default can be 243dnl Substitutes the variable noarch_pkgconfigdir as the location where a
187# changed by passing DIRECTORY. The user can override through the 244dnl module should install arch-independent pkg-config .pc files. By
188# --with-noarch-pkgconfigdir parameter. 245dnl default the directory is $datadir/pkgconfig, but the default can be
246dnl changed by passing DIRECTORY. The user can override through the
247dnl --with-noarch-pkgconfigdir parameter.
189AC_DEFUN([PKG_NOARCH_INSTALLDIR], 248AC_DEFUN([PKG_NOARCH_INSTALLDIR],
190[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) 249[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])])
191m4_pushdef([pkg_description], 250m4_pushdef([pkg_description],
@@ -196,13 +255,15 @@ AC_ARG_WITH([noarch-pkgconfigdir],
196AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) 255AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir])
197m4_popdef([pkg_default]) 256m4_popdef([pkg_default])
198m4_popdef([pkg_description]) 257m4_popdef([pkg_description])
199]) dnl PKG_NOARCH_INSTALLDIR 258])dnl PKG_NOARCH_INSTALLDIR
200 259
201 260
202# PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, 261dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,
203# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) 262dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
204# ------------------------------------------- 263dnl -------------------------------------------
205# Retrieves the value of the pkg-config variable for the given module. 264dnl Since: 0.28
265dnl
266dnl Retrieves the value of the pkg-config variable for the given module.
206AC_DEFUN([PKG_CHECK_VAR], 267AC_DEFUN([PKG_CHECK_VAR],
207[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl 268[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
208AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl 269AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl
@@ -211,4 +272,4 @@ _PKG_CONFIG([$1], [variable="][$3]["], [$2])
211AS_VAR_COPY([$1], [pkg_cv_][$1]) 272AS_VAR_COPY([$1], [pkg_cv_][$1])
212 273
213AS_VAR_IF([$1], [""], [$5], [$4])dnl 274AS_VAR_IF([$1], [""], [$5], [$4])dnl
214])# PKG_CHECK_VAR 275])dnl PKG_CHECK_VAR