1*a3cefe7fSPierre Pronchery.\" Copyright (c) 2017 pkgconf authors (see AUTHORS). 2*a3cefe7fSPierre Pronchery.\" 3*a3cefe7fSPierre Pronchery.\" Permission to use, copy, modify, and/or distribute this software for any 4*a3cefe7fSPierre Pronchery.\" purpose with or without fee is hereby granted, provided that the above 5*a3cefe7fSPierre Pronchery.\" copyright notice and this permission notice appear in all copies. 6*a3cefe7fSPierre Pronchery.\" 7*a3cefe7fSPierre Pronchery.\" This software is provided 'as is' and without any warranty, express or 8*a3cefe7fSPierre Pronchery.\" implied. In no event shall the authors be liable for any damages arising 9*a3cefe7fSPierre Pronchery.\" from the use of this software. 10*a3cefe7fSPierre Pronchery.Dd December 5, 2017 11*a3cefe7fSPierre Pronchery.Dt PKG.M4 7 12*a3cefe7fSPierre Pronchery.Os 13*a3cefe7fSPierre Pronchery.Sh NAME 14*a3cefe7fSPierre Pronchery.Nm pkg.m4 15*a3cefe7fSPierre Pronchery.Nd autoconf macros for using pkgconf 16*a3cefe7fSPierre Pronchery.Sh SYNOPSIS 17*a3cefe7fSPierre Pronchery.Nm PKG_PREREQ 18*a3cefe7fSPierre Pronchery.Nm PKG_PROG_PKG_CONFIG 19*a3cefe7fSPierre Pronchery.Nm PKG_CHECK_MODULES 20*a3cefe7fSPierre Pronchery.Nm PKG_CHECK_MODULES_STATIC 21*a3cefe7fSPierre Pronchery.Nm PKG_INSTALLDIR 22*a3cefe7fSPierre Pronchery.Nm PKG_NOARCH_INSTALLDIR 23*a3cefe7fSPierre Pronchery.Nm PKG_CHECK_VAR 24*a3cefe7fSPierre Pronchery.Nm PKG_WITH_MODULES 25*a3cefe7fSPierre Pronchery.Nm PKG_HAVE_WITH_MODULES 26*a3cefe7fSPierre Pronchery.Nm PKG_HAVE_DEFINE_WITH_MODULES 27*a3cefe7fSPierre Pronchery.Sh DESCRIPTION 28*a3cefe7fSPierre Pronchery.Nm 29*a3cefe7fSPierre Proncheryis a collection of autoconf macros which help to configure compiler and linker 30*a3cefe7fSPierre Proncheryflags for development libraries. 31*a3cefe7fSPierre ProncheryThis allows build systems to detect other dependencies and use them with the 32*a3cefe7fSPierre Proncherysystem toolchain. 33*a3cefe7fSPierre Pronchery.Sh "AUTOCONF MACROS" 34*a3cefe7fSPierre Pronchery.Ss "PKG_PREREQ(MIN-VERSION)" 35*a3cefe7fSPierre ProncheryChecks that the version of the 36*a3cefe7fSPierre Pronchery.Nm 37*a3cefe7fSPierre Proncheryautoconf macros in use is at least MIN-VERSION. 38*a3cefe7fSPierre ProncheryThis can be used to ensure a particular 39*a3cefe7fSPierre Pronchery.Nm 40*a3cefe7fSPierre Proncherymacro will be available. 41*a3cefe7fSPierre Pronchery.Ss "PKG_PROG_PKG_CONFIG([MIN-VERSION])" 42*a3cefe7fSPierre ProncheryChecks for an implementation of 43*a3cefe7fSPierre Pronchery.Nm pkg-config 44*a3cefe7fSPierre Proncherywhich is at least MIN-VERSION or newer. 45*a3cefe7fSPierre Pronchery.Ss "PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES [,ACTION-IF-FOUND [,ACTION-IF-NOT-FOUND]])" 46*a3cefe7fSPierre Pronchery.Ss "PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES [,ACTION-IF-FOUND [,ACTION-IF-NOT-FOUND]])" 47*a3cefe7fSPierre ProncheryChecks whether a given module set exists, and if so, defines 48*a3cefe7fSPierre Pronchery.Nm CFLAGS 49*a3cefe7fSPierre Proncheryand 50*a3cefe7fSPierre Pronchery.Nm LIBS 51*a3cefe7fSPierre Proncheryvariables prefixed by 52*a3cefe7fSPierre Pronchery.Nm VARIABLE-PREFIX 53*a3cefe7fSPierre Proncherywith the output from 54*a3cefe7fSPierre Pronchery.Fl -cflags 55*a3cefe7fSPierre Proncheryand 56*a3cefe7fSPierre Pronchery.Fl -libs 57*a3cefe7fSPierre Proncheryrespectively. 58*a3cefe7fSPierre Pronchery.Pp 59*a3cefe7fSPierre ProncheryThe optional 60*a3cefe7fSPierre Pronchery.Nm ACTION-IF-FOUND 61*a3cefe7fSPierre Proncheryand 62*a3cefe7fSPierre Pronchery.Nm ACTION-IF-NOT-FOUND 63*a3cefe7fSPierre Proncheryarguments are shell fragments that should be executed if the module set is 64*a3cefe7fSPierre Proncheryfound or not found. 65*a3cefe7fSPierre Pronchery.Pp 66*a3cefe7fSPierre ProncheryIf 67*a3cefe7fSPierre Pronchery.Nm $PKG_CONFIG 68*a3cefe7fSPierre Proncheryis not defined, the 69*a3cefe7fSPierre Pronchery.Nm PKG_PROG_PKG_CONFIG 70*a3cefe7fSPierre Proncherymacro will be executed to locate a 71*a3cefe7fSPierre Pronchery.Nm pkg-config 72*a3cefe7fSPierre Proncheryimplementation. 73*a3cefe7fSPierre Pronchery.Pp 74*a3cefe7fSPierre ProncheryThe 75*a3cefe7fSPierre Pronchery.Nm PKG_CHECK_MODULES_STATIC 76*a3cefe7fSPierre Proncherymacro provides the same behaviour as 77*a3cefe7fSPierre Pronchery.Nm PKG_CHECK_MODULES 78*a3cefe7fSPierre Proncherywith static linking enabled via the 79*a3cefe7fSPierre Pronchery.Fl -static 80*a3cefe7fSPierre Proncheryflag. 81*a3cefe7fSPierre Pronchery.Ss "PKG_INSTALLDIR(DIRECTORY)" 82*a3cefe7fSPierre ProncheryDefines the variable $pkgconfigdir as the location where a package 83*a3cefe7fSPierre Proncheryshould install pkg-config .pc files. 84*a3cefe7fSPierre Pronchery.Pp 85*a3cefe7fSPierre ProncheryBy default the directory is $libdir/pkgconfig, but the default can 86*a3cefe7fSPierre Proncherybe changed by passing the 87*a3cefe7fSPierre Pronchery.Nm DIRECTORY 88*a3cefe7fSPierre Proncheryparameter. 89*a3cefe7fSPierre Pronchery.Pp 90*a3cefe7fSPierre ProncheryThis value can be overridden with the 91*a3cefe7fSPierre Pronchery.Fl -with-pkgconfigdir 92*a3cefe7fSPierre Proncheryconfigure parameter. 93*a3cefe7fSPierre Pronchery.Ss "PKG_NOARCH_INSTALLDIR(DIRECTORY)" 94*a3cefe7fSPierre ProncheryDefines the variable $noarch_pkgconfigdir as the location where a package 95*a3cefe7fSPierre Proncheryshould install pkg-config .pc files. 96*a3cefe7fSPierre Pronchery.Pp 97*a3cefe7fSPierre ProncheryBy default the directory is $datadir/pkgconfig, but the default can 98*a3cefe7fSPierre Proncherybe changed by passing the 99*a3cefe7fSPierre Pronchery.Nm DIRECTORY 100*a3cefe7fSPierre Proncheryparameter. 101*a3cefe7fSPierre Pronchery.Pp 102*a3cefe7fSPierre ProncheryThis value can be overridden with the 103*a3cefe7fSPierre Pronchery.Fl -with-noarch-pkgconfigdir 104*a3cefe7fSPierre Proncheryconfigure parameter. 105*a3cefe7fSPierre Pronchery.Ss "PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])" 106*a3cefe7fSPierre ProncheryRetrieves the value of the 107*a3cefe7fSPierre Pronchery.Nm pkg-config 108*a3cefe7fSPierre Proncheryvariable 109*a3cefe7fSPierre Pronchery.Nm CONFIG-VARIABLE 110*a3cefe7fSPierre Proncheryfrom 111*a3cefe7fSPierre Pronchery.Nm MODULE 112*a3cefe7fSPierre Proncheryand stores it in the 113*a3cefe7fSPierre Pronchery.Nm VARIABLE 114*a3cefe7fSPierre Proncheryvariable. 115*a3cefe7fSPierre Pronchery.Pp 116*a3cefe7fSPierre ProncheryNote that repeated usage of 117*a3cefe7fSPierre Pronchery.Nm VARIABLE 118*a3cefe7fSPierre Proncheryis not recommended as the check will be skipped if the variable is 119*a3cefe7fSPierre Proncheryalready set. 120*a3cefe7fSPierre Pronchery.Ss "PKG_WITH_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND], [DESCRIPTION], [DEFAULT])" 121*a3cefe7fSPierre ProncheryPrepares a "--with-" configure option using the lowercase 122*a3cefe7fSPierre Pronchery.Nm VARIABLE-PREFIX 123*a3cefe7fSPierre Proncheryname, merging the behaviour of 124*a3cefe7fSPierre Pronchery.Nm AC_ARG_WITH 125*a3cefe7fSPierre Proncheryand 126*a3cefe7fSPierre Pronchery.Nm PKG_CHECK_MODULES 127*a3cefe7fSPierre Proncheryin a single macro. 128*a3cefe7fSPierre Pronchery.Ss "PKG_HAVE_WITH_MODULES(VARIABLE-PREFIX, MODULES, [DESCRIPTION], [DEFAULT])" 129*a3cefe7fSPierre ProncheryConvenience macro to trigger 130*a3cefe7fSPierre Pronchery.Nm AM_CONDITIONAL 131*a3cefe7fSPierre Proncheryafter a 132*a3cefe7fSPierre Pronchery.Nm PKG_WITH_MODULES check.\& 133*a3cefe7fSPierre Pronchery.Nm VARIABLE-PREFIX 134*a3cefe7fSPierre Proncheryis exported as a make variable. 135*a3cefe7fSPierre Pronchery.Ss "PKG_HAVE_DEFINE_WITH_MODULES(VARIABLE-PREFIX, MODULES, [DESCRIPTION], [DEFAULT])" 136*a3cefe7fSPierre ProncheryConvenience macro to trigger 137*a3cefe7fSPierre Pronchery.Nm AM_CONDITIONAL 138*a3cefe7fSPierre Proncheryand 139*a3cefe7fSPierre Pronchery.Nm AC_DEFINE 140*a3cefe7fSPierre Proncheryafter a 141*a3cefe7fSPierre Pronchery.Nm PKG_WITH_MODULES check.\& 142*a3cefe7fSPierre Pronchery.Nm VARIABLE-PREFIX 143*a3cefe7fSPierre Proncheryis exported as a make variable. 144