Use pkg-config's pkg.m4
* configure.ac: Use pkg-config's pkg.m4, rather than reinventing it. Add explicit AC_SUBST's where needed. * autogen.sh (progs): Add pkg-config. (pkg_config_min): New variable. * INSTALL.REPO: Mention pkg-config. * etc/PROBLEMS: Mention a related issue that can occur with a local automake.
This commit is contained in:
parent
cd626254b7
commit
b05e08a465
5 changed files with 28 additions and 58 deletions
|
@ -1,5 +1,10 @@
|
|||
2014-05-02 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* configure.ac: Use pkg-config's pkg.m4, rather than reinventing it.
|
||||
Add explicit AC_SUBST's where needed.
|
||||
* autogen.sh (progs): Add pkg-config.
|
||||
(pkg_config_min): New variable.
|
||||
|
||||
* configure.ac (AC_CONFIG_MACRO_DIR): Use it.
|
||||
|
||||
* autogen.sh (get_version): Handle no leading whitespace.
|
||||
|
|
|
@ -12,6 +12,8 @@ autoconf - at least the version specified near the start of
|
|||
configure.ac (in the AC_PREREQ command).
|
||||
automake - at least the version specified near the start of
|
||||
configure.ac (in the AM_INIT_AUTOMAKE command).
|
||||
pkg-config - at least version specified in the PKG_PROG_PKG_CONFIG
|
||||
command in configure.ac
|
||||
makeinfo - not strictly necessary, but highly recommended, so that
|
||||
you can build the manuals.
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
|
||||
## Tools we need:
|
||||
## Note that we respect the values of AUTOCONF etc, like autoreconf does.
|
||||
progs="autoconf automake"
|
||||
progs="autoconf automake pkg-config"
|
||||
|
||||
## Minimum versions we need:
|
||||
autoconf_min=`sed -n 's/^ *AC_PREREQ(\([0-9\.]*\)).*/\1/p' configure.ac`
|
||||
|
@ -41,6 +41,7 @@ autoconf_min=`sed -n 's/^ *AC_PREREQ(\([0-9\.]*\)).*/\1/p' configure.ac`
|
|||
## AM_INIT_AUTOMAKE call.
|
||||
automake_min=`sed -n 's/^ *AM_INIT_AUTOMAKE(\([0-9\.]*\)).*/\1/p' configure.ac`
|
||||
|
||||
pkg_config_min=`sed -n 's/^ *PKG_PROG_PKG_CONFIG(\([0-9\.]*\)).*/\1/p' configure.ac`
|
||||
|
||||
## $1 = program, eg "autoconf".
|
||||
## Echo the version string, eg "2.59".
|
||||
|
|
65
configure.ac
65
configure.ac
|
@ -1339,65 +1339,12 @@ AC_SUBST(LIB_MATH)
|
|||
AC_DEFINE_UNQUOTED(SYSTEM_TYPE, "$SYSTEM_TYPE",
|
||||
[The type of system you are compiling for; sets `system-type'.])
|
||||
|
||||
m4_pattern_forbid([^PKG_])
|
||||
|
||||
pre_PKG_CONFIG_CFLAGS=$CFLAGS
|
||||
pre_PKG_CONFIG_LIBS=$LIBS
|
||||
|
||||
AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
|
||||
|
||||
dnl This function definition taken from Gnome 2.0
|
||||
dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not)
|
||||
dnl defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page
|
||||
dnl also defines GSTUFF_PKG_ERRORS on error
|
||||
AC_DEFUN([PKG_CHECK_MODULES], [
|
||||
succeeded=no
|
||||
|
||||
if test "$PKG_CONFIG" = "no" ; then
|
||||
ifelse([$4], , [AC_MSG_ERROR([
|
||||
*** The pkg-config script could not be found. Make sure it is in your path, or give the full name of pkg-config with the PKG_CONFIG environment variable or --with-pkg-config-prog. Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config.])], [$4])
|
||||
else
|
||||
PKG_CONFIG_MIN_VERSION=0.9.0
|
||||
if "$PKG_CONFIG" --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
|
||||
AC_MSG_CHECKING(for $2)
|
||||
|
||||
if "$PKG_CONFIG" --exists "$2" 2>&AS_MESSAGE_LOG_FD &&
|
||||
$1_CFLAGS=`"$PKG_CONFIG" --cflags "$2" 2>&AS_MESSAGE_LOG_FD` &&
|
||||
$1_LIBS=`"$PKG_CONFIG" --libs "$2" 2>&AS_MESSAGE_LOG_FD`; then
|
||||
edit_cflags="
|
||||
s,///*,/,g
|
||||
s/^/ /
|
||||
s/ -I/ $isystem/g
|
||||
s/^ //
|
||||
"
|
||||
$1_CFLAGS=`AS_ECHO(["$$1_CFLAGS"]) | sed -e "$edit_cflags"`
|
||||
$1_LIBS=`AS_ECHO(["$$1_LIBS"]) | sed -e 's,///*,/,g'`
|
||||
AC_MSG_RESULT([yes CFLAGS='$$1_CFLAGS' LIBS='$$1_LIBS'])
|
||||
succeeded=yes
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
$1_CFLAGS=""
|
||||
$1_LIBS=""
|
||||
## If we have a custom action on failure, don't print errors, but
|
||||
## do set a variable so people can do so. Do it in a subshell
|
||||
## to capture any diagnostics in invoking pkg-config.
|
||||
$1_PKG_ERRORS=`("$PKG_CONFIG" --print-errors "$2") 2>&1`
|
||||
ifelse([$4], ,echo "$$1_PKG_ERRORS",)
|
||||
fi
|
||||
|
||||
AC_SUBST($1_CFLAGS)
|
||||
AC_SUBST($1_LIBS)
|
||||
else
|
||||
echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
|
||||
echo "*** See http://www.freedesktop.org/software/pkgconfig"
|
||||
fi
|
||||
fi
|
||||
|
||||
if test $succeeded = yes; then
|
||||
ifelse([$3], , :, [$3])
|
||||
else
|
||||
ifelse([$4], , [AC_MSG_ERROR([Library requirements ($2) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.])], [$4])
|
||||
fi
|
||||
])
|
||||
PKG_PROG_PKG_CONFIG(0.9.0)
|
||||
|
||||
HAVE_SOUND=no
|
||||
if test "${with_sound}" != "no"; then
|
||||
|
@ -2415,6 +2362,8 @@ if test "${with_dbus}" = "yes"; then
|
|||
DBUS_OBJ=dbusbind.o
|
||||
fi
|
||||
fi
|
||||
AC_SUBST(DBUS_CFLAGS)
|
||||
AC_SUBST(DBUS_LIBS)
|
||||
AC_SUBST(DBUS_OBJ)
|
||||
|
||||
dnl GSettings has been tested under GNU/Linux only.
|
||||
|
@ -3268,7 +3217,6 @@ if test "${HAVE_X11}" = "yes"; then
|
|||
[AC_CHECK_LIB(Xrandr, XRRGetScreenResources, HAVE_XRANDR=yes)])
|
||||
if test $HAVE_XRANDR = yes; then
|
||||
XRANDR_LIBS=-lXrandr
|
||||
AC_SUBST(XRANDR_LIBS)
|
||||
fi
|
||||
fi
|
||||
if test $HAVE_XRANDR = yes; then
|
||||
|
@ -3283,6 +3231,8 @@ if test "${HAVE_X11}" = "yes"; then
|
|||
AC_DEFINE(HAVE_XRANDR, 1, [Define to 1 if you have the XRandr extension.])
|
||||
fi
|
||||
fi
|
||||
AC_SUBST(XRANDR_CFLAGS)
|
||||
AC_SUBST(XRANDR_LIBS)
|
||||
|
||||
### Use Xinerama (-lXinerama) if available
|
||||
HAVE_XINERAMA=no
|
||||
|
@ -3297,13 +3247,14 @@ if test "${HAVE_X11}" = "yes"; then
|
|||
[AC_CHECK_LIB(Xinerama, XineramaQueryExtension, HAVE_XINERAMA=yes)])
|
||||
if test $HAVE_XINERAMA = yes; then
|
||||
XINERAMA_LIBS=-lXinerama
|
||||
AC_SUBST(XINERAMA_LIBS)
|
||||
fi
|
||||
fi
|
||||
if test $HAVE_XINERAMA = yes; then
|
||||
AC_DEFINE(HAVE_XINERAMA, 1, [Define to 1 if you have the Xinerama extension.])
|
||||
fi
|
||||
fi
|
||||
AC_SUBST(XINERAMA_CFLAGS)
|
||||
AC_SUBST(XINERAMA_LIBS)
|
||||
|
||||
|
||||
### Use libxml (-lxml2) if available
|
||||
|
|
11
etc/PROBLEMS
11
etc/PROBLEMS
|
@ -2223,6 +2223,17 @@ If you do, please send it to bug-gnu-emacs@gnu.org so we can list it here.
|
|||
|
||||
* Build-time problems
|
||||
|
||||
** Autogen.sh / Autoreconf
|
||||
|
||||
*** Running `autogen.sh' or `autoreconf' fails with an error of the form
|
||||
"possibly undefined macro: PKG_CONFIG". This indicates that the version
|
||||
of aclocal that you are using cannot find the pkg.m4 file that
|
||||
pkg-config provides. If you installed your own version of automake in
|
||||
a non-standard location /prefix, then add a line to the
|
||||
/prefix/share/aclocal/dirlist file (create the file if necessary)
|
||||
that gives the location of the directory that contains pkg.m4
|
||||
(e.g. /usr/share/aclocal).
|
||||
|
||||
** Configuration
|
||||
|
||||
*** `configure' warns ``accepted by the compiler, rejected by the preprocessor''.
|
||||
|
|
Loading…
Add table
Reference in a new issue