From c56327b55d2e75fb0246c9a858e46dd5670699d4 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Fri, 16 May 2014 08:49:13 -0700 Subject: [PATCH] Don't require pkg-config when building from repository. * INSTALL: Prefer './configure FOO=BAR' to 'FOO=BAR ./configure'. * INSTALL.REPO: pkg-config is no longer required to build from the repository. * autogen.sh: Don't check for pkg-config. (progs): Remove pkg-config. (pkg_config_min, AUTORECONF_ENV, env_space, ACLOCAL_PATH): Remove. All uses removed. * m4/pkg.m4: New file, built by admin/merge-pkg-config. * configure.ac: Remove unnecessary m4_pattern_forbid of ^PKG_ and an AC_ARG_VAR of PKG_CONFIG_PATH. pkg.m4 does that for us. (EMACS_CHECK_MODULES): Remove workaround for old pkg-config bug, as we use pkg.m4 from a newer pkg-config. * admin/merge-pkg-config: New script. * admin/notes/copyright: Update for m4/*.m4, in particular m4/pkg.m4. * etc/NEWS: Prefer './configure FOO=BAR' to 'FOO=BAR ./configure'. * etc/PROBLEMS (Build-time-problems): Remove pkg-config problem that is no longer an issue. * nt/INSTALL: Remove no-longer-needed notes about pkg-config. --- ChangeLog | 16 +++ INSTALL | 22 ++--- INSTALL.REPO | 2 - admin/ChangeLog | 6 ++ admin/merge-pkg-config | 63 ++++++++++++ admin/notes/copyright | 5 +- autogen.sh | 96 +----------------- configure.ac | 25 ++--- etc/ChangeLog | 7 ++ etc/NEWS | 2 +- etc/PROBLEMS | 11 --- m4/pkg.m4 | 214 +++++++++++++++++++++++++++++++++++++++++ nt/ChangeLog | 5 + nt/INSTALL | 21 +--- 14 files changed, 341 insertions(+), 154 deletions(-) create mode 100755 admin/merge-pkg-config create mode 100644 m4/pkg.m4 diff --git a/ChangeLog b/ChangeLog index d7c08223cd..70e7de030d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,19 @@ +2014-05-16 Paul Eggert + + Don't require pkg-config when building from repository. + * INSTALL: Prefer './configure FOO=BAR' to 'FOO=BAR ./configure'. + * INSTALL.REPO: pkg-config is no longer required to build from + the repository. + * autogen.sh: Don't check for pkg-config. + (progs): Remove pkg-config. + (pkg_config_min, AUTORECONF_ENV, env_space, ACLOCAL_PATH): + Remove. All uses removed. + * m4/pkg.m4: New file, built by admin/merge-pkg-config. + * configure.ac: Remove unnecessary m4_pattern_forbid of ^PKG_ and + an AC_ARG_VAR of PKG_CONFIG_PATH. pkg.m4 does that for us. + (EMACS_CHECK_MODULES): Remove workaround for old pkg-config bug, + as we use pkg.m4 from a newer pkg-config. + 2014-05-15 Jan Djärv * configure.ac (LIBPNG): Do not test for libpng if NS_IMPL_COCOA. diff --git a/INSTALL b/INSTALL index 3502631cbc..473dc08a4a 100644 --- a/INSTALL +++ b/INSTALL @@ -262,9 +262,9 @@ with the mouse. You can get fancy 3D-style scroll bars, even without Gtk or Motif, if you have the Xaw3d library installed (see "Image support libraries" above for Xaw3d availability). -You can tell configure where to search for GTK by specifying -`--with-pkg-config-prog=PATH' where PATH is the pathname to -pkg-config. Note that GTK version 2.6 or newer is required for Emacs. +You can tell configure where to search for GTK by giving it the +argument PKG_CONFIG='/full/name/of/pkg-config'. GTK version 2.6 or +newer is required for Emacs. Emacs will autolaunch a D-Bus session bus, when the environment variable DISPLAY is set, but no session bus is running. This might be @@ -408,10 +408,11 @@ compiler. By default, gcc is used if available. Here's an example of a `configure' invocation, assuming a Bourne-like shell such as Bash, which uses these variables: - CPPFLAGS='-I/foo/myinclude' LDFLAGS='-L/bar/mylib' \ - CFLAGS='-O3' LIBS='-lfoo -lbar' ./configure + ./configure \ + CPPFLAGS='-I/foo/myinclude' LDFLAGS='-L/bar/mylib' \ + CFLAGS='-O3' LIBS='-lfoo -lbar' -(this is all one long line). This tells `configure' to instruct the +(this is all one shell command). This tells `configure' to instruct the preprocessor to look in the `/foo/myinclude' directory for header files (in addition to the standard directories), instruct the linker to look in `/bar/mylib' for libraries, pass the -O3 optimization @@ -421,12 +422,11 @@ libraries in addition to the standard ones. For some libraries, like Gtk+, fontconfig and ALSA, `configure' uses pkg-config to find where those libraries are installed. If you want pkg-config to look in special directories, you have to set -the environment variable PKG_CONFIG_PATH to point to the directories -where the .pc-files for those libraries are. -For example: +PKG_CONFIG_PATH to point to the directories where the .pc-files for +those libraries are. For example: - PKG_CONFIG_PATH='/usr/local/alsa/lib/pkgconfig:/opt/gtk+-2.8/lib/pkgconfig' \ - ./configure + ./configure \ + PKG_CONFIG_PATH='/usr/local/alsa/lib/pkgconfig:/opt/gtk+-2.8/lib/pkgconfig' The work of `configure' can be done by editing various files in the distribution, but using `configure' is easier. See the section called diff --git a/INSTALL.REPO b/INSTALL.REPO index c1617e781c..36ab928673 100644 --- a/INSTALL.REPO +++ b/INSTALL.REPO @@ -12,8 +12,6 @@ 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. diff --git a/admin/ChangeLog b/admin/ChangeLog index 5eeec00cbd..0981e0eaf1 100644 --- a/admin/ChangeLog +++ b/admin/ChangeLog @@ -1,3 +1,9 @@ +2014-05-16 Paul Eggert + + Don't require pkg-config when building from repository. + * merge-pkg-config: New script. + * notes/copyright: Update for m4/*.m4, in particular m4/pkg.m4. + 2014-05-13 Paul Eggert * merge-gnulib: Defer to autogen.sh for ACLOCAL_PATH computation. diff --git a/admin/merge-pkg-config b/admin/merge-pkg-config new file mode 100755 index 0000000000..fd03a441b1 --- /dev/null +++ b/admin/merge-pkg-config @@ -0,0 +1,63 @@ +#! /bin/sh +# Merge pkg-config macros into Emacs sources. +# Typical usage: +# +# admin/merge-pkg-config + +# Copyright 2014 Free Software Foundation, Inc. + +# This file is part of GNU Emacs. + +# GNU Emacs is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# GNU Emacs is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with GNU Emacs. If not, see . + +# written by Paul Eggert + +{ + # Maybe ACLOCAL_PATH is already set-up. + oIFS=$IFS + IFS=: + for dir in $ACLOCAL_PATH ''; do + test -n "$dir" && test -r "$dir/pkg.m4" && break + done + IFS=$oIFS + + test -n "$dir" +} || { + # Use the pkg.m4 installed where aclocal knows about it. + # Maybe we are running our own aclocal, which doesn't know where + # the standard pkg.m4 is installed, so try running all the + # aclocal programs in our PATH. + oIFS=$IFS + IFS=: + for dir in $PATH ''; do + if test -n "$dir" && test -x "$dir/aclocal"; then + dir=$("$dir/aclocal" --print-ac-dir) && test -r "$dir/pkg.m4" && break + fi + done + IFS=$oIFS + + test -n "$dir" +} || { + echo >&2 "$0: cannot find pkg.m4" + exit 1 +} + +test -d m4 || { + echo >&2 "$0: please run this command in the main source directory" + exit 1 +} + +echo >&2 "$0: copying $dir/pkg.m4 to m4/pkg.m4" + +cp $dir/pkg.m4 m4 diff --git a/admin/notes/copyright b/admin/notes/copyright index 9b4fd55c61..ebef063303 100644 --- a/admin/notes/copyright +++ b/admin/notes/copyright @@ -137,7 +137,10 @@ GNUstep/Emacs.base/Resources/Info-gnustep.plist aclocal.m4 configure m4/*.m4 - - copyright FSF, with unlimited permission to copy, distribute and modify + - These files are copyright FSF, with unlimited permission to copy, + distribute and modify, so long as the copyright notice is preserved. + Exception: m4/pkg.m4 is copyright Scott James Remnant; it is + distributed under the same terms as for the rest of Emacs. lib/Makefile.in - copyright FSF, with MIT-like license diff --git a/autogen.sh b/autogen.sh index 32f86ab820..48e6d19c69 100755 --- a/autogen.sh +++ b/autogen.sh @@ -32,7 +32,7 @@ ## Tools we need: ## Note that we respect the values of AUTOCONF etc, like autoreconf does. -progs="autoconf automake pkg-config" +progs="autoconf automake" ## Minimum versions we need: autoconf_min=`sed -n 's/^ *AC_PREREQ(\([0-9\.]*\)).*/\1/p' configure.ac` @@ -41,7 +41,6 @@ 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". @@ -205,97 +204,8 @@ EOF exit 1 fi -# If automake is installed in a nonstandard location, find the standard -# location if possible and append it to ACLOCAL_PATH. That way, it will -# find the pkg.m4 that is installed in the standard location. -echo "Checking for pkg.m4..." -AUTORECONF_ENV= -env_space= -ac_dir=`aclocal --print-ac-dir` || { - cat < src/stamp-h.in || exit -echo "You can now run \"./configure$env_space$AUTORECONF_ENV\"." +echo "You can now run './configure'." exit 0 diff --git a/configure.ac b/configure.ac index 5e30c49f2d..03b85a5ffa 100644 --- a/configure.ac +++ b/configure.ac @@ -296,7 +296,7 @@ otherwise for the first of `gfile' or `inotify' that is usable.]) dnl http://lists.gnu.org/archive/html/emacs-devel/2008-04/msg01844.html OPTION_DEFAULT_ON([makeinfo],[don't require makeinfo for building manuals]) -## This might be a 'configure' arg, e.g., autogen.sh might set it. +## This might be a 'configure' arg. AC_SUBST([ACLOCAL_PATH]) ## Makefile.in needs the cache file name. @@ -1359,10 +1359,6 @@ 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_]) - -AC_ARG_VAR(PKG_CONFIG_PATH, [Colon-separated list of directories -searched by pkg-config]) pre_PKG_CONFIG_CFLAGS=$CFLAGS pre_PKG_CONFIG_LIBS=$LIBS @@ -1372,24 +1368,15 @@ PKG_PROG_PKG_CONFIG(0.9.0) dnl EMACS_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4) dnl acts like PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, dnl HAVE_GSTUFF=yes, HAVE_GSTUFF=no) -- see pkg-config man page -- -dnl except that it works around older pkg-config bugs and -dnl it postprocesses CFLAGS as needed for --enable-gcc-warnings. +dnl except that it postprocesses CFLAGS as needed for --enable-gcc-warnings. dnl EMACS_CHECK_MODULES accepts optional 3rd and 4th arguments that dnl can take the place of the default HAVE_GSTUFF=yes and HAVE_GSTUFF=no dnl actions. AC_DEFUN([EMACS_CHECK_MODULES], - [dnl pkg-config before 0.26 doesn't check exit status properly; see: - dnl https://bugs.freedesktop.org/show_bug.cgi?id=29801 - dnl Work around the bug by checking the status ourselves. - emacs_check_module_ok=false - AS_IF([test -n "$PKG_CONFIG" && - { $PKG_CONFIG --atleast-pkgconfig-version 0.26 || - { $PKG_CONFIG --cflags "$2" && $PKG_CONFIG --libs "$2"; } - } >/dev/null 2>&AS_MESSAGE_LOG_FD], - [PKG_CHECK_MODULES([$1], [$2], - [$1_CFLAGS=`AS_ECHO(["$$1_CFLAGS"]) | sed -e "$edit_cflags"` - emacs_check_module_ok=:], - [:])]) + [PKG_CHECK_MODULES([$1], [$2], + [$1_CFLAGS=`AS_ECHO(["$$1_CFLAGS"]) | sed -e "$edit_cflags"` + emacs_check_module_ok=:], + [:]) if $emacs_check_module_ok; then m4_default([$3], [HAVE_$1=yes]) else diff --git a/etc/ChangeLog b/etc/ChangeLog index ea0db24072..80f3bf54a1 100644 --- a/etc/ChangeLog +++ b/etc/ChangeLog @@ -1,3 +1,10 @@ +2014-05-16 Paul Eggert + + Don't require pkg-config when building from repository. + * NEWS: Prefer './configure FOO=BAR' to 'FOO=BAR ./configure'. + * PROBLEMS (Build-time-problems): Remove pkg-config problem + that is no longer an issue. + 2014-05-13 Dmitry Antipov * PROBLEMS: Mention potential problems with diff --git a/etc/NEWS b/etc/NEWS index 42f2a870f2..cfee11e591 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -36,7 +36,7 @@ or by sticking with Emacs 24.4. --- ** The configure option `--with-pkg-config-prog' has been removed. -Use the PKG_CONFIG environment variable instead if you need to. +Use './configure PKG_CONFIG=/full/name/of/pkg-config' if you need to. * Startup Changes in Emacs 24.5 diff --git a/etc/PROBLEMS b/etc/PROBLEMS index 6ea699384f..1fffe0638c 100644 --- a/etc/PROBLEMS +++ b/etc/PROBLEMS @@ -2237,17 +2237,6 @@ If you do, please send it to bug-gnu-emacs@gnu.org so we can list it here. * Build-time problems -** Autoreconf - -*** autoreconf fails with "possibly undefined macro: PKG_CONFIG". -This can happen if you installed your own automake in a non-standard -location /prefix. The simplest workaround is to run ./autogen.sh -instead. If you prefer to run autoreconf directly, then if pkg.m4 is -in the directory /usr/share/aclocal you can append /usr/share/local to -your ACLOCAL_PATH environment variable, or you can add a line -"/usr/share/aclocal" to the file /prefix/share/aclocal/dirlist (create -the file if necessary). - ** Configuration *** `configure' warns ``accepted by the compiler, rejected by the preprocessor''. diff --git a/m4/pkg.m4 b/m4/pkg.m4 new file mode 100644 index 0000000000..c5b26b52e6 --- /dev/null +++ b/m4/pkg.m4 @@ -0,0 +1,214 @@ +# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +# serial 1 (pkg-config-0.24) +# +# Copyright © 2004 Scott James Remnant . +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# PKG_PROG_PKG_CONFIG([MIN-VERSION]) +# ---------------------------------- +AC_DEFUN([PKG_PROG_PKG_CONFIG], +[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) +m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) +AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) +AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) +AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=m4_default([$1], [0.9.0]) + AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + PKG_CONFIG="" + fi +fi[]dnl +])# PKG_PROG_PKG_CONFIG + +# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# +# Check to see whether a particular set of modules exists. Similar +# to PKG_CHECK_MODULES(), but does not set variables or print errors. +# +# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +# only at the first occurence in configure.ac, so if the first place +# it's called might be skipped (such as if it is within an "if", you +# have to call PKG_CHECK_EXISTS manually +# -------------------------------------------------------------- +AC_DEFUN([PKG_CHECK_EXISTS], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +if test -n "$PKG_CONFIG" && \ + AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then + m4_default([$2], [:]) +m4_ifvaln([$3], [else + $3])dnl +fi]) + +# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) +# --------------------------------------------- +m4_define([_PKG_CONFIG], +[if test -n "$$1"; then + pkg_cv_[]$1="$$1" + elif test -n "$PKG_CONFIG"; then + PKG_CHECK_EXISTS([$3], + [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes ], + [pkg_failed=yes]) + else + pkg_failed=untried +fi[]dnl +])# _PKG_CONFIG + +# _PKG_SHORT_ERRORS_SUPPORTED +# ----------------------------- +AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi[]dnl +])# _PKG_SHORT_ERRORS_SUPPORTED + + +# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +# [ACTION-IF-NOT-FOUND]) +# +# +# Note that if there is a possibility the first call to +# PKG_CHECK_MODULES might not happen, you should be sure to include an +# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac +# +# +# -------------------------------------------------------------- +AC_DEFUN([PKG_CHECK_MODULES], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl +AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl + +pkg_failed=no +AC_MSG_CHECKING([for $1]) + +_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) +_PKG_CONFIG([$1][_LIBS], [libs], [$2]) + +m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS +and $1[]_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details.]) + +if test $pkg_failed = yes; then + AC_MSG_RESULT([no]) + _PKG_SHORT_ERRORS_SUPPORTED + if test $_pkg_short_errors_supported = yes; then + $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` + else + $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD + + m4_default([$4], [AC_MSG_ERROR( +[Package requirements ($2) were not met: + +$$1_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +_PKG_TEXT])[]dnl + ]) +elif test $pkg_failed = untried; then + AC_MSG_RESULT([no]) + m4_default([$4], [AC_MSG_FAILURE( +[The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +_PKG_TEXT + +To get pkg-config, see .])[]dnl + ]) +else + $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS + $1[]_LIBS=$pkg_cv_[]$1[]_LIBS + AC_MSG_RESULT([yes]) + $3 +fi[]dnl +])# PKG_CHECK_MODULES + + +# PKG_INSTALLDIR(DIRECTORY) +# ------------------------- +# Substitutes the variable pkgconfigdir as the location where a module +# should install pkg-config .pc files. By default the directory is +# $libdir/pkgconfig, but the default can be changed by passing +# DIRECTORY. The user can override through the --with-pkgconfigdir +# parameter. +AC_DEFUN([PKG_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([pkgconfigdir], + [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, + [with_pkgconfigdir=]pkg_default) +AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +]) dnl PKG_INSTALLDIR + + +# PKG_NOARCH_INSTALLDIR(DIRECTORY) +# ------------------------- +# Substitutes the variable noarch_pkgconfigdir as the location where a +# module should install arch-independent pkg-config .pc files. By +# default the directory is $datadir/pkgconfig, but the default can be +# changed by passing DIRECTORY. The user can override through the +# --with-noarch-pkgconfigdir parameter. +AC_DEFUN([PKG_NOARCH_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([noarch-pkgconfigdir], + [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, + [with_noarch_pkgconfigdir=]pkg_default) +AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +]) dnl PKG_NOARCH_INSTALLDIR + + +# PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, +# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# ------------------------------------------- +# Retrieves the value of the pkg-config variable for the given module. +AC_DEFUN([PKG_CHECK_VAR], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl + +_PKG_CONFIG([$1], [variable="][$3]["], [$2]) +AS_VAR_COPY([$1], [pkg_cv_][$1]) + +AS_VAR_IF([$1], [""], [$5], [$4])dnl +])# PKG_CHECK_VAR diff --git a/nt/ChangeLog b/nt/ChangeLog index 16d3e5f397..fc1b0a0910 100644 --- a/nt/ChangeLog +++ b/nt/ChangeLog @@ -1,3 +1,8 @@ +2014-05-16 Paul Eggert + + Don't require pkg-config when building from repository. + * INSTALL: Remove no-longer-needed notes about pkg-config. + 2014-05-05 Eli Zaretskii * INSTALL: Update to the effect that pkg-config is now required diff --git a/nt/INSTALL b/nt/INSTALL index 0d54f27dff..949a4e452c 100644 --- a/nt/INSTALL +++ b/nt/INSTALL @@ -115,11 +115,6 @@ Windows 9X as well). MSYS Texinfo, after installing it as part of msys-base, invoke the command "mingw-get remove msys-texinfo".) - In addition, building Emacs from the development repository requires - pkg-config to be installed. As the MinGW project does not offer it, - you will have to install it from elsewhere; see below (search for - "pkg-config"). - At this point, you should be ready to configure and build Emacs in its basic configuration. Skip to the "Generating the configure script" section for the build instructions. If you want to build it @@ -179,9 +174,7 @@ Windows 9X as well). Available from http://sourceforge.net/projects/ezwinports/files/. . pkg-config (invoked by the configure script to look for optional - packages; _required_ for building from the development - repository, as some components of pkg-config are needed to run - the autoconf and aclocal scripts) + packages) Available from http://www.gtk.org/download/win32.php @@ -243,10 +236,10 @@ Windows 9X as well). from which you unpack all of the MSYS packages. After installing Automake and Autoconf, make sure any of the *.m4 - files you might have in your MinGW installation (e.g., pkg.m4 that - comes with pkg-config) also exist in the MSYS installation tree, in - the share/aclocal directory. Those *.m4 files which exist in the - MinGW tree, but not in the MSYS tree should be copied there. + files you might have in your MinGW installation also exist in the + MSYS installation tree, in the share/aclocal directory. Those *.m4 + files which exist in the MinGW tree, but not in the MSYS tree should + be copied there. If/when you are confident in your MinGW/MSYS installation, and want to speed up the builds, we recommend installing a pre-release @@ -311,10 +304,6 @@ Windows 9X as well). ok Checking for automake (need at least version 1.11)... ok - Checking for pkg-config (need at least version 0.9.0)... - ok - Checking for pkg.m4... - ok Your system has the required tools, running autoreconf... You can now run `./configure'. -- 2.20.1