Skip to content

Commit f146ca3

Browse files
authoredOct 3, 2021
bpo-45350: Rerun autoreconf with the pkg-config macros (GH-28707)
1 parent 93242d7 commit f146ca3

File tree

3 files changed

+484
-5
lines changed

3 files changed

+484
-5
lines changed
 

‎.github/workflows/build.yml

+8-2
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,9 @@ jobs:
106106
- name: Check limited ABI symbols
107107
run: make check-limited-abi
108108
- name: Check Autoconf version 2.69
109-
run: grep "Generated by GNU Autoconf 2.69" configure
109+
run: |
110+
grep "Generated by GNU Autoconf 2.69" configure
111+
grep "PKG_PROG_PKG_CONFIG" aclocal.m4
110112
111113
build_win32:
112114
name: 'Windows (x86)'
@@ -147,8 +149,12 @@ jobs:
147149
PYTHONSTRICTEXTENSIONBUILD: 1
148150
steps:
149151
- uses: actions/checkout@v2
152+
- name: Prepare homebrew environment variables
153+
run: |
154+
echo "LDFLAGS=-L$(brew --prefix tcl-tk)/lib" >> $GITHUB_ENV
155+
echo "PKG_CONFIG_PATH=$(brew --prefix openssl@1.1)/lib/pkgconfig:$(brew --prefix tcl-tk)/lib/pkgconfig" >> $GITHUB_ENV
150156
- name: Configure CPython
151-
run: ./configure --with-pydebug --with-openssl=/usr/local/opt/openssl --prefix=/opt/python-dev
157+
run: ./configure --with-pydebug --prefix=/opt/python-dev
152158
- name: Build CPython
153159
run: make -j4
154160
- name: Display build info

‎aclocal.m4

+344
Original file line numberDiff line numberDiff line change
@@ -275,3 +275,347 @@ AC_DEFUN([AX_CHECK_OPENSSL], [
275275
AC_SUBST([OPENSSL_LDFLAGS])
276276
])
277277

278+
# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
279+
# serial 11 (pkg-config-0.29.1)
280+
281+
dnl Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
282+
dnl Copyright © 2012-2015 Dan Nicholson <dbn.lists@gmail.com>
283+
dnl
284+
dnl This program is free software; you can redistribute it and/or modify
285+
dnl it under the terms of the GNU General Public License as published by
286+
dnl the Free Software Foundation; either version 2 of the License, or
287+
dnl (at your option) any later version.
288+
dnl
289+
dnl This program is distributed in the hope that it will be useful, but
290+
dnl WITHOUT ANY WARRANTY; without even the implied warranty of
291+
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
292+
dnl General Public License for more details.
293+
dnl
294+
dnl You should have received a copy of the GNU General Public License
295+
dnl along with this program; if not, write to the Free Software
296+
dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
297+
dnl 02111-1307, USA.
298+
dnl
299+
dnl As a special exception to the GNU General Public License, if you
300+
dnl distribute this file as part of a program that contains a
301+
dnl configuration script generated by Autoconf, you may include it under
302+
dnl the same distribution terms that you use for the rest of that
303+
dnl program.
304+
305+
dnl PKG_PREREQ(MIN-VERSION)
306+
dnl -----------------------
307+
dnl Since: 0.29
308+
dnl
309+
dnl Verify that the version of the pkg-config macros are at least
310+
dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's
311+
dnl installed version of pkg-config, this checks the developer's version
312+
dnl of pkg.m4 when generating configure.
313+
dnl
314+
dnl To ensure that this macro is defined, also add:
315+
dnl m4_ifndef([PKG_PREREQ],
316+
dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])])
317+
dnl
318+
dnl See the "Since" comment for each macro you use to see what version
319+
dnl of the macros you require.
320+
m4_defun([PKG_PREREQ],
321+
[m4_define([PKG_MACROS_VERSION], [0.29.1])
322+
m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1,
323+
[m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])])
324+
])dnl PKG_PREREQ
325+
326+
dnl PKG_PROG_PKG_CONFIG([MIN-VERSION])
327+
dnl ----------------------------------
328+
dnl Since: 0.16
329+
dnl
330+
dnl Search for the pkg-config tool and set the PKG_CONFIG variable to
331+
dnl first found in the path. Checks that the version of pkg-config found
332+
dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is
333+
dnl used since that's the first version where most current features of
334+
dnl pkg-config existed.
335+
AC_DEFUN([PKG_PROG_PKG_CONFIG],
336+
[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
337+
m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
338+
m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$])
339+
AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
340+
AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
341+
AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
342+
343+
if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
344+
AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
345+
fi
346+
if test -n "$PKG_CONFIG"; then
347+
_pkg_min_version=m4_default([$1], [0.9.0])
348+
AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
349+
if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
350+
AC_MSG_RESULT([yes])
351+
else
352+
AC_MSG_RESULT([no])
353+
PKG_CONFIG=""
354+
fi
355+
fi[]dnl
356+
])dnl PKG_PROG_PKG_CONFIG
357+
358+
dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
359+
dnl -------------------------------------------------------------------
360+
dnl Since: 0.18
361+
dnl
362+
dnl Check to see whether a particular set of modules exists. Similar to
363+
dnl PKG_CHECK_MODULES(), but does not set variables or print errors.
364+
dnl
365+
dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
366+
dnl only at the first occurence in configure.ac, so if the first place
367+
dnl it's called might be skipped (such as if it is within an "if", you
368+
dnl have to call PKG_CHECK_EXISTS manually
369+
AC_DEFUN([PKG_CHECK_EXISTS],
370+
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
371+
if test -n "$PKG_CONFIG" && \
372+
AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
373+
m4_default([$2], [:])
374+
m4_ifvaln([$3], [else
375+
$3])dnl
376+
fi])
377+
378+
dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
379+
dnl ---------------------------------------------
380+
dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting
381+
dnl pkg_failed based on the result.
382+
m4_define([_PKG_CONFIG],
383+
[if test -n "$$1"; then
384+
pkg_cv_[]$1="$$1"
385+
elif test -n "$PKG_CONFIG"; then
386+
PKG_CHECK_EXISTS([$3],
387+
[pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`
388+
test "x$?" != "x0" && pkg_failed=yes ],
389+
[pkg_failed=yes])
390+
else
391+
pkg_failed=untried
392+
fi[]dnl
393+
])dnl _PKG_CONFIG
394+
395+
dnl _PKG_SHORT_ERRORS_SUPPORTED
396+
dnl ---------------------------
397+
dnl Internal check to see if pkg-config supports short errors.
398+
AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
399+
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
400+
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
401+
_pkg_short_errors_supported=yes
402+
else
403+
_pkg_short_errors_supported=no
404+
fi[]dnl
405+
])dnl _PKG_SHORT_ERRORS_SUPPORTED
406+
407+
408+
dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
409+
dnl [ACTION-IF-NOT-FOUND])
410+
dnl --------------------------------------------------------------
411+
dnl Since: 0.4.0
412+
dnl
413+
dnl Note that if there is a possibility the first call to
414+
dnl PKG_CHECK_MODULES might not happen, you should be sure to include an
415+
dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
416+
AC_DEFUN([PKG_CHECK_MODULES],
417+
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
418+
AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
419+
AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
420+
421+
pkg_failed=no
422+
AC_MSG_CHECKING([for $1])
423+
424+
_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
425+
_PKG_CONFIG([$1][_LIBS], [libs], [$2])
426+
427+
m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
428+
and $1[]_LIBS to avoid the need to call pkg-config.
429+
See the pkg-config man page for more details.])
430+
431+
if test $pkg_failed = yes; then
432+
AC_MSG_RESULT([no])
433+
_PKG_SHORT_ERRORS_SUPPORTED
434+
if test $_pkg_short_errors_supported = yes; then
435+
$1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
436+
else
437+
$1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
438+
fi
439+
# Put the nasty error message in config.log where it belongs
440+
echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
441+
442+
m4_default([$4], [AC_MSG_ERROR(
443+
[Package requirements ($2) were not met:
444+
445+
$$1_PKG_ERRORS
446+
447+
Consider adjusting the PKG_CONFIG_PATH environment variable if you
448+
installed software in a non-standard prefix.
449+
450+
_PKG_TEXT])[]dnl
451+
])
452+
elif test $pkg_failed = untried; then
453+
AC_MSG_RESULT([no])
454+
m4_default([$4], [AC_MSG_FAILURE(
455+
[The pkg-config script could not be found or is too old. Make sure it
456+
is in your PATH or set the PKG_CONFIG environment variable to the full
457+
path to pkg-config.
458+
459+
_PKG_TEXT
460+
461+
To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl
462+
])
463+
else
464+
$1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
465+
$1[]_LIBS=$pkg_cv_[]$1[]_LIBS
466+
AC_MSG_RESULT([yes])
467+
$3
468+
fi[]dnl
469+
])dnl PKG_CHECK_MODULES
470+
471+
472+
dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
473+
dnl [ACTION-IF-NOT-FOUND])
474+
dnl ---------------------------------------------------------------------
475+
dnl Since: 0.29
476+
dnl
477+
dnl Checks for existence of MODULES and gathers its build flags with
478+
dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags
479+
dnl and VARIABLE-PREFIX_LIBS from --libs.
480+
dnl
481+
dnl Note that if there is a possibility the first call to
482+
dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to
483+
dnl include an explicit call to PKG_PROG_PKG_CONFIG in your
484+
dnl configure.ac.
485+
AC_DEFUN([PKG_CHECK_MODULES_STATIC],
486+
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
487+
_save_PKG_CONFIG=$PKG_CONFIG
488+
PKG_CONFIG="$PKG_CONFIG --static"
489+
PKG_CHECK_MODULES($@)
490+
PKG_CONFIG=$_save_PKG_CONFIG[]dnl
491+
])dnl PKG_CHECK_MODULES_STATIC
492+
493+
494+
dnl PKG_INSTALLDIR([DIRECTORY])
495+
dnl -------------------------
496+
dnl Since: 0.27
497+
dnl
498+
dnl Substitutes the variable pkgconfigdir as the location where a module
499+
dnl should install pkg-config .pc files. By default the directory is
500+
dnl $libdir/pkgconfig, but the default can be changed by passing
501+
dnl DIRECTORY. The user can override through the --with-pkgconfigdir
502+
dnl parameter.
503+
AC_DEFUN([PKG_INSTALLDIR],
504+
[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])])
505+
m4_pushdef([pkg_description],
506+
[pkg-config installation directory @<:@]pkg_default[@:>@])
507+
AC_ARG_WITH([pkgconfigdir],
508+
[AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],,
509+
[with_pkgconfigdir=]pkg_default)
510+
AC_SUBST([pkgconfigdir], [$with_pkgconfigdir])
511+
m4_popdef([pkg_default])
512+
m4_popdef([pkg_description])
513+
])dnl PKG_INSTALLDIR
514+
515+
516+
dnl PKG_NOARCH_INSTALLDIR([DIRECTORY])
517+
dnl --------------------------------
518+
dnl Since: 0.27
519+
dnl
520+
dnl Substitutes the variable noarch_pkgconfigdir as the location where a
521+
dnl module should install arch-independent pkg-config .pc files. By
522+
dnl default the directory is $datadir/pkgconfig, but the default can be
523+
dnl changed by passing DIRECTORY. The user can override through the
524+
dnl --with-noarch-pkgconfigdir parameter.
525+
AC_DEFUN([PKG_NOARCH_INSTALLDIR],
526+
[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])])
527+
m4_pushdef([pkg_description],
528+
[pkg-config arch-independent installation directory @<:@]pkg_default[@:>@])
529+
AC_ARG_WITH([noarch-pkgconfigdir],
530+
[AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],,
531+
[with_noarch_pkgconfigdir=]pkg_default)
532+
AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir])
533+
m4_popdef([pkg_default])
534+
m4_popdef([pkg_description])
535+
])dnl PKG_NOARCH_INSTALLDIR
536+
537+
538+
dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,
539+
dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
540+
dnl -------------------------------------------
541+
dnl Since: 0.28
542+
dnl
543+
dnl Retrieves the value of the pkg-config variable for the given module.
544+
AC_DEFUN([PKG_CHECK_VAR],
545+
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
546+
AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl
547+
548+
_PKG_CONFIG([$1], [variable="][$3]["], [$2])
549+
AS_VAR_COPY([$1], [pkg_cv_][$1])
550+
551+
AS_VAR_IF([$1], [""], [$5], [$4])dnl
552+
])dnl PKG_CHECK_VAR
553+
554+
dnl PKG_WITH_MODULES(VARIABLE-PREFIX, MODULES,
555+
dnl [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND],
556+
dnl [DESCRIPTION], [DEFAULT])
557+
dnl ------------------------------------------
558+
dnl
559+
dnl Prepare a "--with-" configure option using the lowercase
560+
dnl [VARIABLE-PREFIX] name, merging the behaviour of AC_ARG_WITH and
561+
dnl PKG_CHECK_MODULES in a single macro.
562+
AC_DEFUN([PKG_WITH_MODULES],
563+
[
564+
m4_pushdef([with_arg], m4_tolower([$1]))
565+
566+
m4_pushdef([description],
567+
[m4_default([$5], [build with ]with_arg[ support])])
568+
569+
m4_pushdef([def_arg], [m4_default([$6], [auto])])
570+
m4_pushdef([def_action_if_found], [AS_TR_SH([with_]with_arg)=yes])
571+
m4_pushdef([def_action_if_not_found], [AS_TR_SH([with_]with_arg)=no])
572+
573+
m4_case(def_arg,
574+
[yes],[m4_pushdef([with_without], [--without-]with_arg)],
575+
[m4_pushdef([with_without],[--with-]with_arg)])
576+
577+
AC_ARG_WITH(with_arg,
578+
AS_HELP_STRING(with_without, description[ @<:@default=]def_arg[@:>@]),,
579+
[AS_TR_SH([with_]with_arg)=def_arg])
580+
581+
AS_CASE([$AS_TR_SH([with_]with_arg)],
582+
[yes],[PKG_CHECK_MODULES([$1],[$2],$3,$4)],
583+
[auto],[PKG_CHECK_MODULES([$1],[$2],
584+
[m4_n([def_action_if_found]) $3],
585+
[m4_n([def_action_if_not_found]) $4])])
586+
587+
m4_popdef([with_arg])
588+
m4_popdef([description])
589+
m4_popdef([def_arg])
590+
591+
])dnl PKG_WITH_MODULES
592+
593+
dnl PKG_HAVE_WITH_MODULES(VARIABLE-PREFIX, MODULES,
594+
dnl [DESCRIPTION], [DEFAULT])
595+
dnl -----------------------------------------------
596+
dnl
597+
dnl Convenience macro to trigger AM_CONDITIONAL after PKG_WITH_MODULES
598+
dnl check._[VARIABLE-PREFIX] is exported as make variable.
599+
AC_DEFUN([PKG_HAVE_WITH_MODULES],
600+
[
601+
PKG_WITH_MODULES([$1],[$2],,,[$3],[$4])
602+
603+
AM_CONDITIONAL([HAVE_][$1],
604+
[test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"])
605+
])dnl PKG_HAVE_WITH_MODULES
606+
607+
dnl PKG_HAVE_DEFINE_WITH_MODULES(VARIABLE-PREFIX, MODULES,
608+
dnl [DESCRIPTION], [DEFAULT])
609+
dnl ------------------------------------------------------
610+
dnl
611+
dnl Convenience macro to run AM_CONDITIONAL and AC_DEFINE after
612+
dnl PKG_WITH_MODULES check. HAVE_[VARIABLE-PREFIX] is exported as make
613+
dnl and preprocessor variable.
614+
AC_DEFUN([PKG_HAVE_DEFINE_WITH_MODULES],
615+
[
616+
PKG_HAVE_WITH_MODULES([$1],[$2],[$3],[$4])
617+
618+
AS_IF([test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"],
619+
[AC_DEFINE([HAVE_][$1], 1, [Enable ]m4_tolower([$1])[ support])])
620+
])dnl PKG_HAVE_DEFINE_WITH_MODULES
621+

0 commit comments

Comments
 (0)
Please sign in to comment.