From: Ludovic Courtès Date: Sat, 17 Nov 2012 15:20:52 +0000 (+0100) Subject: Update Gnulib to v0.0-7695-g26c0590. X-Git-Url: https://git.hcoop.net/bpt/guile.git/commitdiff_plain/7ae4e75af5366086e60fbc2e9454dfd9e5965102?ds=sidebyside Update Gnulib to v0.0-7695-g26c0590. * gnulib-local/m4/canonicalize.m4.diff: Remove. * Makefile.am (EXTRA_DIST): Adjust accordingly. --- diff --git a/Makefile.am b/Makefile.am index 446bb3c27..3aa5ddd76 100644 --- a/Makefile.am +++ b/Makefile.am @@ -50,7 +50,6 @@ EXTRA_DIST = LICENSE HACKING GUILE-VERSION \ gnulib-local/lib/localcharset.h.diff \ gnulib-local/lib/localcharset.c.diff \ gnulib-local/m4/clock_time.m4.diff \ - gnulib-local/m4/canonicalize.m4.diff \ gnulib-local/build-aux/git-version-gen.diff TESTS = check-guile diff --git a/build-aux/gendocs.sh b/build-aux/gendocs.sh index c8abd55fb..0c0bc4b0f 100755 --- a/build-aux/gendocs.sh +++ b/build-aux/gendocs.sh @@ -2,10 +2,10 @@ # gendocs.sh -- generate a GNU manual in many formats. This script is # mentioned in maintain.texi. See the help message below for usage details. -scriptversion=2011-04-08.14 +scriptversion=2012-10-27.11 -# Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software -# Foundation, Inc. +# Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 +# Free Software Foundation, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -30,6 +30,12 @@ scriptversion=2011-04-08.14 # # An up-to-date copy is also maintained in Gnulib (gnu.org/software/gnulib). +# TODO: +# - image importation was only implemented for HTML generated by +# makeinfo. But it should be simple enough to adjust. +# - images are not imported in the source tarball. All the needed +# formats (PDF, PNG, etc.) should be included. + prog=`basename "$0"` srcdir=`pwd` @@ -39,35 +45,37 @@ templateurl="http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/texinfo/texinfo/ : ${SETLANG="env LANG= LC_MESSAGES= LC_ALL= LANGUAGE="} : ${MAKEINFO="makeinfo"} : ${TEXI2DVI="texi2dvi -t @finalout"} -: ${DVIPS="dvips"} : ${DOCBOOK2HTML="docbook2html"} : ${DOCBOOK2PDF="docbook2pdf"} -: ${DOCBOOK2PS="docbook2ps"} : ${DOCBOOK2TXT="docbook2txt"} : ${GENDOCS_TEMPLATE_DIR="."} +: ${PERL='perl'} : ${TEXI2HTML="texi2html"} unset CDPATH unset use_texi2html version="gendocs.sh $scriptversion -Copyright 2010 Free Software Foundation, Inc. +Copyright 2012 Free Software Foundation, Inc. There is NO warranty. You may redistribute this software under the terms of the GNU General Public License. For more information about these matters, see the files named COPYING." usage="Usage: $prog [OPTION]... PACKAGE MANUAL-TITLE -Generate various output formats from PACKAGE.texinfo (or .texi or .txi) source. -See the GNU Maintainers document for a more extensive discussion: +Generate output in various formats from PACKAGE.texinfo (or .texi or +.txi) source. See the GNU Maintainers document for a more extensive +discussion: http://www.gnu.org/prep/maintain_toc.html Options: -s SRCFILE read Texinfo from SRCFILE, instead of PACKAGE.{texinfo|texi|txi} -o OUTDIR write files into OUTDIR, instead of manual/. + -I DIR append DIR to the Texinfo search path. --email ADR use ADR as contact in generated web pages. - --docbook convert to DocBook too (xml, txt, html, pdf and ps). + --docbook convert through DocBook too (xml, txt, html, pdf). --html ARG pass indicated ARG to makeinfo or texi2html for HTML targets. + --info ARG pass indicated ARG to makeinfo for Info, instead of --no-split. --texi2html use texi2html to generate HTML targets. --help display this help and exit successfully. --version display version information and exit successfully. @@ -80,11 +88,11 @@ Typical sequence: wget \"$templateurl\" $prog --email BUGLIST MANUAL \"GNU MANUAL - One-line description\" -Output will be in a new subdirectory \"manual\" (by default, use -o OUTDIR -to override). Move all the new files into your web CVS tree, as -explained in the Web Pages node of maintain.texi. +Output will be in a new subdirectory \"manual\" (by default; +use -o OUTDIR to override). Move all the new files into your web CVS +tree, as explained in the Web Pages node of maintain.texi. -Please use the --email ADDRESS option to specify your bug-reporting +Please do use the --email ADDRESS option to specify your bug-reporting address in the generated HTML pages. MANUAL-TITLE is included as part of the HTML of the overall @@ -102,11 +110,14 @@ If a manual's Texinfo sources are spread across several directories, first copy or symlink all Texinfo sources into a single directory. (Part of the script's work is to make a tar.gz of the sources.) -You can set the environment variables MAKEINFO, TEXI2DVI, TEXI2HTML, and -DVIPS to control the programs that get executed, and +As implied above, by default monolithic Info files are generated. +If you want split Info, or other Info options, use --info to override. + +You can set the environment variables MAKEINFO, TEXI2DVI, TEXI2HTML, +and PERL to control the programs that get executed, and GENDOCS_TEMPLATE_DIR to control where the gendocs_template file is looked for. With --docbook, the environment variables DOCBOOK2HTML, -DOCBOOK2PDF, DOCBOOK2PS, and DOCBOOK2TXT are also respected. +DOCBOOK2PDF, and DOCBOOK2TXT are also respected. By default, makeinfo and texi2dvi are run in the default (English) locale, since that's the language of most Texinfo manuals. If you @@ -116,16 +127,13 @@ SETLANG setting in the source. Email bug reports or enhancement requests to bug-texinfo@gnu.org. " -calcsize() -{ - size=`ls -ksl $1 | awk '{print $1}'` - echo $size -} - MANUAL_TITLE= PACKAGE= EMAIL=webmasters@gnu.org # please override with --email +commonarg= # Options passed to all the tools (-I dir). +dirs= # -I's directories. htmlarg= +infoarg=--no-split outdir=manual srcfile= @@ -136,8 +144,10 @@ while test $# -gt 0; do --version) echo "$version"; exit 0;; -s) shift; srcfile=$1;; -o) shift; outdir=$1;; + -I) shift; commonarg="$commonarg -I '$1'"; dirs="$dirs $1";; --docbook) docbook=yes;; --html) shift; htmlarg=$1;; + --info) shift; infoarg=$1;; --texi2html) use_texi2html=1;; -*) echo "$0: Unknown option \`$1'." >&2 @@ -183,15 +193,64 @@ if test ! -r $GENDOCS_TEMPLATE_DIR/gendocs_template; then exit 1 fi +# Function to return size of $1 in something resembling kilobytes. +calcsize() +{ + size=`ls -ksl $1 | awk '{print $1}'` + echo $size +} + +# copy_images OUTDIR HTML-FILE... +# ------------------------------- +# Copy all the images needed by the HTML-FILEs into OUTDIR. Look +# for them in the -I directories. +copy_images() +{ + local odir + odir=$1 + shift + $PERL -n -e " +BEGIN { + \$me = '$prog'; + \$odir = '$odir'; + @dirs = qw($dirs); +} +" -e ' +/<img src="(.*?)"/g && ++$need{$1}; + +END { + #print "$me: @{[keys %need]}\n"; # for debugging, show images found. + FILE: for my $f (keys %need) { + for my $d (@dirs) { + if (-f "$d/$f") { + use File::Basename; + my $dest = dirname ("$odir/$f"); + # + use File::Path; + -d $dest || mkpath ($dest) + || die "$me: cannot mkdir $dest: $!\n"; + # + use File::Copy; + copy ("$d/$f", $dest) + || die "$me: cannot copy $d/$f to $dest: $!\n"; + next FILE; + } + } + die "$me: $ARGV: cannot find image $f\n"; + } +} +' -- "$@" || exit 1 +} + case $outdir in /*) abs_outdir=$outdir;; *) abs_outdir=$srcdir/$outdir;; esac -echo Generating output formats for $srcfile +echo "Generating output formats for $srcfile" -cmd="$SETLANG $MAKEINFO -o $PACKAGE.info \"$srcfile\"" -echo "Generating info files... ($cmd)" +cmd="$SETLANG $MAKEINFO -o $PACKAGE.info $commonarg $infoarg \"$srcfile\"" +echo "Generating info file(s)... ($cmd)" eval "$cmd" mkdir -p "$outdir/" tar czf "$outdir/$PACKAGE.info.tar.gz" $PACKAGE.info* @@ -199,29 +258,23 @@ info_tgz_size=`calcsize "$outdir/$PACKAGE.info.tar.gz"` # do not mv the info files, there's no point in having them available # separately on the web. -cmd="$SETLANG ${TEXI2DVI} \"$srcfile\"" +cmd="$SETLANG $TEXI2DVI $commonarg \"$srcfile\"" echo "Generating dvi ... ($cmd)" eval "$cmd" -# now, before we compress dvi: -echo Generating postscript... -${DVIPS} $PACKAGE -o -gzip -f -9 $PACKAGE.ps -ps_gz_size=`calcsize $PACKAGE.ps.gz` -mv $PACKAGE.ps.gz "$outdir/" - # compress/finish dvi: gzip -f -9 $PACKAGE.dvi dvi_gz_size=`calcsize $PACKAGE.dvi.gz` mv $PACKAGE.dvi.gz "$outdir/" -cmd="$SETLANG ${TEXI2DVI} --pdf \"$srcfile\"" +cmd="$SETLANG $TEXI2DVI --pdf $commonarg \"$srcfile\"" echo "Generating pdf ... ($cmd)" eval "$cmd" pdf_size=`calcsize $PACKAGE.pdf` mv $PACKAGE.pdf "$outdir/" -cmd="$SETLANG $MAKEINFO -o $PACKAGE.txt --no-split --no-headers \"$srcfile\"" +opt="-o $PACKAGE.txt --no-split --no-headers $commonarg" +cmd="$SETLANG $MAKEINFO $opt \"$srcfile\"" echo "Generating ASCII... ($cmd)" eval "$cmd" ascii_size=`calcsize $PACKAGE.txt` @@ -231,7 +284,7 @@ mv $PACKAGE.txt "$outdir/" html_split() { - opt="--split=$1 $htmlarg --node-files" + opt="--split=$1 $commonarg $htmlarg --node-files" cmd="$SETLANG $TEXI2HTML --output $PACKAGE.html $opt \"$srcfile\"" echo "Generating html by $1... ($cmd)" eval "$cmd" @@ -249,7 +302,7 @@ html_split() } if test -z "$use_texi2html"; then - opt="--no-split --html -o $PACKAGE.html $htmlarg" + opt="--no-split --html -o $PACKAGE.html $commonarg $htmlarg" cmd="$SETLANG $MAKEINFO $opt \"$srcfile\"" echo "Generating monolithic html... ($cmd)" rm -rf $PACKAGE.html # in case a directory is left over @@ -257,23 +310,25 @@ if test -z "$use_texi2html"; then html_mono_size=`calcsize $PACKAGE.html` gzip -f -9 -c $PACKAGE.html >"$outdir/$PACKAGE.html.gz" html_mono_gz_size=`calcsize "$outdir/$PACKAGE.html.gz"` + copy_images "$outdir/" $PACKAGE.html mv $PACKAGE.html "$outdir/" - cmd="$SETLANG $MAKEINFO --html -o $PACKAGE.html $htmlarg \"$srcfile\"" + opt="--html -o $PACKAGE.html $commonarg $htmlarg" + cmd="$SETLANG $MAKEINFO $opt \"$srcfile\"" echo "Generating html by node... ($cmd)" eval "$cmd" split_html_dir=$PACKAGE.html + copy_images $split_html_dir/ $split_html_dir/*.html ( - cd ${split_html_dir} || exit 1 - tar -czf "$abs_outdir/${PACKAGE}.html_node.tar.gz" -- *.html + cd $split_html_dir || exit 1 + tar -czf "$abs_outdir/$PACKAGE.html_node.tar.gz" -- * ) - html_node_tgz_size=`calcsize "$outdir/${PACKAGE}.html_node.tar.gz"` - rm -f "$outdir"/html_node/*.html - mkdir -p "$outdir/html_node/" - mv ${split_html_dir}/*.html "$outdir/html_node/" - rmdir ${split_html_dir} + html_node_tgz_size=`calcsize "$outdir/$PACKAGE.html_node.tar.gz"` + rm -rf "$outdir/html_node/" + mv $split_html_dir "$outdir/html_node/" else - cmd="$SETLANG $TEXI2HTML --output $PACKAGE.html $htmlarg \"$srcfile\"" + opt="--output $PACKAGE.html $commonarg $htmlarg" + cmd="$SETLANG $TEXI2HTML $opt \"$srcfile\"" echo "Generating monolithic html... ($cmd)" rm -rf $PACKAGE.html # in case a directory is left over eval "$cmd" @@ -297,7 +352,8 @@ d=`dirname $srcfile` texi_tgz_size=`calcsize "$outdir/$PACKAGE.texi.tar.gz"` if test -n "$docbook"; then - cmd="$SETLANG $MAKEINFO -o - --docbook \"$srcfile\" > ${srcdir}/$PACKAGE-db.xml" + opt="-o - --docbook $commonarg" + cmd="$SETLANG $MAKEINFO $opt \"$srcfile\" >${srcdir}/$PACKAGE-db.xml" echo "Generating docbook XML... ($cmd)" eval "$cmd" docbook_xml_size=`calcsize $PACKAGE-db.xml` @@ -306,7 +362,8 @@ if test -n "$docbook"; then mv $PACKAGE-db.xml "$outdir/" split_html_db_dir=html_node_db - cmd="${DOCBOOK2HTML} -o $split_html_db_dir \"${outdir}/$PACKAGE-db.xml\"" + opt="$commonarg -o $split_html_db_dir" + cmd="$DOCBOOK2HTML $opt \"${outdir}/$PACKAGE-db.xml\"" echo "Generating docbook HTML... ($cmd)" eval "$cmd" ( @@ -319,20 +376,13 @@ if test -n "$docbook"; then mv ${split_html_db_dir}/*.html "$outdir/html_node_db/" rmdir ${split_html_db_dir} - cmd="${DOCBOOK2TXT} \"${outdir}/$PACKAGE-db.xml\"" + cmd="$DOCBOOK2TXT \"${outdir}/$PACKAGE-db.xml\"" echo "Generating docbook ASCII... ($cmd)" eval "$cmd" docbook_ascii_size=`calcsize $PACKAGE-db.txt` mv $PACKAGE-db.txt "$outdir/" - cmd="${DOCBOOK2PS} \"${outdir}/$PACKAGE-db.xml\"" - echo "Generating docbook PS... ($cmd)" - eval "$cmd" - gzip -f -9 -c $PACKAGE-db.ps >"$outdir/$PACKAGE-db.ps.gz" - docbook_ps_gz_size=`calcsize "$outdir/$PACKAGE-db.ps.gz"` - mv $PACKAGE-db.ps "$outdir/" - - cmd="${DOCBOOK2PDF} \"${outdir}/$PACKAGE-db.xml\"" + cmd="$DOCBOOK2PDF \"${outdir}/$PACKAGE-db.xml\"" echo "Generating docbook PDF... ($cmd)" eval "$cmd" docbook_pdf_size=`calcsize $PACKAGE-db.pdf` @@ -346,6 +396,7 @@ if test -z "$use_texi2html"; then else CONDS="/%%ENDIF.*%%/d;/%%IF *HTML_SECTION%%/d;/%%IF *HTML_CHAPTER%%/d" fi + curdate=`$SETLANG date '+%B %d, %Y'` sed \ -e "s!%%TITLE%%!$MANUAL_TITLE!g" \ @@ -360,13 +411,11 @@ sed \ -e "s!%%INFO_TGZ_SIZE%%!$info_tgz_size!g" \ -e "s!%%DVI_GZ_SIZE%%!$dvi_gz_size!g" \ -e "s!%%PDF_SIZE%%!$pdf_size!g" \ - -e "s!%%PS_GZ_SIZE%%!$ps_gz_size!g" \ -e "s!%%ASCII_SIZE%%!$ascii_size!g" \ -e "s!%%ASCII_GZ_SIZE%%!$ascii_gz_size!g" \ -e "s!%%TEXI_TGZ_SIZE%%!$texi_tgz_size!g" \ -e "s!%%DOCBOOK_HTML_NODE_TGZ_SIZE%%!$html_node_db_tgz_size!g" \ -e "s!%%DOCBOOK_ASCII_SIZE%%!$docbook_ascii_size!g" \ - -e "s!%%DOCBOOK_PS_GZ_SIZE%%!$docbook_ps_gz_size!g" \ -e "s!%%DOCBOOK_PDF_SIZE%%!$docbook_pdf_size!g" \ -e "s!%%DOCBOOK_XML_SIZE%%!$docbook_xml_size!g" \ -e "s!%%DOCBOOK_XML_GZ_SIZE%%!$docbook_xml_gz_size!g" \ diff --git a/build-aux/gitlog-to-changelog b/build-aux/gitlog-to-changelog index 17c456271..5184edc7d 100755 --- a/build-aux/gitlog-to-changelog +++ b/build-aux/gitlog-to-changelog @@ -3,7 +3,7 @@ eval '(exit $?0)' && eval 'exec perl -wS "$0" ${1+"$@"}' if 0; # Convert git log output to ChangeLog format. -my $VERSION = '2012-05-22 09:40'; # UTC +my $VERSION = '2012-07-29 06:11'; # UTC # The definition above must lie within the first 8 lines in order # for the Emacs time-stamp write hook (at end) to update it. # If you change this file with Emacs, please let the write hook @@ -68,6 +68,8 @@ OPTIONS: header; the default is to cluster adjacent commit messages if their headers are the same and neither commit message contains multiple paragraphs. + --srcdir=DIR the root of the source tree, from which the .git/ + directory can be derived. --since=DATE convert only the logs since DATE; the default is to convert all log entries. --format=FMT set format string for commit subject and body; @@ -192,6 +194,30 @@ sub parse_amend_file($) return $h; } +# git_dir_option $SRCDIR +# +# From $SRCDIR, the --git-dir option to pass to git (none if $SRCDIR +# is undef). Return as a list (0 or 1 element). +sub git_dir_option($) +{ + my ($srcdir) = @_; + my @res = (); + if (defined $srcdir) + { + my $qdir = shell_quote $srcdir; + my $cmd = "cd $qdir && git rev-parse --show-toplevel"; + my $qcmd = shell_quote $cmd; + my $git_dir = qx($cmd); + defined $git_dir + or die "$ME: cannot run $qcmd: $!\n"; + $? == 0 + or die "$ME: $qcmd had unexpected exit code or signal ($?)\n"; + chomp $git_dir; + push @res, "--git-dir=$git_dir/.git"; + } + @res; +} + { my $since_date; my $format_string = '%s%n%b%n'; @@ -200,6 +226,7 @@ sub parse_amend_file($) my $cluster = 1; my $strip_tab = 0; my $strip_cherry_pick = 0; + my $srcdir; GetOptions ( help => sub { usage 0 }, @@ -211,9 +238,9 @@ sub parse_amend_file($) 'cluster!' => \$cluster, 'strip-tab' => \$strip_tab, 'strip-cherry-pick' => \$strip_cherry_pick, + 'srcdir=s' => \$srcdir, ) or usage 1; - defined $since_date and unshift @ARGV, "--since=$since_date"; @@ -221,7 +248,9 @@ sub parse_amend_file($) # that makes a correction in the log or attribution of that commit. my $amend_code = defined $amend_file ? parse_amend_file $amend_file : {}; - my @cmd = (qw (git log --log-size), + my @cmd = ('git', + git_dir_option $srcdir, + qw(log --log-size), '--pretty=format:%H:%ct %an <%ae>%n%n'.$format_string, @ARGV); open PIPE, '-|', @cmd or die ("$ME: failed to run '". quoted_cmd (@cmd) ."': $!\n" diff --git a/build-aux/gnu-web-doc-update b/build-aux/gnu-web-doc-update index 851f8b899..4acd69d15 100755 --- a/build-aux/gnu-web-doc-update +++ b/build-aux/gnu-web-doc-update @@ -24,9 +24,6 @@ VERSION=2009-07-21.16; # UTC # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -# Requirements: everything required to bootstrap your package, -# plus these: git, cvs, cvsu, rsync, mktemp - ME=$(basename "$0") warn() { printf '%s: %s\n' "$ME" "$*" >&2; } die() { warn "$*"; exit 1; } @@ -36,10 +33,9 @@ help() cat <<EOF Usage: $ME -Run this script from top_srcdir (no options or arguments) after each -non-alpha release, to update the web documentation at -http://www.gnu.org/software/\$pkg/manual/ Run it from your project's -the top-level directory. +Run this script from top_srcdir (no arguments) after each non-alpha +release, to update the web documentation at +http://www.gnu.org/software/\$pkg/manual/ Options: -C, --builddir=DIR location of (configured) Makefile (default: .) @@ -64,6 +60,51 @@ EOF exit } +# find_tool ENVVAR NAMES... +# ------------------------- +# Search for a required program. Use the value of ENVVAR, if set, +# otherwise find the first of the NAMES that can be run (i.e., +# supports --version). If found, set ENVVAR to the program name, +# die otherwise. +# +# FIXME: code duplication, see also bootstrap. +find_tool () +{ + find_tool_envvar=$1 + shift + find_tool_names=$@ + eval "find_tool_res=\$$find_tool_envvar" + if test x"$find_tool_res" = x; then + for i + do + if ($i --version </dev/null) >/dev/null 2>&1; then + find_tool_res=$i + break + fi + done + else + find_tool_error_prefix="\$$find_tool_envvar: " + fi + test x"$find_tool_res" != x \ + || die "one of these is required: $find_tool_names" + ($find_tool_res --version </dev/null) >/dev/null 2>&1 \ + || die "${find_tool_error_prefix}cannot run $find_tool_res --version" + eval "$find_tool_envvar=\$find_tool_res" + eval "export $find_tool_envvar" +} + +## ------ ## +## Main. ## +## ------ ## + +# Requirements: everything required to bootstrap your package, plus +# these. +find_tool CVS cvs +find_tool CVSU cvsu +find_tool GIT git +find_tool RSYNC rsync +find_tool XARGS gxargs xargs + builddir=. while test $# != 0 do @@ -86,22 +127,22 @@ do done test $# = 0 \ - || die "$ME: too many arguments" + || die "too many arguments" prev=.prev-version -version=$(cat $prev) || die "$ME: no $prev file?" +version=$(cat $prev) || die "no $prev file?" pkg=$(sed -n 's/^PACKAGE = \(.*\)/\1/p' $builddir/Makefile) \ - || die "$ME: no Makefile?" + || die "no Makefile?" tmp_branch=web-doc-$version-$$ -current_branch=$(git branch | sed -ne '/^\* /{s///;p;q;}') +current_branch=$($GIT branch | sed -ne '/^\* /{s///;p;q;}') cleanup() { __st=$? rm -rf "$tmp" - git checkout "$current_branch" - git submodule update --recursive - git branch -d $tmp_branch + $GIT checkout "$current_branch" + $GIT submodule update --recursive + $GIT branch -d $tmp_branch exit $__st } trap cleanup 0 @@ -111,8 +152,8 @@ trap 'exit $?' 1 2 13 15 # just-released version number, not some string like 7.6.18-20761. # That version string propagates into all documentation. set -e -git checkout -b $tmp_branch v$version -git submodule update --recursive +$GIT checkout -b $tmp_branch v$version +$GIT submodule update --recursive ./bootstrap srcdir=$(pwd) cd "$builddir" @@ -125,16 +166,18 @@ set +e tmp=$(mktemp -d web-doc-update.XXXXXX) || exit 1 ( cd $tmp \ - && cvs -d $USER@cvs.sv.gnu.org:/webcvs/$pkg co $pkg ) -rsync -avP "$builddir"/doc/manual/ $tmp/$pkg/manual + && $CVS -d $USER@cvs.sv.gnu.org:/webcvs/$pkg co $pkg ) +$RSYNC -avP "$builddir"/doc/manual/ $tmp/$pkg/manual ( cd $tmp/$pkg/manual # Add any new files: - cvsu --types='?'|sed s/..// | xargs --no-run-if-empty -- cvs add -ko + $CVSU --types='?' \ + | sed s/..// \ + | $XARGS --no-run-if-empty -- $CVS add -ko - cvs ci -m $version + $CVS ci -m $version ) # Local variables: diff --git a/doc/gendocs_template b/doc/gendocs_template index f3a3ff64c..a62ad6167 100644 --- a/doc/gendocs_template +++ b/doc/gendocs_template @@ -45,8 +45,6 @@ (%%ASCII_GZ_SIZE%%K bytes gzipped)</a>.</li> <li><a href="%%PACKAGE%%.dvi.gz">TeX dvi file (%%DVI_GZ_SIZE%%K bytes gzipped)</a>.</li> -<li><a href="%%PACKAGE%%.ps.gz">PostScript file - (%%PS_GZ_SIZE%%K bytes gzipped)</a>.</li> <li><a href="%%PACKAGE%%.pdf">PDF file (%%PDF_SIZE%%K bytes)</a>.</li> <li><a href="%%PACKAGE%%.texi.tar.gz">Texinfo source diff --git a/gnulib-local/m4/canonicalize.m4.diff b/gnulib-local/m4/canonicalize.m4.diff deleted file mode 100644 index 57f44726f..000000000 --- a/gnulib-local/m4/canonicalize.m4.diff +++ /dev/null @@ -1,67 +0,0 @@ -Fix `canonicalize_file_name' replacement handling when cross-compiling. -Without this patch, we end up with: - - ./.libs/libguile-2.0.so: undefined reference to `rpl_canonicalize_file_name' - -See <http://hydra.nixos.org/build/2765567> for details. - -index 69b3f4c..3c4c5ee 100644 ---- a/m4/canonicalize.m4 -+++ b/m4/canonicalize.m4 -@@ -16,8 +16,11 @@ AC_DEFUN([gl_FUNC_CANONICALIZE_FILENAME_MODE], - AC_REQUIRE([gl_FUNC_REALPATH_WORKS]) - if test $ac_cv_func_canonicalize_file_name = no; then - HAVE_CANONICALIZE_FILE_NAME=0 -- elif test "$gl_cv_func_realpath_works" != yes; then -- REPLACE_CANONICALIZE_FILE_NAME=1 -+ else -+ case "$gl_cv_func_realpath_works" in -+ *yes) ;; -+ *) REPLACE_CANONICALIZE_FILE_NAME=1 ;; -+ esac - fi - ]) - -@@ -30,12 +33,21 @@ AC_DEFUN([gl_CANONICALIZE_LGPL], - HAVE_CANONICALIZE_FILE_NAME=0 - if test $ac_cv_func_realpath = no; then - HAVE_REALPATH=0 -- elif test "$gl_cv_func_realpath_works" != yes; then -- REPLACE_REALPATH=1 -+ else -+ case "$gl_cv_func_realpath_works" in -+ *yes) ;; -+ *) REPLACE_REALPATH=1 ;; -+ esac - fi -- elif test "$gl_cv_func_realpath_works" != yes; then -- REPLACE_CANONICALIZE_FILE_NAME=1 -- REPLACE_REALPATH=1 -+ else -+ case "$gl_cv_func_realpath_works" in -+ *yes) -+ ;; -+ *) -+ REPLACE_CANONICALIZE_FILE_NAME=1 -+ REPLACE_REALPATH=1 -+ ;; -+ esac - fi - ]) - - -Now, work around a second bug: fix default value when cross-compiling -for GNU/Hurd. - -index 69b3f4c..111ddf8 100644 ---- a/m4/canonicalize.m4 -+++ b/m4/canonicalize.m4 -@@ -95,7 +95,7 @@ AC_DEFUN([gl_FUNC_REALPATH_WORKS], - [gl_cv_func_realpath_works=no], - [case "$host_os" in - # Guess yes on glibc systems. -- *-gnu*) gl_cv_func_realpath_works="guessing yes" ;; -+ *gnu*) gl_cv_func_realpath_works="guessing yes" ;; - # If we don't know, assume the worst. - *) gl_cv_func_realpath_works="guessing no" ;; - esac diff --git a/lib/Makefile.am b/lib/Makefile.am index 8602e1340..49c5140f2 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -155,7 +155,7 @@ EXTRA_DIST += arpa_inet.in.h ## begin gnulib module binary-io -libgnu_la_SOURCES += binary-io.h +libgnu_la_SOURCES += binary-io.h binary-io.c ## end gnulib module binary-io @@ -614,7 +614,7 @@ EXTRA_DIST += $(top_srcdir)/build-aux/gnu-web-doc-update distclean-local: clean-GNUmakefile clean-GNUmakefile: - test x'$(VPATH)' != x && rm -f $(top_builddir)/GNUmakefile || : + test '$(srcdir)' = . || rm -f $(top_builddir)/GNUmakefile EXTRA_DIST += $(top_srcdir)/GNUmakefile @@ -1795,6 +1795,7 @@ EXTRA_libgnu_la_SOURCES += stat.c ## begin gnulib module stat-time +libgnu_la_SOURCES += stat-time.c EXTRA_DIST += stat-time.h @@ -2133,6 +2134,7 @@ stdlib.h: stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) \ -e 's|@''REPLACE_MALLOC''@|$(REPLACE_MALLOC)|g' \ -e 's|@''REPLACE_MBTOWC''@|$(REPLACE_MBTOWC)|g' \ -e 's|@''REPLACE_MKSTEMP''@|$(REPLACE_MKSTEMP)|g' \ + -e 's|@''REPLACE_PTSNAME''@|$(REPLACE_PTSNAME)|g' \ -e 's|@''REPLACE_PTSNAME_R''@|$(REPLACE_PTSNAME_R)|g' \ -e 's|@''REPLACE_PUTENV''@|$(REPLACE_PUTENV)|g' \ -e 's|@''REPLACE_RANDOM_R''@|$(REPLACE_RANDOM_R)|g' \ @@ -3008,7 +3010,7 @@ EXTRA_libgnu_la_SOURCES += write.c ## begin gnulib module xsize -libgnu_la_SOURCES += xsize.h +libgnu_la_SOURCES += xsize.h xsize.c ## end gnulib module xsize diff --git a/lib/binary-io.c b/lib/binary-io.c new file mode 100644 index 000000000..8bbdb44d1 --- /dev/null +++ b/lib/binary-io.c @@ -0,0 +1,3 @@ +#include <config.h> +#define BINARY_IO_INLINE _GL_EXTERN_INLINE +#include "binary-io.h" diff --git a/lib/binary-io.h b/lib/binary-io.h index 77cbd4ec9..30315e10c 100644 --- a/lib/binary-io.h +++ b/lib/binary-io.h @@ -25,6 +25,11 @@ so we include it here first. */ #include <stdio.h> +_GL_INLINE_HEADER_BEGIN +#ifndef BINARY_IO_INLINE +# define BINARY_IO_INLINE _GL_INLINE +#endif + /* set_binary_mode (fd, mode) sets the binary/text I/O mode of file descriptor fd to the given mode (must be O_BINARY or O_TEXT) and returns the previous mode. */ @@ -39,9 +44,9 @@ # endif #else /* On reasonable systems, binary I/O is the only choice. */ - /* Use an inline function rather than a macro, to avoid gcc warnings + /* Use a function rather than a macro, to avoid gcc warnings "warning: statement with no effect". */ -static inline int +BINARY_IO_INLINE int set_binary_mode (int fd, int mode) { (void) fd; @@ -62,4 +67,6 @@ set_binary_mode (int fd, int mode) # define SET_BINARY(fd) ((void) set_binary_mode (fd, O_BINARY)) #endif +_GL_INLINE_HEADER_END + #endif /* _BINARY_H */ diff --git a/lib/errno.in.h b/lib/errno.in.h index 21ba05b5f..774c786ba 100644 --- a/lib/errno.in.h +++ b/lib/errno.in.h @@ -270,5 +270,10 @@ # define GNULIB_defined_ENOTRECOVERABLE 1 # endif +# ifndef EILSEQ +# define EILSEQ 2015 +# define GNULIB_defined_EILSEQ 1 +# endif + #endif /* _@GUARD_PREFIX@_ERRNO_H */ #endif /* _@GUARD_PREFIX@_ERRNO_H */ diff --git a/lib/fcntl.in.h b/lib/fcntl.in.h index f39dfe51d..5c934c025 100644 --- a/lib/fcntl.in.h +++ b/lib/fcntl.in.h @@ -216,6 +216,10 @@ _GL_WARN_ON_USE (openat, "openat is not portable - " # define O_EXEC O_RDONLY /* This is often close enough in older systems. */ #endif +#ifndef O_IGNORE_CTTY +# define O_IGNORE_CTTY 0 +#endif + #ifndef O_NDELAY # define O_NDELAY 0 #endif @@ -249,10 +253,18 @@ _GL_WARN_ON_USE (openat, "openat is not portable - " # define O_NOFOLLOW 0 #endif +#ifndef O_NOLINK +# define O_NOLINK 0 +#endif + #ifndef O_NOLINKS # define O_NOLINKS 0 #endif +#ifndef O_NOTRANS +# define O_NOTRANS 0 +#endif + #ifndef O_RSYNC # define O_RSYNC 0 #endif @@ -269,7 +281,7 @@ _GL_WARN_ON_USE (openat, "openat is not portable - " # define O_TTY_INIT 0 #endif -#if O_ACCMODE != (O_RDONLY | O_WRONLY | O_RDWR | O_EXEC | O_SEARCH) +#if ~O_ACCMODE & (O_RDONLY | O_WRONLY | O_RDWR | O_EXEC | O_SEARCH) # undef O_ACCMODE # define O_ACCMODE (O_RDONLY | O_WRONLY | O_RDWR | O_EXEC | O_SEARCH) #endif diff --git a/lib/gettext.h b/lib/gettext.h index c7d974078..d130faa2b 100644 --- a/lib/gettext.h +++ b/lib/gettext.h @@ -183,9 +183,12 @@ npgettext_aux (const char *domain, #include <string.h> -#define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS \ - (((__GNUC__ >= 3 || __GNUG__ >= 2) && !defined __STRICT_ANSI__) \ - /* || __STDC_VERSION__ >= 199901L */ ) +#if (((__GNUC__ >= 3 || __GNUG__ >= 2) && !defined __STRICT_ANSI__) \ + /* || __STDC_VERSION__ >= 199901L */ ) +# define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS 1 +#else +# define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS 0 +#endif #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS #include <stdlib.h> diff --git a/lib/localcharset.c b/lib/localcharset.c index ad28ec673..c4a0596be 100644 --- a/lib/localcharset.c +++ b/lib/localcharset.c @@ -542,6 +542,13 @@ locale_charset (void) if (codeset[0] == '\0') codeset = "ASCII"; +#ifdef DARWIN7 + /* Mac OS X sets MB_CUR_MAX to 1 when LC_ALL=C, and "UTF-8" + (the default codeset) does not work when MB_CUR_MAX is 1. */ + if (strcmp (codeset, "UTF-8") == 0 && MB_CUR_MAX <= 1) + codeset = "ASCII"; +#endif + return codeset; } diff --git a/lib/malloca.h b/lib/malloca.h index c9bc15b8c..deb9bdaa0 100644 --- a/lib/malloca.h +++ b/lib/malloca.h @@ -42,7 +42,7 @@ extern "C" { and a page size can be as small as 4096 bytes. So we cannot safely allocate anything larger than 4096 bytes. Also care for the possibility of a few compiler-allocated temporary stack slots. - This must be a macro, not an inline function. */ + This must be a macro, not a function. */ # define safe_alloca(N) ((N) < 4032 ? alloca (N) : NULL) #else # define safe_alloca(N) ((void) (N), NULL) diff --git a/lib/regexec.c b/lib/regexec.c index b2c174f05..13c3f15d6 100644 --- a/lib/regexec.c +++ b/lib/regexec.c @@ -735,7 +735,7 @@ re_search_internal (const regex_t *preg, mctx.input.tip_context = (eflags & REG_NOTBOL) ? CONTEXT_BEGBUF : CONTEXT_NEWLINE | CONTEXT_BEGBUF; - /* Check incrementally whether of not the input string match. */ + /* Check incrementally whether the input string matches. */ incr = (last_start < start) ? -1 : 1; left_lim = (last_start < start) ? last_start : start; right_lim = (last_start < start) ? start : last_start; diff --git a/lib/stat-time.c b/lib/stat-time.c new file mode 100644 index 000000000..81b83ddb4 --- /dev/null +++ b/lib/stat-time.c @@ -0,0 +1,3 @@ +#include <config.h> +#define _GL_STAT_TIME_INLINE _GL_EXTERN_INLINE +#include "stat-time.h" diff --git a/lib/stat-time.h b/lib/stat-time.h index 1aae18a30..daf2ca6ee 100644 --- a/lib/stat-time.h +++ b/lib/stat-time.h @@ -23,6 +23,11 @@ #include <sys/stat.h> #include <time.h> +_GL_INLINE_HEADER_BEGIN +#ifndef _GL_STAT_TIME_INLINE +# define _GL_STAT_TIME_INLINE _GL_INLINE +#endif + /* STAT_TIMESPEC (ST, ST_XTIM) is the ST_XTIM member for *ST of type struct timespec, if available. If not, then STAT_TIMESPEC_NS (ST, ST_XTIM) is the nanosecond component of the ST_XTIM member for *ST, @@ -46,7 +51,7 @@ #endif /* Return the nanosecond component of *ST's access time. */ -static inline long int +_GL_STAT_TIME_INLINE long int get_stat_atime_ns (struct stat const *st) { # if defined STAT_TIMESPEC @@ -59,7 +64,7 @@ get_stat_atime_ns (struct stat const *st) } /* Return the nanosecond component of *ST's status change time. */ -static inline long int +_GL_STAT_TIME_INLINE long int get_stat_ctime_ns (struct stat const *st) { # if defined STAT_TIMESPEC @@ -72,7 +77,7 @@ get_stat_ctime_ns (struct stat const *st) } /* Return the nanosecond component of *ST's data modification time. */ -static inline long int +_GL_STAT_TIME_INLINE long int get_stat_mtime_ns (struct stat const *st) { # if defined STAT_TIMESPEC @@ -85,7 +90,7 @@ get_stat_mtime_ns (struct stat const *st) } /* Return the nanosecond component of *ST's birth time. */ -static inline long int +_GL_STAT_TIME_INLINE long int get_stat_birthtime_ns (struct stat const *st) { # if defined HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC @@ -100,7 +105,7 @@ get_stat_birthtime_ns (struct stat const *st) } /* Return *ST's access time. */ -static inline struct timespec +_GL_STAT_TIME_INLINE struct timespec get_stat_atime (struct stat const *st) { #ifdef STAT_TIMESPEC @@ -114,7 +119,7 @@ get_stat_atime (struct stat const *st) } /* Return *ST's status change time. */ -static inline struct timespec +_GL_STAT_TIME_INLINE struct timespec get_stat_ctime (struct stat const *st) { #ifdef STAT_TIMESPEC @@ -128,7 +133,7 @@ get_stat_ctime (struct stat const *st) } /* Return *ST's data modification time. */ -static inline struct timespec +_GL_STAT_TIME_INLINE struct timespec get_stat_mtime (struct stat const *st) { #ifdef STAT_TIMESPEC @@ -143,7 +148,7 @@ get_stat_mtime (struct stat const *st) /* Return *ST's birth time, if available; otherwise return a value with tv_sec and tv_nsec both equal to -1. */ -static inline struct timespec +_GL_STAT_TIME_INLINE struct timespec get_stat_birthtime (struct stat const *st) { struct timespec t; @@ -186,4 +191,6 @@ get_stat_birthtime (struct stat const *st) return t; } +_GL_INLINE_HEADER_END + #endif diff --git a/lib/stdbool.in.h b/lib/stdbool.in.h index 6ea7f7001..419342993 100644 --- a/lib/stdbool.in.h +++ b/lib/stdbool.in.h @@ -66,24 +66,19 @@ # undef true #endif -/* For the sake of symbolic names in gdb, we define true and false as - enum constants, not only as macros. - It is tempting to write - typedef enum { false = 0, true = 1 } _Bool; - so that gdb prints values of type 'bool' symbolically. But if we do - this, values of type '_Bool' may promote to 'int' or 'unsigned int' - (see ISO C 99 6.7.2.2.(4)); however, '_Bool' must promote to 'int' - (see ISO C 99 6.3.1.1.(2)). So we add a negative value to the - enum; this ensures that '_Bool' promotes to 'int'. */ -#if defined __cplusplus || (defined __BEOS__ && !defined __HAIKU__) +#ifdef __cplusplus +# define _Bool bool +# define bool bool +#else +# if defined __BEOS__ && !defined __HAIKU__ /* A compiler known to have 'bool'. */ /* If the compiler already has both 'bool' and '_Bool', we can assume they are the same types. */ -# if !@HAVE__BOOL@ +# if !@HAVE__BOOL@ typedef bool _Bool; -# endif -#else -# if !defined __GNUC__ +# endif +# else +# if !defined __GNUC__ /* If @HAVE__BOOL@: Some HP-UX cc and AIX IBM C compiler versions have compiler bugs when the built-in _Bool type is used. See @@ -103,19 +98,35 @@ typedef bool _Bool; "Invalid enumerator. (badenum)" with HP-UX cc on Tru64. The only benefit of the enum, debuggability, is not important with these compilers. So use 'signed char' and no enum. */ -# define _Bool signed char -# else +# define _Bool signed char +# else /* With this compiler, trust the _Bool type if the compiler has it. */ -# if !@HAVE__BOOL@ +# if !@HAVE__BOOL@ + /* For the sake of symbolic names in gdb, define true and false as + enum constants, not only as macros. + It is tempting to write + typedef enum { false = 0, true = 1 } _Bool; + so that gdb prints values of type 'bool' symbolically. But then + values of type '_Bool' might promote to 'int' or 'unsigned int' + (see ISO C 99 6.7.2.2.(4)); however, '_Bool' must promote to 'int' + (see ISO C 99 6.3.1.1.(2)). So add a negative value to the + enum; this ensures that '_Bool' promotes to 'int'. */ typedef enum { _Bool_must_promote_to_int = -1, false = 0, true = 1 } _Bool; +# endif # endif # endif +# define bool _Bool #endif -#define bool _Bool /* The other macros must be usable in preprocessor directives. */ -#define false 0 -#define true 1 +#ifdef __cplusplus +# define false false +# define true true +#else +# define false 0 +# define true 1 +#endif + #define __bool_true_false_are_defined 1 #endif /* _GL_STDBOOL_H */ diff --git a/lib/stdlib.in.h b/lib/stdlib.in.h index 72c9dd1ca..b67a3484e 100644 --- a/lib/stdlib.in.h +++ b/lib/stdlib.in.h @@ -457,10 +457,19 @@ _GL_WARN_ON_USE (posix_openpt, "posix_openpt is not portable - " #if @GNULIB_PTSNAME@ /* Return the pathname of the pseudo-terminal slave associated with the master FD is open on, or NULL on errors. */ -# if !@HAVE_PTSNAME@ +# if @REPLACE_PTSNAME@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef ptsname +# define ptsname rpl_ptsname +# endif +_GL_FUNCDECL_RPL (ptsname, char *, (int fd)); +_GL_CXXALIAS_RPL (ptsname, char *, (int fd)); +# else +# if !@HAVE_PTSNAME@ _GL_FUNCDECL_SYS (ptsname, char *, (int fd)); -# endif +# endif _GL_CXXALIAS_SYS (ptsname, char *, (int fd)); +# endif _GL_CXXALIASWARN (ptsname); #elif defined GNULIB_POSIXCHECK # undef ptsname diff --git a/lib/verify.h b/lib/verify.h index 6c4bd43fd..780b55e1d 100644 --- a/lib/verify.h +++ b/lib/verify.h @@ -125,7 +125,7 @@ extern int (*dummy (void)) [sizeof (struct {...})]; * GCC warns about duplicate declarations of the dummy function if - -Wredundant_decls is used. GCC 4.3 and later have a builtin + -Wredundant-decls is used. GCC 4.3 and later have a builtin __COUNTER__ macro that can let us generate unique identifiers for each dummy function, to suppress this warning. @@ -133,6 +133,10 @@ which do not support _Static_assert, also do not warn about the last declaration mentioned above. + * GCC warns if -Wnested-externs is enabled and verify() is used + within a function body; but inside a function, you can always + arrange to use verify_expr() instead. + * In C++, any struct definition inside sizeof is invalid. Use a template type to work around the problem. */ diff --git a/lib/xsize.c b/lib/xsize.c new file mode 100644 index 000000000..4b4914c2c --- /dev/null +++ b/lib/xsize.c @@ -0,0 +1,3 @@ +#include <config.h> +#define XSIZE_INLINE _GL_EXTERN_INLINE +#include "xsize.h" diff --git a/lib/xsize.h b/lib/xsize.h index 38d1afd3f..831224398 100644 --- a/lib/xsize.h +++ b/lib/xsize.h @@ -27,6 +27,11 @@ # include <stdint.h> #endif +_GL_INLINE_HEADER_BEGIN +#ifndef XSIZE_INLINE +# define XSIZE_INLINE _GL_INLINE +#endif + /* The size of memory objects is often computed through expressions of type size_t. Example: void* p = malloc (header_size + n * element_size). @@ -48,7 +53,7 @@ ((N) <= SIZE_MAX ? (size_t) (N) : SIZE_MAX) /* Sum of two sizes, with overflow check. */ -static inline size_t +XSIZE_INLINE size_t #if __GNUC__ >= 3 __attribute__ ((__pure__)) #endif @@ -59,7 +64,7 @@ xsum (size_t size1, size_t size2) } /* Sum of three sizes, with overflow check. */ -static inline size_t +XSIZE_INLINE size_t #if __GNUC__ >= 3 __attribute__ ((__pure__)) #endif @@ -69,7 +74,7 @@ xsum3 (size_t size1, size_t size2, size_t size3) } /* Sum of four sizes, with overflow check. */ -static inline size_t +XSIZE_INLINE size_t #if __GNUC__ >= 3 __attribute__ ((__pure__)) #endif @@ -79,7 +84,7 @@ xsum4 (size_t size1, size_t size2, size_t size3, size_t size4) } /* Maximum of two sizes, with overflow check. */ -static inline size_t +XSIZE_INLINE size_t #if __GNUC__ >= 3 __attribute__ ((__pure__)) #endif @@ -92,7 +97,7 @@ xmax (size_t size1, size_t size2) /* Multiplication of a count with an element size, with overflow check. The count must be >= 0 and the element size must be > 0. - This is a macro, not an inline function, so that it works correctly even + This is a macro, not a function, so that it works correctly even when N is of a wider type and N > SIZE_MAX. */ #define xtimes(N, ELSIZE) \ ((N) <= SIZE_MAX / (ELSIZE) ? (size_t) (N) * (ELSIZE) : SIZE_MAX) @@ -104,4 +109,6 @@ xmax (size_t size1, size_t size2) #define size_in_bounds_p(SIZE) \ ((SIZE) != SIZE_MAX) +_GL_INLINE_HEADER_END + #endif /* _XSIZE_H */ diff --git a/m4/canonicalize.m4 b/m4/canonicalize.m4 index 37df6fc5f..ea51ac420 100644 --- a/m4/canonicalize.m4 +++ b/m4/canonicalize.m4 @@ -1,4 +1,4 @@ -# canonicalize.m4 serial 24 +# canonicalize.m4 serial 26 dnl Copyright (C) 2003-2007, 2009-2012 Free Software Foundation, Inc. @@ -106,10 +106,10 @@ AC_DEFUN([gl_FUNC_REALPATH_WORKS], [gl_cv_func_realpath_works=yes], [gl_cv_func_realpath_works=no], [case "$host_os" in - # Guess yes on glibc systems. - *gnu*) gl_cv_func_realpath_works="guessing yes" ;; - # If we don't know, assume the worst. - *) gl_cv_func_realpath_works="guessing no" ;; + # Guess yes on glibc systems. + *-gnu* | gnu*) gl_cv_func_realpath_works="guessing yes" ;; + # If we don't know, assume the worst. + *) gl_cv_func_realpath_works="guessing no" ;; esac ]) rm -rf conftest.a conftest.d diff --git a/m4/eealloc.m4 b/m4/eealloc.m4 index 75f17e2f1..9e5df45d3 100644 --- a/m4/eealloc.m4 +++ b/m4/eealloc.m4 @@ -1,4 +1,4 @@ -# eealloc.m4 serial 2 +# eealloc.m4 serial 3 dnl Copyright (C) 2003, 2009-2012 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -8,7 +8,6 @@ AC_DEFUN([gl_EEALLOC], [ AC_REQUIRE([gl_EEMALLOC]) AC_REQUIRE([gl_EEREALLOC]) - AC_REQUIRE([AC_C_INLINE]) ]) AC_DEFUN([gl_EEMALLOC], diff --git a/m4/errno_h.m4 b/m4/errno_h.m4 index 1e76ba270..4e33ba853 100644 --- a/m4/errno_h.m4 +++ b/m4/errno_h.m4 @@ -1,4 +1,4 @@ -# errno_h.m4 serial 11 +# errno_h.m4 serial 12 dnl Copyright (C) 2004, 2006, 2008-2012 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -57,6 +57,9 @@ booboo #endif #if !defined ENOTRECOVERABLE booboo +#endif +#if !defined EILSEQ +booboo #endif ], [gl_cv_header_errno_h_complete=no], diff --git a/m4/extern-inline.m4 b/m4/extern-inline.m4 new file mode 100644 index 000000000..600c8d3fa --- /dev/null +++ b/m4/extern-inline.m4 @@ -0,0 +1,57 @@ +dnl 'extern inline' a la ISO C99. + +dnl Copyright 2012 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +AC_DEFUN([gl_EXTERN_INLINE], +[ + AC_REQUIRE([AC_C_INLINE]) + AH_VERBATIM([extern_inline], +[/* _GL_INLINE is a portable alternative to ISO C99 plain 'inline'. + _GL_EXTERN_INLINE is a portable alternative to 'extern inline'. + _GL_INLINE_HEADER_BEGIN contains useful stuff to put + in an include file, before uses of _GL_INLINE. + It suppresses GCC's bogus "no previous prototype for 'FOO'" diagnostic, + when FOO is an inline function in the header; see + <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54113>. + _GL_INLINE_HEADER_END contains useful stuff to put + in the same include file, after uses of _GL_INLINE. */ +#if (__GNUC__ \ + ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \ + : 199901L <= __STDC_VERSION__) +# define _GL_INLINE inline +# define _GL_EXTERN_INLINE extern inline +#elif 2 < __GNUC__ + (7 <= __GNUC_MINOR__) +# if __GNUC_GNU_INLINE__ + /* __gnu_inline__ suppresses a GCC 4.2 diagnostic. */ +# define _GL_INLINE extern inline __attribute__ ((__gnu_inline__)) +# else +# define _GL_INLINE extern inline +# endif +# define _GL_EXTERN_INLINE extern +#else +# define _GL_INLINE static inline +# define _GL_EXTERN_INLINE static inline +#endif + +#if 4 < __GNUC__ + (6 <= __GNUC_MINOR__) +# if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ +# define _GL_INLINE_HEADER_CONST_PRAGMA +# else +# define _GL_INLINE_HEADER_CONST_PRAGMA \ + _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"") +# endif +# define _GL_INLINE_HEADER_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \ + _Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \ + _GL_INLINE_HEADER_CONST_PRAGMA +# define _GL_INLINE_HEADER_END \ + _Pragma ("GCC diagnostic pop") +#else +# define _GL_INLINE_HEADER_BEGIN +# define _GL_INLINE_HEADER_END +#endif]) +]) diff --git a/m4/fcntl-o.m4 b/m4/fcntl-o.m4 index 9862741f3..740e78b68 100644 --- a/m4/fcntl-o.m4 +++ b/m4/fcntl-o.m4 @@ -50,7 +50,18 @@ AC_DEFUN([gl_FCNTL_O_FLAGS], #if HAVE_SYMLINK { static char const sym[] = "conftest.sym"; - if (symlink (".", sym) != 0) + if (symlink ("/dev/null", sym) != 0) + result |= 2; + else + { + int fd = open (sym, O_WRONLY | O_NOFOLLOW | O_CREAT, 0); + if (fd >= 0) + { + close (fd); + result |= 4; + } + } + if (unlink (sym) != 0 || symlink (".", sym) != 0) result |= 2; else { diff --git a/m4/gnulib-cache.m4 b/m4/gnulib-cache.m4 index 654224f5e..cae4bb732 100644 --- a/m4/gnulib-cache.m4 +++ b/m4/gnulib-cache.m4 @@ -120,5 +120,5 @@ gl_MAKEFILE_NAME([]) gl_LIBTOOL gl_MACRO_PREFIX([gl]) gl_PO_DOMAIN([]) -gl_WITNESS_C_DOMAIN([]) +gl_WITNESS_C_MACRO([]) gl_VC_FILES([false]) diff --git a/m4/gnulib-comp.m4 b/m4/gnulib-comp.m4 index 13bf4e8ad..b52b97285 100644 --- a/m4/gnulib-comp.m4 +++ b/m4/gnulib-comp.m4 @@ -70,6 +70,7 @@ AC_DEFUN([gl_EARLY], # Code from module errno: # Code from module extensions: AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) + # Code from module extern-inline: # Code from module fcntl-h: # Code from module fd-hook: # Code from module float: @@ -232,482 +233,482 @@ AC_DEFUN([gl_INIT], m4_pushdef([gl_LIBSOURCES_DIR], []) gl_COMMON gl_source_base='lib' -AC_REQUIRE([gl_HEADER_SYS_SOCKET]) -if test "$ac_cv_header_winsock2_h" = yes; then - AC_LIBOBJ([accept]) -fi -gl_SYS_SOCKET_MODULE_INDICATOR([accept]) -gl_FUNC_ALLOCA -gl_HEADER_ARPA_INET -AC_PROG_MKDIR_P -AC_REQUIRE([AC_C_INLINE]) -AC_REQUIRE([gl_HEADER_SYS_SOCKET]) -if test "$ac_cv_header_winsock2_h" = yes; then - AC_LIBOBJ([bind]) -fi -gl_SYS_SOCKET_MODULE_INDICATOR([bind]) -gl_FUNC_BTOWC -if test $HAVE_BTOWC = 0 || test $REPLACE_BTOWC = 1; then - AC_LIBOBJ([btowc]) - gl_PREREQ_BTOWC -fi -gl_WCHAR_MODULE_INDICATOR([btowc]) -gl_BYTESWAP -gl_CANONICALIZE_LGPL -if test $HAVE_CANONICALIZE_FILE_NAME = 0 || test $REPLACE_CANONICALIZE_FILE_NAME = 1; then - AC_LIBOBJ([canonicalize-lgpl]) -fi -gl_MODULE_INDICATOR([canonicalize-lgpl]) -gl_STDLIB_MODULE_INDICATOR([canonicalize_file_name]) -gl_STDLIB_MODULE_INDICATOR([realpath]) -gl_FUNC_CEIL -if test $REPLACE_CEIL = 1; then - AC_LIBOBJ([ceil]) -fi -gl_MATH_MODULE_INDICATOR([ceil]) -gl_UNISTD_MODULE_INDICATOR([chdir]) -gl_CLOCK_TIME -gl_FUNC_CLOSE -if test $REPLACE_CLOSE = 1; then - AC_LIBOBJ([close]) -fi -gl_UNISTD_MODULE_INDICATOR([close]) -gl_CONFIGMAKE_PREP -AC_REQUIRE([gl_HEADER_SYS_SOCKET]) -if test "$ac_cv_header_winsock2_h" = yes; then - AC_LIBOBJ([connect]) -fi -gl_SYS_SOCKET_MODULE_INDICATOR([connect]) -gl_DIRENT_H -gl_FUNC_DIRFD -if test $ac_cv_func_dirfd = no && test $gl_cv_func_dirfd_macro = no; then - AC_LIBOBJ([dirfd]) - gl_PREREQ_DIRFD -fi -gl_DIRENT_MODULE_INDICATOR([dirfd]) -gl_DIRNAME_LGPL -gl_DOUBLE_SLASH_ROOT -gl_FUNC_DUPLOCALE -if test $REPLACE_DUPLOCALE = 1; then - AC_LIBOBJ([duplocale]) - gl_PREREQ_DUPLOCALE -fi -gl_LOCALE_MODULE_INDICATOR([duplocale]) -gl_ENVIRON -gl_UNISTD_MODULE_INDICATOR([environ]) -gl_HEADER_ERRNO_H -gl_FCNTL_H -gl_FLOAT_H -if test $REPLACE_FLOAT_LDBL = 1; then - AC_LIBOBJ([float]) -fi -if test $REPLACE_ITOLD = 1; then - AC_LIBOBJ([itold]) -fi -gl_FUNC_FLOCK -if test $HAVE_FLOCK = 0; then - AC_LIBOBJ([flock]) - gl_PREREQ_FLOCK -fi -gl_HEADER_SYS_FILE_MODULE_INDICATOR([flock]) -gl_FUNC_FLOOR -if test $REPLACE_FLOOR = 1; then - AC_LIBOBJ([floor]) -fi -gl_MATH_MODULE_INDICATOR([floor]) -gl_FUNC_FREXP -if test $gl_func_frexp != yes; then - AC_LIBOBJ([frexp]) -fi -gl_MATH_MODULE_INDICATOR([frexp]) -gl_FUNC_FSTAT -if test $REPLACE_FSTAT = 1; then - AC_LIBOBJ([fstat]) - gl_PREREQ_FSTAT -fi -gl_SYS_STAT_MODULE_INDICATOR([fstat]) -gl_FUNC -gl_GETADDRINFO -if test $HAVE_GETADDRINFO = 0; then - AC_LIBOBJ([getaddrinfo]) -fi -if test $HAVE_DECL_GAI_STRERROR = 0 || test $REPLACE_GAI_STRERROR = 1; then - AC_LIBOBJ([gai_strerror]) -fi -gl_NETDB_MODULE_INDICATOR([getaddrinfo]) -AC_REQUIRE([gl_HEADER_SYS_SOCKET]) -if test "$ac_cv_header_winsock2_h" = yes; then - AC_LIBOBJ([getpeername]) -fi -gl_SYS_SOCKET_MODULE_INDICATOR([getpeername]) -AC_REQUIRE([gl_HEADER_SYS_SOCKET]) -if test "$ac_cv_header_winsock2_h" = yes; then - AC_LIBOBJ([getsockname]) -fi -gl_SYS_SOCKET_MODULE_INDICATOR([getsockname]) -AC_REQUIRE([gl_HEADER_SYS_SOCKET]) -if test "$ac_cv_header_winsock2_h" = yes; then - AC_LIBOBJ([getsockopt]) -fi -gl_SYS_SOCKET_MODULE_INDICATOR([getsockopt]) -AC_SUBST([LIBINTL]) -AC_SUBST([LTLIBINTL]) -# Autoconf 2.61a.99 and earlier don't support linking a file only -# in VPATH builds. But since GNUmakefile is for maintainer use -# only, it does not matter if we skip the link with older autoconf. -# Automake 1.10.1 and earlier try to remove GNUmakefile in non-VPATH -# builds, so use a shell variable to bypass this. -GNUmakefile=GNUmakefile -m4_if(m4_version_compare([2.61a.100], - m4_defn([m4_PACKAGE_VERSION])), [1], [], - [AC_CONFIG_LINKS([$GNUmakefile:$GNUmakefile], [], - [GNUmakefile=$GNUmakefile])]) -gl_HOSTENT -AM_ICONV -m4_ifdef([gl_ICONV_MODULE_INDICATOR], - [gl_ICONV_MODULE_INDICATOR([iconv])]) -gl_ICONV_H -gl_FUNC_ICONV_OPEN -if test $REPLACE_ICONV_OPEN = 1; then - AC_LIBOBJ([iconv_open]) -fi -if test $REPLACE_ICONV = 1; then - AC_LIBOBJ([iconv]) - AC_LIBOBJ([iconv_close]) -fi -gl_FUNC_ICONV_OPEN_UTF -gl_FUNC_INET_NTOP -if test $HAVE_INET_NTOP = 0 || test $REPLACE_INET_NTOP = 1; then - AC_LIBOBJ([inet_ntop]) - gl_PREREQ_INET_NTOP -fi -gl_ARPA_INET_MODULE_INDICATOR([inet_ntop]) -gl_FUNC_INET_PTON -if test $HAVE_INET_PTON = 0 || test $REPLACE_INET_NTOP = 1; then - AC_LIBOBJ([inet_pton]) - gl_PREREQ_INET_PTON -fi -gl_ARPA_INET_MODULE_INDICATOR([inet_pton]) -gl_INLINE -gl_ISINF -if test $REPLACE_ISINF = 1; then - AC_LIBOBJ([isinf]) -fi -gl_MATH_MODULE_INDICATOR([isinf]) -gl_ISNAN -gl_MATH_MODULE_INDICATOR([isnan]) -gl_FUNC_ISNAND -m4_ifdef([gl_ISNAN], [ - AC_REQUIRE([gl_ISNAN]) -]) -if test $HAVE_ISNAND = 0 || test $REPLACE_ISNAN = 1; then - AC_LIBOBJ([isnand]) - gl_PREREQ_ISNAND -fi -gl_MATH_MODULE_INDICATOR([isnand]) -gl_FUNC_ISNAND_NO_LIBM -if test $gl_func_isnand_no_libm != yes; then - AC_LIBOBJ([isnand]) - gl_PREREQ_ISNAND -fi -gl_FUNC_ISNANF -m4_ifdef([gl_ISNAN], [ - AC_REQUIRE([gl_ISNAN]) -]) -if test $HAVE_ISNANF = 0 || test $REPLACE_ISNAN = 1; then - AC_LIBOBJ([isnanf]) - gl_PREREQ_ISNANF -fi -gl_MATH_MODULE_INDICATOR([isnanf]) -gl_FUNC_ISNANL -m4_ifdef([gl_ISNAN], [ - AC_REQUIRE([gl_ISNAN]) -]) -if test $HAVE_ISNANL = 0 || test $REPLACE_ISNAN = 1; then - AC_LIBOBJ([isnanl]) - gl_PREREQ_ISNANL -fi -gl_MATH_MODULE_INDICATOR([isnanl]) -gl_LANGINFO_H -AC_REQUIRE([gl_LARGEFILE]) -gl_FUNC_LDEXP -gl_LD_VERSION_SCRIPT -gl_VISIBILITY -gl_LIBUNISTRING -AC_REQUIRE([gl_HEADER_SYS_SOCKET]) -if test "$ac_cv_header_winsock2_h" = yes; then - AC_LIBOBJ([listen]) -fi -gl_SYS_SOCKET_MODULE_INDICATOR([listen]) -gl_LOCALCHARSET -LOCALCHARSET_TESTS_ENVIRONMENT="CHARSETALIASDIR=\"\$(abs_top_builddir)/$gl_source_base\"" -AC_SUBST([LOCALCHARSET_TESTS_ENVIRONMENT]) -gl_LOCALE_H -gl_FUNC_LOCALECONV -if test $REPLACE_LOCALECONV = 1; then - AC_LIBOBJ([localeconv]) - gl_PREREQ_LOCALECONV -fi -gl_LOCALE_MODULE_INDICATOR([localeconv]) -AC_REQUIRE([gl_FUNC_LOG]) -if test $REPLACE_LOG = 1; then - AC_LIBOBJ([log]) -fi -gl_MATH_MODULE_INDICATOR([log]) -gl_FUNC_LOG1P -if test $HAVE_LOG1P = 0 || test $REPLACE_LOG1P = 1; then - AC_LIBOBJ([log1p]) -fi -gl_MATH_MODULE_INDICATOR([log1p]) -gl_FUNC_LSTAT -if test $REPLACE_LSTAT = 1; then - AC_LIBOBJ([lstat]) - gl_PREREQ_LSTAT -fi -gl_SYS_STAT_MODULE_INDICATOR([lstat]) -AC_CONFIG_COMMANDS_PRE([m4_ifdef([AH_HEADER], - [AC_SUBST([CONFIG_INCLUDE], m4_defn([AH_HEADER]))])]) -gl_FUNC_MALLOC_GNU -if test $REPLACE_MALLOC = 1; then - AC_LIBOBJ([malloc]) -fi -gl_MODULE_INDICATOR([malloc-gnu]) -gl_FUNC_MALLOC_POSIX -if test $REPLACE_MALLOC = 1; then - AC_LIBOBJ([malloc]) -fi -gl_STDLIB_MODULE_INDICATOR([malloc-posix]) -gl_MALLOCA -gl_MATH_H -gl_FUNC_MBRTOWC -if test $HAVE_MBRTOWC = 0 || test $REPLACE_MBRTOWC = 1; then - AC_LIBOBJ([mbrtowc]) - gl_PREREQ_MBRTOWC -fi -gl_WCHAR_MODULE_INDICATOR([mbrtowc]) -gl_FUNC_MBSINIT -if test $HAVE_MBSINIT = 0 || test $REPLACE_MBSINIT = 1; then - AC_LIBOBJ([mbsinit]) - gl_PREREQ_MBSINIT -fi -gl_WCHAR_MODULE_INDICATOR([mbsinit]) -gl_FUNC_MBTOWC -if test $REPLACE_MBTOWC = 1; then - AC_LIBOBJ([mbtowc]) - gl_PREREQ_MBTOWC -fi -gl_STDLIB_MODULE_INDICATOR([mbtowc]) -gl_FUNC_MEMCHR -if test $HAVE_MEMCHR = 0 || test $REPLACE_MEMCHR = 1; then - AC_LIBOBJ([memchr]) - gl_PREREQ_MEMCHR -fi -gl_STRING_MODULE_INDICATOR([memchr]) -gl_MSVC_INVAL -if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then - AC_LIBOBJ([msvc-inval]) -fi -gl_MSVC_NOTHROW -if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then - AC_LIBOBJ([msvc-nothrow]) -fi -gl_MULTIARCH -gl_HEADER_NETDB -gl_HEADER_NETINET_IN -AC_PROG_MKDIR_P -gl_FUNC_NL_LANGINFO -if test $HAVE_NL_LANGINFO = 0 || test $REPLACE_NL_LANGINFO = 1; then - AC_LIBOBJ([nl_langinfo]) -fi -gl_LANGINFO_MODULE_INDICATOR([nl_langinfo]) -gl_NPROC -gl_FUNC_OPEN -if test $REPLACE_OPEN = 1; then - AC_LIBOBJ([open]) - gl_PREREQ_OPEN -fi -gl_FCNTL_MODULE_INDICATOR([open]) -gl_PATHMAX -gl_FUNC_PIPE2 -gl_UNISTD_MODULE_INDICATOR([pipe2]) -gl_FUNC_PUTENV -if test $REPLACE_PUTENV = 1; then - AC_LIBOBJ([putenv]) -fi -gl_STDLIB_MODULE_INDICATOR([putenv]) -gl_FUNC_RAISE -if test $HAVE_RAISE = 0 || test $REPLACE_RAISE = 1; then - AC_LIBOBJ([raise]) - gl_PREREQ_RAISE -fi -gl_SIGNAL_MODULE_INDICATOR([raise]) -gl_FUNC_READ -if test $REPLACE_READ = 1; then - AC_LIBOBJ([read]) - gl_PREREQ_READ -fi -gl_UNISTD_MODULE_INDICATOR([read]) -gl_FUNC_READLINK -if test $HAVE_READLINK = 0 || test $REPLACE_READLINK = 1; then - AC_LIBOBJ([readlink]) - gl_PREREQ_READLINK -fi -gl_UNISTD_MODULE_INDICATOR([readlink]) -AC_REQUIRE([gl_HEADER_SYS_SOCKET]) -if test "$ac_cv_header_winsock2_h" = yes; then - AC_LIBOBJ([recv]) -fi -gl_SYS_SOCKET_MODULE_INDICATOR([recv]) -AC_REQUIRE([gl_HEADER_SYS_SOCKET]) -if test "$ac_cv_header_winsock2_h" = yes; then - AC_LIBOBJ([recvfrom]) -fi -gl_SYS_SOCKET_MODULE_INDICATOR([recvfrom]) -gl_REGEX -if test $ac_use_included_regex = yes; then - AC_LIBOBJ([regex]) - gl_PREREQ_REGEX -fi -gl_FUNC_RENAME -if test $REPLACE_RENAME = 1; then - AC_LIBOBJ([rename]) -fi -gl_STDIO_MODULE_INDICATOR([rename]) -gl_FUNC_RMDIR -if test $REPLACE_RMDIR = 1; then - AC_LIBOBJ([rmdir]) -fi -gl_UNISTD_MODULE_INDICATOR([rmdir]) -gl_FUNC_ROUND -if test $HAVE_ROUND = 0 || test $REPLACE_ROUND = 1; then - AC_LIBOBJ([round]) -fi -gl_MATH_MODULE_INDICATOR([round]) -gl_PREREQ_SAFE_READ -gl_PREREQ_SAFE_WRITE -AC_REQUIRE([gl_HEADER_SYS_SOCKET]) -if test "$ac_cv_header_winsock2_h" = yes; then - AC_LIBOBJ([send]) -fi -gl_SYS_SOCKET_MODULE_INDICATOR([send]) -AC_REQUIRE([gl_HEADER_SYS_SOCKET]) -if test "$ac_cv_header_winsock2_h" = yes; then - AC_LIBOBJ([sendto]) -fi -gl_SYS_SOCKET_MODULE_INDICATOR([sendto]) -gl_SERVENT -gl_FUNC_SETENV -if test $HAVE_SETENV = 0 || test $REPLACE_SETENV = 1; then - AC_LIBOBJ([setenv]) -fi -gl_STDLIB_MODULE_INDICATOR([setenv]) -AC_REQUIRE([gl_HEADER_SYS_SOCKET]) -if test "$ac_cv_header_winsock2_h" = yes; then - AC_LIBOBJ([setsockopt]) -fi -gl_SYS_SOCKET_MODULE_INDICATOR([setsockopt]) -AC_REQUIRE([gl_HEADER_SYS_SOCKET]) -if test "$ac_cv_header_winsock2_h" = yes; then - AC_LIBOBJ([shutdown]) -fi -gl_SYS_SOCKET_MODULE_INDICATOR([shutdown]) -gl_SIGNAL_H -gl_SIZE_MAX -gl_FUNC_SNPRINTF -gl_STDIO_MODULE_INDICATOR([snprintf]) -gl_MODULE_INDICATOR([snprintf]) -AC_REQUIRE([gl_HEADER_SYS_SOCKET]) -if test "$ac_cv_header_winsock2_h" = yes; then - AC_LIBOBJ([socket]) -fi -# When this module is used, sockets may actually occur as file descriptors, -# hence it is worth warning if the modules 'close' and 'ioctl' are not used. -m4_ifdef([gl_UNISTD_H_DEFAULTS], [AC_REQUIRE([gl_UNISTD_H_DEFAULTS])]) -m4_ifdef([gl_SYS_IOCTL_H_DEFAULTS], [AC_REQUIRE([gl_SYS_IOCTL_H_DEFAULTS])]) -AC_REQUIRE([gl_PREREQ_SYS_H_WINSOCK2]) -if test "$ac_cv_header_winsock2_h" = yes; then - UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS=1 - SYS_IOCTL_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS=1 -fi -gl_SYS_SOCKET_MODULE_INDICATOR([socket]) -gl_SOCKETLIB -gl_SOCKETS -gl_TYPE_SOCKLEN_T -gt_TYPE_SSIZE_T -gl_FUNC_STAT -if test $REPLACE_STAT = 1; then - AC_LIBOBJ([stat]) - gl_PREREQ_STAT -fi -gl_SYS_STAT_MODULE_INDICATOR([stat]) -gl_STAT_TIME -gl_STAT_BIRTHTIME -gl_STDALIGN_H -AM_STDBOOL_H -gl_STDDEF_H -gl_STDINT_H -gl_STDIO_H -gl_STDLIB_H -gl_FUNC_GNU_STRFTIME -if test $gl_cond_libtool = false; then - gl_ltlibdeps="$gl_ltlibdeps $LTLIBICONV" - gl_libdeps="$gl_libdeps $LIBICONV" -fi -gl_HEADER_STRING_H -gl_HEADER_SYS_FILE_H -AC_PROG_MKDIR_P -gl_HEADER_SYS_SOCKET -AC_PROG_MKDIR_P -gl_HEADER_SYS_STAT_H -AC_PROG_MKDIR_P -gl_HEADER_SYS_TIME_H -AC_PROG_MKDIR_P -gl_SYS_TYPES_H -AC_PROG_MKDIR_P -gl_HEADER_SYS_UIO -AC_PROG_MKDIR_P -gl_HEADER_TIME_H -gl_TIME_R -if test $HAVE_LOCALTIME_R = 0 || test $REPLACE_LOCALTIME_R = 1; then - AC_LIBOBJ([time_r]) - gl_PREREQ_TIME_R -fi -gl_TIME_MODULE_INDICATOR([time_r]) -gl_FUNC_TRUNC -if test $HAVE_DECL_TRUNC = 0 || test $REPLACE_TRUNC = 1; then - AC_LIBOBJ([trunc]) -fi -gl_MATH_MODULE_INDICATOR([trunc]) -gl_UNISTD_H -gl_LIBUNISTRING_LIBHEADER([0.9.2], [unistr.h]) -gl_MODULE_INDICATOR([unistr/u8-mbtouc]) -gl_LIBUNISTRING_MODULE([0.9.4], [unistr/u8-mbtouc]) -gl_MODULE_INDICATOR([unistr/u8-mbtouc-unsafe]) -gl_LIBUNISTRING_MODULE([0.9.4], [unistr/u8-mbtouc-unsafe]) -gl_MODULE_INDICATOR([unistr/u8-mbtoucr]) -gl_LIBUNISTRING_MODULE([0.9], [unistr/u8-mbtoucr]) -gl_LIBUNISTRING_MODULE([0.9], [unistr/u8-prev]) -gl_MODULE_INDICATOR([unistr/u8-uctomb]) -gl_LIBUNISTRING_MODULE([0.9], [unistr/u8-uctomb]) -gl_LIBUNISTRING_LIBHEADER([0.9], [unitypes.h]) -gl_FUNC_VASNPRINTF -gl_FUNC_VSNPRINTF -gl_STDIO_MODULE_INDICATOR([vsnprintf]) -gl_WCHAR_H -gl_FUNC_WCRTOMB -if test $HAVE_WCRTOMB = 0 || test $REPLACE_WCRTOMB = 1; then - AC_LIBOBJ([wcrtomb]) - gl_PREREQ_WCRTOMB -fi -gl_WCHAR_MODULE_INDICATOR([wcrtomb]) -gl_WCTYPE_H -gl_FUNC_WRITE -if test $REPLACE_WRITE = 1; then - AC_LIBOBJ([write]) - gl_PREREQ_WRITE -fi -gl_UNISTD_MODULE_INDICATOR([write]) -gl_XSIZE + AC_REQUIRE([gl_HEADER_SYS_SOCKET]) + if test "$ac_cv_header_winsock2_h" = yes; then + AC_LIBOBJ([accept]) + fi + gl_SYS_SOCKET_MODULE_INDICATOR([accept]) + gl_FUNC_ALLOCA + gl_HEADER_ARPA_INET + AC_PROG_MKDIR_P + AC_REQUIRE([gl_HEADER_SYS_SOCKET]) + if test "$ac_cv_header_winsock2_h" = yes; then + AC_LIBOBJ([bind]) + fi + gl_SYS_SOCKET_MODULE_INDICATOR([bind]) + gl_FUNC_BTOWC + if test $HAVE_BTOWC = 0 || test $REPLACE_BTOWC = 1; then + AC_LIBOBJ([btowc]) + gl_PREREQ_BTOWC + fi + gl_WCHAR_MODULE_INDICATOR([btowc]) + gl_BYTESWAP + gl_CANONICALIZE_LGPL + if test $HAVE_CANONICALIZE_FILE_NAME = 0 || test $REPLACE_CANONICALIZE_FILE_NAME = 1; then + AC_LIBOBJ([canonicalize-lgpl]) + fi + gl_MODULE_INDICATOR([canonicalize-lgpl]) + gl_STDLIB_MODULE_INDICATOR([canonicalize_file_name]) + gl_STDLIB_MODULE_INDICATOR([realpath]) + gl_FUNC_CEIL + if test $REPLACE_CEIL = 1; then + AC_LIBOBJ([ceil]) + fi + gl_MATH_MODULE_INDICATOR([ceil]) + gl_UNISTD_MODULE_INDICATOR([chdir]) + gl_CLOCK_TIME + gl_FUNC_CLOSE + if test $REPLACE_CLOSE = 1; then + AC_LIBOBJ([close]) + fi + gl_UNISTD_MODULE_INDICATOR([close]) + gl_CONFIGMAKE_PREP + AC_REQUIRE([gl_HEADER_SYS_SOCKET]) + if test "$ac_cv_header_winsock2_h" = yes; then + AC_LIBOBJ([connect]) + fi + gl_SYS_SOCKET_MODULE_INDICATOR([connect]) + gl_DIRENT_H + gl_FUNC_DIRFD + if test $ac_cv_func_dirfd = no && test $gl_cv_func_dirfd_macro = no; then + AC_LIBOBJ([dirfd]) + gl_PREREQ_DIRFD + fi + gl_DIRENT_MODULE_INDICATOR([dirfd]) + gl_DIRNAME_LGPL + gl_DOUBLE_SLASH_ROOT + gl_FUNC_DUPLOCALE + if test $REPLACE_DUPLOCALE = 1; then + AC_LIBOBJ([duplocale]) + gl_PREREQ_DUPLOCALE + fi + gl_LOCALE_MODULE_INDICATOR([duplocale]) + gl_ENVIRON + gl_UNISTD_MODULE_INDICATOR([environ]) + gl_HEADER_ERRNO_H + AC_REQUIRE([gl_EXTERN_INLINE]) + gl_FCNTL_H + gl_FLOAT_H + if test $REPLACE_FLOAT_LDBL = 1; then + AC_LIBOBJ([float]) + fi + if test $REPLACE_ITOLD = 1; then + AC_LIBOBJ([itold]) + fi + gl_FUNC_FLOCK + if test $HAVE_FLOCK = 0; then + AC_LIBOBJ([flock]) + gl_PREREQ_FLOCK + fi + gl_HEADER_SYS_FILE_MODULE_INDICATOR([flock]) + gl_FUNC_FLOOR + if test $REPLACE_FLOOR = 1; then + AC_LIBOBJ([floor]) + fi + gl_MATH_MODULE_INDICATOR([floor]) + gl_FUNC_FREXP + if test $gl_func_frexp != yes; then + AC_LIBOBJ([frexp]) + fi + gl_MATH_MODULE_INDICATOR([frexp]) + gl_FUNC_FSTAT + if test $REPLACE_FSTAT = 1; then + AC_LIBOBJ([fstat]) + gl_PREREQ_FSTAT + fi + gl_SYS_STAT_MODULE_INDICATOR([fstat]) + gl_FUNC + gl_GETADDRINFO + if test $HAVE_GETADDRINFO = 0; then + AC_LIBOBJ([getaddrinfo]) + fi + if test $HAVE_DECL_GAI_STRERROR = 0 || test $REPLACE_GAI_STRERROR = 1; then + AC_LIBOBJ([gai_strerror]) + fi + gl_NETDB_MODULE_INDICATOR([getaddrinfo]) + AC_REQUIRE([gl_HEADER_SYS_SOCKET]) + if test "$ac_cv_header_winsock2_h" = yes; then + AC_LIBOBJ([getpeername]) + fi + gl_SYS_SOCKET_MODULE_INDICATOR([getpeername]) + AC_REQUIRE([gl_HEADER_SYS_SOCKET]) + if test "$ac_cv_header_winsock2_h" = yes; then + AC_LIBOBJ([getsockname]) + fi + gl_SYS_SOCKET_MODULE_INDICATOR([getsockname]) + AC_REQUIRE([gl_HEADER_SYS_SOCKET]) + if test "$ac_cv_header_winsock2_h" = yes; then + AC_LIBOBJ([getsockopt]) + fi + gl_SYS_SOCKET_MODULE_INDICATOR([getsockopt]) + AC_SUBST([LIBINTL]) + AC_SUBST([LTLIBINTL]) + # Autoconf 2.61a.99 and earlier don't support linking a file only + # in VPATH builds. But since GNUmakefile is for maintainer use + # only, it does not matter if we skip the link with older autoconf. + # Automake 1.10.1 and earlier try to remove GNUmakefile in non-VPATH + # builds, so use a shell variable to bypass this. + GNUmakefile=GNUmakefile + m4_if(m4_version_compare([2.61a.100], + m4_defn([m4_PACKAGE_VERSION])), [1], [], + [AC_CONFIG_LINKS([$GNUmakefile:$GNUmakefile], [], + [GNUmakefile=$GNUmakefile])]) + gl_HOSTENT + AM_ICONV + m4_ifdef([gl_ICONV_MODULE_INDICATOR], + [gl_ICONV_MODULE_INDICATOR([iconv])]) + gl_ICONV_H + gl_FUNC_ICONV_OPEN + if test $REPLACE_ICONV_OPEN = 1; then + AC_LIBOBJ([iconv_open]) + fi + if test $REPLACE_ICONV = 1; then + AC_LIBOBJ([iconv]) + AC_LIBOBJ([iconv_close]) + fi + gl_FUNC_ICONV_OPEN_UTF + gl_FUNC_INET_NTOP + if test $HAVE_INET_NTOP = 0 || test $REPLACE_INET_NTOP = 1; then + AC_LIBOBJ([inet_ntop]) + gl_PREREQ_INET_NTOP + fi + gl_ARPA_INET_MODULE_INDICATOR([inet_ntop]) + gl_FUNC_INET_PTON + if test $HAVE_INET_PTON = 0 || test $REPLACE_INET_NTOP = 1; then + AC_LIBOBJ([inet_pton]) + gl_PREREQ_INET_PTON + fi + gl_ARPA_INET_MODULE_INDICATOR([inet_pton]) + gl_INLINE + gl_ISINF + if test $REPLACE_ISINF = 1; then + AC_LIBOBJ([isinf]) + fi + gl_MATH_MODULE_INDICATOR([isinf]) + gl_ISNAN + gl_MATH_MODULE_INDICATOR([isnan]) + gl_FUNC_ISNAND + m4_ifdef([gl_ISNAN], [ + AC_REQUIRE([gl_ISNAN]) + ]) + if test $HAVE_ISNAND = 0 || test $REPLACE_ISNAN = 1; then + AC_LIBOBJ([isnand]) + gl_PREREQ_ISNAND + fi + gl_MATH_MODULE_INDICATOR([isnand]) + gl_FUNC_ISNAND_NO_LIBM + if test $gl_func_isnand_no_libm != yes; then + AC_LIBOBJ([isnand]) + gl_PREREQ_ISNAND + fi + gl_FUNC_ISNANF + m4_ifdef([gl_ISNAN], [ + AC_REQUIRE([gl_ISNAN]) + ]) + if test $HAVE_ISNANF = 0 || test $REPLACE_ISNAN = 1; then + AC_LIBOBJ([isnanf]) + gl_PREREQ_ISNANF + fi + gl_MATH_MODULE_INDICATOR([isnanf]) + gl_FUNC_ISNANL + m4_ifdef([gl_ISNAN], [ + AC_REQUIRE([gl_ISNAN]) + ]) + if test $HAVE_ISNANL = 0 || test $REPLACE_ISNAN = 1; then + AC_LIBOBJ([isnanl]) + gl_PREREQ_ISNANL + fi + gl_MATH_MODULE_INDICATOR([isnanl]) + gl_LANGINFO_H + AC_REQUIRE([gl_LARGEFILE]) + gl_FUNC_LDEXP + gl_LD_VERSION_SCRIPT + gl_VISIBILITY + gl_LIBUNISTRING + AC_REQUIRE([gl_HEADER_SYS_SOCKET]) + if test "$ac_cv_header_winsock2_h" = yes; then + AC_LIBOBJ([listen]) + fi + gl_SYS_SOCKET_MODULE_INDICATOR([listen]) + gl_LOCALCHARSET + LOCALCHARSET_TESTS_ENVIRONMENT="CHARSETALIASDIR=\"\$(abs_top_builddir)/$gl_source_base\"" + AC_SUBST([LOCALCHARSET_TESTS_ENVIRONMENT]) + gl_LOCALE_H + gl_FUNC_LOCALECONV + if test $REPLACE_LOCALECONV = 1; then + AC_LIBOBJ([localeconv]) + gl_PREREQ_LOCALECONV + fi + gl_LOCALE_MODULE_INDICATOR([localeconv]) + AC_REQUIRE([gl_FUNC_LOG]) + if test $REPLACE_LOG = 1; then + AC_LIBOBJ([log]) + fi + gl_MATH_MODULE_INDICATOR([log]) + gl_FUNC_LOG1P + if test $HAVE_LOG1P = 0 || test $REPLACE_LOG1P = 1; then + AC_LIBOBJ([log1p]) + fi + gl_MATH_MODULE_INDICATOR([log1p]) + gl_FUNC_LSTAT + if test $REPLACE_LSTAT = 1; then + AC_LIBOBJ([lstat]) + gl_PREREQ_LSTAT + fi + gl_SYS_STAT_MODULE_INDICATOR([lstat]) + AC_CONFIG_COMMANDS_PRE([m4_ifdef([AH_HEADER], + [AC_SUBST([CONFIG_INCLUDE], m4_defn([AH_HEADER]))])]) + gl_FUNC_MALLOC_GNU + if test $REPLACE_MALLOC = 1; then + AC_LIBOBJ([malloc]) + fi + gl_MODULE_INDICATOR([malloc-gnu]) + gl_FUNC_MALLOC_POSIX + if test $REPLACE_MALLOC = 1; then + AC_LIBOBJ([malloc]) + fi + gl_STDLIB_MODULE_INDICATOR([malloc-posix]) + gl_MALLOCA + gl_MATH_H + gl_FUNC_MBRTOWC + if test $HAVE_MBRTOWC = 0 || test $REPLACE_MBRTOWC = 1; then + AC_LIBOBJ([mbrtowc]) + gl_PREREQ_MBRTOWC + fi + gl_WCHAR_MODULE_INDICATOR([mbrtowc]) + gl_FUNC_MBSINIT + if test $HAVE_MBSINIT = 0 || test $REPLACE_MBSINIT = 1; then + AC_LIBOBJ([mbsinit]) + gl_PREREQ_MBSINIT + fi + gl_WCHAR_MODULE_INDICATOR([mbsinit]) + gl_FUNC_MBTOWC + if test $REPLACE_MBTOWC = 1; then + AC_LIBOBJ([mbtowc]) + gl_PREREQ_MBTOWC + fi + gl_STDLIB_MODULE_INDICATOR([mbtowc]) + gl_FUNC_MEMCHR + if test $HAVE_MEMCHR = 0 || test $REPLACE_MEMCHR = 1; then + AC_LIBOBJ([memchr]) + gl_PREREQ_MEMCHR + fi + gl_STRING_MODULE_INDICATOR([memchr]) + gl_MSVC_INVAL + if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then + AC_LIBOBJ([msvc-inval]) + fi + gl_MSVC_NOTHROW + if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then + AC_LIBOBJ([msvc-nothrow]) + fi + gl_MULTIARCH + gl_HEADER_NETDB + gl_HEADER_NETINET_IN + AC_PROG_MKDIR_P + gl_FUNC_NL_LANGINFO + if test $HAVE_NL_LANGINFO = 0 || test $REPLACE_NL_LANGINFO = 1; then + AC_LIBOBJ([nl_langinfo]) + fi + gl_LANGINFO_MODULE_INDICATOR([nl_langinfo]) + gl_NPROC + gl_FUNC_OPEN + if test $REPLACE_OPEN = 1; then + AC_LIBOBJ([open]) + gl_PREREQ_OPEN + fi + gl_FCNTL_MODULE_INDICATOR([open]) + gl_PATHMAX + gl_FUNC_PIPE2 + gl_UNISTD_MODULE_INDICATOR([pipe2]) + gl_FUNC_PUTENV + if test $REPLACE_PUTENV = 1; then + AC_LIBOBJ([putenv]) + fi + gl_STDLIB_MODULE_INDICATOR([putenv]) + gl_FUNC_RAISE + if test $HAVE_RAISE = 0 || test $REPLACE_RAISE = 1; then + AC_LIBOBJ([raise]) + gl_PREREQ_RAISE + fi + gl_SIGNAL_MODULE_INDICATOR([raise]) + gl_FUNC_READ + if test $REPLACE_READ = 1; then + AC_LIBOBJ([read]) + gl_PREREQ_READ + fi + gl_UNISTD_MODULE_INDICATOR([read]) + gl_FUNC_READLINK + if test $HAVE_READLINK = 0 || test $REPLACE_READLINK = 1; then + AC_LIBOBJ([readlink]) + gl_PREREQ_READLINK + fi + gl_UNISTD_MODULE_INDICATOR([readlink]) + AC_REQUIRE([gl_HEADER_SYS_SOCKET]) + if test "$ac_cv_header_winsock2_h" = yes; then + AC_LIBOBJ([recv]) + fi + gl_SYS_SOCKET_MODULE_INDICATOR([recv]) + AC_REQUIRE([gl_HEADER_SYS_SOCKET]) + if test "$ac_cv_header_winsock2_h" = yes; then + AC_LIBOBJ([recvfrom]) + fi + gl_SYS_SOCKET_MODULE_INDICATOR([recvfrom]) + gl_REGEX + if test $ac_use_included_regex = yes; then + AC_LIBOBJ([regex]) + gl_PREREQ_REGEX + fi + gl_FUNC_RENAME + if test $REPLACE_RENAME = 1; then + AC_LIBOBJ([rename]) + fi + gl_STDIO_MODULE_INDICATOR([rename]) + gl_FUNC_RMDIR + if test $REPLACE_RMDIR = 1; then + AC_LIBOBJ([rmdir]) + fi + gl_UNISTD_MODULE_INDICATOR([rmdir]) + gl_FUNC_ROUND + if test $HAVE_ROUND = 0 || test $REPLACE_ROUND = 1; then + AC_LIBOBJ([round]) + fi + gl_MATH_MODULE_INDICATOR([round]) + gl_PREREQ_SAFE_READ + gl_PREREQ_SAFE_WRITE + AC_REQUIRE([gl_HEADER_SYS_SOCKET]) + if test "$ac_cv_header_winsock2_h" = yes; then + AC_LIBOBJ([send]) + fi + gl_SYS_SOCKET_MODULE_INDICATOR([send]) + AC_REQUIRE([gl_HEADER_SYS_SOCKET]) + if test "$ac_cv_header_winsock2_h" = yes; then + AC_LIBOBJ([sendto]) + fi + gl_SYS_SOCKET_MODULE_INDICATOR([sendto]) + gl_SERVENT + gl_FUNC_SETENV + if test $HAVE_SETENV = 0 || test $REPLACE_SETENV = 1; then + AC_LIBOBJ([setenv]) + fi + gl_STDLIB_MODULE_INDICATOR([setenv]) + AC_REQUIRE([gl_HEADER_SYS_SOCKET]) + if test "$ac_cv_header_winsock2_h" = yes; then + AC_LIBOBJ([setsockopt]) + fi + gl_SYS_SOCKET_MODULE_INDICATOR([setsockopt]) + AC_REQUIRE([gl_HEADER_SYS_SOCKET]) + if test "$ac_cv_header_winsock2_h" = yes; then + AC_LIBOBJ([shutdown]) + fi + gl_SYS_SOCKET_MODULE_INDICATOR([shutdown]) + gl_SIGNAL_H + gl_SIZE_MAX + gl_FUNC_SNPRINTF + gl_STDIO_MODULE_INDICATOR([snprintf]) + gl_MODULE_INDICATOR([snprintf]) + AC_REQUIRE([gl_HEADER_SYS_SOCKET]) + if test "$ac_cv_header_winsock2_h" = yes; then + AC_LIBOBJ([socket]) + fi + # When this module is used, sockets may actually occur as file descriptors, + # hence it is worth warning if the modules 'close' and 'ioctl' are not used. + m4_ifdef([gl_UNISTD_H_DEFAULTS], [AC_REQUIRE([gl_UNISTD_H_DEFAULTS])]) + m4_ifdef([gl_SYS_IOCTL_H_DEFAULTS], [AC_REQUIRE([gl_SYS_IOCTL_H_DEFAULTS])]) + AC_REQUIRE([gl_PREREQ_SYS_H_WINSOCK2]) + if test "$ac_cv_header_winsock2_h" = yes; then + UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS=1 + SYS_IOCTL_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS=1 + fi + gl_SYS_SOCKET_MODULE_INDICATOR([socket]) + gl_SOCKETLIB + gl_SOCKETS + gl_TYPE_SOCKLEN_T + gt_TYPE_SSIZE_T + gl_FUNC_STAT + if test $REPLACE_STAT = 1; then + AC_LIBOBJ([stat]) + gl_PREREQ_STAT + fi + gl_SYS_STAT_MODULE_INDICATOR([stat]) + gl_STAT_TIME + gl_STAT_BIRTHTIME + gl_STDALIGN_H + AM_STDBOOL_H + gl_STDDEF_H + gl_STDINT_H + gl_STDIO_H + gl_STDLIB_H + gl_FUNC_GNU_STRFTIME + if test $gl_cond_libtool = false; then + gl_ltlibdeps="$gl_ltlibdeps $LTLIBICONV" + gl_libdeps="$gl_libdeps $LIBICONV" + fi + gl_HEADER_STRING_H + gl_HEADER_SYS_FILE_H + AC_PROG_MKDIR_P + gl_HEADER_SYS_SOCKET + AC_PROG_MKDIR_P + gl_HEADER_SYS_STAT_H + AC_PROG_MKDIR_P + gl_HEADER_SYS_TIME_H + AC_PROG_MKDIR_P + gl_SYS_TYPES_H + AC_PROG_MKDIR_P + gl_HEADER_SYS_UIO + AC_PROG_MKDIR_P + gl_HEADER_TIME_H + gl_TIME_R + if test $HAVE_LOCALTIME_R = 0 || test $REPLACE_LOCALTIME_R = 1; then + AC_LIBOBJ([time_r]) + gl_PREREQ_TIME_R + fi + gl_TIME_MODULE_INDICATOR([time_r]) + gl_FUNC_TRUNC + if test $HAVE_DECL_TRUNC = 0 || test $REPLACE_TRUNC = 1; then + AC_LIBOBJ([trunc]) + fi + gl_MATH_MODULE_INDICATOR([trunc]) + gl_UNISTD_H + gl_LIBUNISTRING_LIBHEADER([0.9.2], [unistr.h]) + gl_MODULE_INDICATOR([unistr/u8-mbtouc]) + gl_LIBUNISTRING_MODULE([0.9.4], [unistr/u8-mbtouc]) + gl_MODULE_INDICATOR([unistr/u8-mbtouc-unsafe]) + gl_LIBUNISTRING_MODULE([0.9.4], [unistr/u8-mbtouc-unsafe]) + gl_MODULE_INDICATOR([unistr/u8-mbtoucr]) + gl_LIBUNISTRING_MODULE([0.9], [unistr/u8-mbtoucr]) + gl_LIBUNISTRING_MODULE([0.9], [unistr/u8-prev]) + gl_MODULE_INDICATOR([unistr/u8-uctomb]) + gl_LIBUNISTRING_MODULE([0.9], [unistr/u8-uctomb]) + gl_LIBUNISTRING_LIBHEADER([0.9], [unitypes.h]) + gl_FUNC_VASNPRINTF + gl_FUNC_VSNPRINTF + gl_STDIO_MODULE_INDICATOR([vsnprintf]) + gl_WCHAR_H + gl_FUNC_WCRTOMB + if test $HAVE_WCRTOMB = 0 || test $REPLACE_WCRTOMB = 1; then + AC_LIBOBJ([wcrtomb]) + gl_PREREQ_WCRTOMB + fi + gl_WCHAR_MODULE_INDICATOR([wcrtomb]) + gl_WCTYPE_H + gl_FUNC_WRITE + if test $REPLACE_WRITE = 1; then + AC_LIBOBJ([write]) + gl_PREREQ_WRITE + fi + gl_UNISTD_MODULE_INDICATOR([write]) + gl_XSIZE # End of code from modules m4_ifval(gl_LIBSOURCES_LIST, [ m4_syscmd([test ! -d ]m4_defn([gl_LIBSOURCES_DIR])[ || @@ -865,6 +866,7 @@ AC_DEFUN([gl_FILE_LIST], [ lib/arpa_inet.in.h lib/asnprintf.c lib/basename-lgpl.c + lib/binary-io.c lib/binary-io.h lib/bind.c lib/btowc.c @@ -996,6 +998,7 @@ AC_DEFUN([gl_FILE_LIST], [ lib/socket.c lib/sockets.c lib/sockets.h + lib/stat-time.c lib/stat-time.h lib/stat.c lib/stdalign.in.h @@ -1040,6 +1043,7 @@ AC_DEFUN([gl_FILE_LIST], [ lib/wcrtomb.c lib/wctype.in.h lib/write.c + lib/xsize.c lib/xsize.h m4/00gnulib.m4 m4/absolute-header.m4 @@ -1067,6 +1071,7 @@ AC_DEFUN([gl_FILE_LIST], [ m4/exponentf.m4 m4/exponentl.m4 m4/extensions.m4 + m4/extern-inline.m4 m4/fcntl-o.m4 m4/fcntl_h.m4 m4/float_h.m4 diff --git a/m4/lib-ld.m4 b/m4/lib-ld.m4 index 4e1374d9b..e1feab540 100644 --- a/m4/lib-ld.m4 +++ b/m4/lib-ld.m4 @@ -1,33 +1,39 @@ -# lib-ld.m4 serial 5 (gettext-0.18.2) +# lib-ld.m4 serial 6 dnl Copyright (C) 1996-2003, 2009-2012 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Subroutines of libtool.m4, -dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision -dnl with libtool.m4. +dnl with replacements s/_*LT_PATH/AC_LIB_PROG/ and s/lt_/acl_/ to avoid +dnl collision with libtool.m4. -dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. +dnl From libtool-2.4. Sets the variable with_gnu_ld to yes or no. AC_DEFUN([AC_LIB_PROG_LD_GNU], [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld], -[# I'd rather use --version here, but apparently some GNU ld's only accept -v. +[# I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 </dev/null` in *GNU* | *'with BFD'*) - acl_cv_prog_gnu_ld=yes ;; + acl_cv_prog_gnu_ld=yes + ;; *) - acl_cv_prog_gnu_ld=no ;; + acl_cv_prog_gnu_ld=no + ;; esac]) with_gnu_ld=$acl_cv_prog_gnu_ld ]) -dnl From libtool-1.4. Sets the variable LD. +dnl From libtool-2.4. Sets the variable LD. AC_DEFUN([AC_LIB_PROG_LD], -[AC_ARG_WITH([gnu-ld], -[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], -test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) -AC_REQUIRE([AC_PROG_CC])dnl +[AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl + +AC_ARG_WITH([gnu-ld], + [AS_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld [default=no]])], + [test "$withval" = no || with_gnu_ld=yes], + [with_gnu_ld=no])dnl + # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then @@ -40,10 +46,11 @@ if test "${PATH_SEPARATOR+set}" != set; then || PATH_SEPARATOR=';' } fi + ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by GCC]) + AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw @@ -53,11 +60,11 @@ if test "$GCC" = yes; then esac case $ac_prog in # Accept absolute paths. - [[\\/]* | [A-Za-z]:[\\/]*)] - [re_direlt='/[^/][^/]*/\.\./'] - # Canonicalize the path of ld - ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` - while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo "$ac_prog"| sed 's%\\\\%/%g'` + while echo "$ac_prog" | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" @@ -78,23 +85,26 @@ else fi AC_CACHE_VAL([acl_cv_path_LD], [if test -z "$LD"; then - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" + acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do + IFS="$acl_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. + # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in + case `"$acl_cv_path_LD" -v 2>&1 </dev/null` in *GNU* | *'with BFD'*) - test "$with_gnu_ld" != no && break ;; + test "$with_gnu_ld" != no && break + ;; *) - test "$with_gnu_ld" != yes && break ;; + test "$with_gnu_ld" != yes && break + ;; esac fi done - IFS="$ac_save_ifs" + IFS="$acl_save_ifs" else acl_cv_path_LD="$LD" # Let the user override the test with a path. fi]) diff --git a/m4/stat-time.m4 b/m4/stat-time.m4 index 2dbb1f3c7..9371d7bb9 100644 --- a/m4/stat-time.m4 +++ b/m4/stat-time.m4 @@ -19,7 +19,6 @@ dnl From Paul Eggert. AC_DEFUN([gl_STAT_TIME], [ - AC_REQUIRE([AC_C_INLINE]) AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) AC_CHECK_HEADERS_ONCE([sys/time.h]) @@ -70,7 +69,6 @@ AC_DEFUN([gl_STAT_TIME], # AC_DEFUN([gl_STAT_BIRTHTIME], [ - AC_REQUIRE([AC_C_INLINE]) AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) AC_CHECK_HEADERS_ONCE([sys/time.h]) AC_CHECK_MEMBERS([struct stat.st_birthtimespec.tv_nsec], [], diff --git a/m4/stdlib_h.m4 b/m4/stdlib_h.m4 index ab43728ac..9c69f2e4d 100644 --- a/m4/stdlib_h.m4 +++ b/m4/stdlib_h.m4 @@ -102,6 +102,7 @@ AC_DEFUN([gl_STDLIB_H_DEFAULTS], REPLACE_MALLOC=0; AC_SUBST([REPLACE_MALLOC]) REPLACE_MBTOWC=0; AC_SUBST([REPLACE_MBTOWC]) REPLACE_MKSTEMP=0; AC_SUBST([REPLACE_MKSTEMP]) + REPLACE_PTSNAME=0; AC_SUBST([REPLACE_PTSNAME]) REPLACE_PTSNAME_R=0; AC_SUBST([REPLACE_PTSNAME_R]) REPLACE_PUTENV=0; AC_SUBST([REPLACE_PUTENV]) REPLACE_RANDOM_R=0; AC_SUBST([REPLACE_RANDOM_R]) diff --git a/m4/xsize.m4 b/m4/xsize.m4 index b3b7feebf..d85a5f10f 100644 --- a/m4/xsize.m4 +++ b/m4/xsize.m4 @@ -1,4 +1,4 @@ -# xsize.m4 serial 4 +# xsize.m4 serial 5 dnl Copyright (C) 2003-2004, 2008-2012 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -8,6 +8,5 @@ AC_DEFUN([gl_XSIZE], [ dnl Prerequisites of lib/xsize.h. AC_REQUIRE([gl_SIZE_MAX]) - AC_REQUIRE([AC_C_INLINE]) AC_CHECK_HEADERS([stdint.h]) ]) diff --git a/maint.mk b/maint.mk index a1af711b1..ea44eceb1 100644 --- a/maint.mk +++ b/maint.mk @@ -28,6 +28,28 @@ ifneq ($(build_aux),) set $$(_build-aux) relative to $$(srcdir) instead of $$(build_aux)") endif +# Helper variables. +_empty = +_sp = $(_empty) $(_empty) + +# _equal,S1,S2 +# ------------ +# If S1 == S2, return S1, otherwise the empty string. +_equal = $(and $(findstring $(1),$(2)),$(findstring $(2),$(1))) + +# member-check,VARIABLE,VALID-VALUES +# ---------------------------------- +# Check that $(VARIABLE) is in the space-separated list of VALID-VALUES, and +# return it. Die otherwise. +member-check = \ + $(strip \ + $(if $($(1)), \ + $(if $(findstring $(_sp),$($(1))), \ + $(error invalid $(1): '$($(1))', expected $(2)), \ + $(or $(findstring $(_sp)$($(1))$(_sp),$(_sp)$(2)$(_sp)), \ + $(error invalid $(1): '$($(1))', expected $(2)))), \ + $(error $(1) undefined))) + # Do not save the original name or timestamp in the .tar.gz file. # Use --rsyncable if available. gzip_rsyncable := \ @@ -52,16 +74,16 @@ _dot_escaped_srcdir = $(subst .,\.,$(srcdir)) # Post-process $(VC_LIST) output, prepending $(srcdir)/, but only # when $(srcdir) is not ".". ifeq ($(srcdir),.) -_prepend_srcdir_prefix = + _prepend_srcdir_prefix = else -_prepend_srcdir_prefix = | sed 's|^|$(srcdir)/|' + _prepend_srcdir_prefix = | sed 's|^|$(srcdir)/|' endif # In order to be able to consistently filter "."-relative names, # (i.e., with no $(srcdir) prefix), this definition is careful to # remove any $(srcdir) prefix, and to restore what it removes. _sc_excl = \ - $(if $(exclude_file_name_regexp--$@),$(exclude_file_name_regexp--$@),^$$) + $(or $(exclude_file_name_regexp--$@),^$$) VC_LIST_EXCEPT = \ $(VC_LIST) | sed 's|^$(_dot_escaped_srcdir)/||' \ | if test -f $(srcdir)/.x-$@; then grep -vEf $(srcdir)/.x-$@; \ @@ -78,32 +100,41 @@ VERSION_REGEXP = $(subst .,\.,$(VERSION)) PREV_VERSION_REGEXP = $(subst .,\.,$(PREV_VERSION)) ifeq ($(VC),$(GIT)) -this-vc-tag = v$(VERSION) -this-vc-tag-regexp = v$(VERSION_REGEXP) + this-vc-tag = v$(VERSION) + this-vc-tag-regexp = v$(VERSION_REGEXP) else -tag-package = $(shell echo "$(PACKAGE)" | tr '[:lower:]' '[:upper:]') -tag-this-version = $(subst .,_,$(VERSION)) -this-vc-tag = $(tag-package)-$(tag-this-version) -this-vc-tag-regexp = $(this-vc-tag) + tag-package = $(shell echo "$(PACKAGE)" | tr '[:lower:]' '[:upper:]') + tag-this-version = $(subst .,_,$(VERSION)) + this-vc-tag = $(tag-package)-$(tag-this-version) + this-vc-tag-regexp = $(this-vc-tag) endif my_distdir = $(PACKAGE)-$(VERSION) # Old releases are stored here. release_archive_dir ?= ../release +# If RELEASE_TYPE is undefined, but RELEASE is, use its second word. +# But overwrite VERSION. +ifdef RELEASE + VERSION := $(word 1, $(RELEASE)) + RELEASE_TYPE ?= $(word 2, $(RELEASE)) +endif + +# Validate and return $(RELEASE_TYPE), or die. +RELEASE_TYPES = alpha beta stable +release-type = $(call member-check,RELEASE_TYPE,$(RELEASE_TYPES)) + # Override gnu_rel_host and url_dir_list in cfg.mk if these are not right. # Use alpha.gnu.org for alpha and beta releases. # Use ftp.gnu.org for stable releases. gnu_ftp_host-alpha = alpha.gnu.org gnu_ftp_host-beta = alpha.gnu.org gnu_ftp_host-stable = ftp.gnu.org -gnu_rel_host ?= $(gnu_ftp_host-$(RELEASE_TYPE)) +gnu_rel_host ?= $(gnu_ftp_host-$(release-type)) -ifeq ($(gnu_rel_host),ftp.gnu.org) -url_dir_list ?= http://ftpmirror.gnu.org/$(PACKAGE) -else -url_dir_list ?= ftp://$(gnu_rel_host)/gnu/$(PACKAGE) -endif +url_dir_list ?= $(if $(call _equal,$(gnu_rel_host),ftp.gnu.org), \ + http://ftpmirror.gnu.org/$(PACKAGE), \ + ftp://$(gnu_rel_host)/gnu/$(PACKAGE)) # Override this in cfg.mk if you are using a different format in your # NEWS file. @@ -132,9 +163,9 @@ syntax-check-rules := $(sort $(shell sed -n 's/^\(sc_[a-zA-Z0-9_-]*\):.*/\1/p' \ .PHONY: $(syntax-check-rules) ifeq ($(shell $(VC_LIST) >/dev/null 2>&1; echo $$?),0) -local-checks-available += $(syntax-check-rules) + local-checks-available += $(syntax-check-rules) else -local-checks-available += no-vc-detected + local-checks-available += no-vc-detected no-vc-detected: @echo "No version control files detected; skipping syntax check" endif @@ -187,9 +218,11 @@ syntax-check: $(local-check) # # in_vc_files | in_files # -# grep-E-style regexp denoting the files to check. If no files -# are specified the default are all the files that are under -# version control. +# grep-E-style regexp selecting the files to check. For in_vc_files, +# the regexp is used to select matching files from the list of all +# version-controlled files; for in_files, it's from the names printed +# by "find $(srcdir)". When neither is specified, use all files that +# are under version control. # # containing | non_containing # @@ -261,7 +294,7 @@ define _sc_search_regexp : Filter by file name; \ if test -n "$$in_files"; then \ files=$$(find $(srcdir) | grep -E "$$in_files" \ - | grep -Ev '$(exclude_file_name_regexp--$@)'); \ + | grep -Ev '$(_sc_excl)'); \ else \ files=$$($(VC_LIST_EXCEPT)); \ if test -n "$$in_vc_files"; then \ @@ -328,8 +361,8 @@ sc_prohibit_atoi_atof: sp_ = strcmp *\(.+\) sc_prohibit_strcmp: @prohibit='! *strcmp *\(|\<$(sp_) *[!=]=|[!=]= *$(sp_)' \ - exclude=':# *define STRN?EQ\(' \ - halt='$(ME): replace strcmp calls above with STREQ/STRNEQ' \ + exclude='# *define STRN?EQ\(' \ + halt='replace strcmp calls above with STREQ/STRNEQ' \ $(_sc_search_regexp) # Really. You don't want to use this function. @@ -351,8 +384,9 @@ sc_prohibit_strncpy: # | xargs --no-run-if-empty \ # perl -pi -e 's/(^|[^.])\b(exit ?)\(0\)/$1$2(EXIT_SUCCESS)/' sc_prohibit_magic_number_exit: - @prohibit='(^|[^.])\<(usage|exit) ?\([0-9]|\<error ?\([1-9][0-9]*,' \ - halt='use EXIT_* values rather than magic number' \ + @prohibit='(^|[^.])\<(usage|exit|error) ?\(-?[0-9]+[,)]' \ + exclude='exit \(77\)|error ?\(((0|77),|[^,]*)' \ + halt='use EXIT_* values rather than magic number' \ $(_sc_search_regexp) # Using EXIT_SUCCESS as the first argument to error is misleading, @@ -567,8 +601,6 @@ sc_prohibit_c_ctype_without_use: @h='c-ctype.h' re='\<c_($(ctype_re)) *\(' \ $(_sc_header_without_use) -_empty = -_sp = $(_empty) $(_empty) # The following list was generated by running: # man signal.h|col -b|perl -ne '/bsd_signal.*;/.../sigwaitinfo.*;/ and print' \ # | perl -lne '/^\s+(?:int|void).*?(\w+).*/ and print $1' | fmt @@ -721,6 +753,7 @@ sc_require_test_exit_idiom: sc_trailing_blank: @prohibit='[ ]$$' \ halt='found trailing blank(s)' \ + exclude='^Binary file .* matches$$' \ $(_sc_search_regexp) # Match lines like the following, but where there is only one space @@ -741,7 +774,7 @@ _gl_translatable_diag_func_re ?= error sc_unmarked_diagnostics: @prohibit='\<$(_gl_translatable_diag_func_re) *\([^"]*"[^"]*[a-z]{3}' \ exclude='(_|ngettext ?)\(' \ - halt='$(ME): found unmarked diagnostic(s)' \ + halt='found unmarked diagnostic(s)' \ $(_sc_search_regexp) # Avoid useless parentheses like those in this example: @@ -775,6 +808,11 @@ sc_prohibit_always_true_header_tests: ' with the corresponding gnulib module, they are always true') \ $(_sc_search_regexp) +sc_prohibit_defined_have_decl_tests: + @prohibit='#[ ]*if(n?def|.*\<defined)\>[ (]+HAVE_DECL_' \ + halt='HAVE_DECL macros are always defined' \ + $(_sc_search_regexp) + # ================================================================== gl_other_headers_ ?= \ intprops.h \ @@ -1012,7 +1050,7 @@ sc_redundant_const: sc_const_long_option: @prohibit='^ *static.*struct option ' \ exclude='const struct option|struct option const' \ - halt='$(ME): add "const" to the above declarations' \ + halt='add "const" to the above declarations' \ $(_sc_search_regexp) NEWS_hash = \ @@ -1059,7 +1097,7 @@ sc_makefile_at_at_check: && { echo '$(ME): use $$(...), not @...@' 1>&2; exit 1; } || : news-check: NEWS - if sed -n $(news-check-lines-spec)p $< \ + $(AM_V_GEN)if sed -n $(news-check-lines-spec)p $< \ | grep -E $(news-check-regexp) >/dev/null; then \ :; \ else \ @@ -1083,9 +1121,11 @@ fix_po_file_diag = \ 'you have changed the set of files with translatable diagnostics;\n\ apply the above patch\n' -# Verify that all source files using _() are listed in po/POTFILES.in. +# Verify that all source files using _() (more specifically, files that +# match $(_gl_translatable_string_re)) are listed in po/POTFILES.in. po_file ?= $(srcdir)/po/POTFILES.in generated_files ?= $(srcdir)/lib/*.[ch] +_gl_translatable_string_re ?= \b(N?_|gettext *)\([^)"]*("|$$) sc_po_check: @if test -f $(po_file); then \ grep -E -v '^(#|$$)' $(po_file) \ @@ -1105,7 +1145,7 @@ sc_po_check: esac; \ files="$$files $$file"; \ done; \ - grep -E -l '\b(N?_|gettext *)\([^)"]*("|$$)' $$files \ + grep -E -l '$(_gl_translatable_string_re)' $$files \ | sed 's|^$(_dot_escaped_srcdir)/||' | sort -u > $@-2; \ diff -u -L $(po_file) -L $(po_file) $@-1 $@-2 \ || { printf '$(ME): '$(fix_po_file_diag) 1>&2; exit 1; }; \ @@ -1115,7 +1155,7 @@ sc_po_check: # Sometimes it is useful to change the PATH environment variable # in Makefiles. When doing so, it's better not to use the Unix-centric # path separator of ':', but rather the automake-provided '$(PATH_SEPARATOR)'. -msg = '$(ME): Do not use ":" above; use $$(PATH_SEPARATOR) instead' +msg = 'Do not use ":" above; use $$(PATH_SEPARATOR) instead' sc_makefile_path_separator_check: @prohibit='PATH[=].*:' \ in_vc_files='akefile|\.mk$$' \ @@ -1126,7 +1166,7 @@ sc_makefile_path_separator_check: # i.e., when pkg-M.N.tar.xz already exists (either in "." or in ../release) # and is read-only. writable-files: - if test -d $(release_archive_dir); then \ + $(AM_V_GEN)if test -d $(release_archive_dir); then \ for file in $(DIST_ARCHIVES); do \ for p in ./ $(release_archive_dir)/; do \ test -e $$p$$file || continue; \ @@ -1208,22 +1248,31 @@ sc_Wundef_boolean: # not be constant, or might overflow a stack. In general, use PATH_MAX as # a limit, not an array or alloca size. sc_prohibit_path_max_allocation: - @prohibit='(\balloca *\([^)]*|\[[^]]*)PATH_MAX' \ + @prohibit='(\balloca *\([^)]*|\[[^]]*)\bPATH_MAX' \ halt='Avoid stack allocations of size PATH_MAX' \ $(_sc_search_regexp) sc_vulnerable_makefile_CVE-2009-4029: @prohibit='perm -777 -exec chmod a\+rwx|chmod 777 \$$\(distdir\)' \ - in_files=$$(find $(srcdir) -name Makefile.in) \ + in_files='(^|/)Makefile\.in$$' \ halt=$$(printf '%s\n' \ 'the above files are vulnerable; beware of running' \ ' "make dist*" rules, and upgrade to fixed automake' \ ' see http://bugzilla.redhat.com/542609 for details') \ $(_sc_search_regexp) +sc_vulnerable_makefile_CVE-2012-3386: + @prohibit='chmod a\+w \$$\(distdir\)' \ + in_files='(^|/)Makefile\.in$$' \ + halt=$$(printf '%s\n' \ + 'the above files are vulnerable; beware of running' \ + ' "make distcheck", and upgrade to fixed automake' \ + ' see http://bugzilla.redhat.com/CVE-2012-3386 for details') \ + $(_sc_search_regexp) + vc-diff-check: - (unset CDPATH; cd $(srcdir) && $(VC) diff) > vc-diffs || : - if test -s vc-diffs; then \ + $(AM_V_GEN)(unset CDPATH; cd $(srcdir) && $(VC) diff) > vc-diffs || : + $(AM_V_at)if test -s vc-diffs; then \ cat vc-diffs; \ echo "Some files are locally modified:" 1>&2; \ exit 1; \ @@ -1239,31 +1288,37 @@ bootstrap-tools ?= autoconf,automake,gnulib # If it's not already specified, derive the GPG key ID from # the signed tag we've just applied to mark this release. -gpg_key_ID ?= \ - $$(git cat-file tag v$(VERSION) \ - | gpgv --status-fd 1 --keyring /dev/null - - 2>/dev/null \ - | awk '/^\[GNUPG:\] ERRSIG / {print $$3; exit}') +gpg_key_ID ?= \ + $$(cd $(srcdir) \ + && git cat-file tag v$(VERSION) \ + | gpgv --status-fd 1 --keyring /dev/null - - 2>/dev/null \ + | awk '/^\[GNUPG:\] ERRSIG / {print $$3; exit}') translation_project_ ?= coordinator@translationproject.org # Make info-gnu the default only for a stable release. -ifeq ($(RELEASE_TYPE),stable) - announcement_Cc_ ?= $(translation_project_), $(PACKAGE_BUGREPORT) - announcement_mail_headers_ ?= \ - To: info-gnu@gnu.org \ - Cc: $(announcement_Cc_) \ - Mail-Followup-To: $(PACKAGE_BUGREPORT) -else - announcement_Cc_ ?= $(translation_project_) - announcement_mail_headers_ ?= \ - To: $(PACKAGE_BUGREPORT) \ - Cc: $(announcement_Cc_) -endif - +announcement_Cc_stable = $(translation_project_), $(PACKAGE_BUGREPORT) +announcement_mail_headers_stable = \ + To: info-gnu@gnu.org \ + Cc: $(announcement_Cc_) \ + Mail-Followup-To: $(PACKAGE_BUGREPORT) + +announcement_Cc_alpha = $(translation_project_) +announcement_mail_headers_alpha = \ + To: $(PACKAGE_BUGREPORT) \ + Cc: $(announcement_Cc_) + +announcement_mail_Cc_beta = $(announcement_mail_Cc_alpha) +announcement_mail_headers_beta = $(announcement_mail_headers_alpha) + +announcement_mail_Cc_ ?= $(announcement_mail_Cc_$(release-type)) +announcement_mail_headers_ ?= $(announcement_mail_headers_$(release-type)) announcement: NEWS ChangeLog $(rel-files) - @$(srcdir)/$(_build-aux)/announce-gen \ +# Not $(AM_V_GEN) since the output of this command serves as +# annoucement message: it would start with " GEN announcement". + $(AM_V_at)$(srcdir)/$(_build-aux)/announce-gen \ --mail-headers='$(announcement_mail_headers_)' \ - --release-type=$(RELEASE_TYPE) \ + --release-type=$(release-type) \ --package=$(PACKAGE) \ --prev=$(PREV_VERSION) \ --curr=$(VERSION) \ @@ -1276,6 +1331,12 @@ announcement: NEWS ChangeLog $(rel-files) --no-print-checksums \ $(addprefix --url-dir=, $(url_dir_list)) +.PHONY: release-commit +release-commit: + $(AM_V_GEN)cd $(srcdir) \ + && $(_build-aux)/do-release-commit-and-tag \ + -C $(abs_builddir) $(RELEASE) + ## ---------------- ## ## Updating files. ## ## ---------------- ## @@ -1284,16 +1345,22 @@ ftp-gnu = ftp://ftp.gnu.org/gnu www-gnu = http://www.gnu.org upload_dest_dir_ ?= $(PACKAGE) +upload_command = \ + $(srcdir)/$(_build-aux)/gnupload $(GNUPLOADFLAGS) \ + --to $(gnu_rel_host):$(upload_dest_dir_) \ + $(rel-files) emit_upload_commands: @echo ===================================== @echo ===================================== - @echo "$(srcdir)/$(_build-aux)/gnupload $(GNUPLOADFLAGS) \\" - @echo " --to $(gnu_rel_host):$(upload_dest_dir_) \\" - @echo " $(rel-files)" + @echo '$(upload_command)' @echo '# send the ~/announce-$(my_distdir) e-mail' @echo ===================================== @echo ===================================== +.PHONY: upload +upload: + $(AM_V_GEN)$(upload_command) + define emit-commit-log printf '%s\n' 'maint: post-release administrivia' '' \ '* NEWS: Add header line for next release.' \ @@ -1303,7 +1370,7 @@ endef .PHONY: no-submodule-changes no-submodule-changes: - if test -d $(srcdir)/.git; then \ + $(AM_V_GEN)if test -d $(srcdir)/.git; then \ diff=$$(cd $(srcdir) && git submodule -q foreach \ git diff-index --name-only HEAD) \ || exit 1; \ @@ -1339,19 +1406,22 @@ public-submodule-commit: gl_public_submodule_commit ?= public-submodule-commit check: $(gl_public_submodule_commit) -.PHONY: alpha beta stable +.PHONY: alpha beta stable release ALL_RECURSIVE_TARGETS += alpha beta stable alpha beta stable: $(local-check) writable-files $(submodule-checks) - test $@ = stable \ + $(AM_V_GEN)test $@ = stable \ && { echo $(VERSION) | grep -E '^[0-9]+(\.[0-9]+)+$$' \ || { echo "invalid version string: $(VERSION)" 1>&2; exit 1;};}\ || : - $(MAKE) vc-diff-check - $(MAKE) news-check - $(MAKE) distcheck - $(MAKE) dist - $(MAKE) $(release-prep-hook) RELEASE_TYPE=$@ - $(MAKE) -s emit_upload_commands RELEASE_TYPE=$@ + $(AM_V_at)$(MAKE) vc-diff-check + $(AM_V_at)$(MAKE) news-check + $(AM_V_at)$(MAKE) distcheck + $(AM_V_at)$(MAKE) dist + $(AM_V_at)$(MAKE) $(release-prep-hook) RELEASE_TYPE=$@ + $(AM_V_at)$(MAKE) -s emit_upload_commands RELEASE_TYPE=$@ + +release: + $(AM_V_GEN)$(MAKE) $(release-type) # Override this in cfg.mk if you follow different procedures. release-prep-hook ?= release-prep @@ -1359,19 +1429,19 @@ release-prep-hook ?= release-prep gl_noteworthy_news_ = * Noteworthy changes in release ?.? (????-??-??) [?] .PHONY: release-prep release-prep: - case $$RELEASE_TYPE in alpha|beta|stable) ;; \ - *) echo "invalid RELEASE_TYPE: $$RELEASE_TYPE" 1>&2; exit 1;; esac - $(MAKE) --no-print-directory -s announcement > ~/announce-$(my_distdir) - if test -d $(release_archive_dir); then \ + $(AM_V_GEN)$(MAKE) --no-print-directory -s announcement \ + > ~/announce-$(my_distdir) + $(AM_V_at)if test -d $(release_archive_dir); then \ ln $(rel-files) $(release_archive_dir); \ chmod a-w $(rel-files); \ fi - echo $(VERSION) > $(prev_version_file) - $(MAKE) update-NEWS-hash - perl -pi -e '$$. == 3 and print "$(gl_noteworthy_news_)\n\n\n"' $(srcdir)/NEWS - $(emit-commit-log) > .ci-msg - $(VC) commit -F .ci-msg -a - rm .ci-msg + $(AM_V_at)echo $(VERSION) > $(prev_version_file) + $(AM_V_at)$(MAKE) update-NEWS-hash + $(AM_V_at)perl -pi \ + -e '$$. == 3 and print "$(gl_noteworthy_news_)\n\n\n"' \ + $(srcdir)/NEWS + $(AM_V_at)msg=$$($(emit-commit-log)) || exit 1; \ + cd $(srcdir) && $(VC) commit -m "$$msg" -a # Override this with e.g., -s $(srcdir)/some_other_name.texi # if the default $(PACKAGE)-derived name doesn't apply. @@ -1379,14 +1449,20 @@ gendocs_options_ ?= .PHONY: web-manual web-manual: - @test -z "$(manual_title)" \ + $(AM_V_GEN)test -z "$(manual_title)" \ && { echo define manual_title in cfg.mk 1>&2; exit 1; } || : - @cd '$(srcdir)/doc'; \ + $(AM_V_at)cd '$(srcdir)/doc'; \ $(SHELL) ../$(_build-aux)/gendocs.sh $(gendocs_options_) \ -o '$(abs_builddir)/doc/manual' \ --email $(PACKAGE_BUGREPORT) $(PACKAGE) \ "$(PACKAGE_NAME) - $(manual_title)" - @echo " *** Upload the doc/manual directory to web-cvs." + $(AM_V_at)echo " *** Upload the doc/manual directory to web-cvs." + +.PHONY: web-manual-update +web-manual-update: + $(AM_V_GEN)cd $(srcdir) \ + && $(_build-aux)/gnu-web-doc-update -C $(abs_builddir) + # Code Coverage @@ -1412,6 +1488,31 @@ gen-coverage: coverage: init-coverage build-coverage gen-coverage +# Some projects carry local adjustments for gnulib modules via patches in +# a gnulib patch directory whose default name is gl/ (defined in bootstrap +# via local_gl_dir=gl). Those patches become stale as the originals evolve +# in gnulib. Use this rule to refresh any stale patches. It applies each +# patch to the original in $(gnulib_dir) and uses the temporary result to +# generate a fuzz-free .diff file. If you customize the name of your local +# gnulib patch directory via bootstrap.conf, this rule detects that name. +# Run this from a non-VPATH (i.e., srcdir) build directory. +.PHONY: refresh-gnulib-patches +refresh-gnulib-patches: + gl=gl; \ + if test -f bootstrap.conf; then \ + t=$$(perl -lne '/^\s*local_gl_dir=(\S+)/ and $$d=$$1;' \ + -e 'END{defined $$d and print $$d}' bootstrap.conf); \ + test -n "$$t" && gl=$$t; \ + fi; \ + for diff in $$(cd $$gl; git ls-files | grep '\.diff$$'); do \ + b=$$(printf %s "$$diff"|sed 's/\.diff$$//'); \ + VERSION_CONTROL=none \ + patch "$(gnulib_dir)/$$b" "$$gl/$$diff" || exit 1; \ + ( cd $(gnulib_dir) || exit 1; \ + git diff "$$b" > "../$$gl/$$diff"; \ + git checkout $$b ) || exit 1; \ + done + # Update gettext files. PACKAGE ?= $(shell basename $(PWD)) PO_DOMAIN ?= $(PACKAGE) @@ -1445,7 +1546,7 @@ update-copyright-env ?= # in the file .x-update-copyright. .PHONY: update-copyright update-copyright: - grep -l -w Copyright \ + $(AM_V_GEN)grep -l -w Copyright \ $$(export VC_LIST_EXCEPT_DEFAULT=COPYING && $(VC_LIST_EXCEPT)) \ | $(update-copyright-env) xargs $(srcdir)/$(_build-aux)/$@ @@ -1518,6 +1619,7 @@ _gl_TS_obj_files ?= *.$(OBJEXT) # Files in which to search for the one-line style extern declarations. # $(_gl_TS_dir)-relative. _gl_TS_headers ?= $(noinst_HEADERS) +_gl_TS_other_headers ?= *.h .PHONY: _gl_tight_scope _gl_tight_scope: $(bin_PROGRAMS) @@ -1540,7 +1642,8 @@ _gl_tight_scope: $(bin_PROGRAMS) && { echo the above functions should have static scope >&2; \ exit 1; } || : ; \ ( printf '^%s$$\n' '__.*' $(_gl_TS_unmarked_extern_vars); \ - perl -lne '$(_gl_TS_var_match) and print "^$$1\$$"' $$hdr *.h \ + perl -lne '$(_gl_TS_var_match) and print "^$$1\$$"' \ + $$hdr $(_gl_TS_other_headers) \ ) | sort -u > $$t; \ nm -e $(_gl_TS_obj_files) | sed -n 's/.* [BCDGRS] //p' \ | sort -u | grep -Ev -f $$t \