mirror of
https://git.yoctoproject.org/git/poky
synced 2026-01-04 16:10:04 +00:00
autoconf: Backport upstreamed patches
These patches improve the Y2038 support on top of 2.72c release (From OE-Core rev: ffff6eb96f0c500cf4386e842b73fc11156b469a) Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
f35b5f5d20
commit
baa99b3201
|
|
@ -0,0 +1,36 @@
|
|||
From 5ffc09fca39de051537fbebd7c6c33d5255a520f Mon Sep 17 00:00:00 2001
|
||||
From: Paul Eggert <eggert@cs.ucla.edu>
|
||||
Date: Mon, 27 Mar 2023 18:10:36 -0700
|
||||
Subject: [PATCH 01/29] mention prototypes more prominently in NEWS
|
||||
|
||||
* NEWS: Mention the function prototype issue early.
|
||||
(From a suggestion by Zack Weinberg.)
|
||||
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
NEWS | 8 ++++++++
|
||||
1 file changed, 8 insertions(+)
|
||||
|
||||
diff --git a/NEWS b/NEWS
|
||||
index cf01ee210..d64648c6f 100644
|
||||
--- a/NEWS
|
||||
+++ b/NEWS
|
||||
@@ -4,6 +4,14 @@ GNU Autoconf NEWS - User visible changes.
|
||||
|
||||
** Backward incompatibilities
|
||||
|
||||
+*** AC_CHECK_FUNC and similar macros now use function prototypes.
|
||||
+ AC_CHECK_FUNC and and similar macros now use C declarations with
|
||||
+ function prototypes, a feature introduced in C89. The new approach
|
||||
+ should work better with C23, which removed the non-prototyped K&R
|
||||
+ style that AC_CHECK_FUNC previously used. However, this change
|
||||
+ means Autoconf no longer supports pre-1989 C compilers, as they do
|
||||
+ not support function prototypes.
|
||||
+
|
||||
*** Autoconf now requires perl 5.10 (2007) or later.
|
||||
Generated 'configure' scripts continue to run without perl.
|
||||
|
||||
--
|
||||
2.41.0
|
||||
|
||||
|
|
@ -0,0 +1,123 @@
|
|||
From e2220ed33e69d8bc6504e3f6279894afe33a99a5 Mon Sep 17 00:00:00 2001
|
||||
From: Paul Eggert <eggert@cs.ucla.edu>
|
||||
Date: Wed, 29 Mar 2023 12:59:09 -0700
|
||||
Subject: [PATCH 02/29] build: run "make fetch", which updated these:
|
||||
|
||||
* build-aux/texinfo.tex: Update from texinfo.
|
||||
* lib/Autom4te/FileUtils.pm: Update from automake.
|
||||
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
build-aux/texinfo.tex | 50 +++++++++++++++++++++------------------
|
||||
lib/Autom4te/FileUtils.pm | 5 +++-
|
||||
2 files changed, 31 insertions(+), 24 deletions(-)
|
||||
|
||||
diff --git a/build-aux/texinfo.tex b/build-aux/texinfo.tex
|
||||
index d25161109..55a002d27 100644
|
||||
--- a/build-aux/texinfo.tex
|
||||
+++ b/build-aux/texinfo.tex
|
||||
@@ -3,7 +3,7 @@
|
||||
% Load plain if necessary, i.e., if running under initex.
|
||||
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
|
||||
%
|
||||
-\def\texinfoversion{2023-03-21.06}
|
||||
+\def\texinfoversion{2023-03-27.21}
|
||||
%
|
||||
% Copyright 1985, 1986, 1988, 1990-2023 Free Software Foundation, Inc.
|
||||
%
|
||||
@@ -1102,27 +1102,33 @@ where each line of input produces a line of output.}
|
||||
|
||||
% Output page labels information.
|
||||
% See PDF reference v.1.7 p.594, section 8.3.1.
|
||||
+% Page label ranges must be increasing.
|
||||
\ifpdf
|
||||
\def\pagelabels{%
|
||||
\def\title{0 << /P (T-) /S /D >>}%
|
||||
- \edef\roman{\the\romancount << /S /r >>}%
|
||||
- \edef\arabic{\the\arabiccount << /S /D >>}%
|
||||
%
|
||||
- % Page label ranges must be increasing. Remove any duplicates.
|
||||
- % (There is a slight chance of this being wrong if e.g. there is
|
||||
- % a @contents but no @titlepage, etc.)
|
||||
- %
|
||||
- \ifnum\romancount=0 \def\roman{}\fi
|
||||
- \ifnum\arabiccount=0 \def\title{}%
|
||||
- \else
|
||||
- \ifnum\romancount=\arabiccount \def\roman{}\fi
|
||||
- \fi
|
||||
- %
|
||||
- \ifnum\romancount<\arabiccount
|
||||
- \pdfcatalog{/PageLabels << /Nums [\title \roman \arabic ] >> }\relax
|
||||
+ % support @contents at very end of document
|
||||
+ \ifnum\contentsendcount=\pagecount
|
||||
+ \ifnum\arabiccount<\romancount
|
||||
+ \pdfcatalog{/PageLabels << /Nums
|
||||
+ [\title
|
||||
+ \the\arabiccount << /S /D >>
|
||||
+ \the\romancount << /S /r >>
|
||||
+ ] >> }\relax
|
||||
+ \fi
|
||||
+ % no contents in document
|
||||
+ \else\ifnum\contentsendcount=0
|
||||
+ \pdfcatalog{/PageLabels << /Nums
|
||||
+ [\title
|
||||
+ \the\arabiccount << /S /D >>
|
||||
+ ] >> }\relax
|
||||
\else
|
||||
- \pdfcatalog{/PageLabels << /Nums [\title \arabic \roman ] >> }\relax
|
||||
- \fi
|
||||
+ \pdfcatalog{/PageLabels << /Nums
|
||||
+ [\title
|
||||
+ \the\romancount << /S /r >>
|
||||
+ \the\contentsendcount << /S /D >>
|
||||
+ ] >> }\relax
|
||||
+ \fi\fi
|
||||
}
|
||||
\else
|
||||
\let\pagelabels\relax
|
||||
@@ -1131,6 +1137,8 @@ where each line of input produces a line of output.}
|
||||
\newcount\pagecount \pagecount=0
|
||||
\newcount\romancount \romancount=0
|
||||
\newcount\arabiccount \arabiccount=0
|
||||
+\newcount\contentsendcount \contentsendcount=0
|
||||
+
|
||||
\ifpdf
|
||||
\let\ptxadvancepageno\advancepageno
|
||||
\def\advancepageno{%
|
||||
@@ -6809,12 +6817,8 @@ might help (with 'rm \jobname.?? \jobname.??s')%
|
||||
% Get ready to use Arabic numerals again
|
||||
\def\contentsendroman{%
|
||||
\lastnegativepageno = \pageno
|
||||
- \global\pageno = \savepageno
|
||||
- %
|
||||
- % If \romancount > \arabiccount, the contents are at the end of the
|
||||
- % document. Otherwise, advance where the Arabic numerals start for
|
||||
- % the page numbers.
|
||||
- \ifnum\romancount>\arabiccount\else\global\arabiccount=\pagecount\fi
|
||||
+ \global\pageno=1
|
||||
+ \contentsendcount = \pagecount
|
||||
}
|
||||
|
||||
% Typeset the label for a chapter or appendix for the short contents.
|
||||
diff --git a/lib/Autom4te/FileUtils.pm b/lib/Autom4te/FileUtils.pm
|
||||
index ab58b9de4..2468fe6d8 100644
|
||||
--- a/lib/Autom4te/FileUtils.pm
|
||||
+++ b/lib/Autom4te/FileUtils.pm
|
||||
@@ -39,9 +39,12 @@ use strict;
|
||||
use warnings FATAL => 'all';
|
||||
|
||||
use Exporter;
|
||||
-use Time::HiRes qw(stat);
|
||||
use IO::File;
|
||||
|
||||
+# use sub-second resolution timestamps if available,
|
||||
+# carry on with one-second resolution timestamps if that is all we have
|
||||
+BEGIN { eval { require Time::HiRes; import Time::HiRes qw(stat) } }
|
||||
+
|
||||
use Autom4te::Channels;
|
||||
use Autom4te::ChannelDefs;
|
||||
|
||||
--
|
||||
2.41.0
|
||||
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
From e05aa447945c0d72ad924fd89a28830cf1a0f8d3 Mon Sep 17 00:00:00 2001
|
||||
From: Paul Eggert <eggert@cs.ucla.edu>
|
||||
Date: Fri, 31 Mar 2023 10:37:57 -0700
|
||||
Subject: [PATCH 03/29] * NEWS: Tighten up wording.
|
||||
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
NEWS | 4 +---
|
||||
1 file changed, 1 insertion(+), 3 deletions(-)
|
||||
|
||||
diff --git a/NEWS b/NEWS
|
||||
index d64648c6f..884e46f45 100644
|
||||
--- a/NEWS
|
||||
+++ b/NEWS
|
||||
@@ -5,9 +5,7 @@ GNU Autoconf NEWS - User visible changes.
|
||||
** Backward incompatibilities
|
||||
|
||||
*** AC_CHECK_FUNC and similar macros now use function prototypes.
|
||||
- AC_CHECK_FUNC and and similar macros now use C declarations with
|
||||
- function prototypes, a feature introduced in C89. The new approach
|
||||
- should work better with C23, which removed the non-prototyped K&R
|
||||
+ This should work better with C23, which removed the non-prototyped K&R
|
||||
style that AC_CHECK_FUNC previously used. However, this change
|
||||
means Autoconf no longer supports pre-1989 C compilers, as they do
|
||||
not support function prototypes.
|
||||
--
|
||||
2.41.0
|
||||
|
||||
|
|
@ -0,0 +1,82 @@
|
|||
From 232cab527897bcdf4d55492d41af73d31905bda5 Mon Sep 17 00:00:00 2001
|
||||
From: Paul Eggert <eggert@cs.ucla.edu>
|
||||
Date: Fri, 31 Mar 2023 10:46:20 -0700
|
||||
Subject: [PATCH 04/29] Cater to programs misusing AC_EGREP_HEADER
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Problem reported by Frederic Berat in:
|
||||
https://lists.gnu.org/archive/html/autoconf/2022-11/msg00127.html
|
||||
* lib/autoconf/programs.m4 (AC_PROG_EGREP): Also set
|
||||
EGREP_TRADITIONAL and ac_cv_path_EGREP_TRADITIONAL.
|
||||
* tests/c.at (AC_PROG_EGREP and AC_EGREP_HEADER):
|
||||
New test, taken from Frederic Berat’s email in:
|
||||
https://lists.gnu.org/r/autoconf/2023-03/msg00043.html
|
||||
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
lib/autoconf/programs.m4 | 10 ++++++++++
|
||||
tests/c.at | 24 ++++++++++++++++++++++++
|
||||
2 files changed, 34 insertions(+)
|
||||
|
||||
diff --git a/lib/autoconf/programs.m4 b/lib/autoconf/programs.m4
|
||||
index 1b7460c85..62ba6b8b6 100644
|
||||
--- a/lib/autoconf/programs.m4
|
||||
+++ b/lib/autoconf/programs.m4
|
||||
@@ -371,6 +371,16 @@ AC_CACHE_CHECK([for egrep], ac_cv_path_EGREP,
|
||||
fi])
|
||||
EGREP="$ac_cv_path_EGREP"
|
||||
AC_SUBST([EGREP])
|
||||
+ dnl
|
||||
+ dnl Also set EGREP_TRADITIONAL even though unnecessary here,
|
||||
+ dnl for wrong but too-common code with the following pattern:
|
||||
+ dnl AC_PROG_EGREP
|
||||
+ dnl if false; then
|
||||
+ dnl AC_EGREP_HEADER([printf], [stdio.h], [has_printf=yes])
|
||||
+ dnl fi
|
||||
+ dnl AC_EGREP_HEADER([malloc], [stdlib.h], [has_malloc=yes])
|
||||
+ EGREP_TRADITIONAL=$EGREP
|
||||
+ ac_cv_path_EGREP_TRADITIONAL=$EGREP
|
||||
])# AC_PROG_EGREP
|
||||
|
||||
# _AC_PROG_EGREP_TRADITIONAL
|
||||
diff --git a/tests/c.at b/tests/c.at
|
||||
index c37f43b10..fad54760f 100644
|
||||
--- a/tests/c.at
|
||||
+++ b/tests/c.at
|
||||
@@ -232,6 +232,30 @@ AT_CHECK_DEFINES(
|
||||
AT_CLEANUP
|
||||
|
||||
|
||||
+## ----------------------------------- ##
|
||||
+## AC_PROG_EGREP and AC_EGREP_HEADER. ##
|
||||
+## ----------------------------------- ##
|
||||
+
|
||||
+AT_SETUP([AC_PROG_EGREP and AC_EGREP_HEADER])
|
||||
+
|
||||
+_AT_CHECK_AC_MACRO(
|
||||
+[[AC_PROG_CPP
|
||||
+ AC_PROG_EGREP
|
||||
+
|
||||
+ # Although this code is incorrect (it should use AS_IF),
|
||||
+ # it follows a too-common real world pattern.
|
||||
+ # For now, test for it; we may remove this test later.
|
||||
+ if false; then
|
||||
+ AC_EGREP_HEADER([^], [limits.h])
|
||||
+ fi
|
||||
+
|
||||
+ AC_EGREP_HEADER([$], [limits.h], [],
|
||||
+ [AC_MSG_ERROR([[egrep-related macros do not tolerate misuse of 'if']])])
|
||||
+]])
|
||||
+
|
||||
+AT_CLEANUP
|
||||
+
|
||||
+
|
||||
## ------------------------------------ ##
|
||||
## AC_NO_EXECUTABLES (working linker). ##
|
||||
## ------------------------------------ ##
|
||||
--
|
||||
2.41.0
|
||||
|
||||
|
|
@ -0,0 +1,75 @@
|
|||
From 713d9822bbfb2923115065efaefed34a0113f8a1 Mon Sep 17 00:00:00 2001
|
||||
From: Paul Eggert <eggert@cs.ucla.edu>
|
||||
Date: Sat, 1 Apr 2023 16:44:03 -0700
|
||||
Subject: [PATCH 06/29] Fix timing bug on high-speed builds
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Problem reported by Bogdan via Jacob Bachmeyer in:
|
||||
https://lists.gnu.org/r/autoconf/2023-04/msg00002.html
|
||||
* bin/autom4te.in: If a file timestamp equals a dependency’s
|
||||
timestamp, consider the file to be out of date. Although this may
|
||||
result in extra work, it fixes some rare timing bugs.
|
||||
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
bin/autom4te.in | 12 +++++-------
|
||||
1 file changed, 5 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/bin/autom4te.in b/bin/autom4te.in
|
||||
index 4b61f0a82..71d7e6a62 100644
|
||||
--- a/bin/autom4te.in
|
||||
+++ b/bin/autom4te.in
|
||||
@@ -910,10 +910,8 @@ sub up_to_date ($)
|
||||
return 0
|
||||
if ! -f $tfile || ! -f $ofile;
|
||||
|
||||
- # The youngest of the cache files must be older than the oldest of
|
||||
+ # The younger of the cache files must be older than the oldest of
|
||||
# the dependencies.
|
||||
- # FIXME: These timestamps have only 1-second resolution.
|
||||
- # Time::HiRes fixes this, but assumes Perl 5.8 or later.
|
||||
my $tmtime = mtime ($tfile);
|
||||
my $omtime = mtime ($ofile);
|
||||
my ($file, $mtime) = ($tmtime < $omtime
|
||||
@@ -926,7 +924,7 @@ sub up_to_date ($)
|
||||
# We depend at least upon the arguments.
|
||||
foreach my $dep (@ARGV)
|
||||
{
|
||||
- if ($mtime < mtime ($dep))
|
||||
+ if ($mtime <= mtime ($dep))
|
||||
{
|
||||
verb "up_to_date ($file): outdated: $dep";
|
||||
return 0;
|
||||
@@ -949,7 +947,7 @@ sub up_to_date ($)
|
||||
# timestamp of that missing file was newer).
|
||||
return 0
|
||||
if ! $dep;
|
||||
- if ($mtime < mtime ($dep))
|
||||
+ if ($mtime <= mtime ($dep))
|
||||
{
|
||||
verb "up_to_date ($file): outdated: $dep";
|
||||
return 0;
|
||||
@@ -1038,7 +1036,7 @@ $icache_file = new Autom4te::XFile $icache, O_RDWR|O_CREAT;
|
||||
$icache_file->lock (LOCK_EX)
|
||||
if ($flock_implemented eq "yes");
|
||||
|
||||
-# Read the cache index if available and older than autom4te itself.
|
||||
+# Read the cache index if available and younger than autom4te itself.
|
||||
# If autom4te is younger, then some structures such as C4che might
|
||||
# have changed, which would corrupt its processing.
|
||||
Autom4te::C4che->load ($icache_file)
|
||||
@@ -1105,7 +1103,7 @@ else
|
||||
# Actual M4 expansion, if the user wants it, or if $output is old
|
||||
# (STDOUT is pretty old).
|
||||
handle_output ($req, $output)
|
||||
- if $force || mtime ($output) < mtime ($ocache . $req->id);
|
||||
+ if $force || mtime ($output) <= mtime ($ocache . $req->id);
|
||||
}
|
||||
|
||||
# If we ran up to here, the cache is valid.
|
||||
--
|
||||
2.41.0
|
||||
|
||||
|
|
@ -0,0 +1,57 @@
|
|||
From 794182506c3c5814d48b2fc4d832770f608ce0ef Mon Sep 17 00:00:00 2001
|
||||
From: Paul Eggert <eggert@cs.ucla.edu>
|
||||
Date: Sat, 1 Apr 2023 20:25:13 -0700
|
||||
Subject: [PATCH 07/29] Support underquoted callers better
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Problem reported bh Khem Raj for mcpp 2.7.2 (2008) in:
|
||||
https://lists.gnu.org/r/autoconf/2023-04/msg00001.html
|
||||
* lib/autoconf/programs.m4 (_AC_PATH_PROG_FLAVOR_GNU):
|
||||
Add two ‘@%:@(’s to cater to underquoted callers.
|
||||
* lib/m4sugar/m4sh.m4 (_AS_PATH_WALK): Use quadrigraph instead of
|
||||
‘#’, for underquoted callers.
|
||||
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
lib/autoconf/programs.m4 | 5 +++--
|
||||
lib/m4sugar/m4sh.m4 | 2 +-
|
||||
2 files changed, 4 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/lib/autoconf/programs.m4 b/lib/autoconf/programs.m4
|
||||
index 62ba6b8b6..d06d18c44 100644
|
||||
--- a/lib/autoconf/programs.m4
|
||||
+++ b/lib/autoconf/programs.m4
|
||||
@@ -543,11 +543,12 @@ dnl # for best performing tool in a list breaks down.
|
||||
# ----------------------------------------------------------------
|
||||
m4_define([_AC_PATH_PROG_FLAVOR_GNU],
|
||||
[# Check for GNU $1
|
||||
-case `"$1" --version 2>&1` in
|
||||
+case `"$1" --version 2>&1` in @%:@(
|
||||
*GNU*)
|
||||
$2;;
|
||||
m4_ifval([$3],
|
||||
-[*)
|
||||
+[@%:@(
|
||||
+*)
|
||||
$3;;
|
||||
])esac
|
||||
])# _AC_PATH_PROG_FLAVOR_GNU
|
||||
diff --git a/lib/m4sugar/m4sh.m4 b/lib/m4sugar/m4sh.m4
|
||||
index ab5ca7db7..368487fa0 100644
|
||||
--- a/lib/m4sugar/m4sh.m4
|
||||
+++ b/lib/m4sugar/m4sh.m4
|
||||
@@ -1389,7 +1389,7 @@ m4_if([$1], m4_translit([[$1]], [:;]),
|
||||
for as_dir in $as_dummy])
|
||||
do
|
||||
IFS=$as_save_IFS
|
||||
- case $as_dir in #(((
|
||||
+ case $as_dir in @%:@(((
|
||||
'') as_dir=./ ;;
|
||||
*/) ;;
|
||||
*) as_dir=$as_dir/ ;;
|
||||
--
|
||||
2.41.0
|
||||
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
From 8babe5f2ccb73cc574933743b381557a4db02424 Mon Sep 17 00:00:00 2001
|
||||
From: Zack Weinberg <zackw@panix.com>
|
||||
Date: Thu, 30 Mar 2023 10:50:36 -0400
|
||||
Subject: [PATCH 08/29] New script for building inside Guix containers.
|
||||
|
||||
build-aux/test-build-guix, goes with the top level manifest.scm.
|
||||
See the top of the file for usage instructions.
|
||||
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
build-aux/test-build-guix | 30 ++++++++++++++++++++++++++++++
|
||||
1 file changed, 30 insertions(+)
|
||||
create mode 100755 build-aux/test-build-guix
|
||||
|
||||
diff --git a/build-aux/test-build-guix b/build-aux/test-build-guix
|
||||
new file mode 100755
|
||||
index 000000000..4470af9b7
|
||||
--- /dev/null
|
||||
+++ b/build-aux/test-build-guix
|
||||
@@ -0,0 +1,30 @@
|
||||
+#! /bin/sh
|
||||
+
|
||||
+# From a pristine Git checkout, run
|
||||
+# guix shell --container --manifest=manifest.scm -- build-aux/test-build-guix
|
||||
+# to perform a complete bootstrap and test build of Autoconf.
|
||||
+
|
||||
+set -ex
|
||||
+
|
||||
+# Guix bug? /bin/sh is usually *not* the shell specified in the manifest.
|
||||
+SHELL="$(command -v sh)"
|
||||
+export SHELL
|
||||
+if [ "$(realpath /bin/sh)" != "$(realpath "$SHELL")" ]; then
|
||||
+ (
|
||||
+ cd /bin
|
||||
+ rm sh
|
||||
+ ln -s "$SHELL" sh
|
||||
+ )
|
||||
+ exec "$SHELL" "$0" "$@"
|
||||
+fi
|
||||
+
|
||||
+./bootstrap
|
||||
+if [ -d _build ]; then
|
||||
+ rm -rf _build/*
|
||||
+else
|
||||
+ mkdir _build
|
||||
+fi
|
||||
+cd _build
|
||||
+../configure
|
||||
+make all info pdf dvi
|
||||
+make distcheck
|
||||
--
|
||||
2.41.0
|
||||
|
||||
|
|
@ -0,0 +1,82 @@
|
|||
From dcf9bb7e3b12f3bd74edff60e80b53e668159579 Mon Sep 17 00:00:00 2001
|
||||
From: Zack Weinberg <zackw@panix.com>
|
||||
Date: Sun, 2 Apr 2023 10:27:08 -0400
|
||||
Subject: [PATCH 09/29] AC_XENIX_DIR: Rewrite using AC_CANONICAL_HOST.
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
AC_XENIX_DIR is an obsolete macro, defined as AC_HEADER_DIRENT plus
|
||||
code to make absolutely sure configure scripts that depended on a
|
||||
shell variable internal to the original (2.13 era) definition of
|
||||
AC_XENIX_DIR are not broken by autoupdate. (That variable had the
|
||||
temptingly public-sounding name “XENIX.”) This compatibility code
|
||||
uses AC_EGREP_CPP, which is itself discouraged for use in new
|
||||
configure scripts.
|
||||
|
||||
(N.B. codesearch.debian.net does not find any uses whatsoever of
|
||||
this macro, nor any code in an .ac or .m4 file that depends on the
|
||||
XENIX variable.)
|
||||
|
||||
Change the compatibility code to use AC_CANONICAL_HOST instead,
|
||||
and clarify which pieces of the code inserted by autoupdate are
|
||||
probably still necessary.
|
||||
|
||||
* lib/autoconf/specific.m4 (AC_XENIX_DIR): Set XENIX variable
|
||||
based on value of host_os. Clarify what manual cleanup is
|
||||
recommended after autoupdate replaces this obsolete macro.
|
||||
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
lib/autoconf/specific.m4 | 26 +++++++++++---------------
|
||||
1 file changed, 11 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/lib/autoconf/specific.m4 b/lib/autoconf/specific.m4
|
||||
index 1b3ee661b..a2dc5d488 100644
|
||||
--- a/lib/autoconf/specific.m4
|
||||
+++ b/lib/autoconf/specific.m4
|
||||
@@ -754,9 +754,9 @@ dnl it should only be defined when necessary.
|
||||
## Checks for UNIX variants. ##
|
||||
## -------------------------- ##
|
||||
|
||||
-
|
||||
-# These are kludges which should be replaced by a single POSIX check.
|
||||
-# They aren't cached, to discourage their use.
|
||||
+# These macros are all obsolete, from the early days of Autoconf,
|
||||
+# before the invention of AC_CANONICAL_SYSTEM. Autoupdate will
|
||||
+# replace each with inline code for a more modern feature check.
|
||||
|
||||
# AC_AIX
|
||||
# ------
|
||||
@@ -776,19 +776,15 @@ AU_DEFUN([AC_ISC_POSIX], [AC_SEARCH_LIBS([strerror], [cposix])])
|
||||
# AC_XENIX_DIR
|
||||
# ------------
|
||||
AU_DEFUN([AC_XENIX_DIR],
|
||||
-[AC_MSG_CHECKING([for Xenix])
|
||||
-AC_EGREP_CPP([yes],
|
||||
-[#if defined M_XENIX && ! defined M_UNIX
|
||||
- yes
|
||||
-@%:@endif],
|
||||
- [AC_MSG_RESULT([yes]); XENIX=yes],
|
||||
- [AC_MSG_RESULT([no]); XENIX=])
|
||||
-
|
||||
-AC_HEADER_DIRENT[]dnl
|
||||
+[AC_HEADER_DIRENT
|
||||
+# Autoupdate added the next two lines to ensure that your configure
|
||||
+# script's behavior did not change. They are safe to remove unless
|
||||
+# you have code that depends on the XENIX shell variable.
|
||||
+AC_CANONICAL_HOST
|
||||
+AS_CASE([$host_os], [xenix*], [XENIX=yes], [XENIX=no])
|
||||
+# End of code added by autoupdate
|
||||
],
|
||||
-[You shouldn't need to depend upon XENIX. Remove the
|
||||
-'AC_MSG_CHECKING', 'AC_EGREP_CPP', and this warning if this part
|
||||
-of the test is useless.])
|
||||
+[Check for code depending on the XENIX shell variable.])
|
||||
|
||||
|
||||
# AC_DYNIX_SEQ
|
||||
--
|
||||
2.41.0
|
||||
|
||||
|
|
@ -0,0 +1,77 @@
|
|||
From 51d98495d1aac00970d791f064e83ca762bf81c7 Mon Sep 17 00:00:00 2001
|
||||
From: Zack Weinberg <zackw@panix.com>
|
||||
Date: Sun, 2 Apr 2023 10:43:51 -0400
|
||||
Subject: [PATCH 10/29] AC_TYPE_UID_T: Rewrite using AC_CHECK_TYPE.
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
AC_TYPE_UID_T uses AC_EGREP_HEADER to search sys/types.h for
|
||||
occurrences of the string ‘uid_t’ and, if found, assumes both
|
||||
uid_t and gid_t are available. This would be better done using
|
||||
a pair of AC_CHECK_TYPE operations.
|
||||
|
||||
I also converted two uses of old-style AC_CHECK_TYPE, immediately
|
||||
below, to new-style. (There are probably other old-style uses in
|
||||
this file, I only did the ones I happened to see.)
|
||||
|
||||
* lib/autoconf/types.m4 (AC_TYPE_UID_T): Check for uid_t and gid_t,
|
||||
separately, using AC_CHECK_TYPE, instead of grepping sys/types.h.
|
||||
(AC_TYPE_SIZE_T, AC_TYPE_SSIZE_T): Use new-style AC_CHECK_TYPE.
|
||||
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
lib/autoconf/types.m4 | 30 +++++++++++++++++-------------
|
||||
1 file changed, 17 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/lib/autoconf/types.m4 b/lib/autoconf/types.m4
|
||||
index ebac0cf6d..ef2456135 100644
|
||||
--- a/lib/autoconf/types.m4
|
||||
+++ b/lib/autoconf/types.m4
|
||||
@@ -589,25 +589,29 @@ AC_DEFUN([AC_TYPE_MBSTATE_T],
|
||||
|
||||
# AC_TYPE_UID_T
|
||||
# -------------
|
||||
-# FIXME: Rewrite using AC_CHECK_TYPE.
|
||||
AN_IDENTIFIER([gid_t], [AC_TYPE_UID_T])
|
||||
AN_IDENTIFIER([uid_t], [AC_TYPE_UID_T])
|
||||
AC_DEFUN([AC_TYPE_UID_T],
|
||||
-[AC_CACHE_CHECK(for uid_t in sys/types.h, ac_cv_type_uid_t,
|
||||
-[AC_EGREP_HEADER(uid_t, sys/types.h,
|
||||
- ac_cv_type_uid_t=yes, ac_cv_type_uid_t=no)])
|
||||
-if test $ac_cv_type_uid_t = no; then
|
||||
- AC_DEFINE(uid_t, int, [Define to 'int' if <sys/types.h> doesn't define.])
|
||||
- AC_DEFINE(gid_t, int, [Define to 'int' if <sys/types.h> doesn't define.])
|
||||
-fi
|
||||
-])
|
||||
-
|
||||
-
|
||||
+[AC_CHECK_TYPE([uid_t], [],
|
||||
+ [AC_DEFINE([uid_t], [int],
|
||||
+ [Define as 'int' if <sys/types.h> doesn't define.])])
|
||||
+AC_CHECK_TYPE([gid_t], [],
|
||||
+ [AC_DEFINE([gid_t], [int],
|
||||
+ [Define as 'int' if <sys/types.h> doesn't define.])])])
|
||||
+
|
||||
+# This should be obsoleted, size_t is in C90.
|
||||
AN_IDENTIFIER([size_t], [AC_TYPE_SIZE_T])
|
||||
-AC_DEFUN([AC_TYPE_SIZE_T], [AC_CHECK_TYPE(size_t, unsigned int)])
|
||||
+AC_DEFUN([AC_TYPE_SIZE_T],
|
||||
+[AC_CHECK_TYPE([size_t], [],
|
||||
+ [AC_DEFINE([size_t], [unsigned int],
|
||||
+ [Define as 'unsigned int' if <stddef.h> doesn't define.])])])
|
||||
|
||||
AN_IDENTIFIER([ssize_t], [AC_TYPE_SSIZE_T])
|
||||
-AC_DEFUN([AC_TYPE_SSIZE_T], [AC_CHECK_TYPE(ssize_t, int)])
|
||||
+AC_DEFUN([AC_TYPE_SSIZE_T],
|
||||
+[AC_CHECK_TYPE([ssize_t], [],
|
||||
+ [AC_DEFINE([ssize_t], [int],
|
||||
+ [Define as 'int' if <sys/types.h> doesn't define.])])])
|
||||
+
|
||||
|
||||
AN_IDENTIFIER([pid_t], [AC_TYPE_PID_T])
|
||||
AC_DEFUN([AC_TYPE_PID_T],
|
||||
--
|
||||
2.41.0
|
||||
|
||||
|
|
@ -0,0 +1,180 @@
|
|||
From daaca7f74f94d6a7a51d571156d5fbaba5ef9a87 Mon Sep 17 00:00:00 2001
|
||||
From: Zack Weinberg <zackw@panix.com>
|
||||
Date: Sun, 2 Apr 2023 21:03:30 -0400
|
||||
Subject: [PATCH 11/29] Make AC_PROG_GCC_TRADITIONAL a compatibility alias for
|
||||
AC_PROG_CC.
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
This macro is one of the last remaining internal uses of AC_EGREP_CPP.
|
||||
It has only ever done anything useful with GCC, and GCC dropped
|
||||
support for ‘traditional’ compilation in version 3.3 (released 2003)
|
||||
so I do not think it is worth trying to preserve.
|
||||
|
||||
* lib/autoconf/c.m4 (AC_PROG_GCC_TRADITIONAL): Make into a
|
||||
compatibility alias for AC_PROG_CC, similar to AC_PROG_CC_STDC.
|
||||
* lib/autoconf/general.m4 (AC_EGREP_CPP): Remove stale comment.
|
||||
* doc/autoconf.texi, NEWS: Document this change.
|
||||
* tests/mktests.pl: Exclude AC_PROG_GCC_TRADITIONAL from
|
||||
autoupdate tests.
|
||||
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
NEWS | 7 +++++++
|
||||
doc/autoconf.texi | 29 ++++++++++++++---------------
|
||||
lib/autoconf/c.m4 | 30 ++++++------------------------
|
||||
lib/autoconf/general.m4 | 2 --
|
||||
tests/mktests.pl | 2 +-
|
||||
5 files changed, 28 insertions(+), 42 deletions(-)
|
||||
|
||||
diff --git a/NEWS b/NEWS
|
||||
index 6a106f155..53c57ff59 100644
|
||||
--- a/NEWS
|
||||
+++ b/NEWS
|
||||
@@ -81,6 +81,13 @@ GNU Autoconf NEWS - User visible changes.
|
||||
with plain apostrophes instead of the older GNU style `like this'
|
||||
with grave accent and apostrophe.
|
||||
|
||||
+*** AC_PROG_GCC_TRADITIONAL no longer does anything.
|
||||
+
|
||||
+ This macro has had no useful effect since GCC dropped support for
|
||||
+ traditional-mode compilation in version 3.3 (released in 2003), and
|
||||
+ the systems that needed it are also long obsolete. It is now a
|
||||
+ compatibility synonym for AC_PROG_CC.
|
||||
+
|
||||
** Notable bug fixes
|
||||
|
||||
*** Autoconf caches now use finer-grained timestamps.
|
||||
diff --git a/doc/autoconf.texi b/doc/autoconf.texi
|
||||
index 8db64d8bb..037c8055f 100644
|
||||
--- a/doc/autoconf.texi
|
||||
+++ b/doc/autoconf.texi
|
||||
@@ -7764,20 +7764,6 @@ This macro is obsolescent, as current C compilers support prototypes.
|
||||
New programs need not use this macro.
|
||||
@end defmac
|
||||
|
||||
-@anchor{AC_PROG_GCC_TRADITIONAL}
|
||||
-@defmac AC_PROG_GCC_TRADITIONAL
|
||||
-@acindex{PROG_GCC_TRADITIONAL}
|
||||
-@ovindex CC
|
||||
-Add @option{-traditional} to output variable @code{CC} if using a
|
||||
-GNU C compiler and @code{ioctl} does not work properly without
|
||||
-@option{-traditional}. That usually happens when the fixed header files
|
||||
-have not been installed on an old system.
|
||||
-
|
||||
-This macro is obsolescent, since current versions of the GNU C
|
||||
-compiler fix the header files automatically when installed.
|
||||
-@end defmac
|
||||
-
|
||||
-
|
||||
@node C++ Compiler
|
||||
@subsection C++ Compiler Characteristics
|
||||
|
||||
@@ -23986,7 +23972,8 @@ These days portable programs should use @code{waitpid}, not
|
||||
|
||||
@defmac AC_GCC_TRADITIONAL
|
||||
@acindex{GCC_TRADITIONAL}
|
||||
-Replaced by @code{AC_PROG_GCC_TRADITIONAL} (@pxref{AC_PROG_GCC_TRADITIONAL}).
|
||||
+Replaced by @code{AC_PROG_GCC_TRADITIONAL} (@pxref{AC_PROG_GCC_TRADITIONAL}),
|
||||
+which is itself obsolete.
|
||||
@end defmac
|
||||
|
||||
@defmac AC_GETGROUPS_T
|
||||
@@ -24369,6 +24356,18 @@ Now done by @code{AC_PROG_CC} (@pxref{AC_PROG_CC}).
|
||||
Now done by @code{AC_PROG_CC} (@pxref{AC_PROG_CC}).
|
||||
@end defmac
|
||||
|
||||
+@anchor{AC_PROG_GCC_TRADITIONAL}
|
||||
+@defmac AC_PROG_GCC_TRADITIONAL
|
||||
+@acindex{PROG_GCC_TRADITIONAL}
|
||||
+Used to put GCC into ``traditional'' (pre-ISO C) compilation mode,
|
||||
+on systems with headers that did not work correctly with a
|
||||
+standard-compliant compiler. GCC has not supported traditional
|
||||
+compilation in many years, and all of the systems that required this are
|
||||
+long obsolete themselves. This macro is now a compatibility synonym for
|
||||
+@code{AC_PROG_CC} (@pxref{AC_PROG_CC}).
|
||||
+
|
||||
+@end defmac
|
||||
+
|
||||
@defmac AC_PROGRAMS_CHECK
|
||||
@acindex{PROGRAMS_CHECK}
|
||||
Replaced by @code{AC_CHECK_PROGS} (@pxref{AC_CHECK_PROGS}).
|
||||
diff --git a/lib/autoconf/c.m4 b/lib/autoconf/c.m4
|
||||
index fef6c516d..33648b5b9 100644
|
||||
--- a/lib/autoconf/c.m4
|
||||
+++ b/lib/autoconf/c.m4
|
||||
@@ -551,30 +551,6 @@ fi[]dnl
|
||||
])# _AC_PROG_CC_G
|
||||
|
||||
|
||||
-# AC_PROG_GCC_TRADITIONAL
|
||||
-# -----------------------
|
||||
-AC_DEFUN([AC_PROG_GCC_TRADITIONAL],
|
||||
-[AC_REQUIRE([AC_PROG_CC])dnl
|
||||
-if test $ac_cv_c_compiler_gnu = yes; then
|
||||
- AC_CACHE_CHECK(whether $CC needs -traditional,
|
||||
- ac_cv_prog_gcc_traditional,
|
||||
-[ ac_pattern="Autoconf.*'x'"
|
||||
- AC_EGREP_CPP($ac_pattern, [#include <sgtty.h>
|
||||
-Autoconf TIOCGETP],
|
||||
- ac_cv_prog_gcc_traditional=yes, ac_cv_prog_gcc_traditional=no)
|
||||
-
|
||||
- if test $ac_cv_prog_gcc_traditional = no; then
|
||||
- AC_EGREP_CPP($ac_pattern, [#include <termio.h>
|
||||
-Autoconf TCGETA],
|
||||
- ac_cv_prog_gcc_traditional=yes)
|
||||
- fi])
|
||||
- if test $ac_cv_prog_gcc_traditional = yes; then
|
||||
- CC="$CC -traditional"
|
||||
- fi
|
||||
-fi
|
||||
-])# AC_PROG_GCC_TRADITIONAL
|
||||
-
|
||||
-
|
||||
# AC_PROG_CC_C_O
|
||||
# --------------
|
||||
AC_DEFUN([AC_PROG_CC_C_O],
|
||||
@@ -1675,6 +1651,12 @@ AU_DEFUN([AC_PROG_CC_STDC],
|
||||
[$0 is obsolete; use AC_PROG_CC]
|
||||
)
|
||||
|
||||
+# AC_PROG_GCC_TRADITIONAL
|
||||
+# -----------------------
|
||||
+AU_DEFUN([AC_PROG_GCC_TRADITIONAL],
|
||||
+ [AC_REQUIRE([AC_PROG_CC])],
|
||||
+ [$0 is obsolete; use AC_PROG_CC]
|
||||
+)
|
||||
|
||||
# AC_C_BACKSLASH_A
|
||||
# ----------------
|
||||
diff --git a/lib/autoconf/general.m4 b/lib/autoconf/general.m4
|
||||
index ecda0a51c..47d896d54 100644
|
||||
--- a/lib/autoconf/general.m4
|
||||
+++ b/lib/autoconf/general.m4
|
||||
@@ -2766,8 +2766,6 @@ AU_DEFUN([AC_TRY_CPP],
|
||||
# AC_EGREP_CPP(PATTERN, PROGRAM,
|
||||
# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
|
||||
# ------------------------------------------------------
|
||||
-# Because this macro is used by AC_PROG_GCC_TRADITIONAL, which must
|
||||
-# come early, it is not included in AC_BEFORE checks.
|
||||
AC_DEFUN([AC_EGREP_CPP],
|
||||
[AC_LANG_PREPROC_REQUIRE()dnl
|
||||
AC_REQUIRE([_AC_PROG_EGREP_TRADITIONAL])dnl
|
||||
diff --git a/tests/mktests.pl b/tests/mktests.pl
|
||||
index effed0bca..81f63586c 100644
|
||||
--- a/tests/mktests.pl
|
||||
+++ b/tests/mktests.pl
|
||||
@@ -112,7 +112,7 @@ my @ac_exclude_list = (
|
||||
# Check all AU_DEFUN'ed macros with AT_CHECK_AU_MACRO, except these.
|
||||
my @au_exclude_list = (
|
||||
# Empty.
|
||||
- qr/^AC_(C_CROSS|PROG_CC_(C[89]9|STDC))$/,
|
||||
+ qr/^AC_(C_CROSS|PROG_(CC_(C[89]9|STDC)|GCC_TRADITIONAL))$/,
|
||||
|
||||
# Use AC_REQUIRE.
|
||||
qr/^AC_(CYGWIN|MINGW32|EMXOS2)$/,
|
||||
--
|
||||
2.41.0
|
||||
|
||||
|
|
@ -0,0 +1,328 @@
|
|||
From b5891a57b586ef6ff78bb752d62915b78cd58d7e Mon Sep 17 00:00:00 2001
|
||||
From: Zack Weinberg <zackw@panix.com>
|
||||
Date: Sun, 2 Apr 2023 15:07:58 -0400
|
||||
Subject: [PATCH 12/29] Overhaul AC_TYPE_GETGROUPS and AC_FUNC_GETGROUPS.
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
AC_TYPE_GETGROUPS is the last remaining use of AC_EGREP_HEADER in
|
||||
stock Autoconf macros. It uses it only when cross compiling, as a
|
||||
fallback from an AC_RUN_IFELSE check, testing for a bug in system
|
||||
headers from the late 1980s or early 1990s, where gid_t *existed*
|
||||
but the second argument to getgroups needed to be an array of int,
|
||||
and this didn’t cause a compile error (i.e. the system headers
|
||||
declare getgroups with no prototype or an incorrect prototype).
|
||||
AC_FUNC_GETGROUPS also uses AC_RUN_IFELSE to test for obscure
|
||||
problems specific to long-obsolete Unixes.
|
||||
|
||||
The downsides of AC_RUN_IFELSE and AC_EGREP_HEADER seem more severe
|
||||
than the chances of someone compiling a current-generation program,
|
||||
that uses getgroups, on an OS old enough to have one of the really
|
||||
nasty bugs. Accordingly, this patch changes AC_FUNC_GETGROUPS to use
|
||||
a host_os-based *blacklist* both in native and cross compilation.
|
||||
This is limited to the two host_os values for which either our old
|
||||
code, or Gnulib, documented a serious bug: ultrix* and nextstep*.
|
||||
Currently it does not try to pin down the exact version ranges subject
|
||||
to the bugs — that would require research by someone with access to
|
||||
the full history of these OSes.
|
||||
|
||||
An incorrect guess by this blacklist can be overridden by setting
|
||||
ac_cv_func_getgroups_works in config.site. AC_TYPE_GETGROUPS, for its
|
||||
part, now does a series of regular old AC_COMPILE_IFELSE checks to
|
||||
probe the prototype of getgroups, and considers that good enough.
|
||||
|
||||
While I was in there I noticed that AC_FUNC_GETGROUPS does not
|
||||
AC_SUBST a documented output variable, and that the name of this
|
||||
variable is misspelled in the manual.
|
||||
|
||||
* lib/autoconf/functions.m4 (AC_FUNC_GETGROUPS): Use AC_SEARCH_LIBS
|
||||
to probe for getgroups. Use an AC_CANONICAL_HOST-based blacklist
|
||||
for bug detection, not AC_RUN_IFELSE. AC_SUBST the GETGROUPS_LIB
|
||||
output variable.
|
||||
* lib/autoconf/types.m4 (AC_TYPE_GETGROUPS): Check only the prototype
|
||||
of getgroups, using AC_COMPILE_IFELSE; do not use either AC_RUN_IFELSE
|
||||
or AC_EGREP_HEADER.
|
||||
* doc/autoconf.texi: Update to match. Correct misspelling of
|
||||
GETGROUPS_LIB.
|
||||
* tests.local.at (_AT_CHECK_ENV): Allow GETGROUPS_LIB output variable.
|
||||
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
NEWS | 11 +++++
|
||||
doc/autoconf.texi | 25 ++++++----
|
||||
lib/autoconf/functions.m4 | 61 ++++++++++++------------
|
||||
lib/autoconf/types.m4 | 97 ++++++++++++++++++++++++---------------
|
||||
tests/local.at | 2 +-
|
||||
5 files changed, 120 insertions(+), 76 deletions(-)
|
||||
|
||||
diff --git a/NEWS b/NEWS
|
||||
index 53c57ff59..8e4ecc1bf 100644
|
||||
--- a/NEWS
|
||||
+++ b/NEWS
|
||||
@@ -38,6 +38,17 @@ GNU Autoconf NEWS - User visible changes.
|
||||
This matters only for uses that, contrary to the documentation
|
||||
and despite warnings, use m4_divert with numbered diversions.
|
||||
|
||||
+*** AC_FUNC_GETGROUPS and AC_TYPE_GETGROUPS no longer run test programs.
|
||||
+ These macros were testing for OS bugs that we believe are at least
|
||||
+ twenty years in the past. Most operating systems are now trusted to
|
||||
+ provide an accurate prototype for getgroups in unistd.h, and to
|
||||
+ implement it as specified in POSIX.
|
||||
+
|
||||
+ AC_FUNC_GETGROUPS still includes a short blacklist of OSes with
|
||||
+ known, severe bugs in getgroups. It can be overridden using
|
||||
+ config.site. If you encounter a mistake in this blacklist
|
||||
+ please report it to bug-autoconf.
|
||||
+
|
||||
** New features
|
||||
|
||||
*** New macro AC_SYS_YEAR2038.
|
||||
diff --git a/doc/autoconf.texi b/doc/autoconf.texi
|
||||
index 037c8055f..5d5f613e6 100644
|
||||
--- a/doc/autoconf.texi
|
||||
+++ b/doc/autoconf.texi
|
||||
@@ -5257,17 +5257,26 @@ and also contains workarounds for other portability problems of
|
||||
@defmac AC_FUNC_GETGROUPS
|
||||
@acindex{FUNC_GETGROUPS}
|
||||
@cvindex HAVE_GETGROUPS
|
||||
-@ovindex GETGROUPS_LIBS
|
||||
+@ovindex GETGROUPS_LIB
|
||||
@c @fuindex getgroups
|
||||
@prindex @code{getgroups}
|
||||
@caindex func_getgroups_works
|
||||
-If the @code{getgroups} function is available and works,
|
||||
-define @code{HAVE_GETGROUPS}. Set @code{GETGROUPS_LIBS} to any libraries
|
||||
-needed to get that function. This macro runs @code{AC_TYPE_GETGROUPS}.
|
||||
-
|
||||
-This macro is obsolescent. New programs need not use this macro. But
|
||||
-they may want to use the Gnulib module @code{getgroups}, which provides
|
||||
-workarounds to other portability problems of this function.
|
||||
+Perform all the checks performed by @code{AC_TYPE_GETGROUPS}
|
||||
+(@pxref{AC_TYPE_GETGROUPS}).
|
||||
+Then, if the @code{getgroups} function is available
|
||||
+and known to work correctly, define @code{HAVE_GETGROUPS}.
|
||||
+Set the output variable @code{GETGROUPS_LIB} to any libraries
|
||||
+needed to get that function.
|
||||
+
|
||||
+This macro relies on a list of systems with known, serious bugs in
|
||||
+@code{getgroups}. If this list mis-identifies your system's
|
||||
+@code{getgroups} as buggy, or as not buggy, you can override it by
|
||||
+setting the cache variable @code{ac_cv_func_getgroups_works} in a
|
||||
+@file{config.site} file (@pxref{Site Defaults}). Please also report the
|
||||
+error to @email{bug-autoconf@@gnu.org, the Autoconf Bugs mailing list}.
|
||||
+
|
||||
+The Gnulib module @code{getgroups} provides workarounds for additional,
|
||||
+less severe portability problems with this function.
|
||||
@end defmac
|
||||
|
||||
@anchor{AC_FUNC_GETLOADAVG}
|
||||
diff --git a/lib/autoconf/functions.m4 b/lib/autoconf/functions.m4
|
||||
index 655d6ba8f..74512e97d 100644
|
||||
--- a/lib/autoconf/functions.m4
|
||||
+++ b/lib/autoconf/functions.m4
|
||||
@@ -698,47 +698,46 @@ AS_IF([test "$ac_cv_func_fseeko_ftello" = "need _LARGEFILE_SOURCE"],
|
||||
# When cross-compiling, assume getgroups is broken.
|
||||
AN_FUNCTION([getgroups], [AC_FUNC_GETGROUPS])
|
||||
AC_DEFUN([AC_FUNC_GETGROUPS],
|
||||
-[AC_REQUIRE([AC_TYPE_GETGROUPS])dnl
|
||||
-AC_REQUIRE([AC_TYPE_SIZE_T])dnl
|
||||
-AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles
|
||||
-AC_CHECK_FUNC(getgroups)
|
||||
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
|
||||
+AC_REQUIRE([AC_TYPE_GETGROUPS])dnl
|
||||
|
||||
-# If we don't yet have getgroups, see if it's in -lbsd.
|
||||
+# On older systems getgroups might be in -lbsd.
|
||||
# This is reported to be necessary on an ITOS 3000WS running SEIUX 3.1.
|
||||
ac_save_LIBS=$LIBS
|
||||
-if test $ac_cv_func_getgroups = no; then
|
||||
- AC_CHECK_LIB(bsd, getgroups, [GETGROUPS_LIB=-lbsd])
|
||||
-fi
|
||||
-
|
||||
-# Run the program to test the functionality of the system-supplied
|
||||
-# getgroups function only if there is such a function.
|
||||
+LIBS=
|
||||
+GETGROUPS_LIB=
|
||||
+AC_SEARCH_LIBS([getgroups], [bsd],
|
||||
+ [test "$ac_res" = "none required" || GETGROUPS_LIB="$ac_res"
|
||||
+ ac_cv_func_getgroups=yes],
|
||||
+ [ac_cv_func_getgroups=no])
|
||||
+LIBS=$ac_save_LIBS
|
||||
+AC_SUBST([GETGROUPS_LIB])
|
||||
+
|
||||
+# Known severe bugs in getgroups on particular systems.
|
||||
+# - On Ultrix 4.3 and NextSTEP 3.2, getgroups (0, 0) is reported to
|
||||
+# fail, rather than returning the number of supplementary groups as
|
||||
+# it ought to. We do not know the exact range of releases affected
|
||||
+# in either case.
|
||||
+# We currently reject all versions of the systems with known bugs, and
|
||||
+# no other systems. Please send corrections to bug-autoconf@gnu.org.
|
||||
if test $ac_cv_func_getgroups = yes; then
|
||||
+ # This AC_CACHE_CHECK exists so that one may override an incorrect
|
||||
+ # guess by setting ac_cv_func_getgroups_works in a config.site file.
|
||||
AC_CACHE_CHECK([for working getgroups], ac_cv_func_getgroups_works,
|
||||
- [AC_RUN_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT],
|
||||
- [[/* On Ultrix 4.3, getgroups (0, 0) always fails. */
|
||||
- return getgroups (0, 0) == -1;]])],
|
||||
- [ac_cv_func_getgroups_works=yes],
|
||||
- [ac_cv_func_getgroups_works=no],
|
||||
- [case "$host_os" in # ((
|
||||
- # Guess yes on glibc systems.
|
||||
- *-gnu*) ac_cv_func_getgroups_works="guessing yes" ;;
|
||||
- # If we don't know, assume the worst.
|
||||
- *) ac_cv_func_getgroups_works="guessing no" ;;
|
||||
- esac])
|
||||
- ])
|
||||
+ [AS_CASE([$host_os],
|
||||
+ [ultrix* | nextstep*],
|
||||
+ [ac_cv_func_getgroups_works=no # getgroups(0,0) fails
|
||||
+],
|
||||
+ [ac_cv_func_getgroups_works=yes])])
|
||||
else
|
||||
ac_cv_func_getgroups_works=no
|
||||
fi
|
||||
-case "$ac_cv_func_getgroups_works" in
|
||||
- *yes)
|
||||
- AC_DEFINE(HAVE_GETGROUPS, 1,
|
||||
- [Define to 1 if your system has a working 'getgroups' function.])
|
||||
- ;;
|
||||
-esac
|
||||
-LIBS=$ac_save_LIBS
|
||||
+if test $ac_cv_func_getgroups_works = yes; then
|
||||
+ AC_DEFINE(HAVE_GETGROUPS, 1,
|
||||
+ [Define to 1 if your system has a working 'getgroups' function.])
|
||||
+fi
|
||||
])# AC_FUNC_GETGROUPS
|
||||
|
||||
-
|
||||
# _AC_LIBOBJ_GETLOADAVG
|
||||
# ---------------------
|
||||
# Set up the AC_LIBOBJ replacement of 'getloadavg'.
|
||||
diff --git a/lib/autoconf/types.m4 b/lib/autoconf/types.m4
|
||||
index ef2456135..af3872b2f 100644
|
||||
--- a/lib/autoconf/types.m4
|
||||
+++ b/lib/autoconf/types.m4
|
||||
@@ -258,44 +258,69 @@ AN_IDENTIFIER([ptrdiff_t], [AC_CHECK_TYPES])
|
||||
# AC_TYPE_GETGROUPS
|
||||
# -----------------
|
||||
AC_DEFUN([AC_TYPE_GETGROUPS],
|
||||
+dnl We now unconditionally assume that if <unistd.h> has a prototype for
|
||||
+dnl getgroups, it is accurate; and that if <unistd.h> does _not_ declare
|
||||
+dnl getgroups with a prototype, the second argument is an array of int.
|
||||
+dnl (Older versions of Autoconf made these assumptions only when cross
|
||||
+dnl compiling.) See AC_FUNC_GETGROUPS, over in functions.m4, for why
|
||||
+dnl this uses AC_COMPILE_IFELSE rather than AC_LINK_IFELSE.
|
||||
[AC_REQUIRE([AC_TYPE_UID_T])dnl
|
||||
-AC_CACHE_CHECK(type of array argument to getgroups, ac_cv_type_getgroups,
|
||||
-[AC_RUN_IFELSE([AC_LANG_SOURCE(
|
||||
-[[/* Thanks to Mike Rendell for this test. */
|
||||
-]AC_INCLUDES_DEFAULT[
|
||||
-#define NGID 256
|
||||
-#undef MAX
|
||||
-#define MAX(x, y) ((x) > (y) ? (x) : (y))
|
||||
-
|
||||
-int
|
||||
-main (void)
|
||||
-{
|
||||
- gid_t gidset[NGID];
|
||||
- int i, n;
|
||||
- union { gid_t gval; long int lval; } val;
|
||||
-
|
||||
- val.lval = -1;
|
||||
- for (i = 0; i < NGID; i++)
|
||||
- gidset[i] = val.gval;
|
||||
- n = getgroups (sizeof (gidset) / MAX (sizeof (int), sizeof (gid_t)) - 1,
|
||||
- gidset);
|
||||
- /* Exit non-zero if getgroups seems to require an array of ints. This
|
||||
- happens when gid_t is short int but getgroups modifies an array
|
||||
- of ints. */
|
||||
- return n > 0 && gidset[n] != val.gval;
|
||||
-}]])],
|
||||
- [ac_cv_type_getgroups=gid_t],
|
||||
- [ac_cv_type_getgroups=int],
|
||||
- [ac_cv_type_getgroups=cross])
|
||||
-if test $ac_cv_type_getgroups = cross; then
|
||||
- dnl When we can't run the test program (we are cross compiling), presume
|
||||
- dnl that <unistd.h> has either an accurate prototype for getgroups or none.
|
||||
- dnl Old systems without prototypes probably use int.
|
||||
- AC_EGREP_HEADER([getgroups.*int.*gid_t], unistd.h,
|
||||
- ac_cv_type_getgroups=gid_t, ac_cv_type_getgroups=int)
|
||||
-fi])
|
||||
+AC_CACHE_CHECK([type of array argument to getgroups], ac_cv_type_getgroups,
|
||||
+[# If AC_TYPE_UID_T says there isn't any gid_t typedef, then we can skip
|
||||
+# everything below.
|
||||
+AS_IF([test $ac_cv_type_gid_t = no],
|
||||
+ [ac_cv_type_getgroups=int],
|
||||
+ [# Test programs below rely on strict type checking of extern declarations:
|
||||
+ # 'extern int getgroups(int, int *); extern int getgroups(int, pid_t *);'
|
||||
+ # is valid in C89 if and only if pid_t is a typedef for int. Unlike
|
||||
+ # anything involving either an assignment or a function call, compilers
|
||||
+ # tend to make this kind of type mismatch a hard error, not just an
|
||||
+ # "incompatible pointer types" warning.
|
||||
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
||||
+[AC_INCLUDES_DEFAULT
|
||||
+[extern int getgroups(int, gid_t *);]],
|
||||
+[[return !(getgroups(0, 0) >= 0);]])],
|
||||
+ [ac_getgroups_gidarray=yes],
|
||||
+ [ac_getgroups_gidarray=no])
|
||||
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
||||
+[AC_INCLUDES_DEFAULT
|
||||
+[extern int getgroups(int, int *);]],
|
||||
+[[return !(getgroups(0, 0) >= 0);]])],
|
||||
+ [ac_getgroups_intarray=yes],
|
||||
+ [ac_getgroups_intarray=no])
|
||||
+
|
||||
+ AS_CASE([int:$ac_getgroups_intarray,gid:$ac_getgroups_gidarray],
|
||||
+ [int:yes,gid:no], [ac_cv_type_getgroups=int],
|
||||
+ [int:no,gid:yes], [ac_cv_type_getgroups=gid_t],
|
||||
+ [int:yes,gid:yes], [
|
||||
+ # Both programs compiled - this means *either* that getgroups
|
||||
+ # was declared with no prototype, in which case we should use int,
|
||||
+ # or that it was declared prototyped but gid_t is a typedef for int,
|
||||
+ # in which case we should use gid_t. Distinguish the two cases
|
||||
+ # by testing if the compiler catches a blatantly incorrect function
|
||||
+ # signature for getgroups.
|
||||
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
||||
+[AC_INCLUDES_DEFAULT
|
||||
+[extern int getgroups(int, float);]],
|
||||
+[[return !(getgroups(0, 0) >= 0);]])], [
|
||||
+ # Compiler did not catch incorrect argument list;
|
||||
+ # getgroups is unprototyped.
|
||||
+ ac_cv_type_getgroups=int
|
||||
+ ], [
|
||||
+ # Compiler caught incorrect argument list;
|
||||
+ # gid_t is a typedef for int.
|
||||
+ ac_cv_type_getgroups=gid_t
|
||||
+ ])
|
||||
+ ], [
|
||||
+ # Both programs failed to compile - this probably means getgroups
|
||||
+ # wasn't declared at all. Use 'int', as this is probably a very
|
||||
+ # old system where the type _would have been_ int.
|
||||
+ ac_cv_type_getgroups=int
|
||||
+ ])
|
||||
+ ])
|
||||
+])dnl AC_CACHE_CHECK
|
||||
AC_DEFINE_UNQUOTED(GETGROUPS_T, $ac_cv_type_getgroups,
|
||||
- [Define to the type of elements in the array set by
|
||||
+ [Define to the type of elements in the array argument to
|
||||
'getgroups'. Usually this is either 'int' or 'gid_t'.])
|
||||
])# AC_TYPE_GETGROUPS
|
||||
|
||||
diff --git a/tests/local.at b/tests/local.at
|
||||
index 64a9fb264..db49f84a9 100644
|
||||
--- a/tests/local.at
|
||||
+++ b/tests/local.at
|
||||
@@ -401,7 +401,7 @@ if test -f state-env.before && test -f state-env.after; then
|
||||
[interpval|PATH_SEPARATOR],
|
||||
[GFC|F77_DUMMY_MAIN|f77_(case|underscore)],
|
||||
[FC(_DUMMY_MAIN|FLAGS|LIBS|FLAGS_[fF]|_MODEXT|_MODINC|_MODOUT|_DEFINE)?],
|
||||
- [ALLOCA|GETLOADAVG_LIBS|KMEM_GROUP|NEED_SETGID|POW_LIB],
|
||||
+ [ALLOCA|GETGROUPS_LIB|GETLOADAVG_LIBS|KMEM_GROUP|NEED_SETGID|POW_LIB],
|
||||
[AWK|LEX|LEXLIB|LEX_OUTPUT_ROOT|LN_S|M4|MKDIR_P|AR|RANLIB|SET_MAKE|YACC],
|
||||
[EGREP_TRADITIONAL],
|
||||
[GREP|[EF]GREP|SED],
|
||||
--
|
||||
2.41.0
|
||||
|
||||
|
|
@ -0,0 +1,84 @@
|
|||
From a7dc6d83c7d12b8409c512c3c10ad29f01e6c164 Mon Sep 17 00:00:00 2001
|
||||
From: Zack Weinberg <zackw@panix.com>
|
||||
Date: Sun, 2 Apr 2023 21:54:31 -0400
|
||||
Subject: [PATCH 13/29] Fold AC_C_STRINGIZE into AC_PROG_CC.
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Another of the last few uses of AC_EGREP_CPP is to check for the ISO C
|
||||
“stringification” operator. As this is a feature of C89, let’s fold
|
||||
the test into the extensive C89 tests we already have, and make
|
||||
AC_C_STRINGIZE just lean on AC_PROG_CC, in the same way
|
||||
AC_C_PROTOTYPES does.
|
||||
|
||||
* lib/autoconf/c.m4 (_AC_C_C89_TEST_GLOBALS): Add test of preprocessor
|
||||
stringification and token pasting.
|
||||
(AC_C_STRINGIZE): Just check ac_prog_cc_stdc.
|
||||
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
lib/autoconf/c.m4 | 31 ++++++++++++++++++++-----------
|
||||
1 file changed, 20 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/lib/autoconf/c.m4 b/lib/autoconf/c.m4
|
||||
index 33648b5b9..c8c6a665c 100644
|
||||
--- a/lib/autoconf/c.m4
|
||||
+++ b/lib/autoconf/c.m4
|
||||
@@ -1143,6 +1143,21 @@ static char *f (char * (*g) (char **, int), char **p, ...)
|
||||
return s;
|
||||
}
|
||||
|
||||
+/* C89 style stringification. */
|
||||
+#define noexpand_stringify(a) #a
|
||||
+const char *stringified = noexpand_stringify(arbitrary+token=sequence);
|
||||
+
|
||||
+/* C89 style token pasting. Exercises some of the corner cases that
|
||||
+ e.g. old MSVC gets wrong, but not very hard. */
|
||||
+#define noexpand_concat(a,b) a##b
|
||||
+#define expand_concat(a,b) noexpand_concat(a,b)
|
||||
+extern int vA;
|
||||
+extern int vbee;
|
||||
+#define aye A
|
||||
+#define bee B
|
||||
+int *pvA = &expand_concat(v,aye);
|
||||
+int *pvbee = &noexpand_concat(v,bee);
|
||||
+
|
||||
/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
|
||||
function prototypes and stuff, but not \xHH hex character constants.
|
||||
These do not provoke an error unfortunately, instead are silently treated
|
||||
@@ -2112,16 +2127,10 @@ fi
|
||||
# --------------
|
||||
# Checks if '#' can be used to glue strings together at the CPP level.
|
||||
# Defines HAVE_STRINGIZE if positive.
|
||||
+# Obsolete - new code should assume C89 compliance.
|
||||
AC_DEFUN([AC_C_STRINGIZE],
|
||||
-[AC_CACHE_CHECK([for preprocessor stringizing operator],
|
||||
- [ac_cv_c_stringize],
|
||||
-[AC_EGREP_CPP([@%:@teststring],
|
||||
- [@%:@define x(y) #y
|
||||
-
|
||||
-char *s = x(teststring);],
|
||||
- [ac_cv_c_stringize=no],
|
||||
- [ac_cv_c_stringize=yes])])
|
||||
-if test $ac_cv_c_stringize = yes; then
|
||||
+[AC_REQUIRE([AC_PROG_CC])
|
||||
+if test "$ac_prog_cc_stdc" != no; then
|
||||
AC_DEFINE(HAVE_STRINGIZE, 1,
|
||||
[Define to 1 if cpp supports the ANSI @%:@ stringizing operator.])
|
||||
fi
|
||||
@@ -2130,8 +2139,8 @@ fi
|
||||
|
||||
# AC_C_PROTOTYPES
|
||||
# ---------------
|
||||
-# Check if the C compiler supports prototypes, included if it needs
|
||||
-# options.
|
||||
+# Check if the C compiler supports prototypes.
|
||||
+# Obsolete - new code should assume C89 compliance.
|
||||
AC_DEFUN([AC_C_PROTOTYPES],
|
||||
[AC_REQUIRE([AC_PROG_CC])dnl
|
||||
if test "$ac_prog_cc_stdc" != no; then
|
||||
--
|
||||
2.41.0
|
||||
|
||||
|
|
@ -0,0 +1,116 @@
|
|||
From e25dfa75e18295d28de67747b4ff9d65f65c4f06 Mon Sep 17 00:00:00 2001
|
||||
From: Zack Weinberg <zackw@panix.com>
|
||||
Date: Sun, 2 Apr 2023 22:17:55 -0400
|
||||
Subject: [PATCH 14/29] Remove the last few internal uses of AC_EGREP_CPP.
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Most of the remaining uses were converted to AC_COMPILE_IFELSE.
|
||||
The use in AC_FUNC_LOADAVG becomes an AC_PREPROC_IFELSE because
|
||||
we can’t be sure getloadavg.c can be _compiled_ at this point in
|
||||
the build. The use in AC_C_VARARRAYS could be either _PREPROC_ or
|
||||
_COMPILE_; we use _COMPILE_ because, _PREPROC_ is never used, then
|
||||
we don’t have to do the “checking how to run the C preprocessor” test.
|
||||
|
||||
* lib/autoconf/c.m4 (AC_C_VARARRAYS): Use AC_COMPILE_IFELSE instead of
|
||||
AC_EGREP_CPP.
|
||||
* lib/autoconf/headers.m4 (_AC_HEADER_TIOCGWINSZ_IN_TERMIOS_H)
|
||||
(_AC_HEADER_TIOCGWINSZ_IN_SYS_IOCTL_H): Likewise.
|
||||
* lib/autoconf/functions.m4 (AC_FUNC_GETLOADAVG): Use AC_PREPROC_IFELSE
|
||||
instead of AC_EGREP_CPP.
|
||||
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
lib/autoconf/c.m4 | 8 ++++----
|
||||
lib/autoconf/functions.m4 | 10 +++++-----
|
||||
lib/autoconf/headers.m4 | 24 ++++++++++--------------
|
||||
3 files changed, 19 insertions(+), 23 deletions(-)
|
||||
|
||||
diff --git a/lib/autoconf/c.m4 b/lib/autoconf/c.m4
|
||||
index c8c6a665c..b8350c339 100644
|
||||
--- a/lib/autoconf/c.m4
|
||||
+++ b/lib/autoconf/c.m4
|
||||
@@ -2197,11 +2197,11 @@ AC_DEFUN([AC_C_VARARRAYS],
|
||||
[
|
||||
AC_CACHE_CHECK([for variable-length arrays],
|
||||
ac_cv_c_vararrays,
|
||||
- [AC_EGREP_CPP([defined],
|
||||
- [#ifdef __STDC_NO_VLA__
|
||||
- defined
|
||||
+ [AC_COMPILE_IFELSE([AC_LANG_SOURCE(
|
||||
+[[ #ifndef __STDC_NO_VLA__
|
||||
+ #error __STDC_NO_VLA__ not defined
|
||||
#endif
|
||||
- ],
|
||||
+]])],
|
||||
[ac_cv_c_vararrays='no: __STDC_NO_VLA__ is defined'],
|
||||
[AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
diff --git a/lib/autoconf/functions.m4 b/lib/autoconf/functions.m4
|
||||
index 74512e97d..499e4c024 100644
|
||||
--- a/lib/autoconf/functions.m4
|
||||
+++ b/lib/autoconf/functions.m4
|
||||
@@ -842,11 +842,11 @@ AC_CHECK_FUNCS(getloadavg, [],
|
||||
# Some definitions of getloadavg require that the program be installed setgid.
|
||||
AC_CACHE_CHECK(whether getloadavg requires setgid,
|
||||
ac_cv_func_getloadavg_setgid,
|
||||
-[AC_EGREP_CPP([Yowza Am I SETGID yet],
|
||||
-[#include "$srcdir/$ac_config_libobj_dir/getloadavg.c"
|
||||
-#ifdef LDAV_PRIVILEGED
|
||||
-Yowza Am I SETGID yet
|
||||
-@%:@endif],
|
||||
+[AC_PREPROC_IFELSE([AC_LANG_SOURCE(
|
||||
+[[#include "$srcdir/$ac_config_libobj_dir/getloadavg.c"
|
||||
+#ifndef LDAV_PRIVILEGED
|
||||
+#error setgid not needed
|
||||
+@%:@endif]])],
|
||||
ac_cv_func_getloadavg_setgid=yes,
|
||||
ac_cv_func_getloadavg_setgid=no)])
|
||||
if test $ac_cv_func_getloadavg_setgid = yes; then
|
||||
diff --git a/lib/autoconf/headers.m4 b/lib/autoconf/headers.m4
|
||||
index 7f70e8fd4..19c124cc3 100644
|
||||
--- a/lib/autoconf/headers.m4
|
||||
+++ b/lib/autoconf/headers.m4
|
||||
@@ -721,13 +721,11 @@ you to include it and time.h simultaneously.])
|
||||
m4_define([_AC_HEADER_TIOCGWINSZ_IN_TERMIOS_H],
|
||||
[AC_CACHE_CHECK([whether termios.h defines TIOCGWINSZ],
|
||||
ac_cv_sys_tiocgwinsz_in_termios_h,
|
||||
-[AC_EGREP_CPP([yes],
|
||||
- [#include <sys/types.h>
|
||||
-#include <termios.h>
|
||||
-#ifdef TIOCGWINSZ
|
||||
- yes
|
||||
-#endif
|
||||
-],
|
||||
+[AC_COMPILE_IFELSE([AC_LANG_SOURCE(
|
||||
+[AC_INCLUDES_DEFAULT
|
||||
+[#include <termios.h>
|
||||
+const int tiocgwinsz = TIOCGWINSZ;
|
||||
+]])],
|
||||
ac_cv_sys_tiocgwinsz_in_termios_h=yes,
|
||||
ac_cv_sys_tiocgwinsz_in_termios_h=no)])
|
||||
])# _AC_HEADER_TIOCGWINSZ_IN_TERMIOS_H
|
||||
@@ -738,13 +736,11 @@ m4_define([_AC_HEADER_TIOCGWINSZ_IN_TERMIOS_H],
|
||||
m4_define([_AC_HEADER_TIOCGWINSZ_IN_SYS_IOCTL],
|
||||
[AC_CACHE_CHECK([whether sys/ioctl.h defines TIOCGWINSZ],
|
||||
ac_cv_sys_tiocgwinsz_in_sys_ioctl_h,
|
||||
-[AC_EGREP_CPP([yes],
|
||||
- [#include <sys/types.h>
|
||||
-#include <sys/ioctl.h>
|
||||
-#ifdef TIOCGWINSZ
|
||||
- yes
|
||||
-#endif
|
||||
-],
|
||||
+[AC_COMPILE_IFELSE([AC_LANG_SOURCE(
|
||||
+[AC_INCLUDES_DEFAULT
|
||||
+[#include <sys/ioctl.h>
|
||||
+const int tiocgwinsz = TIOCGWINSZ;
|
||||
+]])],
|
||||
ac_cv_sys_tiocgwinsz_in_sys_ioctl_h=yes,
|
||||
ac_cv_sys_tiocgwinsz_in_sys_ioctl_h=no)])
|
||||
])# _AC_HEADER_TIOCGWINSZ_IN_SYS_IOCTL
|
||||
--
|
||||
2.41.0
|
||||
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
From 1982523c6f052a2b361035a9d5d9737510ed0738 Mon Sep 17 00:00:00 2001
|
||||
From: Paul Eggert <eggert@cs.ucla.edu>
|
||||
Date: Mon, 3 Apr 2023 09:12:40 -0700
|
||||
Subject: [PATCH 15/29] Support circa early 2022 Gnulib
|
||||
|
||||
Problem reported by Frederic Berat in:
|
||||
https://lists.gnu.org/r/bug-rcs/2023-04/msg00001.html
|
||||
* lib/autoconf/specific.m4 (_AC_SYS_LARGEFILE_TEST_INCLUDES):
|
||||
Bring back for compatibility with post-2.71, pre-2.73 Gnulib.
|
||||
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
lib/autoconf/specific.m4 | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/lib/autoconf/specific.m4 b/lib/autoconf/specific.m4
|
||||
index a2dc5d488..5dc006959 100644
|
||||
--- a/lib/autoconf/specific.m4
|
||||
+++ b/lib/autoconf/specific.m4
|
||||
@@ -277,6 +277,8 @@ m4_define([_AC_SYS_LARGEFILE_TEST_CODE],
|
||||
&& LARGE_OFF_T % 2147483647 == 1)
|
||||
? 1 : -1]];[]dnl
|
||||
])
|
||||
+# Defined by Autoconf 2.71 and circa 2022 Gnulib unwisely depended on it.
|
||||
+m4_define([_AC_SYS_LARGEFILE_TEST_INCLUDES], [_AC_SYS_LARGEFILE_TEST_CODE])
|
||||
|
||||
# _AC_SYS_LARGEFILE_OPTIONS
|
||||
# -------------------------
|
||||
--
|
||||
2.41.0
|
||||
|
||||
|
|
@ -0,0 +1,121 @@
|
|||
From a1e82aff0fd842b0f09e2cd166560dfda725ba13 Mon Sep 17 00:00:00 2001
|
||||
From: Paul Eggert <eggert@cs.ucla.edu>
|
||||
Date: Sun, 9 Apr 2023 11:41:57 -0700
|
||||
Subject: [PATCH 16/29] Improve year2038, largefile option processing
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
* lib/autoconf/specific.m4 (_AC_SYS_YEAR2038_PROBE)
|
||||
(_AC_SYS_YEAR2038_ENABLE, _AC_SYS_YEAR2038_OPT_IN)
|
||||
(AC_SYS_YEAR2038, _AC_SYS_LARGEFILE_PROBE)
|
||||
(_AC_SYS_LARGEFILE_ENABLE): Do not use enable_largefile to record
|
||||
whether largefile is required, as ‘./configure
|
||||
--disable-largefile’ sets enable_largefile=no even if largefile is
|
||||
required and this disables largefile. Instead, use a separate
|
||||
shell variable ac_largefile_required and test it as well.
|
||||
Similarly for enable_year2038.
|
||||
(_AC_SYS_LARGEFILE_ENABLE): Omit --disable-largefile help string
|
||||
if year2038 is required, since largefile is a prereq for year2038.
|
||||
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
lib/autoconf/specific.m4 | 35 ++++++++++++++++++++++-------------
|
||||
1 file changed, 22 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/lib/autoconf/specific.m4 b/lib/autoconf/specific.m4
|
||||
index 5dc006959..1a3f4a65c 100644
|
||||
--- a/lib/autoconf/specific.m4
|
||||
+++ b/lib/autoconf/specific.m4
|
||||
@@ -155,10 +155,10 @@ AS_CASE([$ac_cv_sys_year2038_opts],
|
||||
["none needed"], [],
|
||||
["support not detected"],
|
||||
[ac_have_year2038=no
|
||||
- AS_CASE([$enable_year2038],
|
||||
- [required],
|
||||
+ AS_CASE([$ac_year2038_required,$enable_year2038],
|
||||
+ [yes,*],
|
||||
[AC_MSG_FAILURE([support for timestamps after Jan 2038 is required])],
|
||||
- [yes],
|
||||
+ [*,yes],
|
||||
[# If we're not cross compiling and 'touch' works with a large
|
||||
# timestamp, then we can presume the system supports wider time_t
|
||||
# *somehow* and we just weren't able to detect it. One common
|
||||
@@ -209,10 +209,12 @@ AS_CASE([$ac_cv_sys_year2038_opts],
|
||||
m4_define([_AC_SYS_YEAR2038_ENABLE],
|
||||
[m4_divert_text([DEFAULTS],
|
||||
m4_provide_if([AC_SYS_YEAR2038_REQUIRED],
|
||||
- [enable_year2038=required],
|
||||
+ [ac_year2038_required=yes],
|
||||
+ [ac_year2038_required=no]))dnl
|
||||
+m4_divert_text([DEFAULTS],
|
||||
m4_provide_if([AC_SYS_YEAR2038],
|
||||
[enable_year2038=yes],
|
||||
- [enable_year2038=no])))]dnl
|
||||
+ [enable_year2038=no]))]dnl
|
||||
[m4_provide_if([AC_SYS_YEAR2038_REQUIRED], [],
|
||||
[AC_ARG_ENABLE([year2038],
|
||||
m4_provide_if([AC_SYS_YEAR2038],
|
||||
@@ -231,7 +233,8 @@ m4_define([_AC_SYS_YEAR2038_ENABLE],
|
||||
# documented macro.
|
||||
AC_DEFUN([_AC_SYS_YEAR2038_OPT_IN],
|
||||
[m4_provide_if([_AC_SYS_YEAR2038_PROBE], [], [dnl
|
||||
- AS_IF([test "$enable_year2038" != no], [_AC_SYS_YEAR2038_PROBE])
|
||||
+ AS_IF([test "$ac_year2038_required,$enable_year2038" != no,no],
|
||||
+ [_AC_SYS_YEAR2038_PROBE])
|
||||
AC_CONFIG_COMMANDS_PRE([_AC_SYS_YEAR2038_ENABLE])
|
||||
])])
|
||||
|
||||
@@ -244,7 +247,8 @@ AC_DEFUN([AC_SYS_YEAR2038],
|
||||
[m4_provide_if([AC_SYS_LARGEFILE_REQUIRED], [],
|
||||
[AC_REQUIRE([AC_SYS_LARGEFILE])])]dnl
|
||||
[m4_provide_if([_AC_SYS_YEAR2038_PROBE], [], [dnl
|
||||
- AS_IF([test "$enable_year2038" != no], [_AC_SYS_YEAR2038_PROBE])
|
||||
+ AS_IF([test "$ac_year2038_required,$enable_year2038" != no,no],
|
||||
+ [_AC_SYS_YEAR2038_PROBE])
|
||||
AC_CONFIG_COMMANDS_PRE([_AC_SYS_YEAR2038_ENABLE])
|
||||
])])
|
||||
|
||||
@@ -326,7 +330,7 @@ AS_CASE([$ac_cv_sys_largefile_opts],
|
||||
["none needed"], [],
|
||||
["support not detected"],
|
||||
[ac_have_largefile=no
|
||||
- AS_IF([test $enable_largefile = required],
|
||||
+ AS_IF([test $ac_largefile_required,$ac_year2038_required != no,no],
|
||||
[AC_MSG_FAILURE([support for large files is required])])],
|
||||
|
||||
["-D_FILE_OFFSET_BITS=64"],
|
||||
@@ -358,11 +362,15 @@ _AC_SYS_YEAR2038_OPT_IN
|
||||
m4_define([_AC_SYS_LARGEFILE_ENABLE],
|
||||
[m4_divert_text([DEFAULTS],
|
||||
m4_provide_if([AC_SYS_LARGEFILE_REQUIRED],
|
||||
- [enable_largefile=required],
|
||||
- [enable_largefile=yes]))]dnl
|
||||
+ [ac_largefile_required=yes],
|
||||
+ [ac_largefile_required=no]))dnl
|
||||
+m4_divert_text([DEFAULTS],
|
||||
+ [enable_largefile=yes])]dnl
|
||||
[m4_provide_if([AC_SYS_LARGEFILE_REQUIRED], [],
|
||||
-[AC_ARG_ENABLE([largefile],
|
||||
- [AS_HELP_STRING([--disable-largefile], [omit support for large files])])])])
|
||||
+ [m4_provide_if([AC_SYS_YEAR2038_REQUIRED], [],
|
||||
+ [AC_ARG_ENABLE([largefile],
|
||||
+ [AS_HELP_STRING([--disable-largefile],
|
||||
+ [omit support for large files])])])])])
|
||||
|
||||
# AC_SYS_LARGEFILE
|
||||
# ----------------
|
||||
@@ -377,7 +385,8 @@ m4_define([_AC_SYS_LARGEFILE_ENABLE],
|
||||
# large files; see also AC_SYS_LARGEFILE_REQUIRED.
|
||||
AC_DEFUN([AC_SYS_LARGEFILE],
|
||||
[m4_provide_if([_AC_SYS_LARGEFILE_PROBE], [], [dnl
|
||||
- AS_IF([test "$enable_largefile" != no], [_AC_SYS_LARGEFILE_PROBE])
|
||||
+ AS_IF([test "$ac_largefile_required,$enable_largefile,$ac_year2038_required" != no,no,no],
|
||||
+ [_AC_SYS_LARGEFILE_PROBE])
|
||||
AC_CONFIG_COMMANDS_PRE([_AC_SYS_LARGEFILE_ENABLE])
|
||||
])])
|
||||
|
||||
--
|
||||
2.41.0
|
||||
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
From 0cc3c4ca8e6c550bf590ae45a916982b6ec50203 Mon Sep 17 00:00:00 2001
|
||||
From: Bruno Haible <bruno@clisp.org>
|
||||
Date: Fri, 14 Apr 2023 16:18:35 +0200
|
||||
Subject: [PATCH 17/29] AC_SYS_YEAR2038: Fix configure failure on 32-bit mingw.
|
||||
|
||||
* lib/autoconf/specific.m4 (_AC_SYS_YEAR2038_PROBE): Use the same option
|
||||
spelling as in _AC_SYS_YEAR2038_OPTIONS.
|
||||
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
lib/autoconf/specific.m4 | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/lib/autoconf/specific.m4 b/lib/autoconf/specific.m4
|
||||
index 1a3f4a65c..3bf1a0ed1 100644
|
||||
--- a/lib/autoconf/specific.m4
|
||||
+++ b/lib/autoconf/specific.m4
|
||||
@@ -182,7 +182,7 @@ AS_CASE([$ac_cv_sys_year2038_opts],
|
||||
[AC_DEFINE([_TIME_BITS], [64],
|
||||
[Number of bits in time_t, on hosts where this is settable.])],
|
||||
|
||||
- ["-D__MINGW_USE_VC2005_COMPAT=1"],
|
||||
+ ["-D__MINGW_USE_VC2005_COMPAT"],
|
||||
[AC_DEFINE([__MINGW_USE_VC2005_COMPAT], [1],
|
||||
[Define to 1 on platforms where this makes time_t a 64-bit type.])],
|
||||
|
||||
--
|
||||
2.41.0
|
||||
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
From e704a13c9644f4f4b9a9dd4e215ee7a1707f5850 Mon Sep 17 00:00:00 2001
|
||||
From: Bruno Haible <bruno@clisp.org>
|
||||
Date: Fri, 3 Mar 2023 14:32:13 +0100
|
||||
Subject: [PATCH 18/29] Document limitation of BusyBox tr.
|
||||
|
||||
BusyBox 1.35.0 tr, which is shipped with Alpine Linux 3.17, does not support
|
||||
the POSIX [x*n] syntax.
|
||||
|
||||
* doc/autoconf.texi (Limitations of Usual Tools): Document limitation of 'tr'
|
||||
from BusyBox.
|
||||
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
doc/autoconf.texi | 14 ++++++++++++++
|
||||
1 file changed, 14 insertions(+)
|
||||
|
||||
diff --git a/doc/autoconf.texi b/doc/autoconf.texi
|
||||
index 5d5f613e6..b3c708e87 100644
|
||||
--- a/doc/autoconf.texi
|
||||
+++ b/doc/autoconf.texi
|
||||
@@ -20368,6 +20368,20 @@ $ @kbd{echo abc | coreutils/tr bc d}
|
||||
add
|
||||
@end example
|
||||
|
||||
+On platforms with the BusyBox tools, @command{tr} does not support the
|
||||
+@code{[@var{x}*@var{n}]} option syntax.
|
||||
+
|
||||
+@example
|
||||
+$ @kbd{echo abc | tr 'abcd' '[A*4]'}
|
||||
+[A*
|
||||
+$ @kbd{echo abc | coreutils/tr 'abcd' '[A*4]'}
|
||||
+AAA
|
||||
+$ @kbd{echo xyz | tr 'a-z' '[A*]'}
|
||||
+]]]
|
||||
+$ @kbd{echo xyz | coreutils/tr 'a-z' '[A*]'}
|
||||
+AAA
|
||||
+@end example
|
||||
+
|
||||
Posix requires @command{tr} to operate on binary files. But at least
|
||||
Solaris @command{/usr/ucb/tr} and @command{/usr/bin/tr} silently discard
|
||||
@code{NUL} in the input prior to doing any translation. When using
|
||||
--
|
||||
2.41.0
|
||||
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
From 2277f2c15744ad1cc5cd1ecc50a43108e50530a2 Mon Sep 17 00:00:00 2001
|
||||
From: Bruno Haible <bruno@clisp.org>
|
||||
Date: Wed, 19 Apr 2023 14:17:24 -0700
|
||||
Subject: [PATCH 19/29] AC_SYS_YEAR2038_REQUIRED: Fix configure failure with
|
||||
MSVC.
|
||||
|
||||
* lib/autoconf/specific.m4 (_AC_SYS_LARGEFILE_PROBE): Distinguish the results
|
||||
"support not detected" and "supported through gnulib". If the result is
|
||||
"supported through gnulib", don't fail.
|
||||
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
lib/autoconf/specific.m4 | 13 +++++++++++++
|
||||
1 file changed, 13 insertions(+)
|
||||
|
||||
diff --git a/lib/autoconf/specific.m4 b/lib/autoconf/specific.m4
|
||||
index 3bf1a0ed1..f411695fe 100644
|
||||
--- a/lib/autoconf/specific.m4
|
||||
+++ b/lib/autoconf/specific.m4
|
||||
@@ -323,11 +323,24 @@ AC_DEFUN([_AC_SYS_LARGEFILE_PROBE],
|
||||
test $ac_opt_found = no || break
|
||||
done
|
||||
CC="$ac_save_CC"
|
||||
+ dnl Gnulib implements large file support for native Windows, based on the
|
||||
+ dnl variables WINDOWS_64_BIT_OFF_T, WINDOWS_64_BIT_ST_SIZE.
|
||||
+ m4_ifdef([gl_LARGEFILE], [
|
||||
+ AC_REQUIRE([AC_CANONICAL_HOST])
|
||||
+ if test $ac_opt_found != yes; then
|
||||
+ AS_CASE([$host_os],
|
||||
+ [mingw*],
|
||||
+ [ac_cv_sys_largefile_opts="supported through gnulib"
|
||||
+ ac_opt_found=yes]
|
||||
+ )
|
||||
+ fi
|
||||
+ ])
|
||||
test $ac_opt_found = yes || ac_cv_sys_largefile_opts="support not detected"])
|
||||
|
||||
ac_have_largefile=yes
|
||||
AS_CASE([$ac_cv_sys_largefile_opts],
|
||||
["none needed"], [],
|
||||
+ ["supported through gnulib"], [],
|
||||
["support not detected"],
|
||||
[ac_have_largefile=no
|
||||
AS_IF([test $ac_largefile_required,$ac_year2038_required != no,no],
|
||||
--
|
||||
2.41.0
|
||||
|
||||
|
|
@ -0,0 +1,405 @@
|
|||
From 9c0183724614517a67d0955065171465bab7154a Mon Sep 17 00:00:00 2001
|
||||
From: Paul Eggert <eggert@cs.ucla.edu>
|
||||
Date: Wed, 26 Apr 2023 18:21:48 -0700
|
||||
Subject: [PATCH 20/29] Tone down year-2038 changes
|
||||
|
||||
New macro AC_SYS_YEAR2038_RECOMMENDED replaces new macro
|
||||
AC_SYS_YEAR2038_REQUIRED, and gives the builder an out of
|
||||
specifying --disable-year2038. Remove new macro
|
||||
AC_SYS_LARGEFILE_REQUIRED, which was added only for symmetry and
|
||||
does not seem to have a great need.
|
||||
* NEWS, doc/autoconf.texi: Document this.
|
||||
* lib/autoconf/specific.m4:
|
||||
Be more specific about mid-January 2038 than just Jan 2038.
|
||||
(_AC_SYS_YEAR2038_PROBE): Ignore IF-NOT-DETECTED arg.
|
||||
If support is not detected, merely set ac_have_year2038=no instead
|
||||
of erroring out. All callers changed.
|
||||
(_AC_SYS_YEAR2038_OPT_IN): Remove. All callers removed.
|
||||
(AC_SYS_YEAR2038): Simplify by requiring AC_SYS_LARGEFILE
|
||||
and then testing the result.
|
||||
(AC_SYS_YEAR2038_REQUIRED, AC_SYS_LARGEFILE_REQUIRED): Remove.
|
||||
(AC_SYS_YEAR2038_RECOMMENDED): New macro.
|
||||
(_AC_SYS_LARGEFILE_PROBE): If support is not detected, merely set
|
||||
ac_have_largefile=no instead of erroring out. All callers changed.
|
||||
Take on the burden of invoking year2038 probe as needed.
|
||||
(AC_SYS_LARGEFILE): Simplify.
|
||||
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
NEWS | 18 ++--
|
||||
doc/autoconf.texi | 34 +++-----
|
||||
lib/autoconf/specific.m4 | 177 +++++++++++----------------------------
|
||||
3 files changed, 69 insertions(+), 160 deletions(-)
|
||||
|
||||
diff --git a/NEWS b/NEWS
|
||||
index 8e4ecc1bf..a48a00858 100644
|
||||
--- a/NEWS
|
||||
+++ b/NEWS
|
||||
@@ -51,7 +51,7 @@ GNU Autoconf NEWS - User visible changes.
|
||||
|
||||
** New features
|
||||
|
||||
-*** New macro AC_SYS_YEAR2038.
|
||||
+*** New macros AC_SYS_YEAR2038 and AC_SYS_YEAR2038_RECOMMENDED.
|
||||
This causes 'configure' to widen time_t if possible on systems where
|
||||
time_t by default cannot represent file and other timestamps after
|
||||
January 2038. Widening is possible only on 32-bit GNU/Linux x86 and
|
||||
@@ -67,18 +67,14 @@ GNU Autoconf NEWS - User visible changes.
|
||||
This is similar to longstanding consistency requirements with
|
||||
--enable-largefile and --disable-largefile.
|
||||
|
||||
+ AC_SYS_YEAR2038_RECOMMENDED acts like AC_SYS_YEAR2038 except that
|
||||
+ 'configure' fails if the target lacks support for post-2038
|
||||
+ timestamps and --disable-year2038 is not given.
|
||||
+
|
||||
*** AC_SYS_LARGEFILE now optionally arranges to widen time_t.
|
||||
It now acts like AC_SYS_YEAR2038, except 'configure' defaults to
|
||||
- --disable-year2038 unless AC_SYS_YEAR2038 is also present.
|
||||
- As with AC_SYS_YEAR2038, application and library builders should
|
||||
- configure consistently.
|
||||
-
|
||||
-*** New macros AC_SYS_LARGEFILE_REQUIRED and AC_SYS_YEAR2038_REQUIRED.
|
||||
- These act like AC_SYS_LARGEFILE and AC_SYS_YEAR2038 respectively,
|
||||
- except that 'configure' fails if the target lacks support
|
||||
- for large files and for post-2038 timestamps, respectively.
|
||||
- As with AC_SYS_YEAR2038, application and library builders should
|
||||
- configure consistently.
|
||||
+ --disable-year2038 unless either AC_SYS_YEAR2038 or
|
||||
+ AC_SYS_YEAR2038_RECOMMENDED is also present.
|
||||
|
||||
*** AC_USE_SYSTEM_EXTENSIONS now enables C23 Annex F extensions
|
||||
by defining __STDC_WANT_IEC_60559_EXT__.
|
||||
diff --git a/doc/autoconf.texi b/doc/autoconf.texi
|
||||
index b3c708e87..0f3047b31 100644
|
||||
--- a/doc/autoconf.texi
|
||||
+++ b/doc/autoconf.texi
|
||||
@@ -8808,18 +8808,20 @@ if possible. These types may include @code{blkcnt_t}, @code{dev_t},
|
||||
|
||||
Also, arrange for a @command{configure} option @code{--enable-year2038}
|
||||
to request widening the type @code{time_t} as needed to represent file
|
||||
-wand other timestamps after January 2038. This widening is possible
|
||||
+wand other timestamps after mid-January 2038. This widening is possible
|
||||
only on 32-bit GNU/Linux x86 and ARM systems with glibc 2.34 or later.
|
||||
If year-2038 support is requested but @command{configure} fails to find a way
|
||||
to widen @code{time_t} and inspection of the system suggests that
|
||||
this feature is available somehow, @command{configure} will error out.
|
||||
If you want the default to be @code{--enable-year2038}, you can use
|
||||
-@code{AC_SYS_YEAR2038} instead of @code{AC_SYS_LARGEFILE}.
|
||||
+@code{AC_SYS_YEAR2038} or @code{AC_SYS_YEAR2038_RECOMMENDED}
|
||||
+instead of @code{AC_SYS_LARGEFILE}.
|
||||
In other words, older packages that have long used @code{AC_SYS_LARGEFILE}
|
||||
can have year-2038 support on 32-bit GNU/Linux x86 and ARM systems either by
|
||||
regenerating @file{configure} with current Autoconf and configuring with
|
||||
-@option{--enable-year2038}, or by using @code{AC_SYS_YEAR2038} and
|
||||
-configuring without @option{--disable-year2038}.
|
||||
+@option{--enable-year2038}, or by using @code{AC_SYS_YEAR2038} or
|
||||
+@code{AC_SYS_YEAR2038_RECOMMENDED} and configuring without
|
||||
+@option{--disable-year2038}.
|
||||
A future version of Autoconf might change the @code{AC_SYS_LARGEFILE}
|
||||
default to @code{--enable-year2038}; if and when that happens,
|
||||
@code{AC_SYS_LARGEFILE} and @code{AC_SYS_YEAR2038} will become equivalent.
|
||||
@@ -8886,19 +8888,6 @@ library, enabling or disabling the application's large-file support may
|
||||
break binary compatibility with that library.
|
||||
@end defmac
|
||||
|
||||
-@defmac AC_SYS_LARGEFILE_REQUIRED
|
||||
-@acindex{SYS_LARGEFILE_REQUIRED}
|
||||
-This macro has the same effect as @code{AC_SYS_LARGEFILE},
|
||||
-but also declares that the program being configured
|
||||
-requires support for large files.
|
||||
-If a large @code{off_t} is unavailable,
|
||||
-@command{configure} will error out.
|
||||
-The @option{--disable-largefile} option will not be available.
|
||||
-
|
||||
-Large-file and year-2038 support for applications and libraries should
|
||||
-be configured compatibly. @xref{AC_SYS_LARGEFILE}.
|
||||
-@end defmac
|
||||
-
|
||||
@anchor{AC_SYS_LONG_FILE_NAMES}
|
||||
@defmac AC_SYS_LONG_FILE_NAMES
|
||||
@acindex{SYS_LONG_FILE_NAMES}
|
||||
@@ -8927,14 +8916,13 @@ applications and libraries should be configured compatibly.
|
||||
@xref{AC_SYS_LARGEFILE}.
|
||||
@end defmac
|
||||
|
||||
-@defmac AC_SYS_YEAR2038_REQUIRED
|
||||
-@acindex{SYS_YEAR2038_REQUIRED}
|
||||
+@defmac AC_SYS_YEAR2038_RECOMMENDED
|
||||
+@acindex{SYS_YEAR2038_RECOMMENDED}
|
||||
This macro has the same effect as @code{AC_SYS_YEAR2038},
|
||||
but also declares that the program being configured
|
||||
-requires support for timestamps after mid-January of 2038.
|
||||
-If a large @code{time_t} is unavailable,
|
||||
-@command{configure} will unconditionally error out.
|
||||
-The @option{--disable-year2038} option will not be available.
|
||||
+should support timestamps after mid-January 2038.
|
||||
+If a large @code{time_t} is unavailable, @command{configure} will error
|
||||
+out unless the @option{--disable-year2038} option is specified.
|
||||
|
||||
Year-2038 support for applications and libraries should be configured
|
||||
compatibly. @xref{AC_SYS_YEAR2038}.
|
||||
diff --git a/lib/autoconf/specific.m4 b/lib/autoconf/specific.m4
|
||||
index f411695fe..88e0479e8 100644
|
||||
--- a/lib/autoconf/specific.m4
|
||||
+++ b/lib/autoconf/specific.m4
|
||||
@@ -115,8 +115,8 @@ m4_define([_AC_SYS_YEAR2038_OPTIONS], m4_normalize(
|
||||
dnl 32-bit MinGW (misconfiguration)
|
||||
))
|
||||
|
||||
-# _AC_SYS_YEAR2038_PROBE([IF-NOT-DETECTED])
|
||||
-# -----------------------------------------
|
||||
+# _AC_SYS_YEAR2038_PROBE
|
||||
+# ----------------------
|
||||
# Subroutine of AC_SYS_YEAR2038. Probe for time_t that can represent
|
||||
# time points more than 2**31 - 1 seconds after the epoch (dates after
|
||||
# 2038-01-18, see above) and set the cache variable ac_cv_sys_year2038_opts
|
||||
@@ -129,13 +129,10 @@ m4_define([_AC_SYS_YEAR2038_OPTIONS], m4_normalize(
|
||||
# AC_TRY_RUN. Note also that some systems only support large time_t
|
||||
# together with large off_t.
|
||||
#
|
||||
-# If support is not detected, the behavior depends on which of the
|
||||
-# top-level AC_SYS_YEAR2038 macros was used (see below).
|
||||
-#
|
||||
# If you change this macro you may also need to change
|
||||
# _AC_SYS_YEAR2038_OPTIONS.
|
||||
AC_DEFUN([_AC_SYS_YEAR2038_PROBE],
|
||||
-[AC_CACHE_CHECK([for $CC option to enable timestamps after Jan 2038],
|
||||
+[AC_CACHE_CHECK([for $CC option for timestamps after 2038],
|
||||
[ac_cv_sys_year2038_opts],
|
||||
[ac_save_CPPFLAGS="$CPPFLAGS"
|
||||
ac_opt_found=no
|
||||
@@ -154,29 +151,7 @@ ac_have_year2038=yes
|
||||
AS_CASE([$ac_cv_sys_year2038_opts],
|
||||
["none needed"], [],
|
||||
["support not detected"],
|
||||
- [ac_have_year2038=no
|
||||
- AS_CASE([$ac_year2038_required,$enable_year2038],
|
||||
- [yes,*],
|
||||
- [AC_MSG_FAILURE([support for timestamps after Jan 2038 is required])],
|
||||
- [*,yes],
|
||||
- [# If we're not cross compiling and 'touch' works with a large
|
||||
- # timestamp, then we can presume the system supports wider time_t
|
||||
- # *somehow* and we just weren't able to detect it. One common
|
||||
- # case that we deliberately *don't* probe for is a system that
|
||||
- # supports both 32- and 64-bit ABIs but only the 64-bit ABI offers
|
||||
- # wide time_t. (It would be inappropriate for us to override an
|
||||
- # intentional use of -m32.) Error out, demanding use of
|
||||
- # --disable-year2038 if this is intentional.
|
||||
- AS_IF([test $cross_compiling = no],
|
||||
- [AS_IF([TZ=UTC0 touch -t 210602070628.15 conftest.time 2>/dev/null],
|
||||
- [AS_CASE([`TZ=UTC0 LC_ALL=C ls -l conftest.time 2>/dev/null`],
|
||||
- [*'Feb 7 2106'* | *'Feb 7 17:10'*],
|
||||
- [AC_MSG_FAILURE(m4_text_wrap(
|
||||
- [this system appears to support timestamps after January 2038,
|
||||
- but no mechanism for enabling wide 'time_t' was detected.
|
||||
- Did you mean to build a 64-bit binary? (e.g. 'CC="${CC} -m64"'.)
|
||||
- To proceed with 32-bit time_t, configure with '--disable-year2038'.],
|
||||
- [], [], [55]))])])])])],
|
||||
+ [ac_have_year2038=no],
|
||||
|
||||
["-D_TIME_BITS=64"],
|
||||
[AC_DEFINE([_TIME_BITS], [64],
|
||||
@@ -189,7 +164,7 @@ AS_CASE([$ac_cv_sys_year2038_opts],
|
||||
["-U_USE_32_BIT_TIME_T"*],
|
||||
[AC_MSG_FAILURE(m4_text_wrap(
|
||||
[the 'time_t' type is currently forced to be 32-bit.
|
||||
- It will stop working after January 2038.
|
||||
+ It will stop working after mid-January 2038.
|
||||
Remove _USE_32BIT_TIME_T from the compiler flags.],
|
||||
[], [], [55]))],
|
||||
|
||||
@@ -199,44 +174,23 @@ AS_CASE([$ac_cv_sys_year2038_opts],
|
||||
|
||||
# _AC_SYS_YEAR2038_ENABLE
|
||||
# -----------------------
|
||||
-# Subroutine of AC_SYS_YEAR2038 and _AC_SYS_YEAR2038_OPT_IN.
|
||||
# Depending on which of the YEAR2038 macros was used, add either an
|
||||
-# --enable-year2038, or a --disable-year2038, or no option at all to
|
||||
-# the configure script. Note that this is expanded very late and
|
||||
+# --enable-year2038 or a --disable-year2038 to
|
||||
+# the configure script. This is expanded very late and
|
||||
# therefore there cannot be any code in the AC_ARG_ENABLE. The
|
||||
# default value for 'enable_year2038' is emitted unconditionally
|
||||
# because the generated code always looks at this variable.
|
||||
m4_define([_AC_SYS_YEAR2038_ENABLE],
|
||||
[m4_divert_text([DEFAULTS],
|
||||
- m4_provide_if([AC_SYS_YEAR2038_REQUIRED],
|
||||
- [ac_year2038_required=yes],
|
||||
- [ac_year2038_required=no]))dnl
|
||||
-m4_divert_text([DEFAULTS],
|
||||
m4_provide_if([AC_SYS_YEAR2038],
|
||||
[enable_year2038=yes],
|
||||
[enable_year2038=no]))]dnl
|
||||
-[m4_provide_if([AC_SYS_YEAR2038_REQUIRED], [],
|
||||
[AC_ARG_ENABLE([year2038],
|
||||
m4_provide_if([AC_SYS_YEAR2038],
|
||||
[AS_HELP_STRING([--disable-year2038],
|
||||
- [omit support for dates after Jan 2038])],
|
||||
+ [don't support timestamps after 2038])],
|
||||
[AS_HELP_STRING([--enable-year2038],
|
||||
- [include support for dates after Jan 2038])]))])])
|
||||
-
|
||||
-# _AC_SYS_YEAR2038_OPT_IN
|
||||
-# -----------------------
|
||||
-# If the --enable-year2038 option is given to configure, attempt to
|
||||
-# detect and activate support for large time_t on 32-bit systems.
|
||||
-# This macro is automatically invoked by AC_SYS_LARGEFILE when large
|
||||
-# *file* support is detected. It does not AC_REQUIRE AC_SYS_LARGEFILE
|
||||
-# to avoid a dependency loop, and is therefore unsafe to expose as a
|
||||
-# documented macro.
|
||||
-AC_DEFUN([_AC_SYS_YEAR2038_OPT_IN],
|
||||
-[m4_provide_if([_AC_SYS_YEAR2038_PROBE], [], [dnl
|
||||
- AS_IF([test "$ac_year2038_required,$enable_year2038" != no,no],
|
||||
- [_AC_SYS_YEAR2038_PROBE])
|
||||
- AC_CONFIG_COMMANDS_PRE([_AC_SYS_YEAR2038_ENABLE])
|
||||
-])])
|
||||
+ [support timestamps after 2038])]))])
|
||||
|
||||
# AC_SYS_YEAR2038
|
||||
# ---------------
|
||||
@@ -244,28 +198,39 @@ AC_DEFUN([_AC_SYS_YEAR2038_OPT_IN],
|
||||
# On systems where time_t is not always 64 bits, this probe can be
|
||||
# skipped by passing the --disable-year2038 option to configure.
|
||||
AC_DEFUN([AC_SYS_YEAR2038],
|
||||
-[m4_provide_if([AC_SYS_LARGEFILE_REQUIRED], [],
|
||||
- [AC_REQUIRE([AC_SYS_LARGEFILE])])]dnl
|
||||
-[m4_provide_if([_AC_SYS_YEAR2038_PROBE], [], [dnl
|
||||
- AS_IF([test "$ac_year2038_required,$enable_year2038" != no,no],
|
||||
- [_AC_SYS_YEAR2038_PROBE])
|
||||
- AC_CONFIG_COMMANDS_PRE([_AC_SYS_YEAR2038_ENABLE])
|
||||
-])])
|
||||
-
|
||||
-# AC_SYS_YEAR2038_REQUIRED
|
||||
-# ------------------------
|
||||
-# Same as AC_SYS_YEAR2038, but declares that this program *requires*
|
||||
-# support for large time_t. If we cannot find any way to make time_t
|
||||
-# capable of representing values larger than 2**31 - 1, configure will
|
||||
-# error out. Furthermore, no --enable-year2038 nor --disable-year2038
|
||||
-# option will be available.
|
||||
-AC_DEFUN([AC_SYS_YEAR2038_REQUIRED],
|
||||
-[m4_provide_if([AC_SYS_LARGEFILE_REQUIRED], [],
|
||||
- [AC_REQUIRE([AC_SYS_LARGEFILE])])]dnl
|
||||
-[m4_provide_if([_AC_SYS_YEAR2038_PROBE], [], [dnl
|
||||
- _AC_SYS_YEAR2038_PROBE
|
||||
- AC_CONFIG_COMMANDS_PRE([_AC_SYS_YEAR2038_ENABLE])
|
||||
-])])
|
||||
+[AC_REQUIRE([AC_SYS_LARGEFILE])dnl
|
||||
+AS_IF([test "$enable_year2038,$ac_have_year2038,$cross_compiling" = yes,no,no],
|
||||
+ [# If we're not cross compiling and 'touch' works with a large
|
||||
+ # timestamp, then we can presume the system supports wider time_t
|
||||
+ # *somehow* and we just weren't able to detect it. One common
|
||||
+ # case that we deliberately *don't* probe for is a system that
|
||||
+ # supports both 32- and 64-bit ABIs but only the 64-bit ABI offers
|
||||
+ # wide time_t. (It would be inappropriate for us to override an
|
||||
+ # intentional use of -m32.) Error out, demanding use of
|
||||
+ # --disable-year2038 if this is intentional.
|
||||
+ AS_IF([TZ=UTC0 touch -t 210602070628.15 conftest.time 2>/dev/null],
|
||||
+ [AS_CASE([`TZ=UTC0 LC_ALL=C ls -l conftest.time 2>/dev/null`],
|
||||
+ [*'Feb 7 2106'* | *'Feb 7 17:10'*],
|
||||
+ [AC_MSG_FAILURE(m4_text_wrap(
|
||||
+ [this system appears to support timestamps after mid-January 2038,
|
||||
+ but no mechanism for enabling wide 'time_t' was detected.
|
||||
+ Did you mean to build a 64-bit binary? (E.g., 'CC="${CC} -m64"'.)
|
||||
+ To proceed with 32-bit time_t, configure with '--disable-year2038'.],
|
||||
+ [], [], [55]))])])])])
|
||||
+
|
||||
+# AC_SYS_YEAR2038_RECOMMENDED
|
||||
+# ---------------------------
|
||||
+# Same as AC_SYS_YEAR2038, but recommend support for large time_t.
|
||||
+# If we cannot find any way to make time_t capable of representing
|
||||
+# values larger than 2**31 - 1, error out unless --disable-year2038 is given.
|
||||
+AC_DEFUN([AC_SYS_YEAR2038_RECOMMENDED],
|
||||
+[AC_REQUIRE([AC_SYS_YEAR2038])dnl
|
||||
+AS_IF([test "$enable_year2038,$ac_have_year2038" = yes,no],
|
||||
+ [AC_MSG_FAILURE(m4_text_wrap(
|
||||
+ [could not enable timestamps after mid-January 2038.
|
||||
+ Did you mean to build a 64-bit binary? (E.g., 'CC="${CC} -m64"'.)
|
||||
+ To proceed with 32-bit time_t, configure with '--disable-year2038'.],
|
||||
+ [], [], [55]))])])
|
||||
|
||||
# _AC_SYS_LARGEFILE_TEST_CODE
|
||||
# ---------------------------
|
||||
@@ -342,9 +307,7 @@ AS_CASE([$ac_cv_sys_largefile_opts],
|
||||
["none needed"], [],
|
||||
["supported through gnulib"], [],
|
||||
["support not detected"],
|
||||
- [ac_have_largefile=no
|
||||
- AS_IF([test $ac_largefile_required,$ac_year2038_required != no,no],
|
||||
- [AC_MSG_FAILURE([support for large files is required])])],
|
||||
+ [ac_have_largefile=no],
|
||||
|
||||
["-D_FILE_OFFSET_BITS=64"],
|
||||
[AC_DEFINE([_FILE_OFFSET_BITS], [64],
|
||||
@@ -360,30 +323,9 @@ AS_CASE([$ac_cv_sys_largefile_opts],
|
||||
[AC_MSG_ERROR(
|
||||
[internal error: bad value for \$ac_cv_sys_largefile_opts])])
|
||||
|
||||
-_AC_SYS_YEAR2038_OPT_IN
|
||||
-])
|
||||
-
|
||||
-# _AC_SYS_LARGEFILE_ENABLE
|
||||
-# ------------------------
|
||||
-# Subroutine of AC_SYS_LARGEFILE. If AC_SYS_LARGEFILE_REQUIRED was
|
||||
-# not used at any point in this configure script, add a
|
||||
-# --disable-largefile option to the configure script. Note that this
|
||||
-# is expanded very late and therefore there cannot be any code in the
|
||||
-# AC_ARG_ENABLE. The default value for 'enable_largefile' is emitted
|
||||
-# unconditionally because the generated shell code always looks at
|
||||
-# this variable.
|
||||
-m4_define([_AC_SYS_LARGEFILE_ENABLE],
|
||||
-[m4_divert_text([DEFAULTS],
|
||||
- m4_provide_if([AC_SYS_LARGEFILE_REQUIRED],
|
||||
- [ac_largefile_required=yes],
|
||||
- [ac_largefile_required=no]))dnl
|
||||
-m4_divert_text([DEFAULTS],
|
||||
- [enable_largefile=yes])]dnl
|
||||
-[m4_provide_if([AC_SYS_LARGEFILE_REQUIRED], [],
|
||||
- [m4_provide_if([AC_SYS_YEAR2038_REQUIRED], [],
|
||||
- [AC_ARG_ENABLE([largefile],
|
||||
- [AS_HELP_STRING([--disable-largefile],
|
||||
- [omit support for large files])])])])])
|
||||
+AS_IF([test "$enable_year2038" != no],
|
||||
+ [_AC_SYS_YEAR2038_PROBE])
|
||||
+AC_CONFIG_COMMANDS_PRE([_AC_SYS_YEAR2038_ENABLE])])
|
||||
|
||||
# AC_SYS_LARGEFILE
|
||||
# ----------------
|
||||
@@ -394,29 +336,12 @@ m4_divert_text([DEFAULTS],
|
||||
# Additionally, on Linux file systems with 64-bit inodes a file that happens
|
||||
# to have a 64-bit inode number cannot be accessed by 32-bit applications on
|
||||
# Linux x86/x86_64. This can occur with file systems such as XFS and NFS.
|
||||
-# This macro allows configuration to continue if the system doesn't support
|
||||
-# large files; see also AC_SYS_LARGEFILE_REQUIRED.
|
||||
AC_DEFUN([AC_SYS_LARGEFILE],
|
||||
-[m4_provide_if([_AC_SYS_LARGEFILE_PROBE], [], [dnl
|
||||
- AS_IF([test "$ac_largefile_required,$enable_largefile,$ac_year2038_required" != no,no,no],
|
||||
- [_AC_SYS_LARGEFILE_PROBE])
|
||||
- AC_CONFIG_COMMANDS_PRE([_AC_SYS_LARGEFILE_ENABLE])
|
||||
-])])
|
||||
-
|
||||
-# AC_SYS_LARGEFILE_REQUIRED
|
||||
-# -------------------------
|
||||
-# Same as AC_SYS_LARGEFILE, but declares that this program *requires*
|
||||
-# support for large files. If we cannot find a combination of compiler
|
||||
-# options and #defines that makes 'off_t' capable of representing 2**63 - 1,
|
||||
-# 'configure' will error out. Furthermore, 'configure' will not offer a
|
||||
-# --disable-largefile command line option.
|
||||
-# If both AC_SYS_LARGEFILE and AC_SYS_LARGEFILE_REQUIRED are used in the
|
||||
-# same configure script -- in either order -- AC_SYS_LARGEFILE_REQUIRED wins.
|
||||
-AC_DEFUN([AC_SYS_LARGEFILE_REQUIRED],
|
||||
-[m4_provide_if([_AC_SYS_LARGEFILE_PROBE], [], [dnl
|
||||
- _AC_SYS_LARGEFILE_PROBE
|
||||
- AC_CONFIG_COMMANDS_PRE([_AC_SYS_LARGEFILE_ENABLE])
|
||||
-])])
|
||||
+[AC_ARG_ENABLE([largefile],
|
||||
+ [AS_HELP_STRING([--disable-largefile],
|
||||
+ [omit support for large files])])dnl
|
||||
+AS_IF([test "$enable_largefile,$enable_year2038" != no,no],
|
||||
+ [_AC_SYS_LARGEFILE_PROBE])])
|
||||
|
||||
# AC_SYS_LONG_FILE_NAMES
|
||||
# ----------------------
|
||||
--
|
||||
2.41.0
|
||||
|
||||
|
|
@ -0,0 +1,98 @@
|
|||
From 028526149ee804617a302ccef22cc6adbda681b0 Mon Sep 17 00:00:00 2001
|
||||
From: Paul Eggert <eggert@cs.ucla.edu>
|
||||
Date: Wed, 10 May 2023 17:20:49 -0700
|
||||
Subject: [PATCH 21/29] Port AC_FUNC_MMAP to more-modern systems
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
* lib/autoconf/functions.m4 (AC_FUNC_MMAP): Don’t call
|
||||
getpagesize, as it’s tricky to configure, modern POSIX doesn’t
|
||||
require it, and calling it without including <unistd.h> provokes a
|
||||
compile-time error on modern systems. Instead, rework the test
|
||||
to not need getpagesize. Add a FIXME comment for unnecessary
|
||||
tests; I don't want to remove them now as we're too close to
|
||||
a release. Remove long-obsolete comment about GNU grep.
|
||||
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
lib/autoconf/functions.m4 | 44 +++++----------------------------------
|
||||
1 file changed, 5 insertions(+), 39 deletions(-)
|
||||
|
||||
diff --git a/lib/autoconf/functions.m4 b/lib/autoconf/functions.m4
|
||||
index 499e4c024..5a0f01856 100644
|
||||
--- a/lib/autoconf/functions.m4
|
||||
+++ b/lib/autoconf/functions.m4
|
||||
@@ -1283,6 +1283,7 @@ AU_ALIAS([AM_FUNC_MKTIME], [AC_FUNC_MKTIME])
|
||||
AN_FUNCTION([mmap], [AC_FUNC_MMAP])
|
||||
AC_DEFUN([AC_FUNC_MMAP],
|
||||
[AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles
|
||||
+dnl FIXME: Remove the unnecessary checks for unistd.h, sys/param.h, getpagesize.
|
||||
AC_CHECK_HEADERS_ONCE([unistd.h sys/param.h])
|
||||
AC_CHECK_FUNCS_ONCE([getpagesize])
|
||||
AC_CACHE_CHECK([for working mmap], [ac_cv_func_mmap_fixed_mapped],
|
||||
@@ -1305,48 +1306,11 @@ AC_CACHE_CHECK([for working mmap], [ac_cv_func_mmap_fixed_mapped],
|
||||
VM page cache was not coherent with the file system buffer cache
|
||||
like early versions of FreeBSD and possibly contemporary NetBSD.)
|
||||
For shared mappings, we should conversely verify that changes get
|
||||
- propagated back to all the places they're supposed to be.
|
||||
-
|
||||
- Grep wants private fixed already mapped.
|
||||
- The main things grep needs to know about mmap are:
|
||||
- * does it exist and is it safe to write into the mmap'd area
|
||||
- * how to use it (BSD variants) */
|
||||
+ propagated back to all the places they're supposed to be. */
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <sys/mman.h>
|
||||
|
||||
-/* This mess was copied from the GNU getpagesize.h. */
|
||||
-#ifndef HAVE_GETPAGESIZE
|
||||
-# ifdef _SC_PAGESIZE
|
||||
-# define getpagesize() sysconf(_SC_PAGESIZE)
|
||||
-# else /* no _SC_PAGESIZE */
|
||||
-# ifdef HAVE_SYS_PARAM_H
|
||||
-# include <sys/param.h>
|
||||
-# ifdef EXEC_PAGESIZE
|
||||
-# define getpagesize() EXEC_PAGESIZE
|
||||
-# else /* no EXEC_PAGESIZE */
|
||||
-# ifdef NBPG
|
||||
-# define getpagesize() NBPG * CLSIZE
|
||||
-# ifndef CLSIZE
|
||||
-# define CLSIZE 1
|
||||
-# endif /* no CLSIZE */
|
||||
-# else /* no NBPG */
|
||||
-# ifdef NBPC
|
||||
-# define getpagesize() NBPC
|
||||
-# else /* no NBPC */
|
||||
-# ifdef PAGESIZE
|
||||
-# define getpagesize() PAGESIZE
|
||||
-# endif /* PAGESIZE */
|
||||
-# endif /* no NBPC */
|
||||
-# endif /* no NBPG */
|
||||
-# endif /* no EXEC_PAGESIZE */
|
||||
-# else /* no HAVE_SYS_PARAM_H */
|
||||
-# define getpagesize() 8192 /* punt totally */
|
||||
-# endif /* no HAVE_SYS_PARAM_H */
|
||||
-# endif /* no _SC_PAGESIZE */
|
||||
-
|
||||
-#endif /* no HAVE_GETPAGESIZE */
|
||||
-
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
@@ -1355,7 +1319,9 @@ main (void)
|
||||
int i, pagesize;
|
||||
int fd, fd2;
|
||||
|
||||
- pagesize = getpagesize ();
|
||||
+ /* The "page size" need not equal the system page size,
|
||||
+ and need not even be a power of 2. */
|
||||
+ pagesize = 8192;
|
||||
|
||||
/* First, make a file with some known garbage in it. */
|
||||
data = (char *) malloc (pagesize);
|
||||
--
|
||||
2.41.0
|
||||
|
||||
|
|
@ -0,0 +1,91 @@
|
|||
From 33c26d2700f927432c756ccf7a4fc89403d35b95 Mon Sep 17 00:00:00 2001
|
||||
From: Paul Eggert <eggert@cs.ucla.edu>
|
||||
Date: Wed, 10 May 2023 22:57:27 -0700
|
||||
Subject: [PATCH 22/29] Fix port of AC_FUNC_MMAP
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Problem reported by Matt Turner in:
|
||||
https://lists.gnu.org/r/bug-autoconf/2023-05/msg00005.html
|
||||
* lib/autoconf/functions.m4 (AC_FUNC_MMAP): Go back to getting the
|
||||
page size, since the zero-fill test needs this after all.
|
||||
However, prefer sysconf (_SC_PAGESIZE) or sysconf (_SC_PAGE_SIZE)
|
||||
to getpagesize (), and use ‘long’ not ‘int’ to store the page size.
|
||||
Also, declare getpagesize if it is used as a function.
|
||||
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
lib/autoconf/functions.m4 | 41 ++++++++++++++++++++++++++++++++++-----
|
||||
1 file changed, 36 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/lib/autoconf/functions.m4 b/lib/autoconf/functions.m4
|
||||
index 5a0f01856..3d6e4aca8 100644
|
||||
--- a/lib/autoconf/functions.m4
|
||||
+++ b/lib/autoconf/functions.m4
|
||||
@@ -1283,7 +1283,6 @@ AU_ALIAS([AM_FUNC_MKTIME], [AC_FUNC_MKTIME])
|
||||
AN_FUNCTION([mmap], [AC_FUNC_MMAP])
|
||||
AC_DEFUN([AC_FUNC_MMAP],
|
||||
[AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles
|
||||
-dnl FIXME: Remove the unnecessary checks for unistd.h, sys/param.h, getpagesize.
|
||||
AC_CHECK_HEADERS_ONCE([unistd.h sys/param.h])
|
||||
AC_CHECK_FUNCS_ONCE([getpagesize])
|
||||
AC_CACHE_CHECK([for working mmap], [ac_cv_func_mmap_fixed_mapped],
|
||||
@@ -1311,17 +1310,49 @@ AC_CACHE_CHECK([for working mmap], [ac_cv_func_mmap_fixed_mapped],
|
||||
#include <fcntl.h>
|
||||
#include <sys/mman.h>
|
||||
|
||||
+#ifndef getpagesize
|
||||
+# ifdef _SC_PAGESIZE
|
||||
+# define getpagesize() sysconf (_SC_PAGESIZE)
|
||||
+# elif defined _SC_PAGE_SIZE
|
||||
+# define getpagesize() sysconf (_SC_PAGE_SIZE)
|
||||
+# elif HAVE_GETPAGESIZE
|
||||
+int getpagesize ();
|
||||
+# else
|
||||
+# ifdef HAVE_SYS_PARAM_H
|
||||
+# include <sys/param.h>
|
||||
+# ifdef EXEC_PAGESIZE
|
||||
+# define getpagesize() EXEC_PAGESIZE
|
||||
+# else /* no EXEC_PAGESIZE */
|
||||
+# ifdef NBPG
|
||||
+# define getpagesize() NBPG * CLSIZE
|
||||
+# ifndef CLSIZE
|
||||
+# define CLSIZE 1
|
||||
+# endif /* no CLSIZE */
|
||||
+# else /* no NBPG */
|
||||
+# ifdef NBPC
|
||||
+# define getpagesize() NBPC
|
||||
+# else /* no NBPC */
|
||||
+# ifdef PAGESIZE
|
||||
+# define getpagesize() PAGESIZE
|
||||
+# endif /* PAGESIZE */
|
||||
+# endif /* no NBPC */
|
||||
+# endif /* no NBPG */
|
||||
+# endif /* no EXEC_PAGESIZE */
|
||||
+# else /* no HAVE_SYS_PARAM_H */
|
||||
+# define getpagesize() 8192 /* punt totally */
|
||||
+# endif /* no HAVE_SYS_PARAM_H */
|
||||
+# endif
|
||||
+#endif
|
||||
+
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
char *data, *data2, *data3;
|
||||
const char *cdata2;
|
||||
- int i, pagesize;
|
||||
+ long i, pagesize;
|
||||
int fd, fd2;
|
||||
|
||||
- /* The "page size" need not equal the system page size,
|
||||
- and need not even be a power of 2. */
|
||||
- pagesize = 8192;
|
||||
+ pagesize = getpagesize ();
|
||||
|
||||
/* First, make a file with some known garbage in it. */
|
||||
data = (char *) malloc (pagesize);
|
||||
--
|
||||
2.41.0
|
||||
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
From ccc0d640c4d829504568330f9674408af5092ffc Mon Sep 17 00:00:00 2001
|
||||
From: Paul Eggert <eggert@cs.ucla.edu>
|
||||
Date: Sat, 13 May 2023 09:56:33 -0700
|
||||
Subject: [PATCH 23/29] Improve AC_SYS_YEAR2038_RECOMMENDED diagnostic
|
||||
|
||||
* lib/autoconf/specific.m4 (AC_SYS_YEAR2038_RECOMMENDED):
|
||||
Do not recommend gcc -m64, as that likely will not work.
|
||||
Problem reported by Bruno Haible in:
|
||||
https://lists.gnu.org/r/bug-gnulib/2023-05/msg00060.html
|
||||
Instead, mention that 32-bit time_t is not recommended
|
||||
for this package, before telling the builder how
|
||||
to configure with 32-bit time_t anyway.
|
||||
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
lib/autoconf/specific.m4 | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/lib/autoconf/specific.m4 b/lib/autoconf/specific.m4
|
||||
index 88e0479e8..91f20bf0d 100644
|
||||
--- a/lib/autoconf/specific.m4
|
||||
+++ b/lib/autoconf/specific.m4
|
||||
@@ -228,8 +228,9 @@ AC_DEFUN([AC_SYS_YEAR2038_RECOMMENDED],
|
||||
AS_IF([test "$enable_year2038,$ac_have_year2038" = yes,no],
|
||||
[AC_MSG_FAILURE(m4_text_wrap(
|
||||
[could not enable timestamps after mid-January 2038.
|
||||
- Did you mean to build a 64-bit binary? (E.g., 'CC="${CC} -m64"'.)
|
||||
- To proceed with 32-bit time_t, configure with '--disable-year2038'.],
|
||||
+ This package recommends support for these later timestamps.
|
||||
+ However, to proceed with signed 32-bit time_t even though it
|
||||
+ will fail then, configure with '--disable-year2038'.],
|
||||
[], [], [55]))])])
|
||||
|
||||
# _AC_SYS_LARGEFILE_TEST_CODE
|
||||
--
|
||||
2.41.0
|
||||
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
From 8e7281d7bebb5e389befe6e9a5afbb7b2ae13ae0 Mon Sep 17 00:00:00 2001
|
||||
From: Paul Eggert <eggert@cs.ucla.edu>
|
||||
Date: Wed, 17 May 2023 11:50:27 -0700
|
||||
Subject: [PATCH 24/29] Improve AC_FUNC_MMAP comments
|
||||
|
||||
* lib/autoconf/functions.m4 (AC_FUNC_MMAP): Add comment.
|
||||
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
lib/autoconf/functions.m4 | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/lib/autoconf/functions.m4 b/lib/autoconf/functions.m4
|
||||
index 3d6e4aca8..54d04cc38 100644
|
||||
--- a/lib/autoconf/functions.m4
|
||||
+++ b/lib/autoconf/functions.m4
|
||||
@@ -1311,6 +1311,8 @@ AC_CACHE_CHECK([for working mmap], [ac_cv_func_mmap_fixed_mapped],
|
||||
#include <sys/mman.h>
|
||||
|
||||
#ifndef getpagesize
|
||||
+/* Prefer sysconf to the legacy getpagesize function, as getpagesize has
|
||||
+ been removed from POSIX and is limited to page sizes that fit in 'int'. */
|
||||
# ifdef _SC_PAGESIZE
|
||||
# define getpagesize() sysconf (_SC_PAGESIZE)
|
||||
# elif defined _SC_PAGE_SIZE
|
||||
--
|
||||
2.41.0
|
||||
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
From 103514e40da5f20aebf83a3446452ccebe5172bb Mon Sep 17 00:00:00 2001
|
||||
From: Paul Eggert <eggert@cs.ucla.edu>
|
||||
Date: Mon, 19 Jun 2023 14:04:29 -0700
|
||||
Subject: [PATCH 25/29] Fix AC_SYS_LARGEFILE on GNU/Linux alpha, s390x
|
||||
|
||||
Problem reported by Matoro <https://bugs.gnu.org/64123>.
|
||||
* lib/autoconf/specific.m4 (_AC_SYS_LARGEFILE_TEST_CODE):
|
||||
New overridable macro FTYPE, to test types other than off_t.
|
||||
(_AC_SYS_LARGEFILE_TEST_CODE): Test ino_t for
|
||||
-D_FILE_OFFSETBITS=64 too, if no flags are needed for off_t.
|
||||
Needed for GNU/Linux on alpha and s390x.
|
||||
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
lib/autoconf/specific.m4 | 21 +++++++++++++++------
|
||||
1 file changed, 15 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/lib/autoconf/specific.m4 b/lib/autoconf/specific.m4
|
||||
index 91f20bf0d..9d5974548 100644
|
||||
--- a/lib/autoconf/specific.m4
|
||||
+++ b/lib/autoconf/specific.m4
|
||||
@@ -238,13 +238,16 @@ AS_IF([test "$enable_year2038,$ac_have_year2038" = yes,no],
|
||||
# C code used to probe for large file support.
|
||||
m4_define([_AC_SYS_LARGEFILE_TEST_CODE],
|
||||
[@%:@include <sys/types.h>
|
||||
- /* Check that off_t can represent 2**63 - 1 correctly.
|
||||
- We can't simply define LARGE_OFF_T to be 9223372036854775807,
|
||||
+@%:@ifndef FTYPE
|
||||
+@%:@ define FTYPE off_t
|
||||
+@%:@endif
|
||||
+ /* Check that FTYPE can represent 2**63 - 1 correctly.
|
||||
+ We can't simply define LARGE_FTYPE to be 9223372036854775807,
|
||||
since some C++ compilers masquerading as C compilers
|
||||
incorrectly reject 9223372036854775807. */
|
||||
-@%:@define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
|
||||
- int off_t_is_large[[(LARGE_OFF_T % 2147483629 == 721
|
||||
- && LARGE_OFF_T % 2147483647 == 1)
|
||||
+@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31))
|
||||
+ int FTYPE_is_large[[(LARGE_FTYPE % 2147483629 == 721
|
||||
+ && LARGE_FTYPE % 2147483647 == 1)
|
||||
? 1 : -1]];[]dnl
|
||||
])
|
||||
# Defined by Autoconf 2.71 and circa 2022 Gnulib unwisely depended on it.
|
||||
@@ -284,7 +287,13 @@ AC_DEFUN([_AC_SYS_LARGEFILE_PROBE],
|
||||
AS_IF([test x"$ac_opt" != x"none needed"],
|
||||
[CC="$ac_save_CC $ac_opt"])
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([_AC_SYS_LARGEFILE_TEST_CODE])],
|
||||
- [ac_cv_sys_largefile_opts="$ac_opt"
|
||||
+ [AS_IF([test x"$ac_opt" = x"none needed"],
|
||||
+ [# GNU/Linux s390x and alpha need _FILE_OFFSET_BITS=64 for wide ino_t.
|
||||
+ CC="$CC -DFTYPE=ino_t"
|
||||
+ AC_COMPILE_IFELSE([], [],
|
||||
+ [CC="$CC -D_FILE_OFFSET_BITS=64"
|
||||
+ AC_COMPILE_IFELSE([], [ac_opt='-D_FILE_OFFSET_BITS=64'])])])
|
||||
+ ac_cv_sys_largefile_opts=$ac_opt
|
||||
ac_opt_found=yes])
|
||||
test $ac_opt_found = no || break
|
||||
done
|
||||
--
|
||||
2.41.0
|
||||
|
||||
|
|
@ -0,0 +1,270 @@
|
|||
From a7421b411b4359b97528c8f4e9dd8abe82235813 Mon Sep 17 00:00:00 2001
|
||||
From: Paul Eggert <eggert@cs.ucla.edu>
|
||||
Date: Tue, 20 Jun 2023 13:23:19 -0700
|
||||
Subject: [PATCH 26/29] Modernize INSTALL
|
||||
|
||||
Problem reported for gettext bootstrap by Julien Palard in:
|
||||
https://savannah.gnu.org/bugs/?62196
|
||||
* doc/install.texi: Give a brief info as to how to bootstrap,
|
||||
on packages built from Git rather from a distribution tarball.
|
||||
Remove aging details about c99, macOS, X, HP-UX, OSF/1, Solaris,
|
||||
Haiku, sun4. Improve documentation for enable/disable and
|
||||
with/without options.
|
||||
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
doc/install.texi | 157 +++++++++++++++++++++--------------------------
|
||||
1 file changed, 70 insertions(+), 87 deletions(-)
|
||||
|
||||
diff --git a/doc/install.texi b/doc/install.texi
|
||||
index e06689613..cec245fd0 100644
|
||||
--- a/doc/install.texi
|
||||
+++ b/doc/install.texi
|
||||
@@ -18,9 +18,21 @@ warranty of any kind.
|
||||
@node Basic Installation
|
||||
@section Basic Installation
|
||||
|
||||
-Briefly, the shell command
|
||||
-@samp{./configure@tie{}&& make@tie{}&& make@tie{}install}
|
||||
-should configure, build, and install this package. The following
|
||||
+Briefly, the following shell commands:
|
||||
+
|
||||
+@example
|
||||
+test -f configure || ./bootstrap
|
||||
+./configure
|
||||
+make
|
||||
+make install
|
||||
+@end example
|
||||
+
|
||||
+@noindent
|
||||
+should configure, build, and install this package.
|
||||
+The @command{./bootstrap} line is intended for developers;
|
||||
+you can omit it when building from a distribution tarball.
|
||||
+
|
||||
+The following
|
||||
more-detailed instructions are generic; see the @file{README} file for
|
||||
instructions specific to this package.
|
||||
@ifclear autoconf
|
||||
@@ -32,6 +44,17 @@ More recommendations for GNU packages can be found in
|
||||
@ref{Makefile Conventions, , Makefile Conventions, standards,
|
||||
GNU Coding Standards}.
|
||||
|
||||
+If the @command{bootstrap} shell script exists, it attempts to build the
|
||||
+@command{configure} shell script and related files, perhaps by
|
||||
+downloading other software components from the network, and by using
|
||||
+developer tools that are less commonly installed. Because the output of
|
||||
+@command{bootstrap} is system-independent, it is normally run by a
|
||||
+package developer so that its output can be put into the distribution
|
||||
+tarball and ordinary builders and users need not run @command{bootstrap}.
|
||||
+Some packages have commands like @command{./autopull.sh} and
|
||||
+@command {./autogen.sh} that you can run instead of @command{./bootstrap},
|
||||
+for more fine-grained control over bootstrapping.
|
||||
+
|
||||
The @command{configure} shell script attempts to guess correct values
|
||||
for various system-dependent variables used during compilation. It uses
|
||||
those values to create a @file{Makefile} in each directory of the
|
||||
@@ -63,8 +86,15 @@ The simplest way to compile this package is:
|
||||
|
||||
@enumerate
|
||||
@item
|
||||
-@command{cd} to the directory containing the package's source code and type
|
||||
-@samp{./configure} to configure the package for your system.
|
||||
+@command{cd} to the directory containing the package's source code.
|
||||
+
|
||||
+@item
|
||||
+If this is a developer checkout and file @samp{configure} does not yet exist,
|
||||
+type @samp{./bootstrap} to create it.
|
||||
+You may need special developer tools and network access to bootstrap.
|
||||
+
|
||||
+@item
|
||||
+Type @samp{./configure} to configure the package for your system.
|
||||
|
||||
Running @command{configure} might take a while. While running, it prints some
|
||||
messages telling which features it is checking for.
|
||||
@@ -124,7 +154,7 @@ parameters by setting variables in the command line or in the environment.
|
||||
Here is an example:
|
||||
|
||||
@example
|
||||
-./configure CC=c99 CFLAGS=-g LIBS=-lposix
|
||||
+./configure CC=gcc CFLAGS=-g LIBS=-lposix
|
||||
@end example
|
||||
|
||||
@xref{Defining Variables}, for more details.
|
||||
@@ -148,21 +178,10 @@ architecture at a time in the source code directory. After you have
|
||||
installed the package for one architecture, use @samp{make distclean}
|
||||
before reconfiguring for another architecture.
|
||||
|
||||
-On MacOS X 10.5 and later systems, you can create libraries and
|
||||
-executables that work on multiple system types---known as @dfn{fat} or
|
||||
-@dfn{universal} binaries---by specifying multiple @option{-arch} options
|
||||
-to the compiler but only a single @option{-arch} option to the
|
||||
-preprocessor. Like this:
|
||||
-
|
||||
-@example
|
||||
-./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
|
||||
- CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
|
||||
- CPP="gcc -E" CXXCPP="g++ -E"
|
||||
-@end example
|
||||
-
|
||||
-This is not guaranteed to produce working output in all cases, you may
|
||||
-have to build one architecture at a time and combine the results
|
||||
-using the @command{lipo} tool if you have problems.
|
||||
+Some platforms, notably macOS, support ``fat'' or ``universal'' binaries,
|
||||
+where a single binary can execute on different architectures.
|
||||
+On these platforms you can configure and compile just once,
|
||||
+with options specific to that platform.
|
||||
|
||||
@node Installation Names
|
||||
@section Installation Names
|
||||
@@ -227,20 +246,16 @@ an extra prefix or suffix on their names by giving @command{configure}
|
||||
the option @option{--program-prefix=@var{PREFIX}} or
|
||||
@option{--program-suffix=@var{SUFFIX}}.
|
||||
|
||||
-Some packages pay attention to @option{--enable-@var{feature}} options
|
||||
+Some packages pay attention to @option{--enable-@var{feature}}
|
||||
+and @option{--disable-@var{feature}} options
|
||||
to @command{configure}, where @var{feature} indicates an optional part
|
||||
of the package. They may also pay attention to
|
||||
-@option{--with-@var{package}} options, where @var{package} is something
|
||||
-like @samp{gnu-as} or @samp{x} (for the X Window System). The
|
||||
-@file{README} should mention any @option{--enable-} and @option{--with-}
|
||||
+@option{--with-@var{package}} and @option{--without-@var{package}} options,
|
||||
+where @var{package} is something like @samp{gnu-ld}.
|
||||
+@samp{./configure --help} should mention the
|
||||
+@option{--enable-...} and @option{--with-...}
|
||||
options that the package recognizes.
|
||||
|
||||
-For packages that use the X Window System, @command{configure} can
|
||||
-usually find the X include and library files automatically, but if it
|
||||
-doesn't, you can use the @command{configure} options
|
||||
-@option{--x-includes=@var{dir}} and @option{--x-libraries=@var{dir}} to
|
||||
-specify their locations.
|
||||
-
|
||||
Some packages offer the ability to configure how verbose the execution
|
||||
of @command{make} will be. For these packages, running
|
||||
@samp{./configure --enable-silent-rules} sets the default to minimal
|
||||
@@ -248,53 +263,6 @@ output, which can be overridden with @code{make V=1}; while running
|
||||
@samp{./configure --disable-silent-rules} sets the default to verbose,
|
||||
which can be overridden with @code{make V=0}.
|
||||
|
||||
-@node Particular Systems
|
||||
-@section Particular systems
|
||||
-
|
||||
-On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC is
|
||||
-not installed, it is recommended to use the following options in order to
|
||||
-use an ANSI C compiler:
|
||||
-
|
||||
-@example
|
||||
-./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
|
||||
-@end example
|
||||
-
|
||||
-@noindent
|
||||
-and if that doesn't work, install pre-built binaries of GCC for HP-UX.
|
||||
-
|
||||
-HP-UX @command{make} updates targets which have the same timestamps as
|
||||
-their prerequisites, which makes it generally unusable when shipped
|
||||
-generated files such as @command{configure} are involved. Use GNU
|
||||
-@command{make} instead.
|
||||
-
|
||||
-On OSF/1 a.k.a.@: Tru64, some versions of the default C compiler cannot
|
||||
-parse its @code{<wchar.h>} header file. The option @option{-nodtk} can be
|
||||
-used as a workaround. If GNU CC is not installed, it is therefore
|
||||
-recommended to try
|
||||
-
|
||||
-@example
|
||||
-./configure CC="cc"
|
||||
-@end example
|
||||
-
|
||||
-@noindent
|
||||
-and if that doesn't work, try
|
||||
-
|
||||
-@example
|
||||
-./configure CC="cc -nodtk"
|
||||
-@end example
|
||||
-
|
||||
-On Solaris, don't put @code{/usr/ucb} early in your @env{PATH}. This
|
||||
-directory contains several dysfunctional programs; working variants
|
||||
-of these programs are available in @code{/usr/bin}. So, if you need
|
||||
-@code{/usr/ucb} in your @env{PATH}, put it @emph{after} @code{/usr/bin}.
|
||||
-
|
||||
-On Haiku, software installed for all users goes in @file{/boot/common},
|
||||
-not @file{/usr/local}. It is recommended to use the following options:
|
||||
-
|
||||
-@example
|
||||
-./configure --prefix=/boot/common
|
||||
-@end example
|
||||
-
|
||||
@node System Type
|
||||
@section Specifying the System Type
|
||||
|
||||
@@ -304,7 +272,8 @@ will run on. Usually, assuming the package is built to be run on the
|
||||
@emph{same} architectures, @command{configure} can figure that out, but
|
||||
if it prints a message saying it cannot guess the machine type, give it
|
||||
the @option{--build=@var{type}} option. @var{type} can either be a
|
||||
-short name for the system type, such as @samp{sun4}, or a canonical name
|
||||
+short name like @samp{mingw64} for the system type, or a canonical name
|
||||
+like @samp{x86_64-pc-linux-gnu}
|
||||
which has the form:
|
||||
|
||||
@example
|
||||
@@ -319,6 +288,7 @@ where @var{system} can have one of these forms:
|
||||
@var{kernel}-@var{os}
|
||||
@end example
|
||||
|
||||
+@noindent
|
||||
See the file @file{config.sub} for the possible values of each field.
|
||||
If @file{config.sub} isn't included in this package, then this package
|
||||
doesn't need to know the machine type.
|
||||
@@ -405,13 +375,6 @@ traditionally @file{config.cache}. @var{file} defaults to
|
||||
@itemx -C
|
||||
Alias for @option{--cache-file=config.cache}.
|
||||
|
||||
-@item --quiet
|
||||
-@itemx --silent
|
||||
-@itemx -q
|
||||
-Do not print messages saying which checks are being made. To suppress
|
||||
-all normal output, redirect it to @file{/dev/null} (any error messages
|
||||
-will still be shown).
|
||||
-
|
||||
@item --srcdir=@var{dir}
|
||||
Look for the package's source code in directory @var{dir}. Usually
|
||||
@command{configure} can determine that directory automatically.
|
||||
@@ -421,13 +384,33 @@ Use @var{dir} as the installation prefix. @ref{Installation Names}
|
||||
for more details, including other options available for fine-tuning
|
||||
the installation locations.
|
||||
|
||||
+@item --build=@var{type}
|
||||
+Build for architecture @var{type}. @ref{Specifying the System Type}
|
||||
+for more details, including other system type options.
|
||||
+
|
||||
+@item --enable-@var{feature}
|
||||
+@itemx --disable-@var{feature}
|
||||
+Enable or disable the optional @var{feature}. @xref{Optional Features}.
|
||||
+
|
||||
+@item --with-@var{package}
|
||||
+@itemx --without-@var{package}
|
||||
+Use or omit @var{package} when building. @xref{Optional Features}.
|
||||
+
|
||||
+@item --quiet
|
||||
+@itemx --silent
|
||||
+@itemx -q
|
||||
+Do not print messages saying which checks are being made. To suppress
|
||||
+all normal output, redirect it to @file{/dev/null} (any error messages
|
||||
+will still be shown).
|
||||
+
|
||||
@item --no-create
|
||||
@itemx -n
|
||||
Run the configure checks, but stop before creating any output files.
|
||||
@end table
|
||||
|
||||
@noindent
|
||||
-@command{configure} also accepts some other, not widely useful, options.
|
||||
+@command{configure} also recognizes several environment variables,
|
||||
+and accepts some other, less widely useful, options.
|
||||
Run @samp{configure --help} for more details.
|
||||
|
||||
@c Local Variables:
|
||||
--
|
||||
2.41.0
|
||||
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
From eaea61e4485cdecf989fa777ff4e166c945a6eea Mon Sep 17 00:00:00 2001
|
||||
From: Paul Eggert <eggert@cs.ucla.edu>
|
||||
Date: Tue, 20 Jun 2023 13:39:15 -0700
|
||||
Subject: [PATCH 27/29] doc: fix broken cross-refs
|
||||
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
doc/autoconf.texi | 5 +----
|
||||
doc/install.texi | 2 +-
|
||||
2 files changed, 2 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/doc/autoconf.texi b/doc/autoconf.texi
|
||||
index 0f3047b31..7817fc1b5 100644
|
||||
--- a/doc/autoconf.texi
|
||||
+++ b/doc/autoconf.texi
|
||||
@@ -604,7 +604,6 @@ Running @command{configure} Scripts
|
||||
* Multiple Architectures:: Compiling for multiple architectures at once
|
||||
* Installation Names:: Installing in different directories
|
||||
* Optional Features:: Selecting optional features
|
||||
-* Particular Systems:: Particular systems
|
||||
* System Type:: Specifying the system type
|
||||
* Sharing Defaults:: Setting site-wide defaults for @command{configure}
|
||||
* Defining Variables:: Specifying the compiler etc.
|
||||
@@ -23304,7 +23303,6 @@ may use comes with Autoconf.
|
||||
* Multiple Architectures:: Compiling for multiple architectures at once
|
||||
* Installation Names:: Installing in different directories
|
||||
* Optional Features:: Selecting optional features
|
||||
-* Particular Systems:: Particular systems
|
||||
* System Type:: Specifying the system type
|
||||
* Sharing Defaults:: Setting site-wide defaults for @command{configure}
|
||||
* Defining Variables:: Specifying the compiler etc.
|
||||
@@ -26990,8 +26988,7 @@ for simple differences.
|
||||
@item
|
||||
Most tests which produce their result in a substituted variable allow to
|
||||
override the test by setting the variable on the @command{configure}
|
||||
-command line (@pxref{Compilers and Options}, @pxref{Defining Variables},
|
||||
-@pxref{Particular Systems}).
|
||||
+command line (@pxref{Compilers and Options}, @pxref{Defining Variables}).
|
||||
|
||||
@item
|
||||
Many tests store their result in a cache variable (@pxref{Caching
|
||||
diff --git a/doc/install.texi b/doc/install.texi
|
||||
index cec245fd0..6d9788fa9 100644
|
||||
--- a/doc/install.texi
|
||||
+++ b/doc/install.texi
|
||||
@@ -385,7 +385,7 @@ for more details, including other options available for fine-tuning
|
||||
the installation locations.
|
||||
|
||||
@item --build=@var{type}
|
||||
-Build for architecture @var{type}. @ref{Specifying the System Type}
|
||||
+Build for architecture @var{type}. @ref{System Type}.
|
||||
for more details, including other system type options.
|
||||
|
||||
@item --enable-@var{feature}
|
||||
--
|
||||
2.41.0
|
||||
|
||||
|
|
@ -0,0 +1,224 @@
|
|||
From 328f9b88ef896e8e31818c50d9ec2ade5c892ea4 Mon Sep 17 00:00:00 2001
|
||||
From: Bruno Haible <bruno@clisp.org>
|
||||
Date: Fri, 23 Jun 2023 17:37:35 +0200
|
||||
Subject: [PATCH 28/29] INSTALL: Clarify --build, --host, --target, and the
|
||||
system types.
|
||||
|
||||
* doc/install.texi (Compilers and Options): Add another reference.
|
||||
(System Types): Renamed from System Type. Explain how to canonicalize
|
||||
and how to validate a system type. Don't explain --build, --host,
|
||||
--target here.
|
||||
(Building for a different system type): New section.
|
||||
(Troubleshooting the Build Type): New section.
|
||||
(Configuring a Compiler): New section.
|
||||
(configure Invocation): Mention the --host option, not the --build
|
||||
option, since --build is so rarely needed.
|
||||
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
doc/autoconf.texi | 6 +--
|
||||
doc/install.texi | 132 +++++++++++++++++++++++++++++++++++++---------
|
||||
2 files changed, 111 insertions(+), 27 deletions(-)
|
||||
|
||||
diff --git a/doc/autoconf.texi b/doc/autoconf.texi
|
||||
index 7817fc1b5..043f7fb21 100644
|
||||
--- a/doc/autoconf.texi
|
||||
+++ b/doc/autoconf.texi
|
||||
@@ -604,7 +604,7 @@ Running @command{configure} Scripts
|
||||
* Multiple Architectures:: Compiling for multiple architectures at once
|
||||
* Installation Names:: Installing in different directories
|
||||
* Optional Features:: Selecting optional features
|
||||
-* System Type:: Specifying the system type
|
||||
+* System Types:: Specifying a system type
|
||||
* Sharing Defaults:: Setting site-wide defaults for @command{configure}
|
||||
* Defining Variables:: Specifying the compiler etc.
|
||||
* configure Invocation:: Changing how @command{configure} runs
|
||||
@@ -22383,7 +22383,7 @@ system it's running on. To do so it runs a script called
|
||||
command or symbols predefined by the C preprocessor.
|
||||
|
||||
Alternately, the user can specify the system type with command line
|
||||
-arguments to @command{configure} (@pxref{System Type}. Doing so is
|
||||
+arguments to @command{configure} (@pxref{System Types}. Doing so is
|
||||
necessary when
|
||||
cross-compiling. In the most complex case of cross-compiling, three
|
||||
system types are involved. The options to specify them are:
|
||||
@@ -23303,7 +23303,7 @@ may use comes with Autoconf.
|
||||
* Multiple Architectures:: Compiling for multiple architectures at once
|
||||
* Installation Names:: Installing in different directories
|
||||
* Optional Features:: Selecting optional features
|
||||
-* System Type:: Specifying the system type
|
||||
+* System Types:: Specifying a system type
|
||||
* Sharing Defaults:: Setting site-wide defaults for @command{configure}
|
||||
* Defining Variables:: Specifying the compiler etc.
|
||||
* configure Invocation:: Changing how @command{configure} runs
|
||||
diff --git a/doc/install.texi b/doc/install.texi
|
||||
index 6d9788fa9..a3ef17828 100644
|
||||
--- a/doc/install.texi
|
||||
+++ b/doc/install.texi
|
||||
@@ -157,8 +157,16 @@ Here is an example:
|
||||
./configure CC=gcc CFLAGS=-g LIBS=-lposix
|
||||
@end example
|
||||
|
||||
-@xref{Defining Variables}, for more details.
|
||||
-
|
||||
+See
|
||||
+@ref{Defining Variables} and
|
||||
+@ifset autoconf
|
||||
+@ref{Preset Output Variables}
|
||||
+@end ifset
|
||||
+@ifclear autoconf
|
||||
+@ref{Preset Output Variables,,, autoconf, Autoconf}
|
||||
+@c (@url{https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.71/html_node/Preset-Output-Variables.html})
|
||||
+@end ifclear
|
||||
+for more details.
|
||||
|
||||
@node Multiple Architectures
|
||||
@section Compiling For Multiple Architectures
|
||||
@@ -263,18 +271,17 @@ output, which can be overridden with @code{make V=1}; while running
|
||||
@samp{./configure --disable-silent-rules} sets the default to verbose,
|
||||
which can be overridden with @code{make V=0}.
|
||||
|
||||
-@node System Type
|
||||
-@section Specifying the System Type
|
||||
+@node System Types
|
||||
+@section Specifying a System Type
|
||||
|
||||
-There may be some features @command{configure} cannot figure out
|
||||
-automatically, but needs to determine by the type of machine the package
|
||||
-will run on. Usually, assuming the package is built to be run on the
|
||||
-@emph{same} architectures, @command{configure} can figure that out, but
|
||||
-if it prints a message saying it cannot guess the machine type, give it
|
||||
-the @option{--build=@var{type}} option. @var{type} can either be a
|
||||
-short name like @samp{mingw64} for the system type, or a canonical name
|
||||
-like @samp{x86_64-pc-linux-gnu}
|
||||
-which has the form:
|
||||
+The following sections go into details regarding situations where you
|
||||
+may have to specify a system type, either through the option
|
||||
+@option{--host=@var{type}}, or through the option
|
||||
+@option{--build=@var{type}}, or -- in the case of compilers -- through
|
||||
+@option{--target=@var{type}}.
|
||||
+
|
||||
+A system type @var{type} can either be a short name like @samp{mingw64},
|
||||
+or a canonical name like @samp{x86_64-pc-linux-gnu} which has the form:
|
||||
|
||||
@example
|
||||
@var{cpu}-@var{company}-@var{system}
|
||||
@@ -291,16 +298,93 @@ where @var{system} can have one of these forms:
|
||||
@noindent
|
||||
See the file @file{config.sub} for the possible values of each field.
|
||||
If @file{config.sub} isn't included in this package, then this package
|
||||
-doesn't need to know the machine type.
|
||||
+doesn't need to know any machine type.
|
||||
+
|
||||
+The file @file{config.sub} is a program that validates and canonicalizes
|
||||
+a system type.
|
||||
+It can do canonicalization, as in
|
||||
+
|
||||
+@example
|
||||
+$ sh config.sub x86_64-linux
|
||||
+x86_64-pc-linux-gnu
|
||||
+$ sh config.sub arm64-linux
|
||||
+aarch64-unknown-linux-gnu
|
||||
+@end example
|
||||
+
|
||||
+@noindent
|
||||
+It also validates the parts. For example, this interaction tells you
|
||||
+that ``crusoe'' is not a valid cpu architecture name:
|
||||
|
||||
-If you are @emph{building} compiler tools for cross-compiling, you
|
||||
-should use the option @option{--target=@var{type}} to select the type of
|
||||
-system they will produce code for.
|
||||
+@example
|
||||
+$ sh config.sub crusoe-linux
|
||||
+Invalid configuration `crusoe-linux': machine `crusoe-unknown' not recognized
|
||||
+@end example
|
||||
+
|
||||
+@node Building for a different system type
|
||||
+@section Creating binaries for a different system type
|
||||
+
|
||||
+When you want to create binaries that will run on a different machine
|
||||
+type than the one you are building on, you need to specify both
|
||||
+@itemize @bullet
|
||||
+@item
|
||||
+a @option{--host=@var{type}} option, specifying the machine type on
|
||||
+which the binaries shall run,
|
||||
+@item
|
||||
+compiler variables (@code{CC} for the C compiler, @code{CXX} for the C++
|
||||
+compiler, and so on), pointing to compilers that generate object code
|
||||
+for that machine type.
|
||||
+@end itemize
|
||||
+
|
||||
+For example, to create binaries intended to run on a 64-bit ARM
|
||||
+processor:
|
||||
+@example
|
||||
+./configure --host=aarch64-linux-gnu \
|
||||
+ CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++
|
||||
+@end example
|
||||
|
||||
-If you want to @emph{use} a cross compiler, that generates code for a
|
||||
-platform different from the build platform, you should specify the
|
||||
-@dfn{host} platform (i.e., that on which the generated programs will
|
||||
-eventually be run) with @option{--host=@var{type}}.
|
||||
+If you do this on a machine that can execute such binaries (e.g.@: by
|
||||
+virtue of the @code{qemu-aarch64} program, system libraries for that
|
||||
+architecture under @code{$QEMU_LD_PREFIX}, and a Linux
|
||||
+@code{binfmt_misc} configuration), the build behaves like a native
|
||||
+build.
|
||||
+If not, the build is a cross-build, in the sense that @code{configure}
|
||||
+will make cross-compilation guesses instead of running test programs,
|
||||
+and ``make check'' will not work.
|
||||
+
|
||||
+@node Troubleshooting the Build Type
|
||||
+@section Fixing a ``cannot guess build type'' error
|
||||
+
|
||||
+In rare cases, it may happen that @code{configure} fails with the error
|
||||
+message ``cannot guess build type''.
|
||||
+This error means that the files @file{config.guess} and
|
||||
+@file{config.sub} don't recognize the type of the system on which you
|
||||
+are building.
|
||||
+In this case, first fetch the newest versions of these files, from
|
||||
+@url{https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess}
|
||||
+and
|
||||
+@url{https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub},
|
||||
+respectively, and use these as drop-in replacement for the files
|
||||
+@file{config.guess} and @file{config.sub} that were shipped with this
|
||||
+package.
|
||||
+
|
||||
+If this resolves the problem, feel free to report the solution to the
|
||||
+maintainers of this package.
|
||||
+
|
||||
+Otherwise, it means that your system is not yet supported by
|
||||
+@file{config.guess} and @file{config.sub}.
|
||||
+As a workaround, you can use a configure option
|
||||
+@option{--build=@var{type}}, where @var{type} comes closest to your
|
||||
+system type.
|
||||
+Also, you're welcome to file a report to
|
||||
+@email{config-patches@@gnu.org}.
|
||||
+
|
||||
+@node Configuring a Compiler
|
||||
+@section Configuration options specific to a compiler
|
||||
+
|
||||
+If you are building a compiler, and this compiler should generate code
|
||||
+for a system type that is different from the one on which the compiler
|
||||
+binaries shall run on, use the option @option{--target=@var{type}} to
|
||||
+select the type of system for which the compiler should produce code.
|
||||
|
||||
@node Sharing Defaults
|
||||
@section Sharing Defaults
|
||||
@@ -384,9 +468,9 @@ Use @var{dir} as the installation prefix. @ref{Installation Names}
|
||||
for more details, including other options available for fine-tuning
|
||||
the installation locations.
|
||||
|
||||
-@item --build=@var{type}
|
||||
-Build for architecture @var{type}. @ref{System Type}.
|
||||
-for more details, including other system type options.
|
||||
+@item --host=@var{type}
|
||||
+Build binaries for architecture @var{type}. @ref{System Types} and
|
||||
+@ref{Building for a different system type} for more details.
|
||||
|
||||
@item --enable-@var{feature}
|
||||
@itemx --disable-@var{feature}
|
||||
--
|
||||
2.41.0
|
||||
|
||||
|
|
@ -0,0 +1,366 @@
|
|||
From d8ca8b323873e5cd9d969a062f70b31db450ba53 Mon Sep 17 00:00:00 2001
|
||||
From: Paul Eggert <eggert@cs.ucla.edu>
|
||||
Date: Sat, 24 Jun 2023 14:39:34 -0700
|
||||
Subject: [PATCH 29/29] Shorten and improve INSTALL
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Rewrite install.texi so that INSTALL is shorter and hopefully
|
||||
more useful for new installers.
|
||||
* doc/install.texi: When not building the Autoconf manual, put
|
||||
copyright notice at the end, and omit external references as they
|
||||
do not work in INSTALL.
|
||||
Avoid long URLs as they do not work well in INSTALL or
|
||||
in info files. Be more consistent (though not entirely
|
||||
consistent) about “system” vs “architecture”.
|
||||
(System Types, Building for a different system type)
|
||||
(Troubleshooting the Build Type): Coalesce into a single section
|
||||
and rewrite for clarity and brevity. Mention build-aux. Do not
|
||||
mention --target here as it’s too rare to make the cut.
|
||||
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
doc/install.texi | 224 +++++++++++++++++------------------------------
|
||||
1 file changed, 82 insertions(+), 142 deletions(-)
|
||||
|
||||
diff --git a/doc/install.texi b/doc/install.texi
|
||||
index a3ef17828..6c3a9c21c 100644
|
||||
--- a/doc/install.texi
|
||||
+++ b/doc/install.texi
|
||||
@@ -2,23 +2,13 @@
|
||||
@c the INSTALL file.
|
||||
|
||||
@ifclear autoconf
|
||||
-
|
||||
@unnumbered Installation Instructions
|
||||
-
|
||||
-Copyright @copyright{} 1994--1996, 1999--2002, 2004--2017, 2020--2023
|
||||
-Free Software Foundation, Inc.
|
||||
-
|
||||
-Copying and distribution of this file, with or without modification, are
|
||||
-permitted in any medium without royalty provided the copyright notice
|
||||
-and this notice are preserved. This file is offered as-is, without
|
||||
-warranty of any kind.
|
||||
-
|
||||
@end ifclear
|
||||
|
||||
@node Basic Installation
|
||||
@section Basic Installation
|
||||
|
||||
-Briefly, the following shell commands:
|
||||
+The following shell commands:
|
||||
|
||||
@example
|
||||
test -f configure || ./bootstrap
|
||||
@@ -41,8 +31,13 @@ of the features documented below. The lack of an optional feature in a
|
||||
given package is not necessarily a bug.
|
||||
@end ifclear
|
||||
More recommendations for GNU packages can be found in
|
||||
+@ifset autoconf
|
||||
@ref{Makefile Conventions, , Makefile Conventions, standards,
|
||||
GNU Coding Standards}.
|
||||
+@end ifset
|
||||
+@ifclear autoconf
|
||||
+the GNU Coding Standards.
|
||||
+@end ifclear
|
||||
|
||||
If the @command{bootstrap} shell script exists, it attempts to build the
|
||||
@command{configure} shell script and related files, perhaps by
|
||||
@@ -61,8 +56,8 @@ those values to create a @file{Makefile} in each directory of the
|
||||
package. It may also create one or more @file{.h} files containing
|
||||
system-dependent definitions. Finally, it creates a shell script
|
||||
@file{config.status} that you can run in the future to recreate the
|
||||
-current configuration, and a file @file{config.log} containing compiler
|
||||
-output (useful mainly for debugging @command{configure}).
|
||||
+current configuration, and a file @file{config.log} containing
|
||||
+output useful for debugging @command{configure}.
|
||||
|
||||
It can also use an optional file (typically called @file{config.cache}
|
||||
and enabled with @option{--cache-file=config.cache} or simply
|
||||
@@ -77,10 +72,9 @@ they can be considered for the next release. If you are using the
|
||||
cache, and at some point @file{config.cache} contains results you don't
|
||||
want to keep, you may remove or edit it.
|
||||
|
||||
-The file @file{configure.ac} (or @file{configure.in}) is used to create
|
||||
-@file{configure} by a program called @command{autoconf}. You need
|
||||
-@file{configure.ac} if you want to change it or regenerate
|
||||
-@file{configure} using a newer version of @command{autoconf}.
|
||||
+The @command{autoconf} program generates @file{configure} from the file
|
||||
+@file{configure.ac}. Normally you should edit @file{configure.ac}
|
||||
+instead of editing @file{configure} directly.
|
||||
|
||||
The simplest way to compile this package is:
|
||||
|
||||
@@ -95,8 +89,7 @@ You may need special developer tools and network access to bootstrap.
|
||||
|
||||
@item
|
||||
Type @samp{./configure} to configure the package for your system.
|
||||
-
|
||||
-Running @command{configure} might take a while. While running, it prints some
|
||||
+This might take a while. While running, @command{configure} prints
|
||||
messages telling which features it is checking for.
|
||||
|
||||
@item
|
||||
@@ -125,21 +118,11 @@ code directory by typing @samp{make clean}. To also remove the files
|
||||
that @command{configure} created (so you can compile the package for a
|
||||
different kind of computer), type @samp{make distclean}. There is also
|
||||
a @samp{make maintainer-clean} target, but that is intended mainly for
|
||||
-the package's developers. If you use it, you may have to get all sorts
|
||||
-of other programs in order to regenerate files that came with the
|
||||
-distribution.
|
||||
+the package's developers. If you use it, you may have to bootstrap again.
|
||||
|
||||
@item
|
||||
-Often, you can also type @samp{make uninstall} to remove the installed
|
||||
-files again. In practice, not all packages have tested that
|
||||
-uninstallation works correctly, even though it is required by the
|
||||
-GNU Coding Standards.
|
||||
-
|
||||
-@item
|
||||
-Some packages, particularly those that use Automake, provide @samp{make
|
||||
-distcheck}, which can by used by developers to test that all other
|
||||
-targets like @samp{make install} and @samp{make uninstall} work
|
||||
-correctly. This target is generally not run by end users.
|
||||
+If the package follows the GNU Coding Standards,
|
||||
+you can type @samp{make uninstall} to remove the installed files.
|
||||
@end enumerate
|
||||
|
||||
@node Compilers and Options
|
||||
@@ -158,21 +141,17 @@ Here is an example:
|
||||
@end example
|
||||
|
||||
See
|
||||
-@ref{Defining Variables} and
|
||||
+@ref{Defining Variables}
|
||||
@ifset autoconf
|
||||
-@ref{Preset Output Variables}
|
||||
+and @ref{Preset Output Variables}
|
||||
@end ifset
|
||||
-@ifclear autoconf
|
||||
-@ref{Preset Output Variables,,, autoconf, Autoconf}
|
||||
-@c (@url{https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.71/html_node/Preset-Output-Variables.html})
|
||||
-@end ifclear
|
||||
for more details.
|
||||
|
||||
@node Multiple Architectures
|
||||
@section Compiling For Multiple Architectures
|
||||
|
||||
You can compile the package for more than one kind of computer at the
|
||||
-same time, by placing the object files for each architecture in their
|
||||
+same time, by placing the object files for each system in their
|
||||
own directory. To do this, you can use GNU @command{make}.
|
||||
@command{cd} to the directory where you want the object files and
|
||||
executables to go and run the @command{configure} script.
|
||||
@@ -182,9 +161,9 @@ known as a @dfn{VPATH} build.
|
||||
|
||||
With a non-GNU @command{make},
|
||||
it is safer to compile the package for one
|
||||
-architecture at a time in the source code directory. After you have
|
||||
-installed the package for one architecture, use @samp{make distclean}
|
||||
-before reconfiguring for another architecture.
|
||||
+system at a time in the source code directory. After you have
|
||||
+installed the package for one system, use @samp{make distclean}
|
||||
+before reconfiguring for another system.
|
||||
|
||||
Some platforms, notably macOS, support ``fat'' or ``universal'' binaries,
|
||||
where a single binary can execute on different architectures.
|
||||
@@ -274,117 +253,65 @@ which can be overridden with @code{make V=0}.
|
||||
@node System Types
|
||||
@section Specifying a System Type
|
||||
|
||||
-The following sections go into details regarding situations where you
|
||||
-may have to specify a system type, either through the option
|
||||
-@option{--host=@var{type}}, or through the option
|
||||
-@option{--build=@var{type}}, or -- in the case of compilers -- through
|
||||
-@option{--target=@var{type}}.
|
||||
-
|
||||
-A system type @var{type} can either be a short name like @samp{mingw64},
|
||||
-or a canonical name like @samp{x86_64-pc-linux-gnu} which has the form:
|
||||
-
|
||||
-@example
|
||||
-@var{cpu}-@var{company}-@var{system}
|
||||
-@end example
|
||||
-
|
||||
-@noindent
|
||||
-where @var{system} can have one of these forms:
|
||||
+By default @command{configure} builds for the current system.
|
||||
+To create binaries that can run on a different system type,
|
||||
+specify a @option{--host=@var{type}} option along with compiler
|
||||
+variables that specify how to generate object code for @var{type}.
|
||||
+For example, to create binaries intended to run on a 64-bit ARM
|
||||
+processor:
|
||||
|
||||
@example
|
||||
-@var{os}
|
||||
-@var{kernel}-@var{os}
|
||||
+./configure --host=aarch64-linux-gnu \
|
||||
+ CC=aarch64-linux-gnu-gcc \
|
||||
+ CXX=aarch64-linux-gnu-g++
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
-See the file @file{config.sub} for the possible values of each field.
|
||||
-If @file{config.sub} isn't included in this package, then this package
|
||||
-doesn't need to know any machine type.
|
||||
-
|
||||
-The file @file{config.sub} is a program that validates and canonicalizes
|
||||
-a system type.
|
||||
-It can do canonicalization, as in
|
||||
+If done on a machine that can execute these binaries
|
||||
+(e.g., via @command{qemu-aarch64}, @env{$QEMU_LD_PREFIX}, and Linux's
|
||||
+@code{binfmt_misc} capability), the build behaves like a native build.
|
||||
+Otherwise it is a cross-build: @code{configure}
|
||||
+will make cross-compilation guesses instead of running test programs,
|
||||
+and @code{make check} will not work.
|
||||
+
|
||||
+A system type can either be a short name like @samp{mingw64},
|
||||
+or a canonical name like @samp{x86_64-pc-linux-gnu}.
|
||||
+Canonical names have the form @var{cpu}-@var{company}-@var{system}
|
||||
+where @var{system} is either @var{os} or @var{kernel}-@var{os}.
|
||||
+To canonicalize and validate a system type,
|
||||
+you can run the command @file{config.sub},
|
||||
+which is often squirreled away in a subdirectory like @file{build-aux}.
|
||||
+For example:
|
||||
|
||||
@example
|
||||
-$ sh config.sub x86_64-linux
|
||||
-x86_64-pc-linux-gnu
|
||||
-$ sh config.sub arm64-linux
|
||||
+$ build-aux/config.sub arm64-linux
|
||||
aarch64-unknown-linux-gnu
|
||||
+$ build-aux/config.sub riscv-lnx
|
||||
+Invalid configuration 'riscv-lnx': OS 'lnx' not recognized
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
-It also validates the parts. For example, this interaction tells you
|
||||
-that ``crusoe'' is not a valid cpu architecture name:
|
||||
-
|
||||
-@example
|
||||
-$ sh config.sub crusoe-linux
|
||||
-Invalid configuration `crusoe-linux': machine `crusoe-unknown' not recognized
|
||||
-@end example
|
||||
-
|
||||
-@node Building for a different system type
|
||||
-@section Creating binaries for a different system type
|
||||
-
|
||||
-When you want to create binaries that will run on a different machine
|
||||
-type than the one you are building on, you need to specify both
|
||||
-@itemize @bullet
|
||||
-@item
|
||||
-a @option{--host=@var{type}} option, specifying the machine type on
|
||||
-which the binaries shall run,
|
||||
-@item
|
||||
-compiler variables (@code{CC} for the C compiler, @code{CXX} for the C++
|
||||
-compiler, and so on), pointing to compilers that generate object code
|
||||
-for that machine type.
|
||||
-@end itemize
|
||||
-
|
||||
-For example, to create binaries intended to run on a 64-bit ARM
|
||||
-processor:
|
||||
-@example
|
||||
-./configure --host=aarch64-linux-gnu \
|
||||
- CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++
|
||||
-@end example
|
||||
-
|
||||
-If you do this on a machine that can execute such binaries (e.g.@: by
|
||||
-virtue of the @code{qemu-aarch64} program, system libraries for that
|
||||
-architecture under @code{$QEMU_LD_PREFIX}, and a Linux
|
||||
-@code{binfmt_misc} configuration), the build behaves like a native
|
||||
-build.
|
||||
-If not, the build is a cross-build, in the sense that @code{configure}
|
||||
-will make cross-compilation guesses instead of running test programs,
|
||||
-and ``make check'' will not work.
|
||||
-
|
||||
-@node Troubleshooting the Build Type
|
||||
-@section Fixing a ``cannot guess build type'' error
|
||||
-
|
||||
-In rare cases, it may happen that @code{configure} fails with the error
|
||||
-message ``cannot guess build type''.
|
||||
-This error means that the files @file{config.guess} and
|
||||
-@file{config.sub} don't recognize the type of the system on which you
|
||||
-are building.
|
||||
-In this case, first fetch the newest versions of these files, from
|
||||
-@url{https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess}
|
||||
-and
|
||||
-@url{https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub},
|
||||
-respectively, and use these as drop-in replacement for the files
|
||||
-@file{config.guess} and @file{config.sub} that were shipped with this
|
||||
-package.
|
||||
-
|
||||
-If this resolves the problem, feel free to report the solution to the
|
||||
-maintainers of this package.
|
||||
-
|
||||
-Otherwise, it means that your system is not yet supported by
|
||||
-@file{config.guess} and @file{config.sub}.
|
||||
-As a workaround, you can use a configure option
|
||||
-@option{--build=@var{type}}, where @var{type} comes closest to your
|
||||
-system type.
|
||||
-Also, you're welcome to file a report to
|
||||
+You can look at the @file{config.sub} file to see which types are recognized.
|
||||
+If the file is absent, this package does not need the system type.
|
||||
+
|
||||
+If @command{configure} fails with the diagnostic ``cannot guess build type''.
|
||||
+@file{config.sub} did not recognize your system's type.
|
||||
+In this case, first fetch the newest versions of these files
|
||||
+from the @url{https://savannah.gnu.org/projects/config, GNU config package}.
|
||||
+If that fixes things, please report it to the
|
||||
+maintainers of the package containing @command{configure}.
|
||||
+Otherwise, you can try the configure option
|
||||
+@option{--build=@var{type}} where @var{type} comes close to your
|
||||
+system type; also, please report the problem to
|
||||
@email{config-patches@@gnu.org}.
|
||||
|
||||
-@node Configuring a Compiler
|
||||
-@section Configuration options specific to a compiler
|
||||
-
|
||||
-If you are building a compiler, and this compiler should generate code
|
||||
-for a system type that is different from the one on which the compiler
|
||||
-binaries shall run on, use the option @option{--target=@var{type}} to
|
||||
-select the type of system for which the compiler should produce code.
|
||||
+For more details about configuring system types, see
|
||||
+@ifset autoconf
|
||||
+@ref{Manual Configuration}.
|
||||
+@end ifset
|
||||
+@ifclear autoconf
|
||||
+the Autoconf documentation.
|
||||
+@end ifclear
|
||||
|
||||
@node Sharing Defaults
|
||||
@section Sharing Defaults
|
||||
@@ -469,8 +396,8 @@ for more details, including other options available for fine-tuning
|
||||
the installation locations.
|
||||
|
||||
@item --host=@var{type}
|
||||
-Build binaries for architecture @var{type}. @ref{System Types} and
|
||||
-@ref{Building for a different system type} for more details.
|
||||
+Build binaries for system @var{type}.
|
||||
+@xref{System Types}.
|
||||
|
||||
@item --enable-@var{feature}
|
||||
@itemx --disable-@var{feature}
|
||||
@@ -497,6 +424,19 @@ Run the configure checks, but stop before creating any output files.
|
||||
and accepts some other, less widely useful, options.
|
||||
Run @samp{configure --help} for more details.
|
||||
|
||||
+@ifclear autoconf
|
||||
+@node Copyright notice
|
||||
+@section Copyright notice
|
||||
+
|
||||
+Copyright @copyright{} 1994--1996, 1999--2002, 2004--2017, 2020--2023
|
||||
+Free Software Foundation, Inc.
|
||||
+
|
||||
+Copying and distribution of this file, with or without modification, are
|
||||
+permitted in any medium without royalty provided the copyright notice
|
||||
+and this notice are preserved. This file is offered as-is, without
|
||||
+warranty of any kind.
|
||||
+@end ifclear
|
||||
+
|
||||
@c Local Variables:
|
||||
@c fill-column: 72
|
||||
@c ispell-local-dictionary: "american"
|
||||
--
|
||||
2.41.0
|
||||
|
||||
|
|
@ -19,9 +19,41 @@ SRC_URI = " \
|
|||
file://preferbash.patch \
|
||||
file://autotest-automake-result-format.patch \
|
||||
file://man-host-perl.patch \
|
||||
"
|
||||
${BACKPORTS} \
|
||||
"
|
||||
SRC_URI:append:class-native = " file://no-man.patch"
|
||||
|
||||
BACKPORTS = "\
|
||||
file://backports/0001-mention-prototypes-more-prominently-in-NEWS.patch \
|
||||
file://backports/0002-build-run-make-fetch-which-updated-these.patch \
|
||||
file://backports/0003-NEWS-Tighten-up-wording.patch \
|
||||
file://backports/0004-Cater-to-programs-misusing-AC_EGREP_HEADER.patch \
|
||||
file://backports/0006-Fix-timing-bug-on-high-speed-builds.patch \
|
||||
file://backports/0007-Support-underquoted-callers-better.patch \
|
||||
file://backports/0008-New-script-for-building-inside-Guix-containers.patch \
|
||||
file://backports/0009-AC_XENIX_DIR-Rewrite-using-AC_CANONICAL_HOST.patch \
|
||||
file://backports/0010-AC_TYPE_UID_T-Rewrite-using-AC_CHECK_TYPE.patch \
|
||||
file://backports/0011-Make-AC_PROG_GCC_TRADITIONAL-a-compatibility-alias-f.patch \
|
||||
file://backports/0012-Overhaul-AC_TYPE_GETGROUPS-and-AC_FUNC_GETGROUPS.patch \
|
||||
file://backports/0013-Fold-AC_C_STRINGIZE-into-AC_PROG_CC.patch \
|
||||
file://backports/0014-Remove-the-last-few-internal-uses-of-AC_EGREP_CPP.patch \
|
||||
file://backports/0015-Support-circa-early-2022-Gnulib.patch \
|
||||
file://backports/0016-Improve-year2038-largefile-option-processing.patch \
|
||||
file://backports/0017-AC_SYS_YEAR2038-Fix-configure-failure-on-32-bit-ming.patch \
|
||||
file://backports/0018-Document-limitation-of-BusyBox-tr.patch \
|
||||
file://backports/0019-AC_SYS_YEAR2038_REQUIRED-Fix-configure-failure-with-.patch \
|
||||
file://backports/0020-Tone-down-year-2038-changes.patch \
|
||||
file://backports/0021-Port-AC_FUNC_MMAP-to-more-modern-systems.patch \
|
||||
file://backports/0022-Fix-port-of-AC_FUNC_MMAP.patch \
|
||||
file://backports/0023-Improve-AC_SYS_YEAR2038_RECOMMENDED-diagnostic.patch \
|
||||
file://backports/0024-Improve-AC_FUNC_MMAP-comments.patch \
|
||||
file://backports/0025-Fix-AC_SYS_LARGEFILE-on-GNU-Linux-alpha-s390x.patch \
|
||||
file://backports/0026-Modernize-INSTALL.patch \
|
||||
file://backports/0027-doc-fix-broken-cross-refs.patch \
|
||||
file://backports/0028-INSTALL-Clarify-build-host-target-and-the-system-typ.patch \
|
||||
file://backports/0029-Shorten-and-improve-INSTALL.patch \
|
||||
"
|
||||
|
||||
SRC_URI[sha256sum] = "21b64169c820c6cdf27fc981ca9c2fb615546e5dead92bccf8d92d0784cdd364"
|
||||
|
||||
RDEPENDS:${PN} = "m4 gnu-config \
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user